Quickstart
End-to-end integration in 3 API calls.
Three API calls to go from therapy note to insurance claim. Before you start, create an API key in the Partner Portal.
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.
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",
"message": "Session is being processed.",
"patientName": "Sarah Johnson",
"dateOfService": "2026-04-01"
}That's it. See the full endpoint references for all available fields: