Skip to main content
GET
Get a single order
Fetch a single order by its CSBoard order id. The response includes the full per-item breakdown with delivery status, return reasons, and Steam trade offer details. Authentication required. Send your key as Authorization: Bearer csb_pub_....

Path parameters

string
required
The CSBoard order id, e.g. ord_01J9Z3K8Q2.

Response fields

The response is a single Order object with the same shape as the items in GET /v1/orders:
string
required
string | null
string
required
One of: completed, hold, delivering, pending, cancelled, failed.
string | null
string
required
Always "USD".
number
required
integer
required
datetime | null
string
instant or manual. manual means a person sends the trade, up to 12 hours, and the order may stay delivering that long with no trade offer. A P2P lot is always manual.
datetime | null
Delivery deadline, set only while status is pending or delivering (null on held orders). If the seller misses it, the order is cancelled and refunded automatically. See POST /v1/orders/{id}/cancel.
string | null
Why the order failed, as a code to branch on, such as recipient_inventory_private or listing_gone. Set only when status is failed or cancelled. The list of codes may grow — treat a value you do not know as unavailable.
string | null
Who has to act on the failure: recipient, seller, buyer or market. Set only when status is failed or cancelled.
string | null
One English sentence saying what happened and what to do. Show it as is; branch on fail_reason, since the wording can change.
Refund | null
Money credited back for this order, or null if none was. Carries amount_usd, refunded_at, and partial. A cancelled or failed order is always refunded — read this instead of inferring it from the status.
datetime
required
datetime | null
OrderItem[]
required
Per-item breakdown. Each item has market_hash_name, price_usd, status (hold | delivering | delivered | returned), tradable_at, return_reason, steam_trade_offer_id, and steam_trade_offer_finished_at.

Example request

Example response

Error codes

Authorizations

Authorization
string
header
required

Send your key as a Bearer token on every request: Authorization: Bearer csb_pub_.... Generate keys in your CSBoard profile. Calls made with a key are metered only by that key's own limits — there is no per-IP limit on top — and every answer carries X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset and X-RateLimit-Bucket for the bucket the call spent. See Rate limits.

Path Parameters

id
string
required

CSBoard order id.

Response

The order.

order_id
string
required
status
enum<string>
required
Available options:
completed,
hold,
delivering,
pending,
cancelled,
failed
currency
string
required
Example:

"USD"

charged_total_usd
number
required
item_count
integer
required
created_at
string<date-time>
required
items
object[]
required
steam_id
string | null
custom_id
string | null

Your own id, if you set one at purchase time.

hold_until
string<date-time> | null
delivery_type
enum<string>

How the order ships. instant: a bot sends the Steam trade within minutes. manual: a person (or a slow desk) sends it, which can take up to 12 hours, so the order may stay delivering that long with no trade offer yet. A player's (P2P) lot is always manual.

Available options:
instant,
manual
delivery_deadline_at
string<date-time> | null

The delivery deadline: 12 hours after purchase for manual delivery, the vendor's accept window otherwise. Set only while status is pending or delivering; null once the order is completed, cancelled or failed, and on a held order (it waits on hold_until). If the seller misses it, the order is cancelled and refunded automatically.

fail_reason
string | null

Why the order failed. Set when status is failed or cancelled, null otherwise. The recipient has to act on recipient_inventory_private, recipient_inventory_full, invalid_trade_url, recipient_cannot_trade, recipient_too_many_offers, offer_declined and offer_expired; the seller on seller_did_not_deliver, seller_cancelled and rolled_back; you on cancelled_by_buyer; the market on listing_gone, market_unavailable and unavailable. The list may grow: treat a value you do not know as unavailable.

Example:

"recipient_inventory_private"

fail_side
enum<string> | null

Who has to act on the failure: recipient (the account the skins go to — fix it and buy again), seller or market (buy another listing), buyer (you cancelled). null unless status is failed or cancelled.

Available options:
recipient,
seller,
buyer,
market,
null
fail_message
string | null

One English sentence: what happened and what to do. Safe to show to a person; branch on fail_reason, since the wording can change. null unless status is failed or cancelled.

Example:

"The recipient's Steam inventory is private, so the trade could not be sent. Set Inventory to Public in the recipient's Steam privacy settings and buy again."

refund
object | null

Refund credited for this order, or null if none. A cancelled or failed order is ALWAYS refunded — this field is the receipt, so you never have to infer it from the status or reconcile against your balance.

updated_at
string<date-time> | null