---
title: "Create Labels"
method: POST
path: "/api/v3/admin/label-creation/"
tags: ["label_creation"]
---

# Create Labels

`POST /api/v3/admin/label-creation/`

## Request

- Base URL: `https://api.endless.health` (the document declares no server; this is the origin it was published from)
- URL: `https://api.endless.health/api/v3/admin/label-creation/`
- Auth: none declared

Create kit labels and return them as a zip.

Flow: validate the panels, generate and render the labels, store the zip in
Google Storage, then commit the new order-lookup rows. Schema rules (counts,
child count, zero labels) are enforced by LabelCreationSchema and answer 422
before this function runs. Panel and token checks answer 400.

## Request body

- LabelCreationSchema: Request body for POST /v3/admin/label-creation. The root fields describe the parent kit. `children` is optional: when it is absent or empty, the request creates single kits as it always has.
  - `ticket_id` string, required
  - `number_of_order_lookups` integer, required
  - `number_of_large_labels` integer, required
  - `number_of_small_labels` integer, required
  - `test_panel_id` integer, required
  - `sample_type` 'SERUM_SEPARATOR' | 'SERUM_SEPARATOR_SERUM' | 'SERUM_SEPARATOR_BLOOD' | 'HEPARIN_CAPILLARY_BLOOD' | 'HEPARIN_CAPILLARY_PLASMA' | 'HEPARIN_VENOUS_BLOOD' | 'HEPARIN_VENOUS_PLASMA' | 'EDTA_CAPILLARY_BLOOD' | 'EDTA_CAPILLARY_PLASMA' | 'EDTA_VENOUS_BLOOD' | 'EDTA_VENOUS_PLASMA' | 'UNKNOWN', required
  - `collection_method` 'ADX_CARD' | 'EH_CASSETTE_V1' | 'REDDROP' | 'TASSO' | 'VACUTAINER', required
  - `tags` string[]
  - `activation_flow` 'UNKNOWN' | 'AT_HOME' | 'EVENT': Intended kit activation flow assigned to an order lookup. UNKNOWN covers historical and unclassified records. Later consumers may define their own fallback; this value object does not imply one.
  - `domain` string, uri, nullable
  - `custom_url_template` string, uri, nullable
  - `children` LabelCreationChildSchema[], nullable
    - `test_panel_id` integer, required
    - `sample_type` 'SERUM_SEPARATOR' | 'SERUM_SEPARATOR_SERUM' | 'SERUM_SEPARATOR_BLOOD' | 'HEPARIN_CAPILLARY_BLOOD' | 'HEPARIN_CAPILLARY_PLASMA' | 'HEPARIN_VENOUS_BLOOD' | 'HEPARIN_VENOUS_PLASMA' | 'EDTA_CAPILLARY_BLOOD' | 'EDTA_CAPILLARY_PLASMA' | 'EDTA_VENOUS_BLOOD' | 'EDTA_VENOUS_PLASMA' | 'UNKNOWN', required
    - `collection_method` 'ADX_CARD' | 'EH_CASSETTE_V1' | 'REDDROP' | 'TASSO' | 'VACUTAINER', required
    - `number_of_large_labels` integer, required
    - `number_of_small_labels` integer, required

## Response `200`

Successful Response

- unknown

## Other responses

- `404`: Not found
- `422`: Validation Error

## Changes

- **2026-11-04** `9046a1eb2d0c`: 2 info
  - added the new `TASSO` enum value to the request property `children/anyOf[subschema #1]/items/collection_method`
  - added the new `TASSO` enum value to the request property `collection_method`

[Operation history](https://skmtc.dev/endless/apis/eh-core-v3-api-prod/changes/api/v3/admin/label-creation/post.md)

---

[API](https://skmtc.dev/endless/apis/eh-core-v3-api-prod.md) - [All operations](https://skmtc.dev/endless/apis/eh-core-v3-api-prod/llms.txt) - [OpenAPI document](https://skmtc.dev/endless/apis/eh-core-v3-api-prod/revisions/9046a1eb2d0c?raw)
