curl --request GET \
--url https://app.hipp.health/api/v1/users/{publicId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.hipp.health/api/v1/users/{publicId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.hipp.health/api/v1/users/{publicId}', 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://app.hipp.health/api/v1/users/{publicId}",
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://app.hipp.health/api/v1/users/{publicId}"
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://app.hipp.health/api/v1/users/{publicId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.hipp.health/api/v1/users/{publicId}")
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{
"publicId": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phoneNumber": "<string>",
"userStatus": "LEAD",
"isActive": true,
"sex": "MALE",
"birthDate": "2023-12-25",
"caregiverId": "<string>",
"addressLine1": "<string>",
"addressLine2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"role": "PATIENT",
"payors": [
{
"payorName": "<string>",
"priority": "PRIMARY",
"relationshipToPatient": "SELF",
"insuredBirthDate": "2023-12-25",
"insuredAddress": {
"addressLine1": "<string>",
"addressLine2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"memberId": "<string>",
"groupId": "<string>",
"planHolder": "<string>",
"effectiveStartDate": "2023-12-25",
"effectiveEndDate": "2023-12-25"
}
],
"authorizations": [
{
"authorizationNumber": "<string>",
"authorizationStatus": "AUTHORIZED",
"authorizedUnitsQuantity": 123,
"authorizedUnitFrequency": "DAILY",
"serviceLine": {
"publicId": "<string>",
"name": "<string>"
},
"authorizationDate": "2023-12-25",
"authorizationExpirationDate": "2023-12-25"
}
],
"authorizationPools": [
{
"publicId": "<string>",
"totalUnits": 123,
"unitFrequency": "DAILY",
"isUnlimited": true,
"payor": {
"publicId": "<string>",
"name": "<string>"
},
"authorizations": [
{
"authorizationNumber": "<string>",
"authorizationStatus": "AUTHORIZED",
"serviceLine": {
"publicId": "<string>",
"name": "<string>"
},
"authorizationDate": "2023-12-25",
"authorizationExpirationDate": "2023-12-25"
}
]
}
],
"locationIds": [
"<string>"
]
}{
"message": "Validation Error",
"statusCode": 400,
"validationErrors": [
{
"code": "invalid_type",
"message": "Required",
"path": [
"email"
]
}
]
}{
"error": "API key required",
"statusCode": 401
}{
"error": "User not found",
"statusCode": 404
}Get User By Id
Retrieve a single user by their publicId. The response includes contact info and an isActive flag (soft-deleted users are returned with isActive=false). Patients also include payors, standalone authorizations, authorizationPools (a shared bucket of hours across service lines) and locationIds; staff include credentials (each with per-payor credentialing records), compliance credentials (HIPAA/CPR/BLS, providers only) and specializations (providers only) plus locationIds and primaryLocationId.
curl --request GET \
--url https://app.hipp.health/api/v1/users/{publicId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.hipp.health/api/v1/users/{publicId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.hipp.health/api/v1/users/{publicId}', 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://app.hipp.health/api/v1/users/{publicId}",
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://app.hipp.health/api/v1/users/{publicId}"
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://app.hipp.health/api/v1/users/{publicId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.hipp.health/api/v1/users/{publicId}")
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{
"publicId": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phoneNumber": "<string>",
"userStatus": "LEAD",
"isActive": true,
"sex": "MALE",
"birthDate": "2023-12-25",
"caregiverId": "<string>",
"addressLine1": "<string>",
"addressLine2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"role": "PATIENT",
"payors": [
{
"payorName": "<string>",
"priority": "PRIMARY",
"relationshipToPatient": "SELF",
"insuredBirthDate": "2023-12-25",
"insuredAddress": {
"addressLine1": "<string>",
"addressLine2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"memberId": "<string>",
"groupId": "<string>",
"planHolder": "<string>",
"effectiveStartDate": "2023-12-25",
"effectiveEndDate": "2023-12-25"
}
],
"authorizations": [
{
"authorizationNumber": "<string>",
"authorizationStatus": "AUTHORIZED",
"authorizedUnitsQuantity": 123,
"authorizedUnitFrequency": "DAILY",
"serviceLine": {
"publicId": "<string>",
"name": "<string>"
},
"authorizationDate": "2023-12-25",
"authorizationExpirationDate": "2023-12-25"
}
],
"authorizationPools": [
{
"publicId": "<string>",
"totalUnits": 123,
"unitFrequency": "DAILY",
"isUnlimited": true,
"payor": {
"publicId": "<string>",
"name": "<string>"
},
"authorizations": [
{
"authorizationNumber": "<string>",
"authorizationStatus": "AUTHORIZED",
"serviceLine": {
"publicId": "<string>",
"name": "<string>"
},
"authorizationDate": "2023-12-25",
"authorizationExpirationDate": "2023-12-25"
}
]
}
],
"locationIds": [
"<string>"
]
}{
"message": "Validation Error",
"statusCode": 400,
"validationErrors": [
{
"code": "invalid_type",
"message": "Required",
"path": [
"email"
]
}
]
}{
"error": "API key required",
"statusCode": 401
}{
"error": "User not found",
"statusCode": 404
}Get User By Id
Retrieve a single user by their publicId.Headers
Authorization: Bearer <your-api-key>
Path Parameters
publicId(required): User public identifier
Success Response (200)
The response shape is discriminated by the user’srole (see
Get All Users for the full breakdown).
Every user shares the same base fields — including demographics (sex,
birthDate, caregiverId) and address, which are null where a role has no
such concept — plus role-specific arrays. The example below is a provider
(CLINICIAN), which adds credentials, complianceCredentials (HIPAA/CPR/BLS), specializations, locationIds,
primaryLocationId, and the care team link careTeamTechnicianIds (the
technicians this clinician supervises). Only one care team field is returned per
role: clinician roles receive careTeamTechnicianIds, while a TECHNICIAN
receives careTeamLeadIds (the clinicians supervising them). Providers also
carry complianceCredentials (HIPAA/CPR/BLS). Each entry in credentials
includes a payorCredentialing array — the per-payor credentialing records for
that credential, each with its status (PENDING, APPROVED, REVOKED,
INACTIVE) and effective dates. HIPP internal accounts are never returned and
respond with 404.
{
"publicId": "usr_1234567890_abc123def",
"firstName": "Jane",
"lastName": "Smith",
"email": "jane.smith@example.com",
"phoneNumber": "+1234567890",
"userStatus": null,
"isActive": true,
"role": "CLINICIAN",
"sex": "FEMALE",
"birthDate": null,
"caregiverId": null,
"addressLine1": "123 Main St",
"addressLine2": "Apt 4B",
"city": "New York",
"state": "NY",
"postalCode": "10001",
"credentials": [
{
"credentialType": "BCBA",
"practiceArea": "ABA",
"credentialNumber": "1-23-4567",
"expiresAt": "2025-12-31T00:00:00.000Z",
"credentialStatus": "active",
"payorCredentialing": [
{
"publicId": "pcpay_9aBcDeFgHi",
"payor": { "publicId": "pay_1aBcDeFgHi", "name": "Aetna" },
"status": "APPROVED",
"startDate": "2025-01-01",
"endDate": null,
"notes": null
}
]
}
],
"complianceCredentials": ["HIPAA", "CPR"],
"specializations": [
{
"publicId": "spec_348HjqQrL-",
"name": "Early Intervention"
}
],
"locationIds": ["loc_abc123"],
"primaryLocationId": "loc_abc123",
"careTeamTechnicianIds": ["usr_tech_9aBc"]
}
Error Responses
400 - Validation Error
{
"message": "Validation Error",
"statusCode": 400,
"validationErrors": [
{
"code": "too_small",
"message": "User publicId is required",
"path": ["publicId"]
}
]
}
401 - Unauthorized
{
"error": "API key required",
"statusCode": 401
}
404 - Not Found
{
"error": "User not found",
"statusCode": 404
}
Examples
cURL Example
# Get user by publicId
curl -X GET "https://app.hipp.health/api/v1/users/usr_1234567890_abc123def" \
-H "Authorization: Bearer your-api-key"
JavaScript Example
const getUserById = async (publicId) => {
const response = await fetch(`/api/v1/users/${publicId}`, {
method: "GET",
headers: {
Authorization: "Bearer your-api-key",
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || "Failed to fetch user");
}
return response.json();
};
// Usage
try {
const user = await getUserById("usr_1234567890_abc123def");
console.log("User:", user);
} catch (error) {
console.error("Error fetching user:", error.message);
}
Authorizations
API key authentication. Include your API key in the Authorization header as 'Bearer '
Path Parameters
User public identifier
1Response
Successful response
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
A user's shape is discriminated by role. Consumers should switch on role to read the role-specific fields. HIPP internal accounts are never returned.
User public identifier
User's first name
User's last name
User's email address
User's phone number
User's lifecycle status
LEAD, WAITLIST, VERIFIED_BENEFITS, AUTH_REQUESTED, AUTH_APPROVED, ASSESSMENT_SCHEDULED, THERAPY_SCHEDULED, ACTIVE, INACTIVE, SERVICES_PAUSED, DISCHARGED, ARCHIVED Whether the user is active (false when soft-deleted)
User's sex. Null for roles without demographics (e.g. caregivers).
MALE, FEMALE, OTHER User's birth date in YYYY-MM-DD format. Only patients carry a birth date; null for other roles.
Public identifier of the linked caregiver. Only patients carry this; null for other roles.
First line of home address. Null for roles without an address (e.g. caregivers).
Second line of home address
City
State
Postal code
PATIENT Payors associated with the patient
Show child attributes
Show child attributes
Standalone service authorizations for the patient. Pooled authorizations are returned separately under authorizationPools.
Show child attributes
Show child attributes
Pooled authorizations: each pool is one shared bucket of hours (totalUnits/unitFrequency) drawn from by several service-line authorizations.
Show child attributes
Show child attributes
Public identifiers of locations the patient belongs to