---
title: "Store a documented result with exact source and stable external_id"
method: POST
path: "/body-map/records"
---

# Store a documented result with exact source and stable external_id

`POST /body-map/records`

## Request

- Base URL: `https://nutri.coghorizon.com/api/v1`
- URL: `https://nutri.coghorizon.com/api/v1/body-map/records`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://nutri.coghorizon.com/oauth/authorize`, token URL `https://nutri.coghorizon.com/oauth/token`, scopes: `records:write`)

The person enables the archive on /me/body-map. Categories describe the source, not current health. Clinical categories require an exact status_evidence substring in source.quote; diagnosis requires clinician_report. No automatic urgency or completeness assessment. Split long documents into source-linked records without truncation.

## Request body

- BodyRecordInput
  - `profile_id` string
  - `external_id` string, required: Stable record identifier for retry safety; unique within this profile.
  - `target_id` string, required
  - `site_detail` string: Exact site, side, finger, joint or spinal level from the source.
  - `temporal_context` 'current' | 'historical' | 'resolved' | 'unspecified': Timing explicitly stated in the source: current at its date, historical, resolved/healed, or unspecified. Never infer present-day activity or healing from age.
  - `temporal_evidence` string: Exact source.quote passage supporting temporal_context; required except for unspecified/omitted.
  - `status` 'recorded' | 'no_findings' | 'findings' | 'diagnosis' | 'unclear', required: Source record category, never current organ health: recorded, no_findings, findings, diagnosis or unclear.
  - `status_evidence` string: Exact substring of source.quote supporting the category. Required for green, amber and blue.
  - `observed_on` string, nullable, required: Date of the source observation; null when unknown. Never substitute upload date.
  - `title` string, required: Faithful short description in the person's language; retain suspected/historical qualifiers.
  - `source` object, required
    - `document_id` string, required: Stable local document identifier. Reuse it across chunks; no public URL required.
    - `title` string, required
    - `kind` 'clinician_report' | 'investigation_report' | 'laboratory_report' | 'device' | 'self_report', required
    - `author` string, nullable, required: Author or institution exactly as documented; null when absent.
    - `quote` string, required: Exact source passage, retaining uncertainty and negation. Split long sources into separately identified records; never truncate.
    - `locator` string: Page, section or specimen identifier.
  - `measurements` object[]
    - `name` string, required
    - `value` string, required: Value as recorded, including ranges, <, > and qualitative results.
    - `unit` string, nullable, required
    - `reference` string: Reference interval exactly from this source; do not supply your own.
    - `method` string

## Response `201`

Stored record

- object

## Other responses

- `400`: Validation failed
- `401`: Missing or invalid token
- `402`: Subscription required
- `403`: Token lacks the scope
- `404`: Not found
- `409`: Medical archive consent required or external_id conflicts
- `429`: Rate limited

---

[API](https://skmtc.dev/coghorizon/apis/top-nutritionist-api.md) · [All operations](https://skmtc.dev/coghorizon/apis/top-nutritionist-api/llms.txt) · [OpenAPI document](https://skmtc.dev/coghorizon/apis/top-nutritionist-api/revisions/928f04d72f8c?raw)
