---
title: "Create a checkout session"
method: POST
path: "/api/agent/create_checkout"
tags: ["checkout"]
---

# Create a checkout session

`POST /api/agent/create_checkout`

## Request

- Base URL: `https://www.test-well.com`
- URL: `https://www.test-well.com/api/agent/create_checkout`
- Auth: none declared

Start a TestWell order for the user: tests/panels, the US state where they will visit the lab (required for pricing and lab routing), and the buyer's name, email and phone.

## Request body

- object
  - `items` object[], required
    - `id` string, required: Test or panel slug/id
    - `quantity` integer
  - `state` string: US state code or name where the blood will be drawn
  - `buyer` object
    - `first_name` string
    - `last_name` string
    - `email` string, email
    - `phone_number` string
  - `dry_run` boolean: Price only; do not create a session

## Response `200`

Tool result

- object
  - `tool` 'create_checkout', required
  - `result` object, required
    - `id` string, required
    - `status` 'not_ready_for_payment' | 'ready_for_payment' | 'in_progress' | 'completed' | 'canceled', required
    - `currency` 'usd', required
    - `line_items` object[], required
      - `id` string, required
      - `item` object, required
        - `id` string, required
        - `quantity` number, required
      - `base_amount` number, required
      - `subtotal` number, required
      - `total` number, required
      - `name` string
      - `lab` string
      - `url` string
    - `totals` object[], required
      - `type` string, required
      - `display_text` string, required
      - `amount` number, required
    - `messages` object[], required
      - `type` 'info' | 'error', required
      - `content` string, required
      - `param` string
    - `fulfillment_options` object[], required
      - `type` 'digital', required
      - `id` string, required
      - `title` string, required
    - `links` object[], required
      - `type` string, required
      - `url` string, required
    - `pay_online_url` string, nullable: Prefilled cart for browser payment when the platform has no payment token
    - `order` object
      - `id` string, required
      - `checkout_session_id` string, required
      - `permalink_url` string, required
    - `dry_run` boolean

## Other responses

- `400`: Invalid input
- `429`: Rate limited

---

[API](https://skmtc.dev/test-well/apis/testwell-agent-api.md) · [All operations](https://skmtc.dev/test-well/apis/testwell-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/test-well/apis/testwell-agent-api/revisions/6e260731dfa4?raw)
