---
title: "List published compounds"
method: GET
path: "/v1/compounds"
---

# List published compounds

`GET /v1/compounds`

## Request

- Base URL: `https://api.doseplot.com`
- URL: `https://api.doseplot.com/v1/compounds`
- Auth: none required

## Response `200`

Compound list.

- CompoundList
  - `disclaimer` string, required: Fixed disclaimer. Must be preserved when relaying any output to a human (terms clause 2).
  - `intended_use` string, required: Fixed intended-use statement. Must be preserved when relaying any output to a human.
  - `count` integer, required
  - `compounds` object[], required
    - `id` integer, required: Stable canon id.
    - `slug` string, required
    - `name` string, required
    - `class` string, nullable, required: Display grouping (uiGroup, else grp, else cat).
    - `half_life_days` number, nullable, required: Terminal half-life in days.
    - `routes` string[], required: Administration routes, primary first.
    - `reconstitutable` boolean, required: Whether reconstitution math is available for this compound.

## Other responses

- `405`: Method not allowed on a live path. The read endpoints are GET-only; the compute endpoints are POST-only.
- `429`: Rate limit exceeded (60 requests/minute on the read routes; 1000 /v1 reads/day; 300 requests/minute on the paid compute routes). Carries a Retry-After header. NOTE: a 429 raised by Cloudflare's own edge protection, rather than by this Worker, MAY be a non-JSON body (HTML) with no Retry-After -- treat ANY 429 as retryable regardless of content type, and do not assume the problem+json schema below.
- `500`: Unexpected internal error. Generic body; nothing about the request is echoed.

---

[API](https://skmtc.dev/doseplot/apis/doseplot-agent-api.md) · [All operations](https://skmtc.dev/doseplot/apis/doseplot-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/doseplot/apis/doseplot-agent-api/revisions/f35133f7fbc1?raw)
