curl --request GET \
--url https://api.perfectreferral.com/v1/practitioners/{npiNumber} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.perfectreferral.com/v1/practitioners/{npiNumber}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.perfectreferral.com/v1/practitioners/{npiNumber}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.perfectreferral.com/v1/practitioners/{npiNumber}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.perfectreferral.com/v1/practitioners/{npiNumber}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.perfectreferral.com/v1/practitioners/{npiNumber}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.perfectreferral.com/v1/practitioners/{npiNumber}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"name": "Dr. Naomi Park",
"nppesSpecialties": [
"207WX01070"
],
"referralScopeMatches": [
{
"specialty": "Ophthalmology",
"target": "Medical and surgical retina care",
"label": "very_likely_match"
}
],
"locations": [
{
"id": "019fed1c-e73f-74fd-92f3-ba555e8285f4",
"line1": "123 Main Street",
"city": "San Diego",
"state": "CA",
"postalCode": "92103",
"geocoding": {
"latitude": 32.7469572,
"longitude": -117.1663201
},
"staleAffiliationRisk": {
"label": "very_likely_active"
}
}
],
"servedModels": {
"staleAffiliationRisk": "v1.0",
"referralScopeMatch": "v1.2"
}
}{
"code": "400",
"message": "Invalid NPI number format."
}{
"code": "401",
"message": "Unauthorized"
}{
"code": "403",
"message": "pro tier required to access this model"
}{
"code": "404",
"message": "No practitioner found for the given NPI number"
}{
"code": "422",
"message": "NPI number must correspond to an individual (NPI-1)"
}{
"code": "429",
"message": "Too Many Requests"
}{
"code": "500",
"message": "Unexpected server error"
}Get practitioner by NPI number
Returns information about the practitioner associated with the provided NPI number.
curl --request GET \
--url https://api.perfectreferral.com/v1/practitioners/{npiNumber} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.perfectreferral.com/v1/practitioners/{npiNumber}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.perfectreferral.com/v1/practitioners/{npiNumber}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.perfectreferral.com/v1/practitioners/{npiNumber}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.perfectreferral.com/v1/practitioners/{npiNumber}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.perfectreferral.com/v1/practitioners/{npiNumber}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.perfectreferral.com/v1/practitioners/{npiNumber}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"name": "Dr. Naomi Park",
"nppesSpecialties": [
"207WX01070"
],
"referralScopeMatches": [
{
"specialty": "Ophthalmology",
"target": "Medical and surgical retina care",
"label": "very_likely_match"
}
],
"locations": [
{
"id": "019fed1c-e73f-74fd-92f3-ba555e8285f4",
"line1": "123 Main Street",
"city": "San Diego",
"state": "CA",
"postalCode": "92103",
"geocoding": {
"latitude": 32.7469572,
"longitude": -117.1663201
},
"staleAffiliationRisk": {
"label": "very_likely_active"
}
}
],
"servedModels": {
"staleAffiliationRisk": "v1.0",
"referralScopeMatch": "v1.2"
}
}{
"code": "400",
"message": "Invalid NPI number format."
}{
"code": "401",
"message": "Unauthorized"
}{
"code": "403",
"message": "pro tier required to access this model"
}{
"code": "404",
"message": "No practitioner found for the given NPI number"
}{
"code": "422",
"message": "NPI number must correspond to an individual (NPI-1)"
}{
"code": "429",
"message": "Too Many Requests"
}{
"code": "500",
"message": "Unexpected server error"
}- Specialties: reported by NPPES
- Referral scope matches: proprietary information about whether the provider is an appropriate candidate for a routine referral for a specific performable or procedure
- Practice locations: reported by CMS National Provider Database, Doctors and Clinicians National Downloadable File, and NPPES
- Geocoding: coordinates for the location’s address, when available
- Stale affiliation risk: proprietary information about whether the practitioner is actually seeing patients at this location
unlikely_match or very_unlikely_match) means a routine referral target does not fit the provider’s observed billing. It does not mean the service is outside their scope of practice or that they are unqualified; it reflects what they routinely bill, not what they are licensed or trained to do.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your API token.
Path Parameters
The 10-digit number corresponding to NPPES registration for the practitioner of interest. Must also correspond to NPI Type Individual (NPI-1) - see https://npiregistry.cms.hhs.gov/help/help-home for more information.
10^[0-9]{10}$Query Parameters
The version of the referral scope match model to use, as enumerated by GET /models. Defaults to the latest version if omitted.
The version of the stale affiliation risk model to use, as enumerated by GET /models. Defaults to the latest version if omitted.
Response
Expected response to a valid request
The name of the practitioner, as reported by NPPES.
An array of NUCC Provider Taxonomy codes (https://www.nucc.org/index.php/code-sets-mainmenu-41/provider-taxonomy-mainmenu-40) for the practitioner, as reported by NPPES.
An array of locations that the practitioner practices at, as reported by the CMS National Provider Database and Doctors and Clinicians National Downloadable File datasets.
Show child attributes
Show child attributes
The version of each model whose output appears in this response. Always present; a key appears only when that model was served for this request, so an absent key means that model contributed nothing to the response. Use these values to record exactly which model versions a response was based on.
Show child attributes
Show child attributes
One estimate per routine referral target evaluated for this practitioner. Each entry pairs a target with a label describing how well the practitioner fits it as a destination, derived from observed Medicare and Medicaid billing rather than from what their license or self-reported specialty permits. Present only when the referral scope match model was served for this request, as reported by servedModels.referralScopeMatch; empty when the model was served but produced no estimates for this practitioner.
Show child attributes
Show child attributes