---
title: "Record a vital sign"
method: POST
path: "/v1/consultations/{pid}/vital_signs"
tags: ["Vital signs"]
---

# Record a vital sign

`POST /v1/consultations/{pid}/vital_signs`

## Request

- Base URL: `https://developer.yezza.com`
- URL: `https://developer.yezza.com/v1/consultations/{pid}/vital_signs`
- Auth: API key in header `X-Api-Key`
- TypeScript: <https://skmtc.dev/yezza/apis/yezza-clinic-api-external-access/docs/v1/consultations/:pid/vital_signs/post.ts> (a function with typed inputs; its response is checked against the schema)

Vital signs attach to a consultation (POSTing under /patients is 405).

Requires the `consultations:write` scope.

## Path parameters

- `pid` string, required

## Request body

- object: All fields optional — record what you measured.
  - `recorded_at` string, date-time
  - `height` number: cm
  - `weight` number: kg
  - `bp_systolic` integer: mmHg
  - `bp_diastolic` integer: mmHg
  - `pulse` integer: bpm
  - `temperature` number: °C
  - `blood_glucose` number: mmol/L
  - `spo2` integer: %
  - `respiratory_rate` integer: breaths/min

## Response `201`

The saved reading

## Other responses

- `401`: Missing or invalid API key
- `402`: Monthly quota exceeded
- `403`: Insufficient scope, inactive subscription, or the clinic hasn't authorized API access
- `429`: Rate limit exceeded — see Retry-After header
- `502`: Upstream unavailable

---

[API](https://skmtc.dev/yezza/apis/yezza-clinic-api-external-access.md) - [All operations](https://skmtc.dev/yezza/apis/yezza-clinic-api-external-access/llms.txt) - [OpenAPI document](https://skmtc.dev/yezza/apis/yezza-clinic-api-external-access/revisions/fb0639413542?raw)
