Set server credentials
Keep the Basic credential in your backend or secret store.
OWP_BASE=https://openwellbeingprotocol.com/agent
OWP_USER=…
OWP_PASSWORD=…Complete partner contract · v1
Sixteen documented operations, one partner write, and explicit evidence authority. Every example is generated from the same endpoint catalog; the three flagship calls can be rerun against the live deployment.
69c980a6The running API still reports promotion_status: local_demo. Live, verified, and generally available are intentionally different claims.
Two-minute quickstart
Treat corpus identity and trust state as inputs to the integration—not incidental metadata.
Keep the Basic credential in your backend or secret store.
OWP_BASE=https://openwellbeingprotocol.com/agent
OWP_USER=…
OWP_PASSWORD=…Capture corpus_version or corpus_id and every closed enum.
curl "$OWP_BASE/v1/meta" --user "$OWP_USER:$OWP_PASSWORD"Pin the corpus, send structured context, and keep the returned proof.
X-Corpus-Version: live-web@2026-06-28
POST /v1/screenRead the trust posture and inspect the evidence chain behind a claim.
GET /v1/trust
GET /v1/evidence/dossier/{claim_id}API reference
Discover the partner surface, read every closed vocabulary, and bind an integration to a corpus.
/v1The front door to every partner-visible section of the API.
Returns a typed index and a links map, so an integration can discover the live surface instead of hard-coding an undocumented route list.
No operation-specific parameters.
kindstringResponse discriminator for exhaustive client handling.
corpus_version / corpus_idstringHuman-readable corpus label and content-addressed identity.
promotion_statusstringThe serving corpus promotion state, carried on the response.
titlestringName of the partner API.
linksRecord<string, string>Discoverable links and URI templates for the partner surface.
curl --request GET \
"$OWP_BASE/v1" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS"/v1/metaEvery closed vocabulary, mandatory notice, and corpus stamp.
Use this during integration startup. Clients can build exhaustive enum handling, surface the required notices, and pin the corpus label or hash on later requests.
X-Corpus-VersionheaderstringOptional label or corpus id. A mismatch returns 409.
kindstringResponse discriminator for exhaustive client handling.
corpus_version / corpus_idstringHuman-readable corpus label and content-addressed identity.
promotion_statusstringThe serving corpus promotion state, carried on the response.
mode"A"Screening-only mode; no ranking or selection.
mandatory_noticesstring[]Notices a consumer surface must display.
evidence_familiesstring[]The five closed evidence-family route values.
enumsRecord<string, { values, doc }>Self-documented closed vocabularies, including API error codes.
curl --request GET \
"$OWP_BASE/v1/meta" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS"/v1/openapi.jsonThe live machine contract for the partner plane.
Served as OpenAPI 3.1 / JSON Schema 2020-12. It declares Basic auth, operation paths, closed enums, the standard envelope, and evidence schemas built from the same allow-list used at runtime.
No operation-specific parameters.
openapi"3.1.0"OpenAPI document version.
pathsobjectDocumented partner operations.
components.schemasobjectEnvelope, enums, errors, and endpoint schemas.
security[{ basicAuth: [] }]HTTP Basic authentication requirement.
curl --request GET \
"$OWP_BASE/v1/openapi.json" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS"Resolve shared concepts, traverse bounded relationships, and open one entity-level knowledge card.
/v1/taxonomyCanonical concepts, units, definitions, and surface-name synonyms.
The shared interlingua used across screening and graph operations. Concepts span goals, biomarkers, wearable metrics, medications, candidates, and other reviewed node kinds.
No operation-specific parameters.
kindstringResponse discriminator for exhaustive client handling.
corpus_version / corpus_idstringHuman-readable corpus label and content-addressed identity.
promotion_statusstringThe serving corpus promotion state, carried on the response.
concept_countintegerNumber of canonical concepts in this corpus.
concepts[]Concept[]Canonical id, axis, code, definition, units, category, and synonyms.
curl --request GET \
"$OWP_BASE/v1/taxonomy" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS"/v1/taxonomy/graphCodes-only nodes and typed edges with provenance counts.
Returns the complete partner-visible substrate. Each edge retains its provenance, and the response counts how much of the graph is repo-grounded, derived, or awaiting stronger authority.
No operation-specific parameters.
kindstringResponse discriminator for exhaustive client handling.
corpus_version / corpus_idstringHuman-readable corpus label and content-addressed identity.
promotion_statusstringThe serving corpus promotion state, carried on the response.
nodes[]{ id, kind, code }[]Codes-only nodes.
edges[]{ source, target, label, provenance }[]Typed, provenance-bearing relationships.
provenance_countsRecord<string, integer>Count by graph provenance status.
curl --request GET \
"$OWP_BASE/v1/taxonomy/graph" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS"/v1/graph/queryA bounded breadth-first traversal from one or more canonical roots.
Every control is bounded or closed: roots, labels, direction, depth, kinds, and node cap. Unresolved roots and truncation are explicit response fields.
rootrequiredquerycsv<{kind}:{code}>One or more canonical roots.
labelsquerycsv<EdgeLabel>Optional edge-label filter.
directionqueryout | in | bothTraversal direction. Default: both.
depthqueryinteger 0–3Maximum hops. Default: 1.
kindsquerycsv<NodeKind>Optional returned-node filter.
node_capqueryinteger 1–200Maximum returned nodes. Default: 200.
kindstringResponse discriminator for exhaustive client handling.
corpus_version / corpus_idstringHuman-readable corpus label and content-addressed identity.
promotion_statusstringThe serving corpus promotion state, carried on the response.
queryobjectNormalized request controls.
nodes[] / edges[]arrayReached nodes with hop distance and the relationships between them.
unresolved_rootsstring[]Validly formed roots that are absent from the corpus.
truncated / truncationboolean / objectWhether and why the traversal was clipped.
curl --request GET \
"$OWP_BASE/v1/graph/query?root=goal:sleep&direction=both&depth=1&node_cap=200" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS"/v1/entities/{id}/dossierA kind-aware knowledge card for any canonical graph node.
Accepts a canonical id, an alias prefix, or a bare code. It returns one resolved entity header, facts, typed edges, inline evidence where available, and explicit gaps.
idrequiredpath{kind}:{code} | alias | codeCanonical id, accepted alias, or unambiguous bare code.
kindstringResponse discriminator for exhaustive client handling.
corpus_version / corpus_idstringHuman-readable corpus label and content-addressed identity.
promotion_statusstringThe serving corpus promotion state, carried on the response.
entity{ id, kind, code, display_name, resolved_from }Resolved entity header.
factsobjectDefinition, category, units, and synonyms.
edgesRecord<EdgeLabel, Edge[]>Typed relationships grouped by label.
gapsarrayKnown holes, surfaced explicitly.
curl --request GET \
"$OWP_BASE/v1/entities/goal:sleep/dossier" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS"/v1/goals/{code}/dossierA convenience alias for the universal entity dossier.
Maps a goal code to the canonical goal entity and returns the identical dossier body. It exists for integrations that start from a goal-first workflow.
coderequiredpathGoalCodeCanonical or accepted legacy goal code.
kindstringResponse discriminator for exhaustive client handling.
corpus_version / corpus_idstringHuman-readable corpus label and content-addressed identity.
promotion_statusstringThe serving corpus promotion state, carried on the response.
entity / facts / edges / gapsEntityDossierIdentical body to /v1/entities/goal:{code}/dossier.
curl --request GET \
"$OWP_BASE/v1/goals/sleep/dossier" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS"Inspect evidence rows, the grading method, signed promotion authority, replay state, and deployment trust.
/v1/methodologyCertainty ladder, study ceilings, adjustment rules, gates, and census.
Makes the grading policy inspectable. The methodology and the provenance census of the corpus it would grade travel together.
No operation-specific parameters.
kindstringResponse discriminator for exhaustive client handling.
corpus_version / corpus_idstringHuman-readable corpus label and content-addressed identity.
promotion_statusstringThe serving corpus promotion state, carried on the response.
verified_only_modebooleanWhether only verified-acquisition rows are served.
certainty_order / tier_weightsarrayGRADE ladder and maximum certainty by study tier.
downgrade_reasons / upgrade_reasonsarrayClosed reason codes and step weights.
gates / censusobjectMethodology gates and per-family provenance counts.
curl --request GET \
"$OWP_BASE/v1/methodology" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS"/v1/evidence/{family}Paged, allow-listed evidence rows with a provenance label on every row.
Lists one of five closed families. Legacy rows remain visible with their label; verified_acquisition appears only after the governed receipt chain verifies.
familyrequiredpathenum(5)synthesized-claim, effect-claim, source, grade-worksheet, or evidence-hole.
limitqueryinteger ≤ 1000Page size. Default: 1000.
offsetqueryinteger ≥ 0Page offset. Default: 0.
kindstringResponse discriminator for exhaustive client handling.
corpus_version / corpus_idstringHuman-readable corpus label and content-addressed identity.
promotion_statusstringThe serving corpus promotion state, carried on the response.
familystringNormalized evidence family.
total / count / limit / offsetintegerCollection and page window metadata.
rows[].provenance_statusProvenanceStatusVerifier-derived status, present on every served row.
provenance_countsRecord<ProvenanceStatus, integer>Family-wide count by provenance status.
curl --request GET \
"$OWP_BASE/v1/evidence/synthesized-claim?limit=1&offset=0" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS"/v1/evidence/{family}/{row_id}A single allow-listed row and its verifier-derived provenance state.
Fetches one served row by family and id. Internal-only columns never enter the partner projection.
familyrequiredpathenum(5)Evidence family; underscore aliases are accepted.
row_idrequiredpathstringThe stable row id.
kindstringResponse discriminator for exhaustive client handling.
corpus_version / corpus_idstringHuman-readable corpus label and content-addressed identity.
promotion_statusstringThe serving corpus promotion state, carried on the response.
family / idstringNormalized family and row identity.
rowobjectAllow-listed public fields for this family.
row.provenance_statusProvenanceStatusVerifier-derived row status.
curl --request GET \
"$OWP_BASE/v1/evidence/synthesized-claim/synth_psyllium_ldl_2026_06_28" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS"/v1/evidence/dossier/{claim_id}One synthesis, its worksheet, effects, and sources in a single chain.
The dossier joins all rows behind a synthesized claim. chain_verified only becomes true when the entire joined chain verifies against signed promotion receipts.
claim_idrequiredpathstringA synthesized-claim id.
kindstringResponse discriminator for exhaustive client handling.
corpus_version / corpus_idstringHuman-readable corpus label and content-addressed identity.
promotion_statusstringThe serving corpus promotion state, carried on the response.
chain_verifiedbooleanWhether every joined row verifies as one governed chain.
synthesized_claimobjectDirection, magnitude, certainty, exposure, and provenance.
grade_worksheets[]object[]Stored grading arithmetic and adjustments.
effect_claims[] / source_evidence[]object[]Per-study effects and their source records.
curl --request GET \
"$OWP_BASE/v1/evidence/dossier/synth_psyllium_ldl_2026_06_28" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS"/v1/evidence/{family}/{row_id}/receiptSigner identity, hashes, signature presence, and re-verification result.
Returns the authority record behind a row. The server re-verifies the receipt against its pinned signer set on every read rather than trusting a stored boolean.
familyrequiredpathenum(5)The row’s evidence family.
row_idrequiredpathstringThe row id covered by the receipt.
kindstringResponse discriminator for exhaustive client handling.
corpus_version / corpus_idstringHuman-readable corpus label and content-addressed identity.
promotion_statusstringThe serving corpus promotion state, carried on the response.
provenance_status / review_refstringRow trust label and human-review reference.
receiptobject | nullSigner, covered hashes and ids, and signature presence.
verification{ verified, signer_set }Fresh verification result and signer-set pin.
curl --request GET \
"$OWP_BASE/v1/evidence/synthesized-claim/synth_psyllium_ldl_2026_06_28/receipt" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS"/v1/grade/{claim_id}/replayRe-run the GRADE arithmetic and compare stored with replayed output.
The result is reproduced, failed, or unavailable. A claim without verified promotion authority returns unavailable rather than a grade the system cannot back.
claim_idrequiredpathstringA synthesized-claim id.
kindstringResponse discriminator for exhaustive client handling.
corpus_version / corpus_idstringHuman-readable corpus label and content-addressed identity.
promotion_statusstringThe serving corpus promotion state, carried on the response.
statusreproduced | failed | unavailableReplay outcome.
reason_codestring | nullWhy replay is unavailable or failed.
stored / replayedobject / object | nullStored grade and fresh server-side recomputation.
precision_reasonsstring[]Imprecision reasons carried through the replay.
curl --request GET \
"$OWP_BASE/v1/grade/synth_psyllium_ldl_2026_06_28/replay" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS"/v1/trustThe serving corpus, signer set, effective trust identity, and receipt counts.
Use this to attest the trust state of the deployment you are reading. It reports the signer-set pin, verified and effective evidence identities, receipt counts, and provenance counts by family.
No operation-specific parameters.
kindstringResponse discriminator for exhaustive client handling.
corpus_version / corpus_idstringHuman-readable corpus label and content-addressed identity.
promotion_statusstringThe serving corpus promotion state, carried on the response.
verified_only_modebooleanWhether only verified-acquisition rows are served.
signer_set{ sha256, pinned }Allowed-signer digest and pin state.
verified_evidence_id / effective_evidence_trust_idstringContent identities for verified and effective trust material.
receipts / reverification / provenance_countsobjectAuthority artifact and row-state census.
curl --request GET \
"$OWP_BASE/v1/trust" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS"The only partner-callable write: structured context in, deterministic proof-carrying screen out.
/v1/screenStructured profile, goals, and candidates in; proofs, gaps, and a receipt out.
This is the only partner-callable write and it is stateless. It screens; it does not rank, select, or recommend. results.selected is always an empty array.
body.subjectrequiredbodySubjectStrictly allow-listed age, sex, reproductive status, medications, conditions, allergies, labs, and wearables.
body.goalsrequiredbody[{ code: GoalCode }]1–16 closed goal codes from the taxonomy.
body.candidatesbody[{ raw_name: string }]Optional reviewed candidate restriction. Unmatched names stay visible by index.
X-Corpus-VersionheaderstringOptional corpus pin; a mismatch returns 409.
kindstringResponse discriminator for exhaustive client handling.
corpus_version / corpus_idstringHuman-readable corpus label and content-addressed identity.
promotion_statusstringThe serving corpus promotion state, carried on the response.
schema_version2Closed public screening contract version.
screening_id"scr_" + sha256Deterministic over parsed request, corpus, and verified-evidence identity.
resultsseven bucketsCandidate outcome buckets; selected is structurally empty.
admissibility_proofQ1–Q4 → NO | DEFER | ALLOWEDQuestion-by-question public proof for each candidate.
knowledge_gaps / resolution_reportobjectUnknowns and raw-to-canonical resolution remain visible.
proof_receipt{ trace_digest, trace, verified_evidence_id, replay }Replayable structural trace and the evidence identity mixed into the screen.
curl --request POST \
"$OWP_BASE/v1/screen" \
--user "$OWP_USER:$OWP_PASSWORD" \
--header "Accept: application/json" \
--header "X-Corpus-Version: $OWP_CORPUS" \
--header "Content-Type: application/json" \
--data '{
"subject": {
"age": 44,
"sex": "female",
"reproductive_status": "not_pregnant_not_trying",
"medications": [
{
"raw_name": "sertraline",
"raw_value": "50",
"raw_unit": "mg"
}
],
"conditions": {
"items": [],
"completeness": "explicit_none"
},
"allergies": {
"items": [],
"completeness": "explicit_none"
}
},
"goals": [
{
"code": "sleep"
}
],
"candidates": [
{
"raw_name": "5-HTP"
},
{
"raw_name": "magnesium glycinate"
}
]
}'Error contract
Partner handlers use closed error codes. Corpus drift returns a conflict; ambiguous knowledge stays unresolved; missing trust authority stays unavailable. Authentication, scope, and rate-limit middleware can return plain text, so integrations must branch on both status and Content-Type.
invalid_requestUnknown fields, invalid closed values, or missing required inputs.
HTTP authenticationMissing or invalid Basic credentials. The body can be plain text.
HTTP scope / originThe credential or cross-origin request is outside the partner boundary.
unknown_entityThe id is absent; entity lookup may include did_you_mean hints.
corpus_version_conflictThe requested corpus pin does not match the serving corpus.
request_too_largeA documented body or list cap was exceeded.
HTTP rate limitThe partner limit was reached. Read retry headers; the body can be plain text.
HTTP service unavailablePartner or gateway configuration can fail before an application envelope exists.
effective_trust_unavailableThe request cannot bind a valid effective-trust snapshot.