---
title: "Quote many Stars quantities in one request"
method: GET
path: "/v1/pricing/batch"
tags: ["Pricing"]
---

# Quote many Stars quantities in one request

`GET /v1/pricing/batch`

Quote a whole LIST of Stars quantities in a single request — built for
storefronts that refresh preview prices for an entire pack catalog. One
batch call consumes ONE unit of your request budget (and one probe
unit), instead of one per pack.

Stars-only (`type=stars`). The quantity list is deduped and returned
sorted ascending, up to **200 values** per call. Each entry carries the
same `amount` + `fee` itemisation as `GET /v1/pricing` for that
quantity — the two endpoints agree cent-for-cent. Shared response
fields (`usdt_per_ton`, `quoted_at`, `valid_until`) are hoisted to the
top level.

**Rate limit:** same tighter 60 req/min per-tenant probe cap as
`GET /v1/pricing` — but since a single call covers your whole catalog,
one call per refresh window is all you need.

## Query parameters

- `type` 'stars', required
- `quantities` string, required
- `payment_currency` 'ton' | 'usdt_ton' — `ton` = GRAM (ex TON), `usdt_ton` = USDT (TON).

## Response `200`

One quote per requested quantity (deduped, ascending).

- QuoteBatch
  - `type` 'stars', required — Batch pricing is Stars-only.
  - `currency` 'ton' | 'usdt_ton', required — `ton` = GRAM (ex TON), `usdt_ton` = USDT (TON).
  - `quotes` object[], required — One entry per requested quantity (deduped, ascending).
    - `quantity` integer, required — The number of Stars this entry priced.
    - `amount` string, required — The full, all-in total to pay for this quantity, as a decimal string in the top-level `currency` — identical to what `GET /v1/pricing` returns for the same quantity.
    - `fee` FeeBreakdown, required — Itemisation of the `usdt_ton` processing fee that is ALREADY part of the all-in amount. `subtotal + processing_fee == total == amount`. Pass-through swap cost only — it does not reveal our cost basis or markup. Only `total` (= `amount`) is binding — the `subtotal`/`processing_fee` split is informational and may shift by a cent with the live FX rate.
      - `subtotal` string, required — The item price before the processing fee, as a decimal string (USDT).
      - `processing_fee` string, required — The 1% DEX swap fee + 0.5 GRAM swap gas, combined and rounded up to the cent, as a decimal string (USDT).
      - `total` string, required — subtotal + processing_fee — equals `amount`. Decimal string (USDT).
      - `description` string, required — Human-readable label for the fee components.
      - `currency` 'usdt', required — The unit of the fee amounts (always `usdt`).
  - `usdt_per_ton` string, nullable, required — Indicative USDT per 1 GRAM (informational; the field name `usdt_per_ton` is frozen for wire compatibility; `null` if unavailable).
  - `quoted_at` string, date-time, required
  - `valid_until` string, date-time, required — Re-quote hint — prices are locked only at order creation.

## Other responses

- `400` — Malformed request.
- `401` — Missing or invalid `X-Api-Key`.
- `429` — A rate limit was reached — the per-minute request budget, the tighter pricing/recipient-check probe cap (60 req/min), the daily order cap, or the per-recipient flood guard. See **Rate limits** in the overview. The per-minute-budget responses also carry `RateLimit-*` + `Retry-After` headers.
- `503` — A required source was temporarily unavailable — either the price source, or recipient eligibility could not be verified right now. **Retryable**: reuse the same `Idempotency-Key` and try again shortly. No order is created and you are not charged.

---

[API](https://skmtc.net/mystars/apis/mystars-faas-fulfilment-api.md) · [All operations](https://skmtc.net/mystars/apis/mystars-faas-fulfilment-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mystars/mystars-faas-fulfilment-api/revisions/3c24cb3dfa12/schema)
