Quickstart
End-to-end integration in 3 API calls, plus optional list polling.
Three API calls to go from therapy note to insurance claim. Before you start, make sure your partner admin has been invited to the Partner Portal and has created an API key.
1. Onboard a provider (one-time)
Register the therapist before submitting sessions on their behalf.
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",
},
practice: {
name: "Smith Therapy Associates",
taxId: "123456789",
address: {
street: "100 Main St",
city: "New York",
state: "NY",
zip: "10001",
},
},
}),
});
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",
},
"practice": {
"name": "Smith Therapy Associates",
"taxId": "123456789",
"address": {
"street": "100 Main St",
"city": "New York",
"state": "NY",
"zip": "10001",
},
},
},
)
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"
},
"practice": {
"name": "Smith Therapy Associates",
"taxId": "123456789",
"address": {
"street": "100 Main St",
"city": "New York",
"state": "NY",
"zip": "10001"
}
}
}'{
"providerId": "uuid",
"practiceId": "uuid",
"providerNpi": "1234567890",
"practiceName": "Smith Therapy Associates",
"status": "created"
}2. Submit a session (after each appointment)
Send the patient info, diagnosis codes, and session duration. No clinical note needed — we derive the CPT code from the duration automatically.
const response = await fetch("https://api.usetaiga.com/api/v1/partner/sessions", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
externalSessionId: "session-abc-123",
providerNpi: "1234567890",
patient: {
firstName: "Sarah",
lastName: "Johnson",
dateOfBirth: "1988-05-15",
gender: "F",
address: {
street: "2222 Random St",
city: "New York",
state: "NY",
zip: "10001",
},
insurance: {
memberId: "MEM-2026-0042",
payerName: "Cigna",
},
},
session: {
dateOfService: "2026-04-01",
placeOfService: "telehealth",
durationMinutes: 45,
diagnosisCodes: [
{ code: "F32.1", description: "Major depressive disorder, single episode, moderate" },
],
},
}),
});
const data = await response.json();import requests
response = requests.post(
"https://api.usetaiga.com/api/v1/partner/sessions",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"externalSessionId": "session-abc-123",
"providerNpi": "1234567890",
"patient": {
"firstName": "Sarah",
"lastName": "Johnson",
"dateOfBirth": "1988-05-15",
"gender": "F",
"address": {
"street": "2222 Random St",
"city": "New York",
"state": "NY",
"zip": "10001",
},
"insurance": {
"memberId": "MEM-2026-0042",
"payerName": "Cigna",
},
},
"session": {
"dateOfService": "2026-04-01",
"placeOfService": "telehealth",
"durationMinutes": 45,
"diagnosisCodes": [
{"code": "F32.1", "description": "Major depressive disorder, single episode, moderate"}
],
},
},
)
data = response.json()curl -X POST https://api.usetaiga.com/api/v1/partner/sessions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"externalSessionId": "session-abc-123",
"providerNpi": "1234567890",
"patient": {
"firstName": "Sarah",
"lastName": "Johnson",
"dateOfBirth": "1988-05-15",
"gender": "F",
"address": {
"street": "2222 Random St",
"city": "New York",
"state": "NY",
"zip": "10001"
},
"insurance": {
"memberId": "MEM-2026-0042",
"payerName": "Cigna"
}
},
"session": {
"dateOfService": "2026-04-01",
"placeOfService": "telehealth",
"durationMinutes": 45,
"diagnosisCodes": [
{ "code": "F32.1", "description": "Major depressive disorder, single episode, moderate" }
]
}
}'{
"sessionId": "uuid",
"externalSessionId": "session-abc-123",
"status": "processing",
"message": "Session received with codes. Ready for review. Poll GET /api/v1/partner/sessions/{sessionId} for status."
}No clinical note or CPT codes needed — just diagnosis codes and session duration. You can also send explicit CPT codes, a clinical note, or all of the above. See Submit Session for all options.
patient.insurance.payerName should be the insurance carrier name like "Cigna" or "Aetna", not the plan/product name. If you want autocomplete in your app, use Search Payers and store payerId when available.
3. Check status
Poll the session to see where it is in the billing pipeline.
const response = await fetch(
"https://api.usetaiga.com/api/v1/partner/sessions/SESSION_ID",
{
headers: {
"Authorization": "Bearer YOUR_API_KEY",
},
}
);
const data = await response.json();import requests
response = requests.get(
"https://api.usetaiga.com/api/v1/partner/sessions/SESSION_ID",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
data = response.json()curl https://api.usetaiga.com/api/v1/partner/sessions/SESSION_ID \
-H "Authorization: Bearer YOUR_API_KEY"{
"sessionId": "uuid",
"status": "processing",
"externalSessionId": "session-abc-123",
"message": "Session is being processed. We'll update you when the claim is submitted to the payer.",
"patientName": "Sarah Johnson",
"dateOfService": "2026-04-01",
"patient": {
"firstName": "Sarah",
"lastName": "Johnson",
"fullName": "Sarah Johnson",
"dateOfBirth": "1988-05-15",
"memberId": "MEM-2026-0042"
},
"provider": {
"providerId": "uuid",
"firstName": "Jane",
"lastName": "Smith",
"fullName": "Jane Smith",
"npi": "1234567890",
"credentials": null,
"specialty": null
},
"payer": {
"payerName": "Cigna",
"payerId": null,
"groupNumber": null
},
"claim": null,
"timeline": []
}Optional: list sessions
Use the list endpoint when you want to reconcile by externalSessionId, page through all sessions for your organization, or rebuild a dashboard on your side.
curl "https://api.usetaiga.com/api/v1/partner/sessions?externalSessionId=session-abc-123" \
-H "Authorization: Bearer YOUR_API_KEY"That's it. See the full endpoint references for all available fields: