Technology · API
Your systems in. Clinical status out.
The Partner API connects EmbedCare to whatever you already run: your app, your CRM, your storefront. Send a completed intake; we handle eligibility, routing, prescribing, and fulfillment, and push every status change back to you. REST + JSON, one owned record per patient.
POST /v1/visits
Authorization: Bearer ec_live_****
Idempotency-Key: 5f2c…
{
"patient": { "email": "…", "state": "TX" },
"condition": "weight-loss",
"intake_id": "intk_9f31"
}
→ 201 { "id": "vst_18d2",
"status": "in_review",
"sla_minutes": 60 }Tenant-scoped keys
Bearer auth with per-tenant keys: a key only ever sees its own patients. Row-level security is the default, not an option.
Idempotent writes
Every POST accepts an Idempotency-Key. Retries return the original result instead of a duplicate visit, safe against flaky networks.
Signed webhooks
Care status pushes to your systems as it changes (visit approved, prescription shipped, refill upcoming), each event signed so you can verify it came from us.
Bearer auth with a per-tenant key (Authorization: Bearer ec_live_…). Keys are tenant-scoped — a key only ever sees its own patients (row-level security). Rotate keys from Partner → Settings. All POSTs accept an Idempotency-Key header. Replaying a key returns the original result (HTTP 200) instead of creating a duplicate — safe to retry on network errors.
Endpoints
The surface, at a glance
A deliberately small API: send patients in, read status back, stay subscribed to everything in between.
- POST
/v1/visitsCreate a visit - GET
/v1/visits/{id}Retrieve a visit - GET
/v1/visitsList visits - POST
/v1/visits/{id}/messagesMessage the patient - POST
/v1/webhooksRegister a webhook
Webhooks
You never poll. Care status comes to you.
visit.createdA visit was accepted and is being routed.
visit.status_changedA visit moved status (in_review → prescribed/declined, etc.).
order.shippedThe pharmacy shipped the medication.
message.receivedThe patient replied in the portal.
The Partner API is rolling out with design partners; the contract above is the one we build against. If your integration needs something it doesn't cover, that's a conversation we want to have.