---
title: "Retrieve an SMS purchase quote"
description: "A quote's price and state: open until confirmed or expired, ordered with what the order made (order.registration_id or order.number_id), pending while the outcome is unknown (the carrier didn't answer: a fee due now is held, monthly fees are committed), or failed when the confirm bought nothing (nothing was charged). `GET /api/v1/sms/quotes/{id}`"
url: https://www.unitpost.com/docs/sms/get-sms-quotes-id
section: "SMS API reference"
updated: 2026-10-13
---
# Retrieve an SMS purchase quote

`GET /api/v1/sms/quotes/{id}`

A quote's price and state: `open` until confirmed or expired, `ordered` with what the order made (`order.registration_id` or `order.number_id`), `pending` while the outcome is unknown (the carrier didn't answer: a fee due now is held, monthly fees are committed), or `failed` when the confirm bought nothing (nothing was charged). A `pending` quote settles from the billing ledger when it is read: `ordered` once the fee is captured or the number or campaign goes live, `failed` once the fee is refunded or the commitments are released. An `ordered` number or campaign whose commitments are released before it ever goes live reads `failed` too and stops counting against the cap. Never the confirm token. Requires the `sms:read` capability.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | string | yes | — |

## Response fields (200)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | string | yes | — |
| `id` | string | yes | The quote (`squote_…`). |
| `product` | enum | yes | One of: `ten_dlc_brand_registration`, `ten_dlc_brand_vetting`, `ten_dlc_campaign`, `ten_dlc_number`, `long_code_number`, `toll_free_number`. |
| `status` | enum | yes | `open` until confirmed or `expires_at`; `ordered` once placed; `pending` while the outcome is unknown (the carrier didn't answer: a fee due now is held, monthly fees are committed, and it settles to `ordered` or `failed` from the billing ledger, so read it again; don't buy the same thing meanwhile); `failed` when the confirm bought nothing (nothing was charged; quote again). One of: `open`, `expired`, `confirming`, `ordered`, `pending`, `failed`. |
| `label` | string | yes | What is bought, as the dashboard names it. |
| `brand_id` | string \| null | yes | — |
| `registration_id` | string \| null | yes | The registration the order is for (a brand registration, or the campaign whose number it is). |
| `messaging_program_id` | string \| null | yes | — |
| `country` | string \| null | yes | — |
| `due_now_cents` | integer | yes | Charged at the confirm, from the plan's allowance (one-time fees). |
| `monthly_cents` | integer | yes | Charged when the number leases or carriers approve the campaign, then every month. |
| `currency` | string | yes | — |
| `line_items` | object[] | yes | — |
| `covered_by_unitpost` | boolean | yes | This workspace's carrier fees are covered by Unitpost: nothing is charged. |
| `expires_at` | string | yes | Confirm before this (quotes last 10 minutes). |
| `created_at` | string | yes | — |
| `confirmed_at` | string \| null | yes | — |
| `order` | object \| null | yes | What the confirmed order made; null until then. |
| `confirm_token` | string | no | Only in the create response, once: pass it to the confirm. Stored only as a hash; a lost token means a new quote. |

## Responses

| Status | Description |
| --- | --- |
| 200 | The quote. |
| 401 | Missing or invalid API key. |
| 403 | Insufficient scope. |
| 404 | Quote not found, or SMS is not enabled. |
| 422 | A query key (this operation takes none). |

## Example request

```bash
curl -X GET 'https://www.unitpost.com/api/v1/sms/quotes/123' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'User-Agent: my-app/1.0'
```

## Example response (200)

```json
{
  "object": "sms_quote",
  "id": "id_123",
  "product": "ten_dlc_brand_registration",
  "status": "open",
  "label": "string",
  "brand_id": "brand_123",
  "registration_id": "registration_123",
  "messaging_program_id": "messaging_program_123",
  "country": "string",
  "due_now_cents": 0,
  "monthly_cents": 0,
  "currency": "usd",
  "line_items": [
    {
      "fee_code": "string",
      "label": "string",
      "amount_cents": 0,
      "cadence": "one_time",
      "starts_when": "on_confirmation"
    }
  ],
  "covered_by_unitpost": false,
  "expires_at": "2026-01-01T00:00:00.000Z",
  "created_at": "2026-01-01T00:00:00.000Z",
  "confirmed_at": "2026-01-01T00:00:00.000Z",
  "order": {
    "registration_id": "registration_123",
    "number_id": "number_123",
    "status": "queued"
  },
  "confirm_token": "string"
}
```

## Links

- HTML reference (with Node.js, Python, Ruby, PHP, Laravel, Go, Java, Rust, .NET and CLI examples): https://www.unitpost.com/docs/sms/get-sms-quotes-id
- OpenAPI 3.1 (full schemas): https://www.unitpost.com/api/v1/openapi.json
