Onboard a Provider
Register a therapist and their practice before submitting sessions.
POST /api/v1/partner/providersRegister a therapist before submitting sessions on their behalf. This creates the practice and provider records we need to submit claims under their NPI.
Idempotent within your partner organization — if the provider already exists for your authenticated partner, we return the existing record with "status": "already_exists".
Request
const response = await fetch("https://api.usetaiga.com/api/v1/partner/providers", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
provider: {
firstName: "Jane",
lastName: "Smith",
npi: "1234567890",
taxonomyCode: "103T00000X",
specialty: "Clinical Psychologist",
credentials: "PhD",
},
practice: {
name: "Smith Therapy Associates",
taxId: "123456789",
address: {
street: "100 Main Street",
line2: "Suite 200",
city: "New York",
state: "NY",
zip: "10001",
},
phone: "2125551234",
contactName: "Jane Smith",
},
}),
});
const data = await response.json();import requests
response = requests.post(
"https://api.usetaiga.com/api/v1/partner/providers",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"provider": {
"firstName": "Jane",
"lastName": "Smith",
"npi": "1234567890",
"taxonomyCode": "103T00000X",
"specialty": "Clinical Psychologist",
"credentials": "PhD",
},
"practice": {
"name": "Smith Therapy Associates",
"taxId": "123456789",
"address": {
"street": "100 Main Street",
"line2": "Suite 200",
"city": "New York",
"state": "NY",
"zip": "10001",
},
"phone": "2125551234",
"contactName": "Jane Smith",
},
},
)
data = response.json()curl -X POST https://api.usetaiga.com/api/v1/partner/providers \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"provider": {
"firstName": "Jane",
"lastName": "Smith",
"npi": "1234567890",
"taxonomyCode": "103T00000X",
"specialty": "Clinical Psychologist",
"credentials": "PhD"
},
"practice": {
"name": "Smith Therapy Associates",
"taxId": "123456789",
"address": {
"street": "100 Main Street",
"line2": "Suite 200",
"city": "New York",
"state": "NY",
"zip": "10001"
},
"phone": "2125551234",
"contactName": "Jane Smith"
}
}'Required fields
| Field | Description |
|---|---|
provider.firstName | Provider's first name |
provider.lastName | Provider's last name |
provider.npi | 10-digit NPI number |
practice.name | Legal practice name |
practice.taxId | 9-digit EIN (no dashes) |
practice.address | Object with street, city, state, zip |
Optional fields
| Field | Description | Default |
|---|---|---|
provider.taxonomyCode | Provider taxonomy code | Inferred from specialty |
provider.specialty | Specialty description | — |
provider.credentials | Credentials (PhD, PsyD, LCSW, etc.) | — |
practice.npi | Organization NPI (distinct from the individual provider NPI) | Falls back to provider.npi |
practice.taxonomyCode | Practice-level taxonomy code | Falls back to provider.taxonomyCode |
practice.phone | Practice phone (10 digits, no formatting) | — |
practice.contactName | Billing contact name | — |
The provider NPI is the individual therapist's NPI. The practice NPI is the organization's NPI (Type 2). If the therapist is a solo practitioner, these are typically the same. For group practices, provide both so claims are billed correctly under the organization.
practice.taxId (EIN) and provider.npi are critical for claim submission. Claims will fail validation if the practice is missing a tax ID or the provider is missing an NPI.
Taxonomy codes
Common taxonomy codes for behavioral health providers:
| Code | Description |
|---|---|
103T00000X | Psychologist |
103TA0400X | Psychologist, Addiction |
103TC0700X | Psychologist, Clinical |
1041C0700X | Social Worker, Clinical |
101YM0800X | Counselor, Mental Health |
101YP2500X | Counselor, Professional |
106H00000X | Marriage & Family Therapist |
If you provide specialty but not taxonomyCode, we infer the taxonomy code automatically.
Response
201 Created
{
"providerId": "uuid",
"practiceId": "uuid",
"providerNpi": "1234567890",
"practiceName": "Smith Therapy Associates",
"status": "created"
}If the provider already exists, the response has the same shape with "status": "already_exists".
Errors
| Status | Cause |
|---|---|
400 | Missing or invalid required fields (e.g. NPI not 10 digits, missing practice address) |
401 | Invalid or missing API key |
409 | This provider NPI is already registered to a different partner organization |
Update a Provider
PATCH /api/v1/partner/providers/{npi}Update an existing provider's credentials, specialty, or practice information. Only include the fields you want to change — omitted fields remain unchanged.
You can only update providers that were onboarded under your authenticated partner organization.
Request
const response = await fetch("https://api.usetaiga.com/api/v1/partner/providers/1234567890", {
method: "PATCH",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
provider: {
credentials: "PsyD",
},
practice: {
phone: "2125559999",
address: {
street: "200 New Street, Suite 300",
city: "New York",
state: "NY",
zip: "10002",
},
},
}),
});
const data = await response.json();curl -X PATCH https://api.usetaiga.com/api/v1/partner/providers/1234567890 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"provider": {
"credentials": "PsyD"
},
"practice": {
"phone": "2125559999",
"address": {
"street": "200 New Street, Suite 300",
"city": "New York",
"state": "NY",
"zip": "10002"
}
}
}'Updatable fields
All fields are optional. Only include the ones you want to change.
Provider fields:
| Field | Description |
|---|---|
provider.taxonomyCode | Provider taxonomy code |
provider.specialty | Specialty description |
provider.credentials | Credentials (PhD, PsyD, LCSW, etc.) |
Practice fields:
| Field | Description |
|---|---|
practice.name | Legal practice name |
practice.npi | Organization NPI |
practice.taxId | 9-digit EIN |
practice.taxonomyCode | Practice-level taxonomy code |
practice.phone | Practice phone number |
practice.contactName | Billing contact name |
practice.address.street | Street address |
practice.address.city | City |
practice.address.state | 2-letter state code |
practice.address.zip | ZIP code |
Response
{
"providerId": "uuid",
"practiceId": "uuid",
"providerNpi": "1234567890",
"practiceName": "Smith Therapy Associates",
"status": "updated"
}Errors
| Status | Cause |
|---|---|
401 | Invalid or missing API key |
404 | No provider found with this NPI — onboard the provider first |
409 | This provider NPI belongs to a different partner organization |