ReferenceReference
Orders endpoints
Exact request and response contracts for the orders endpoints, generated from the enforced Partner API contract.
Machine-readable OpenAPI descriptionOn this page
Endpoints in this group
/v1/ordersCreate an order/v1/orders/{orderId}Retrieve order status/v1/orders/{orderId}/cancelCancel an order while cancellation is still possible/v1/orders/{orderId}/exceptionsRead canonical specimen, sample and result exceptionsImportant
Base path: /api/public/partner/v1. Every response carries request_id; every failure uses the standard error envelope documented under Errors.
POST/v1/orders
Create an order
Send Idempotency-Key; a repeat with the same key returns the same order.
Authentication & scope
- Authentication:
Authorization: Bearer <API key>. The key is bound to one laboratory, one API client and one environment. - Required scope:
orders:write. A key without it is refused with 403forbidden.
Request headers
Idempotency-Key(required) — string
Request body
Required body fields: external_order_id, program_id, item_id, external_subject_id, collection.
{
"external_order_id": "synthetic",
"program_id": "00000000-0000-4000-8000-000000000001",
"item_id": "00000000-0000-4000-8000-000000000001",
"external_subject_id": "synthetic",
"collection": "synthetic",
"region": "synthetic",
"patient": {
"legal_first_name": "synthetic",
"legal_last_name": "synthetic",
"date_of_birth": "2000-01-01",
"sex_at_birth": "synthetic",
"phone": "synthetic",
"email": "synthetic",
"region": "synthetic",
"address_line1": "synthetic",
"address_line2": "synthetic",
"city": "synthetic",
"postal_code": "synthetic",
"country": "synthetic"
},
"ordering_provider": {
"provider_reference": "00000000-0000-4000-8000-000000000001",
"name": "synthetic",
"npi": "synthetic"
},
"aoe_answers": [
{
"question_key": "synthetic",
"answer": "synthetic"
}
],
"clinical_notes": "synthetic",
"billing_mode": "synthetic",
"requested_collection_at": "2026-10-19T00:00:00Z",
"collection_location": "synthetic"
}Synthetic schema examples are illustrative, not eligible records. Set PROGRAM_ID and ITEM_ID from granted Programs/Catalog, ORDER_ID and RESULT_ID from current responses, and EXTERNAL_SUBJECT_ID to an opaque synthetic reference. Replace body identifiers with authorized records and include patient/provider/question fields only when current requirements request them. Use Sandbox; Production requires separate approval.
cURL
curl -s -X POST "$SOLIA_API_BASE/orders" \
-H "Authorization: Bearer $SOLIA_API_KEY" \
-H "Idempotency-Key: request-1001" \
-H "Content-Type: application/json" \
-d '{"external_order_id":"synthetic","program_id":"00000000-0000-4000-8000-000000000001","item_id":"00000000-0000-4000-8000-000000000001","external_subject_id":"synthetic","collection":"synthetic","region":"synthetic","patient":{"legal_first_name":"synthetic","legal_last_name":"synthetic","date_of_birth":"2000-01-01","sex_at_birth":"synthetic","phone":"synthetic","email":"synthetic","region":"synthetic","address_line1":"synthetic","address_line2":"synthetic","city":"synthetic","postal_code":"synthetic","country":"synthetic"},"ordering_provider":{"provider_reference":"00000000-0000-4000-8000-000000000001","name":"synthetic","npi":"synthetic"},"aoe_answers":[{"question_key":"synthetic","answer":"synthetic"}],"clinical_notes":"synthetic","billing_mode":"synthetic","requested_collection_at":"2026-10-19T00:00:00Z","collection_location":"synthetic"}'Responses
- 201 — The created order.
- 401 — Missing, invalid, revoked or expired key.
- 403 — Client, environment or scope denied.
- 409 — The idempotency key was reused with a different body.
- 422 — The program, test or subject is not orderable.
- 429 — Rate limited; honour
Retry-After. - 500 — Canonical request failed; reconcile uncertain actions.
- 503 — Required API configuration is unavailable.
{
"data": {
"order_id": "00000000-0000-4000-8000-000000000001",
"external_order_id": "synthetic",
"program_id": "00000000-0000-4000-8000-000000000001",
"lifecycle": "synthetic",
"next_action": "synthetic",
"lifecycle_detail": "accepted",
"requisition": {
"state": "synthetic",
"requisition_id": "synthetic",
"created_at": "2026-10-19T00:00:00Z",
"laboratory_reference": "synthetic",
"document": {
"state": "not_modeled"
}
},
"accession": {
"accession_number": "synthetic",
"accessioned_at": "2026-10-19T00:00:00Z",
"received_at": "2026-10-19T00:00:00Z",
"source_system": "synthetic"
},
"specimens": [
{
"specimen_id": "00000000-0000-4000-8000-000000000001",
"specimen_code": "synthetic",
"specimen_type": "synthetic",
"status": "synthetic",
"collected_at": "2026-10-19T00:00:00Z",
"received_at": "2026-10-19T00:00:00Z",
"accession_number": "synthetic",
"rejection_reason": "synthetic",
"recollection_of": "00000000-0000-4000-8000-000000000001"
}
],
"transmission": {
"status": "synthetic",
"attempt_no": 1,
"sent_at": "2026-10-19T00:00:00Z",
"ack_status": "synthetic",
"acknowledged_at": "2026-10-19T00:00:00Z",
"external_order_ref": "synthetic"
}
},
"request_id": "synthetic"
}Important
This endpoint accepts Idempotency-Key. Replaying the same key with the same body returns the original result; reusing it with a different body is refused with 409 conflict.
GET/v1/orders/{orderId}
Retrieve order status
Authentication & scope
- Authentication:
Authorization: Bearer <API key>. The key is bound to one laboratory, one API client and one environment. - Required scope:
orders:read. A key without it is refused with 403forbidden.
Path parameters
orderId(required) — string (uuid). Order identifier.
Synthetic schema examples are illustrative, not eligible records. Set PROGRAM_ID and ITEM_ID from granted Programs/Catalog, ORDER_ID and RESULT_ID from current responses, and EXTERNAL_SUBJECT_ID to an opaque synthetic reference. Replace body identifiers with authorized records and include patient/provider/question fields only when current requirements request them. Use Sandbox; Production requires separate approval.
cURL
curl -s "$SOLIA_API_BASE/orders/$ORDER_ID" \
-H "Authorization: Bearer $SOLIA_API_KEY"Responses
- 200 — The order.
- 401 — Missing, invalid, revoked or expired key.
- 403 — Client, environment or scope denied.
- 404 — Unknown order for this key.
- 429 — Per-instance client rate limit exceeded; honor Retry-After.
- 500 — Canonical request failed; reconcile uncertain actions.
- 503 — Required API configuration is unavailable.
{
"data": {
"order_id": "00000000-0000-4000-8000-000000000001",
"external_order_id": "synthetic",
"program_id": "00000000-0000-4000-8000-000000000001",
"lifecycle": "synthetic",
"next_action": "synthetic",
"lifecycle_detail": "accepted",
"requisition": {
"state": "synthetic",
"requisition_id": "synthetic",
"created_at": "2026-10-19T00:00:00Z",
"laboratory_reference": "synthetic",
"document": {
"state": "not_modeled"
}
},
"accession": {
"accession_number": "synthetic",
"accessioned_at": "2026-10-19T00:00:00Z",
"received_at": "2026-10-19T00:00:00Z",
"source_system": "synthetic"
},
"specimens": [
{
"specimen_id": "00000000-0000-4000-8000-000000000001",
"specimen_code": "synthetic",
"specimen_type": "synthetic",
"status": "synthetic",
"collected_at": "2026-10-19T00:00:00Z",
"received_at": "2026-10-19T00:00:00Z",
"accession_number": "synthetic",
"rejection_reason": "synthetic",
"recollection_of": "00000000-0000-4000-8000-000000000001"
}
],
"transmission": {
"status": "synthetic",
"attempt_no": 1,
"sent_at": "2026-10-19T00:00:00Z",
"ack_status": "synthetic",
"acknowledged_at": "2026-10-19T00:00:00Z",
"external_order_ref": "synthetic"
}
},
"request_id": "synthetic"
}POST/v1/orders/{orderId}/cancel
Cancel an order while cancellation is still possible
Authentication & scope
- Authentication:
Authorization: Bearer <API key>. The key is bound to one laboratory, one API client and one environment. - Required scope:
orders:cancel. A key without it is refused with 403forbidden.
Path parameters
orderId(required) — string (uuid). Order identifier.
Synthetic schema examples are illustrative, not eligible records. Set PROGRAM_ID and ITEM_ID from granted Programs/Catalog, ORDER_ID and RESULT_ID from current responses, and EXTERNAL_SUBJECT_ID to an opaque synthetic reference. Replace body identifiers with authorized records and include patient/provider/question fields only when current requirements request them. Use Sandbox; Production requires separate approval.
cURL
curl -s -X POST "$SOLIA_API_BASE/orders/$ORDER_ID/cancel" \
-H "Authorization: Bearer $SOLIA_API_KEY"Responses
- 200 — The cancelled order.
- 401 — Missing, invalid, revoked or expired key.
- 403 — Client, environment or scope denied.
- 409 — The order has progressed too far to cancel.
- 429 — Per-instance client rate limit exceeded; honor Retry-After.
- 500 — Canonical request failed; reconcile uncertain actions.
- 503 — Required API configuration is unavailable.
{
"data": {
"order_id": "00000000-0000-4000-8000-000000000001",
"external_order_id": "synthetic",
"program_id": "00000000-0000-4000-8000-000000000001",
"lifecycle": "synthetic",
"next_action": "synthetic",
"lifecycle_detail": "accepted",
"requisition": {
"state": "synthetic",
"requisition_id": "synthetic",
"created_at": "2026-10-19T00:00:00Z",
"laboratory_reference": "synthetic",
"document": {
"state": "not_modeled"
}
},
"accession": {
"accession_number": "synthetic",
"accessioned_at": "2026-10-19T00:00:00Z",
"received_at": "2026-10-19T00:00:00Z",
"source_system": "synthetic"
},
"specimens": [
{
"specimen_id": "00000000-0000-4000-8000-000000000001",
"specimen_code": "synthetic",
"specimen_type": "synthetic",
"status": "synthetic",
"collected_at": "2026-10-19T00:00:00Z",
"received_at": "2026-10-19T00:00:00Z",
"accession_number": "synthetic",
"rejection_reason": "synthetic",
"recollection_of": "00000000-0000-4000-8000-000000000001"
}
],
"transmission": {
"status": "synthetic",
"attempt_no": 1,
"sent_at": "2026-10-19T00:00:00Z",
"ack_status": "synthetic",
"acknowledged_at": "2026-10-19T00:00:00Z",
"external_order_ref": "synthetic"
}
},
"request_id": "synthetic"
}GET/v1/orders/{orderId}/exceptions
Read canonical specimen, sample and result exceptions
Normalized through the same canonical operational-exception architecture the laboratory operations surface uses — there is no second exception model. Structural fields only: operator notes, evidence and resolution text are never returned, and a laboratory-native vendor code is never guessed.
Authentication & scope
- Authentication:
Authorization: Bearer <API key>. The key is bound to one laboratory, one API client and one environment. - Required scope:
orders:read. A key without it is refused with 403forbidden.
Path parameters
orderId(required) — string (uuid). Order identifier.
Synthetic schema examples are illustrative, not eligible records. Set PROGRAM_ID and ITEM_ID from granted Programs/Catalog, ORDER_ID and RESULT_ID from current responses, and EXTERNAL_SUBJECT_ID to an opaque synthetic reference. Replace body identifiers with authorized records and include patient/provider/question fields only when current requirements request them. Use Sandbox; Production requires separate approval.
cURL
curl -s "$SOLIA_API_BASE/orders/$ORDER_ID/exceptions" \
-H "Authorization: Bearer $SOLIA_API_KEY"Responses
- 200 — Canonical exceptions for this order, newest first.
- 401 — Missing, invalid, revoked or expired key.
- 403 — Client, environment or scope denied.
- 429 — Per-instance client rate limit exceeded; honor Retry-After.
- 500 — Canonical request failed; reconcile uncertain actions.
- 503 — Required API configuration is unavailable.
{
"data": {
"order_id": "00000000-0000-4000-8000-000000000001",
"count": 1,
"action_required": true,
"exceptions": [
{
"exception_id": "00000000-0000-4000-8000-000000000001",
"category": "specimen_rejected",
"severity": "synthetic",
"status": "synthetic",
"retryable": true,
"owner_role": "synthetic",
"entity_type": "synthetic",
"opened_at": "2026-10-19T00:00:00Z",
"resolved_at": "2026-10-19T00:00:00Z",
"source": {
"exception_type": "synthetic",
"domain": "synthetic",
"adapter_key": "synthetic"
}
}
]
},
"request_id": "synthetic"
}