> ## Documentation Index
> Fetch the complete documentation index at: https://docs.anivahealth.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Panel

> Create a panel with its biomarkers

Creates a panel with its biomarkers in one call. Attach it to appointments with
[Add Panels](https://docs.anivahealth.com/api/appointments/add-panels.md), like any panel from [List Panels](https://docs.anivahealth.com/api/panels/list-panels.md).

Requires the `panels_create` scope.

Send an optional `Idempotency-Key` header to make this create safe to retry. A repeat of the same key returns the original response instead of creating a second panel. See [Idempotency](https://docs.anivahealth.com/concepts/idempotency.md).

* Each biomarker becomes its own required group, so every one is measured.
* If one of the biomarkers is archived or no lab delivers it, the API answers `400` and creates nothing.
* If your key is limited to panel groups, attach the panel to one or more of them. Otherwise you could not see the panel afterwards.
* The response carries no pricing. Read the price from [List Panels](https://docs.anivahealth.com/api/panels/list-panels.md).

## Request

### Body

**name** `string` *required*

Display name, at most 200 characters.

**description** `string`

What the panel is for, at most 2000 characters. Optional.

**panel\_group\_ids** `string[]`

Panel groups to attach the panel to. Required unless your key has global access.

**biomarker\_ids** `integer[]`

Biomarkers to include, from [List Biomarkers](https://docs.anivahealth.com/api/biomarkers/list-biomarkers.md).

## Response

On success, the API returns `201 Created` with the panel.

**id** `string` *required*

Unique panel identifier (UUID).

**name** `string` *required*

Display name.

**description** `string`

Description. May be `null`.

**biomarker\_ids** `integer[]` *required*

Biomarkers in the panel.

**panel\_group\_ids** `string[]` *required*

Panel groups the panel is attached to.

## Error responses

| Status | Description |
| - | - |
| `400` | Validation error, `panel_group_ids` missing for a key limited to panel groups, or a biomarker that is archived or that no lab delivers. |
| `403` | Forbidden — your API key lacks the `panels_create` scope, or a panel group is outside your permission scope. |
| `409` | The `Idempotency-Key` was already used with a different body, or its original request has not completed. |
| `500` | Internal server error. |

```bash cURL theme={null}
curl --request POST \
  --url https://anivahealth.com/api/v1/panels \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: panel-iron-check-2026-10' \
  --data '{
    "name": "Iron check",
    "description": "Ferritin and iron status for fatigue follow-ups",
    "panel_group_ids": ["d4b1e2f3-6a7c-4d8e-9f0a-1b2c3d4e5f60"],
    "biomarker_ids": [12, 48, 51]
  }'
```

```json 201 theme={null}
{
  "id": "0f6c2a1e-9b3d-4e5f-8a7b-6c5d4e3f2a1b",
  "name": "Iron check",
  "description": "Ferritin and iron status for fatigue follow-ups",
  "biomarker_ids": [12, 48, 51],
  "panel_group_ids": ["d4b1e2f3-6a7c-4d8e-9f0a-1b2c3d4e5f60"]
}
```

```json 400 theme={null}
{
  "error": "Not delivered by any lab order: 51"
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.