API

Intake API

List and retrieve compliance questionnaires and submissions, run intake in-app, review as a provider, and take the public embed submit.

Compliance intake is how a patient's answers become an eligibility verdict a licensed provider can act on. This page covers the authenticated intake surface (/v1/intake/*) and the public, origin-allowlisted embed submit (/v1/public/intake/*). For the model behind it, see Intake.

Questionnaires#

A questionnaire is a versioned question set — a formulary's compliance gate. These calls are authenticated with a machine key and require an intake-view scope.

List questionnaires#

curl https://api.neolife.health/v1/intake/questionnaires \
  -H "Authorization: Bearer $NEOLIFE_API_KEY"

Returns your tenant's questionnaires with their active version.

Get a questionnaire#

Fetch the active version plus version history for one questionnaire, keyed by its stable key:

curl https://api.neolife.health/v1/intake/questionnaires/glp1-eligibility \
  -H "Authorization: Bearer $NEOLIFE_API_KEY"

Submissions#

A submission is one completed run of a questionnaire, carrying a status, a verdict, and — when eligible and provider-reviewed — a certificate.

List submissions#

curl "https://api.neolife.health/v1/intake/submissions?status=pending" \
  -H "Authorization: Bearer $NEOLIFE_API_KEY"
Query param Type Notes
status string Filter by submission status (optional).
sandbox boolean Pass true to list synthetic sandbox submissions.

Get a submission#

curl https://api.neolife.health/v1/intake/submissions/sub_123 \
  -H "Authorization: Bearer $NEOLIFE_API_KEY"

Submit in-app#

Staff can run an intake on a patient's behalf — for example, capturing answers over the phone. This is the authenticated counterpart to the public embed.

curl -X POST https://api.neolife.health/v1/intake/submissions \
  -H "Authorization: Bearer $NEOLIFE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "questionnaireKey": "glp1-eligibility",
    "answers": { "age": 41, "pregnant": false, "bmi": 31 },
    "patient": { "name": "Jane Doe", "email": "[email protected]" }
  }'
Field Type Notes
questionnaireKey string Which questionnaire to run.
answers object Answer map keyed by question id.
patient object Optional { name, email, patientId }.

The response carries the submissionId and a verdicteligible, disqualified, or incomplete.

Review a submission#

Reviewing a clinical intake is a licensure act. This endpoint is provider-gated: the caller needs the intake-review scope and a verified NPI. An eligible verdict is not a prescription — a licensed provider makes the call.

curl -X POST https://api.neolife.health/v1/intake/submissions/sub_123/review \
  -H "Authorization: Bearer $NEOLIFE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 3f1b0c2a-9d6e-4a51-8b2f-1c7e5a9d0e42" \
  -d '{ "decision": "approved", "note": "Reviewed history; clear to prescribe." }'
Field Type Notes
decision "approved" | "rejected" The provider's determination.
note string Optional clinical note.

Send an Idempotency-Key so a retried review never double-records. A caller without the review scope or without an NPI gets 403.

Public embed submit#

The embed is how a patient fills out an intake from your storefront or a hosted check-in page — no user account. Access is scoped by a per-tenant embed key (not an API key) and, outside sandbox, restricted to your allowlisted origins. It returns a patient-safe verdict and certificate only: internal rule ids and the provider packet are never exposed here.

curl -X POST https://api.neolife.health/v1/public/intake/emb_abc123/submissions \
  -H "Origin: https://shop.yourclinic.com" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 3f1b0c2a-9d6e-4a51-8b2f-1c7e5a9d0e42" \
  -d '{
    "questionnaireKey": "glp1-eligibility",
    "answers": { "age": 41, "pregnant": false, "bmi": 31 },
    "patient": { "name": "Jane Doe", "email": "[email protected]" }
  }'

The path parameter is your embed key. Origin (or Referer) must match an allowlisted origin — a mismatch is rejected. A signed follow-up token (for a refill check-in) may accompany the body; it binds the answers to the right patient and order server-side.

Field Type Notes
questionnaireKey string Which questionnaire to run.
answers object Answer map keyed by question id.
patient object Optional { name, email }.
token string Optional signed intake-link token for refill follow-ups.

The response is deliberately minimal:

{
  "submissionId": "sub_123",
  "verdict": "eligible",
  "missingQuestionIds": [],
  "certificate": "cert_...",
  "sandbox": false,
  "message": "Thanks — your answers are with a licensed provider for review. You'll hear back shortly."
}
Field Meaning
submissionId The created submission.
verdict eligible, disqualified, or incomplete.
missingQuestionIds Question ids still required (when incomplete).
certificate Certificate reference for an eligible run.
message A ready-to-render, patient-safe message.

An eligible verdict routes the submission to a provider for review — it does not itself authorize fulfillment. See Intake for the full lifecycle and the rest of the API reference.