Skip to main content
POST
Submit a de-identified canonical Type A JSON body (canonical_submission_v1). Map your intake questionnaire and blood panel in your backend before calling this endpoint — see Canonical submission JSON and the Input Data Preparation Guide.

Request requirements

  • partnerId must equal the UUID of the PartnerCredential tied to your API key.
  • Include a non-empty markers[] array with all 14 Health Yourself blood marker codes.
  • Structure questionnaire data under subject (not markers.healthQuestionnaireMarkers).
  • Send options.requestedOutputs (required) and options.requestedOutcomes for the four HY wellbeing areas.
  • Provide sourceMetadata.sourceTimestamp for when the intake was completed; optional sourceMetadata.markerRanges for lab reference intervals.
  • On every POST, send non-empty x-correlation-id and Idempotency-Key headers.
The API validates the canonical schema at request time (types, enums, smoking/family conditionals, and the 14-marker panel). Rejected requests return 400 with field-level details — see Errors.

Top-level field reference

Health Yourself request example

submission.json:

Accepted response (202)

Store submissionId. Poll GET /v1/submissions/{submissionId} or wait for the result.ready webhook, then call GET /v1/results/{resultId}.

Authorizations

X-Api-Key
string
header
required

Plaintext API key issued for the tenant (stored hashed server-side).

Headers

x-correlation-id
string
required

Client-supplied correlation id for writes; bound to error logs and payloads where applicable.

Minimum string length: 1
Idempotency-Key
string
required

Client key for at-most-once submit semantics (24h scope). Reuse with the same body returns the same submissionId/jobId; reuse with a different body returns 409.

Minimum string length: 1
x-request-id
string

Optional; echoed when possible. Server generates when absent.

Body

application/json

Canonical Type A ingestion JSON (canonical_submission_v1). At least one of markers or reportDocuments must be non-empty (Zod superRefine). Cross-field smoking and family-history rules are Zod-only.

schemaVersion
enum<string>
required
Available options:
canonical_submission_v1
partnerId
string<uuid>
required
partnerSubmissionId
string
required
Required string length: 1 - 512
partnerSubjectId
string
required
Required string length: 1 - 512
subject
object
required
options
object
required
markers
object[]
reportDocuments
object[]
questionnaire
object
sourceMetadata
object
clinicalExtensions
object

Optional partner extensions; keys scanned for disallowed direct identifiers. Rules enforced in Zod.

Response

Accepted — submission persisted; pipeline job enqueued

submissionId
string<uuid>
required
jobId
string<uuid>
required
partnerSubmissionId
string
required
partnerSubjectId
string
required
status
enum<string>
required

Partner-facing ingestion outcome for this endpoint. The persisted Submission.status in PostgreSQL continues to reflect pipeline state (e.g. PROCESSING).

Available options:
accepted