Skip to main content
POST
curl

Authorizations

Authorization
string
header
required

Partner API key sent as Authorization: Bearer . Test keys and live keys are separate.

Headers

Idempotency-Key
string
required

A unique key per logical request. Retrying with the same key and body returns the stored response for 24 hours instead of creating a second consultation; the same key with a different body is refused.

Pattern: ^[A-Za-z0-9_-]{8,128}$

Body

application/json
product_id
string
required

Product id from GET /v1/partner/products.

Required string length: 1 - 64
Pattern: \S
country
string
required

ISO 3166-1 alpha-2 code of a country your partner catalogue offers the product in.

Required string length: 1 - 3
Pattern: \S
plan_key
string
required

One of the product's plans[].plan_key for the country.

Required string length: 1 - 32
Pattern: \S
schema_version
string
required

schema_version of the questionnaire you rendered.

Required string length: 1 - 64
Pattern: \S
schema_hash
string
required

schema_hash of the questionnaire you rendered, with or without a locale.

Required string length: 1 - 64
Pattern: \S
patient
object
required

Patient identity, consent and optional national identifier.

answers
object[]
required

The patient's answers as entries-v1 entries keyed by question_key. Answer only the steps that apply after branching.

Minimum array length: 1

One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind requires.

dosage
string
default:""

One of the product's dosages[].dosage, when the product lists dosages.

Maximum string length: 32
locale
string
default:""

Two-letter language code saved as the language of a new patient account; empty uses your partner default.

Maximum string length: 2
external_reference
string
default:""

Your order or case reference, unique per partner and mode.

Maximum string length: 128

Response

The new consultation.

id
string<uuid>
required

The consultation id.

object
enum<string>
required

Always consultation.

Available options:
consultation
mode
enum<string>
required

test or live, from the API key.

Available options:
live,
test
status
enum<string>
required

Current consultation status.

Available options:
submitted,
in_review,
info_requested,
approved,
rejected,
cancelled
version
integer
required

Increases with every change to the consultation's public state, i.e. every field of this object except version, status_history, updated_at and product.name (catalogue copy: a product rename does not advance it). Events carry the same number.

status_history
object[]
required

Every status change, oldest first.

external_reference
string | null
required

Your order or case reference; null when none was sent.

product
object
required

The product.

country
string
required

ISO 3166-1 alpha-2 country code.

plan_key
string | null
required

The chosen plan.

dosage
string | null
required

The chosen dosage; null when the product has none.

patient
object
required

The patient.

submitted_at
string<date-time>
required

When the consultation was submitted.

updated_at
string<date-time>
required

When it last changed.

reviewer
required

Present once the reviewing doctor has opened the case.

decision
required

The clinical decision; null until one is recorded.

open_info_request
required

The open information request; null when there is none.

prescriptions
object[]
required

Prescriptions issued for the consultation.

billing
object
required

Billing state and price of the consultation.

cancellable
boolean
required

true exactly when POST /consultations/{consultation_id}/cancel would succeed now: the consultation is submitted, has no prescription, and (live) no doctor has opened it, no decision or electronic prescription signing has started, and no prescription issuance or replacement is in flight.