One request, and your patient is in care.
Send us a patient from your system. We create the record, open a clinical queue item, and put their intake forms in front of them, all in a single call you can safely repeat.
A clinical back end you can call, instead of one you have to build.
You own the patient relationship and the front end. Everything behind the handoff, from licensed provider matching through clinical review, prescribing and fulfilment, runs on our side under our clinical entity.
- Calls to integrate
- 1One POST per patient. No SDK, no polling loop, no queue for you to drain.
- Required fields
- 3Name, email, and the state the patient is in. Everything else is optional.
- Duplicate records
- 0A repeated call returns the original patient rather than creating a second one.
- Typical time to live
- DaysMost partners are sending real intakes within a week of receiving a key.
Four steps, and only two of them are yours.
The boundary is deliberate. You stop at the moment a patient is ready for care, and we pick them up there.
You capture the patient
Your funnel, form or checkout collects their details, however you already do it.
Your systemYou post the intake
One authenticated call carrying the patient's name, email and state.
Your systemWe open the chart
A patient record and a clinical queue item, returned to you with identifiers you can store.
TrueEvalThe patient completes intake
They get a secure link to a health history baseline and a form specific to their treatment.
TrueEvalBy default we email the intake link. If you would rather keep every message in your own brand and voice, say so and we will hand you the link and stay silent.
A complete, working request fits on one screen.
Three fields are required. The rest sharpen the clinical picture, and you can add them at your own pace once you are live.
# One patient, one call. # Your base URL is issued with your key. curl -X POST "$TRUEEVAL_BASE/external-intake-webhook" \ -H "x-api-key: te_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "patient_name": "Jordan Reyes", "patient_email": "jordan@example.com", "patient_state": "TX", "treatment_type": "glp1", "external_order_id": "ORD-2026-44817" }'
Send a phone number and we can text the intake link as well as email it. Send an address if anything will ship to the patient.
If you can give us a name, an email address and a state, you can send us a patient. Everything else only makes the clinician's job easier.
Two identifiers worth writing down.
{
"success": true,
"patient_id": "8f14e45f…",
"queue_item_id": "c9a2d7b1…",
"status": "pending_intake",
"intake_link": "https://…",
"treatment_program": "GLP1 Weight Management",
"email_sent": true
}
Partners who keep only the patient identifier end up unable to say which visit they are asking about. Keep the pair together.
Save the two ID numbers we hand back. One says who the patient is. The other says which visit you are talking about.
The failure that creates two patients cannot happen here.
The dangerous network failure is not the one that fails. It is the one that succeeds on our side and times out on yours. You send it again, and now one person has two charts.
Sending your own external_order_id closes that. We key on it, so a repeat of the same intake returns the original result rather than creating anything new.
Generate the reference once, when the intake is first created in your system, and not once per attempt. Then repeat freely on timeouts and server errors.
{
"success": true,
"deduplicated": true,
"patient_id": "8f14e45f…",
"queue_item_id": "c9a2d7b1…",
"message": "Request already processed"
}
Same identifiers, no second chart, and no second email to the patient. The status code tells you which happened: 201 created something new, 200 found it already there.
If your server never hears back from ours, send the identical request again. You get the same patient back, not a second one.
Your key does exactly what it was issued to do, and nothing else.
- Keys carry named permissions. An intake key can create patients and open queue items. It cannot read anyone else's data.
- If a permission is missing, the response names it, so you never have to guess.
- We keep a one way hash, never a readable copy. Nobody at TrueEval can look your key up.
- A lost or exposed key is replaced rather than recovered. Rotation runs with an overlap window so you switch across without downtime.
- State decides which licensed provider may see a patient. That routing is enforced on our side, not trusted from yours.
- Every access to a chart is attributed and auditable.
Your key opens one door and no others. We cannot read it back to you. A patient in Texas is only ever seen by someone licensed in Texas.
One integration, a whole platform behind it.
The API is the front door. What makes it worth walking through is everything already standing on the other side.
- Provider licensing tracked per state, so a patient is only ever seen by someone allowed to treat them where they live.
- Credentialing, state rules, and an audit trail on every chart access.
- Intake, clinical review, notes, orders and follow up all sit on one record.
- Your call opens that record, so nothing has to be keyed in twice.
- Prescriptions are dispensed and shipped through pharmacy partners already wired to the same record.
- The journey does not stop at the consultation, so neither does your patient.
What we need from you, and what you get from us.
- A technical contact who owns the integration
- Expected volume at launch, and at steady state
- Which treatment types you will be sending
- Whether we message patients, or you do
- An API key scoped to this integration
- An agreed reference prefix for test traffic, so it is easy to spot and clear out
- A named contact for integration questions
- Notice ahead of any change to this contract
- Authenticate firstPost an empty body. A validation error proves your key and headers are right.
- Send one full intakeWith patient messaging switched off, so nothing reaches a real person while you are wiring up.
- Send the exact same one againYou should get the same identifiers back and no second chart. This is the check most integrations skip and later regret.
- Then one live runWith an address you control, so you see exactly what a patient sees.
Tell us how many patients, and from which states. We hand you a key. You run four test calls before you send anybody real.
Three ways to connect, and one of them asks nothing of you.
Nobody on your team has to write code for this to work. If you would rather hand it over, our engineers will go in and set the whole thing up for you.
- One authenticated POST. Most engineers finish it in an afternoon.
- You get the field reference, sample requests and a named contact on our side.
- Zapier, Make, n8n or the webhook builder already inside your CRM can all send this call.
- No code, no hosting, no deploy. You paste the fields into a form.
- You grant access. We build the connection, test it and hand it back working.
- Scope and cost agreed in writing before anyone touches anything.
- Access. You give us the narrowest login that can do the job, on the one system that needs changing.
- Build. We wire your form, funnel or CRM to the intake call.
- Test. Four test patients, with messaging switched off, so nothing reaches a real person.
- Handover. We walk you through what changed, then you revoke our access.
We ask for the least we can work with, we never ask for anything holding patient data, and access ends the day the work does. If your platform can issue a temporary or limited login, use that one.
Most of these take under a week from access to first live patient. If your setup is unusual we will say so before we start, not halfway through.
Bring your volume, your states and your treatment list.
Thirty minutes with your engineer and ours is usually enough to agree the contract and issue a key.