---
title: "Get experiment quote"
method: GET
path: "/api/v1/experiments/{experiment_id}/quote"
tags: ["experiments"]
---

# Get experiment quote

`GET /api/v1/experiments/{experiment_id}/quote`

## Request

- Base URL: `https://devs.adaptyvbio.com`
- URL: `https://devs.adaptyvbio.com/api/v1/experiments/{experiment_id}/quote`
- Auth: HTTP bearer

Returns quote metadata: totals, currency, status, and expiration.
The `expires_at` field shows when the quote expires if not confirmed.

**The quote is generated asynchronously, so poll this endpoint.**
`POST /experiments/{experiment_id}/submit` returns before the quote exists;
generating it involves a call to the payment provider. Until it lands this
endpoint answers `404`, which means *not yet* rather than *never* — the same
contract `GET /experiments/{experiment_id}/invoice` follows. A `404` here is
an expected step in the normal flow, not an error to report.

Poll until `200`, or equivalently until `stripe_quote_id` appears on
`GET /experiments/{experiment_id}`. A second or two is typical. Distinguish
the two `404` causes by the experiment's own status: an experiment still in
`draft` has not been submitted, so no quote is coming until it is.

## Path parameters

- `experiment_id` string, uuid, required

## Response `200`

Quote metadata retrieved

- ExperimentQuoteResponse: Quote metadata for an experiment.
  - `amount_subtotal` integer, required: Subtotal amount (in the smallest currency unit)
  - `amount_total` integer, required: Total amount (in the smallest currency unit)
  - `currency` string, required: ISO currency code (e.g., "usd")
  - `experiment_id` string, uuid, required: Experiment identifier
  - `expires_at` string, date-time, nullable: RFC3339 timestamp for when the quote expires (if provided by Stripe)
  - `status` 'draft' | 'open' | 'accepted' | 'canceled' | 'stale', required: Quote status from Stripe's API.
  - `stripe_quote_url` string, required: Quote reference URL (may require provider account access).
  - `updated_at` string, date-time, nullable: RFC3339 timestamp for the last update time

## Other responses

- `400`: Unknown or inaccessible experiment
- `401`: Invalid or missing authentication token
- `403`: Caller does not have access to this experiment
- `404`: The quote has not been generated yet. Expected while it is being created after submit — poll until 200. Also returned when the experiment was never submitted.
- `500`: Internal server error

---

[API](https://skmtc.dev/adaptyvbio/apis/adaptyv-foundry-api.md) - [All operations](https://skmtc.dev/adaptyvbio/apis/adaptyv-foundry-api/llms.txt) - [OpenAPI document](https://skmtc.dev/adaptyvbio/apis/adaptyv-foundry-api/revisions/5a2228f4bd59?raw)
