> ## 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.

# Quote Cart

> Price panels and biomarkers without an appointment

Returns the bill for panels and biomarkers at your rate card. You need no appointment. Nothing is
booked.

The bill is the same as `pricing` on [Preview Appointment](/api/appointments/preview-containers).
[Pricing](/concepts/pricing) explains how Aniva prices it.

Requires the `prices_view` scope.

## Request

### Body parameters

Send at least one id in `panel_ids` or `biomarker_ids`.

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

Panels to price, at most 50. Each must be on [List Panels](/api/panels/list-panels) for your key.

**biomarker\_ids** `number[]`

Biomarkers to price, at most 500.

**sex** `integer`

Biological sex per ISO/IEC 5218: `1` = male, `2` = female. Some panels add biomarkers only for one
sex or age. Send `sex` and `date_of_birth` together to apply these rules. Without them, the rules
do not apply.

**date\_of\_birth** `string`

Date of birth, `YYYY-MM-DD`. Send it with `sex`.

**rate\_card** `string`

The rate card to price at: `retail`, or the `id` from [Get Rate Card](/api/pricing/get-rate-card).
Default: the rate card of your API key, else retail.

## Response

**total\_cents** `integer`

The price of the tests at your rate card: every priced position, panel and biomarker row. A row
with `price_cents: null` adds nothing.

**retail\_total\_cents** `integer`

The same price at the recommended retail rate card.

**fees** `object`

The fees of one appointment, in cents. Aniva bills them on your monthly invoice.

**fees**

**phlebotomy\_fee\_cents** `integer`

Per completed appointment.

**snack\_fee\_cents** `integer`

Per appointment where the patient gets a snack. Missing when your patients get no snack. To
offer snacks, contact Aniva.

**logistics\_fee\_cents** `integer`

Per courier pickup. Your appointments at the same location on the same day share one pickup.

**material\_fee\_cents** `integer`

Per completed appointment. Covers tubes, labels and the bag.

**total\_with\_fees\_cents** `integer`

`total_cents` plus every fee in `fees`. It counts the full logistics fee. A shared pickup makes the
real amount lower.

**positions** `object[]`

The positions in the bill. A position is a set of biomarkers with one price. It has `id`, `name`,
`price_cents`, `retail_cents` and `tier`. `id` and `name` are `null` for a position Aniva has not
published yet.

**panels** `object[]`

The panels in the bill, with `id`, `name`, `price_cents` and `retail_cents`.

**biomarkers** `object[]`

One row per biomarker you receive. This includes the components of a ratio and every member of a
position.

**biomarker row**

**id** `number`

Biomarker id.

**name** `string`

Biomarker name.

**price\_cents** `integer | null`

The price of this row, with `retail_cents` beside it. `0` when a position or a panel pays for
it.

**required\_by** `number[]`

The ratios that need this biomarker. You pay for it once.

**requires** `number[]`

Only on a ratio: the biomarkers it is calculated from.

**via\_position** `string | null`

The position that pays for this row. `null` when the position is not published yet.

## Error responses

| Status | Description |
| - | - |
| `400` | The body is invalid, or your key may not use the `rate_card`. |
| `400` | `biomarker_not_available`: no lab your key may use runs the biomarker. |
| `400` | `biomarker_not_priced`: the biomarker has no price. |
| `400` | `biomarker_requires_position`: the biomarker is sold only in a position. The body lists the positions. |
| `403` | Your API key does not have the `prices_view` scope. |
| `404` | `Panels not found`: the panel does not exist, or your key cannot list it. |
| `404` | `Biomarkers not found`: the biomarker does not exist. |
| `500` | Internal server error. |

```bash cURL theme={null}
curl --request POST \
  --url https://anivahealth.com/api/v1/pricing/quote \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "biomarker_ids": [63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 204, 206, 207, 209, 249]
  }'
```

```json 200 theme={null}
{
  "total_cents": 210,
  "retail_total_cents": 451,
  "fees": {
    "phlebotomy_fee_cents": 2500,
    "logistics_fee_cents": 2000,
    "material_fee_cents": 250
  },
  "total_with_fees_cents": 4960,
  "positions": [
    { "id": null, "name": null, "price_cents": 210, "retail_cents": 451, "tier": "routine" }
  ],
  "panels": [],
  "biomarkers": [
    { "id": 63, "name": "Eosinophils", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 64, "name": "Lymphocytes", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 65, "name": "Neutrophils", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 66, "name": "Monocytes", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 67, "name": "White Blood Cells (WBC)", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 68, "name": "Basophils", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 69, "name": "Hematocrit", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 70, "name": "Red Blood Cells (RBC)", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 71, "name": "Hemoglobin", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 72, "name": "Platelets", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 73, "name": "Mean Corpuscular Hemoglobin Concentration (MCHC)", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 74, "name": "Mean Corpuscular Volume (MCV)", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 75, "name": "Red Cell Distribution Width (RDW)", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 76, "name": "Mean Corpuscular Hemoglobin (MCH)", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 204, "name": "Lymphocytes (%)", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 206, "name": "Eosinophils (%)", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 207, "name": "Basophils (%)", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 209, "name": "Monocytes (%)", "price_cents": 0, "retail_cents": 0, "via_position": null },
    { "id": 249, "name": "Neutrophils (%)", "price_cents": 0, "retail_cents": 0, "via_position": null }
  ]
}
```

```json 404 theme={null}
{
  "error": "Panels not found: f1c2d4a3-7b8e-4f2a-9c1d-2e3f4a5b6c7d"
}
```


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