POST /v1/orders — Buy CS2 Listings from Your Balance
Buy 1–10 CS2 listings by ID in a single atomic request, debited from your CSBoard balance. Requires a trading-enabled API key and linked Steam account.
The orders endpoint lets you buy between 1 and 10 listings in a single atomic request. The charge is debited from your CSBoard balance at the live asking price at the moment of execution — not at the price you saw when you queried /v1/listings. To protect yourself from price movements between lookup and purchase, always include max_price_usd as a total ceiling. Save one Idempotency-Key per order.Authentication required. Send your key as Authorization: Bearer csb_pub_....Trading capability required. The API key must have buying enabled. Configure this in your CSBoard profile.
Optional, 8–128 characters (for example a UUID). While a successful response is cached, repeating its key returns HTTP 200 and Idempotent-Replayed: true. The cache lasts up to 24 hours. Once it expires the same key can start another purchase.
Total price ceiling in USD, enforced atomically at execution time. If the live total of all items exceeds this value, the entire order is rejected with a price_moved error and you are not charged. Strongly recommended — without it you have no overcharge protection.
Game the item_ids belong to: 730 = CS2, 570 = Dota 2, 252490 = Rust. Omit it for CS2. Send the same appId you read the ids with from GET /v1/listings. Check tradable in GET /v1/games to see where your key can buy.
The order’s internal state when the response was built, for example paid or pending_delivery. This is not the normalised status vocabulary of GET /v1/orders — read the order there, or use webhooks, to follow it.
How the order is being delivered, when known: instant (bot delivery) or pending (a seller or supplier still has to send the trade). Dota 2 and Rust orders always answer pending.
An id that cannot be bought through the API. Use ids from GET /v1/listings.
400
steam_account_required
No linked Steam account or valid trade URL on your CSBoard account.
400
cannot_mix_sources / one_external_per_order
These items cannot share one order. Split it.
400
unsupported_game
Your key cannot buy in this appId. supported_app_ids lists the games it can buy in.
401
missing_api_key / invalid_api_key
Missing or invalid API key.
402
insufficient_balance
Your balance is too low. The body carries required_usd and current_usd.
402
kyc_required
The purchase needs identity verification first. The body carries kyc_url.
403
trading_not_enabled
The API key does not have buying enabled. Enable it in your profile.
403
account_restricted
The account is restricted. Contact support.
409
price_moved
The live total exceeded max_price_usd. Order rejected; no charge made. The body carries quoted_max_usd, current_total_usd and the live price of each item.
409
item_unavailable
An item left the catalogue before your order landed. The body may carry unavailable_ids and, for CS2, unknown_ids. See unavailable items below.
409
idempotency_in_progress
Wait for Retry-After, then check the original order.
409
pending_trades_limit
The recipient has too many unaccepted Steam offers. limit is in the body.
409
price_updating / concurrent_update
Prices are mid-refresh, or a concurrent order won the race. Nothing was charged — retry.
429
rate_limit_exceeded
Over 250 buy orders/min (bucket: "buy_orders"), or over your key’s trading limit (bucket: "trading"). Wait for the Retry-After header value.
500
order_failed
Unexpected failure. Check GET /v1/orders/info before retrying — the order may exist.
503
market_unavailable
The marketplace for one of the items is temporarily down. No charge was made.
504
upstream_timeout
Keep the order pending and reconcile by its saved identifier with GET /v1/orders/info. An empty result can precede order creation.
Always include max_price_usd in your request. Prices on a live marketplace can change between the moment you query /v1/listings and the moment your order executes. Without this ceiling, your balance could be debited at a higher price than you intended, and there is no automatic rollback.
Items delivered via hold are subject to a Steam trade hold. Check the tradable_at field on the original listing (from GET /v1/listings) to see exactly when a held item will become tradable in your Steam inventory.
Dota 2 and Rust. Orders with appId570 or 252490 are queued for delivery and answer delivery: "pending" with expected_minutes: null. Follow them with GET /v1/orders/{id}. The price ceiling, balance check and idempotency work exactly as for CS2.
Listings can leave the catalogue between your read and your buy. The 409 item_unavailable body lists every missing id in unavailable_ids. On a CS2 order it may also carry unknown_ids: the missing ids we have no record of at all. Either the id is not a CSBoard listing id, or the listing left the catalogue more than an hour ago. A Steam asset id is the usual mix-up — CSBoard listing ids are never all digits, so send the id of a row from /v1/listings or the stream.
{ "code": "item_unavailable", "detail": "One or more items are no longer available. 1 of the ids are not known here (`unknown_ids`): not a listing id, or a listing gone for over an hour. Steam asset ids are not listing ids: send the `id` of a row from /v1/listings or the stream.", "unavailable_ids": ["31846262931"], "unknown_ids": ["31846262931"]}
To drop sold listings before you try to buy them, subscribe to the gone events of GET /v1/listings/stream.
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.
Optional, 8–128 characters. While a successful result is cached (up to 24 hours), the same key returns HTTP 200 with Idempotent-Replayed: true. An active claim returns 409 idempotency_in_progress. Reconcile a lost response before another purchase.
Sticky per-account setting (not per-order). Send true once to switch your key into auto-claim mode: every held order is then auto-released the moment its hold clears (your bot must auto-accept the Steam trade offer within ~15 minutes). Send false to switch back to manual claiming via POST /orders/{id}/claim. Omit to leave the setting unchanged.
Game the item_ids belong to: 730 = CS2 (the default), 570 = Dota 2, 252490 = Rust. Send the same appId you read the ids with from GET /listings. A game this key may not buy in answers 400 unsupported_game — tradable in GET /games tells you in advance.
Available options:
730,
570,
252490
Response
Idempotent replay: a request with an Idempotency-Key (or idempotency_key) already used for a completed order returns that original response body, with the header Idempotent-Replayed: true. Nothing new is bought.
The order as it stands the moment it was created. status here is the internal state at that instant (for example paid or pending_delivery), not the normalised vocabulary of GET /orders — read the order there, or subscribe to webhooks, to follow it.
How the order is being delivered, when known: instant (bot delivery) or pending (a seller or supplier still has to send the trade). Dota 2 and Rust orders always answer pending.
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"CSBoard API","colors":{"primary":"#2563eb","light":"#60a5fa","dark":"#172554"},"favicon":"https://mintcdn.com/csboard/LyXJsSfteiiBK7GJ/favicon.svg?fit=max\u0026auto=format\u0026n=LyXJsSfteiiBK7GJ\u0026q=85\u0026s=29fd93b872ec9ce02b5ca0a5aecc8d03","appearance":{"default":"dark"},"navbar":{"links":[{"href":"https://csboard.com/profile?tab=api","label":"Get a key"}],"primary":{"type":"button","label":"csboard.com","href":"https://csboard.com"}},"footer":{"socials":{"website":"https://csboard.com"}},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","href":"introduction"},{"language":"ru","href":"ru/introduction"},{"language":"zh-Hans","href":"zh-Hans/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"csboard","hasAudioNarration":false,"actualSubdomain":"csboard","customDomains":["api.csboard.com"],"gitSource":{"type":"github","owner":"kizilovv","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aed460334fe7746877e0ec2","clientVersion":"0.0.4117","searchFilterCounts":[{"language":"en","tag":"API Reference","count":42},{"language":"ru","tag":"Справочник API","count":22},{"language":"zh-Hans","tag":"API 参考","count":22},{"language":"en","tag":"Market Data","count":10},{"language":"en","tag":"Guides","count":10},{"language":"en","tag":"Webhooks","count":8},{"language":"ru","tag":"Рыночные данные","count":8},{"language":"ru","tag":"Руководства","count":8},{"language":"zh-Hans","tag":"市场数据","count":8},{"language":"zh-Hans","tag":"指南","count":8},{"language":"en","tag":"Trading","count":7},{"language":"ru","tag":"Торговля","count":7},{"language":"zh-Hans","tag":"交易","count":7},{"language":"en","tag":"Instant Sell","count":6},{"language":"en","tag":"Walkthroughs","count":6},{"language":"en","tag":"P2P","count":5},{"language":"en","tag":"Account","count":5},{"language":"ru","tag":"P2P","count":5},{"language":"ru","tag":"Инструкции","count":5},{"language":"zh-Hans","tag":"P2P","count":5},{"language":"zh-Hans","tag":"教程","count":5},{"language":"en","tag":"Get Started","count":4},{"language":"ru","tag":"Начало работы","count":3},{"language":"zh-Hans","tag":"快速开始","count":3},{"language":"ru","tag":"Аккаунт","count":1},{"language":"ru","tag":"Статус","count":1},{"language":"ru","tag":"Журнал изменений","count":1},{"language":"zh-Hans","tag":"账户","count":1},{"language":"zh-Hans","tag":"状态","count":1},{"language":"zh-Hans","tag":"更新日志","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/post-orders","slug":"/api-reference/post-orders","pageMetadata":{"title":"POST /v1/orders — Buy CS2 Listings from Your Balance","sidebarTitle":"POST /orders","description":"Buy 1–10 CS2 listings by ID in a single atomic request, debited from your CSBoard balance. Requires a trading-enabled API key and linked Steam account.","openapi":"POST /orders","href":"/api-reference/post-orders"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Buy 1–10 CS2 listings by ID in a single atomic request, debited from your CSBoard balance. Requires a trading-enabled API key and linked Steam account.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Expandable,Heading,Note,ParamField,ResponseField,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The orders endpoint lets you buy between 1 and 10 listings in a single atomic request. The charge is debited from your CSBoard balance at the `,_jsx(_components.strong,{children:`live`}),` asking price at the moment of execution — not at the price you saw when you queried `,_jsx(_components.code,{children:`/v1/listings`}),`. To protect yourself from price movements between lookup and purchase, always include `,_jsx(_components.code,{children:`max_price_usd`}),` as a total ceiling. Save one `,_jsx(_components.code,{children:`Idempotency-Key`}),` per order.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Authentication required.`}),` Send your key as `,_jsx(_components.code,{children:`Authorization: Bearer csb_pub_...`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Trading capability required.`}),` The API key must have buying enabled. Configure this in your CSBoard profile.`]}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsx(_components.p,{children:`Before placing an order, ensure:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Trading-enabled key`}),` — buying must be turned on for your API key in your CSBoard profile settings.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Linked Steam account and trade URL`}),` — your CSBoard account must have a Steam account connected with a valid trade URL so items can be delivered.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Sufficient balance`}),` — your CSBoard balance must cover the total cost of the items at their live prices.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`request-headers`,children:`Request headers`}),`\n`,_jsx(ParamField,{header:`Idempotency-Key`,type:`string`,id:`param-idempotency-key`,children:_jsxs(_components.p,{children:[`Optional, 8–128 characters (for example a UUID). While a successful response is cached, repeating its key returns HTTP 200 and `,_jsx(_components.code,{children:`Idempotent-Replayed: true`}),`. The cache lasts up to 24 hours. Once it expires the same key can start another purchase.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`request-body`,children:`Request body`}),`\n`,_jsx(ParamField,{body:`item_ids`,type:`string[]`,required:true,id:`param-item-ids`,children:_jsxs(_components.p,{children:[`Array of 1–10 unique listing IDs to purchase. Obtain these from the `,_jsx(_components.code,{children:`id`}),` field of `,_jsx(_components.code,{children:`GET /v1/listings`}),` responses. Each ID must appear only once per request.`]})}),`\n`,_jsx(ParamField,{body:`max_price_usd`,type:`number`,id:`param-max-price-usd`,children:_jsxs(_components.p,{children:[`Total price ceiling in USD, enforced atomically at execution time. If the live total of all items exceeds this value, the entire order is rejected with a `,_jsx(_components.code,{children:`price_moved`}),` error and you are not charged. `,_jsx(_components.strong,{children:`Strongly recommended`}),` — without it you have no overcharge protection.`]})}),`\n`,_jsx(ParamField,{body:`idempotency_key`,type:`string`,id:`param-idempotency-key-1`,children:_jsxs(_components.p,{children:[`Alternative to the `,_jsx(_components.code,{children:`Idempotency-Key`}),` header. If both are provided, the header takes precedence. Use one or the other, not both.`]})}),`\n`,_jsx(ParamField,{body:`appId`,default:`730`,type:`integer`,id:`param-app-id`,children:_jsxs(_components.p,{children:[`Game the `,_jsx(_components.code,{children:`item_ids`}),` belong to: `,_jsx(_components.code,{children:`730`}),` = CS2, `,_jsx(_components.code,{children:`570`}),` = Dota 2, `,_jsx(_components.code,{children:`252490`}),` = Rust. Omit it for CS2. Send the same `,_jsx(_components.code,{children:`appId`}),` you read the ids with from `,_jsx(_components.code,{children:`GET /v1/listings`}),`. Check `,_jsx(_components.code,{children:`tradable`}),` in `,_jsx(_components.a,{href:`/api-reference/get-games`,children:_jsx(_components.code,{children:`GET /v1/games`})}),` to see where your key can buy.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`response-fields`,children:`Response fields`}),`\n`,_jsxs(_components.p,{children:[`A new order answers `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`201 Created`})}),`. An idempotent replay answers `,_jsx(_components.code,{children:`200`}),` with the same body.`]}),`\n`,_jsx(ResponseField,{name:`order_id`,type:`string`,required:true,id:`param-order-id`,children:_jsxs(_components.p,{children:[`Unique identifier for this order. Pass it to `,_jsx(_components.code,{children:`GET /v1/orders/{id}`}),` to follow delivery.`]})}),`\n`,_jsx(ResponseField,{name:`status`,type:`string`,required:true,id:`param-status`,children:_jsxs(_components.p,{children:[`The order’s internal state when the response was built, for example `,_jsx(_components.code,{children:`paid`}),` or `,_jsx(_components.code,{children:`pending_delivery`}),`. This is not the normalised `,_jsx(_components.code,{children:`status`}),` vocabulary of `,_jsx(_components.code,{children:`GET /v1/orders`}),` — read the order there, or use `,_jsx(_components.a,{href:`/guides/webhooks`,children:`webhooks`}),`, to follow it.`]})}),`\n`,_jsx(ResponseField,{name:`currency`,type:`string`,required:true,id:`param-currency`,children:_jsxs(_components.p,{children:[`Always `,_jsx(_components.code,{children:`USD`}),`.`]})}),`\n`,_jsx(ResponseField,{name:`charged_total_usd`,type:`number`,required:true,id:`param-charged-total-usd`,children:_jsx(_components.p,{children:`Total debited from your balance, in USD.`})}),`\n`,_jsx(ResponseField,{name:`item_count`,type:`integer`,id:`param-item-count`,children:_jsx(_components.p,{children:`Number of items in the order.`})}),`\n`,_jsxs(ResponseField,{name:`items`,type:`object[]`,id:`param-items`,children:[_jsx(_components.p,{children:`One entry per item bought.`}),_jsxs(Expandable,{title:`Item object`,children:[_jsx(ResponseField,{name:`market_hash_name`,type:`string | null`,id:`param-market-hash-name`,children:_jsx(_components.p,{children:`Steam market hash name of the item.`})}),_jsx(ResponseField,{name:`price_usd`,type:`number | null`,id:`param-price-usd`,children:_jsx(_components.p,{children:`What this item was charged, in USD.`})}),_jsx(ResponseField,{name:`status`,type:`string | null`,id:`param-status-1`,children:_jsxs(_components.p,{children:[`Internal item state, if one is set yet — usually `,_jsx(_components.code,{children:`null`}),` right after purchase.`]})})]})]}),`\n`,_jsx(ResponseField,{name:`delivery`,type:`string | null`,required:true,id:`param-delivery`,children:_jsxs(_components.p,{children:[`How the order is being delivered, when known: `,_jsx(_components.code,{children:`instant`}),` (bot delivery) or `,_jsx(_components.code,{children:`pending`}),` (a seller or supplier still has to send the trade). Dota 2 and Rust orders always answer `,_jsx(_components.code,{children:`pending`}),`.`]})}),`\n`,_jsx(ResponseField,{name:`expected_minutes`,type:`integer | null`,required:true,id:`param-expected-minutes`,children:_jsxs(_components.p,{children:[`Rough delivery estimate in minutes, when we can state one. Always `,_jsx(_components.code,{children:`null`}),` for Dota 2 and Rust orders.`]})}),`\n`,_jsx(ResponseField,{name:`created_at`,type:`datetime`,id:`param-created-at`,children:_jsx(_components.p,{children:`ISO 8601 timestamp of when the order was created.`})}),`\n`,_jsx(ResponseField,{name:`updated_at`,type:`datetime | null`,id:`param-updated-at`,children:_jsx(_components.p,{children:`ISO 8601 timestamp of the order’s last change.`})}),`\n`,_jsx(Heading,{level:`2`,id:`example-request`,children:`Example request`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://csboard.com/v1/orders`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer csb_pub_...\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Idempotency-Key: 6f9c2b10-1a2b-4c3d-8e4f-5a6b7c8d9e0f\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"item_ids\": [\"itm_8841201\", \"itm_8841340\"],`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"max_price_usd\": 30.00`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`example-response`,children:`Example response`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`23`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`23`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"order_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"cmg9x2k1p0007qz3h5v8w2r4n\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"paid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"currency\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"USD\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"charged_total_usd\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`26.47`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"item_count\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"items\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"market_hash_name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"AK-47 | Redline (Minimal Wear)\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"price_usd\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`14.37`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"market_hash_name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"AWP | Atheris (Field-Tested)\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"price_usd\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`12.1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"delivery\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"instant\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"expected_minutes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"created_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-06-29T17:12:04.000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"updated_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-06-29T17:12:04.000Z\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`error-codes`,children:`Error codes`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`HTTP status`}),_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_request`})}),_jsxs(_components.td,{children:[`Malformed body — `,_jsx(_components.code,{children:`detail`}),` is the field-error map.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`unsupported_item`})}),_jsxs(_components.td,{children:[`An id that cannot be bought through the API. Use ids from `,_jsx(_components.code,{children:`GET /v1/listings`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`steam_account_required`})}),_jsx(_components.td,{children:`No linked Steam account or valid trade URL on your CSBoard account.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`cannot_mix_sources`}),` / `,_jsx(_components.code,{children:`one_external_per_order`})]}),_jsx(_components.td,{children:`These items cannot share one order. Split it.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`unsupported_game`})}),_jsxs(_components.td,{children:[`Your key cannot buy in this `,_jsx(_components.code,{children:`appId`}),`. `,_jsx(_components.code,{children:`supported_app_ids`}),` lists the games it can buy in.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`401`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`missing_api_key`}),` / `,_jsx(_components.code,{children:`invalid_api_key`})]}),_jsx(_components.td,{children:`Missing or invalid API key.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`402`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`insufficient_balance`})}),_jsxs(_components.td,{children:[`Your balance is too low. The body carries `,_jsx(_components.code,{children:`required_usd`}),` and `,_jsx(_components.code,{children:`current_usd`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`402`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`kyc_required`})}),_jsxs(_components.td,{children:[`The purchase needs identity verification first. The body carries `,_jsx(_components.code,{children:`kyc_url`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`403`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`trading_not_enabled`})}),_jsx(_components.td,{children:`The API key does not have buying enabled. Enable it in your profile.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`403`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`account_restricted`})}),_jsx(_components.td,{children:`The account is restricted. Contact support.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`409`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`price_moved`})}),_jsxs(_components.td,{children:[`The live total exceeded `,_jsx(_components.code,{children:`max_price_usd`}),`. Order rejected; no charge made. The body carries `,_jsx(_components.code,{children:`quoted_max_usd`}),`, `,_jsx(_components.code,{children:`current_total_usd`}),` and the live price of each item.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`409`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`item_unavailable`})}),_jsxs(_components.td,{children:[`An item left the catalogue before your order landed. The body may carry `,_jsx(_components.code,{children:`unavailable_ids`}),` and, for CS2, `,_jsx(_components.code,{children:`unknown_ids`}),`. See `,_jsx(_components.a,{href:`#unavailable-items`,children:`unavailable items`}),` below.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`409`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`idempotency_in_progress`})}),_jsx(_components.td,{children:`Wait for Retry-After, then check the original order.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`409`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`pending_trades_limit`})}),_jsxs(_components.td,{children:[`The recipient has too many unaccepted Steam offers. `,_jsx(_components.code,{children:`limit`}),` is in the body.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`409`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`price_updating`}),` / `,_jsx(_components.code,{children:`concurrent_update`})]}),_jsx(_components.td,{children:`Prices are mid-refresh, or a concurrent order won the race. Nothing was charged — retry.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`429`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`rate_limit_exceeded`})}),_jsxs(_components.td,{children:[`Over 250 buy orders/min (`,_jsx(_components.code,{children:`bucket: \"buy_orders\"`}),`), or over your key’s trading limit (`,_jsx(_components.code,{children:`bucket: \"trading\"`}),`). Wait for the `,_jsx(_components.code,{children:`Retry-After`}),` header value.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`500`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`order_failed`})}),_jsxs(_components.td,{children:[`Unexpected failure. Check `,_jsx(_components.code,{children:`GET /v1/orders/info`}),` before retrying — the order may exist.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`503`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`market_unavailable`})}),_jsx(_components.td,{children:`The marketplace for one of the items is temporarily down. No charge was made.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`504`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`upstream_timeout`})}),_jsx(_components.td,{children:`Keep the order pending and reconcile by its saved identifier with GET /v1/orders/info. An empty result can precede order creation.`})]})]})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Always include `,_jsx(_components.code,{children:`max_price_usd`}),` in your request. Prices on a live marketplace can change between the moment you query `,_jsx(_components.code,{children:`/v1/listings`}),` and the moment your order executes. Without this ceiling, your balance could be debited at a higher price than you intended, and there is no automatic rollback.`]})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Items delivered via `,_jsx(_components.code,{children:`hold`}),` are subject to a Steam trade hold. Check the `,_jsx(_components.code,{children:`tradable_at`}),` field on the original listing (from `,_jsx(_components.code,{children:`GET /v1/listings`}),`) to see exactly when a held item will become tradable in your Steam inventory.`]})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Dota 2 and Rust.`}),` Orders with `,_jsx(_components.code,{children:`appId`}),` `,_jsx(_components.code,{children:`570`}),` or `,_jsx(_components.code,{children:`252490`}),` are queued for delivery and answer `,_jsx(_components.code,{children:`delivery: \"pending\"`}),` with `,_jsx(_components.code,{children:`expected_minutes: null`}),`. Follow them with `,_jsx(_components.a,{href:`/api-reference/get-order`,children:_jsx(_components.code,{children:`GET /v1/orders/{id}`})}),`. The price ceiling, balance check and idempotency work exactly as for CS2.`]})}),`\n`,_jsx(`a`,{id:`unavailable-items`}),`\n`,_jsx(Heading,{level:`2`,id:`unavailable-items`,children:`Unavailable items`}),`\n`,_jsxs(_components.p,{children:[`Listings can leave the catalogue between your read and your buy. The `,_jsx(_components.code,{children:`409 item_unavailable`}),` body lists every missing id in `,_jsx(_components.code,{children:`unavailable_ids`}),`. On a CS2 order it may also carry `,_jsx(_components.code,{children:`unknown_ids`}),`: the missing ids we have no record of at all. Either the id is not a CSBoard listing id, or the listing left the catalogue more than an hour ago. A Steam asset id is the usual mix-up — CSBoard listing ids are never all digits, so send the `,_jsx(_components.code,{children:`id`}),` of a row from `,_jsx(_components.code,{children:`/v1/listings`}),` or the stream.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"item_unavailable\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"detail\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:'\"One or more items are no longer available. 1 of the ids are not known here (`unknown_ids`): not a listing id, or a listing gone for over an hour. Steam asset ids are not listing ids: send the `id` of a row from /v1/listings or the stream.\"'}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"unavailable_ids\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"31846262931\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"unknown_ids\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"31846262931\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`To drop sold listings before you try to buy them, subscribe to the `,_jsx(_components.code,{children:`gone`}),` events of `,_jsx(_components.a,{href:`/api-reference/get-listings-stream`,children:_jsx(_components.code,{children:`GET /v1/listings/stream`})}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"POST /v1/orders — Buy CS2 Listings from Your Balance","sidebarTitle":"POST /orders","description":"Buy 1–10 CS2 listings by ID in a single atomic request, debited from your CSBoard balance. Requires a trading-enabled API key and linked Steam account.","openapi":"POST /orders","href":"/api-reference/post-orders"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Request headers","slug":"request-headers","depth":2,"children":[]},{"title":"Request body","slug":"request-body","depth":2,"children":[]},{"title":"Response fields","slug":"response-fields","depth":2,"children":[]},{"title":"Example request","slug":"example-request","depth":2,"children":[]},{"title":"Example response","slug":"example-response","depth":2,"children":[]},{"title":"Error codes","slug":"error-codes","depth":2,"children":[]},{"title":"Unavailable items","slug":"unavailable-items","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Trading"],"summary":"Buy listings from your balance","description":"Buy 1–10 CS2 listings by ID in a single atomic request, debited from your CSBoard balance. Requires a trading-enabled API key and linked Steam account.","operationId":"createOrder","parameters":["65df7367-c5b7-47cb-97a2-da73dc6d1b5a"],"requestBody":"51ab1907-983d-479a-84f8-f45761df218d","responses":{"200":"93ffe73f-51a3-4a52-a634-63f2592bba38","201":"4e2782e4-5dda-44c3-9d8f-d5e759c9f9a7","400":"8288632c-957f-4aee-a1e9-fd181b646321","401":"289330e9-fbc8-4b81-8c62-cc99021792a5","402":"c93dd02b-9c11-4728-ad0a-a915d69577aa","403":"1ae69c8f-e98b-4b0a-87e0-b4f07c324850","409":"4f394fc0-0c34-4969-a87e-5a477e4edced","429":"0d571e76-e9c5-4a29-be40-e86e5b831268","500":"5f3f28e5-26a4-44b8-a8d7-6484210081d2","503":"83eadbef-5fb8-40e3-8e61-82105c3989ad","504":"8e029c4f-7934-44e1-acd6-7cf3b129dd14"},"method":"post","type":"path","servers":["0e703a7c-bb72-4382-a5c4-7af713801e30"],"security":["06dc2d5d-3307-4e9d-932f-2c2f29b1a6df"],"path":"/orders","baseUrlOptions":["https://csboard.com/v1"],"title":"Buy listings from your balance","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"65df7367-c5b7-47cb-97a2-da73dc6d1b5a":{"name":"Idempotency-Key","in":"header","description":"Optional, 8–128 characters. While a successful result is cached (up to 24 hours), the same key returns HTTP 200 with Idempotent-Replayed: true. An active claim returns 409 idempotency_in_progress. Reconcile a lost response before another purchase.","schema":{"type":"string","description":"Optional, 8–128 characters. While a successful result is cached (up to 24 hours), the same key returns HTTP 200 with Idempotent-Replayed: true. An active claim returns 409 idempotency_in_progress. Reconcile a lost response before another purchase.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"item_ids":{"type":"array","items":{"type":"string","uniqueKey":"item_ids.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":10,"uniqueItems":true,"description":"1–10 unique ids from /v1/listings. Some items can't be combined in a single order — if so the order is rejected and you can split it.","isRequired":true,"uniqueKey":"item_ids","typeLabel":"string[]"},"max_price_usd":{"type":"number","description":"Total ceiling in USD. Strongly recommended — your overcharge protection, enforced atomically inside the locked debit.","exclusiveMinimum":0,"maximum":1000000,"uniqueKey":"max_price_usd","typeLabel":"number"},"idempotency_key":{"type":"string","description":"Optional alternative to the Idempotency-Key header. A cached successful response is reusable for up to 24 hours.","minLength":8,"maxLength":128,"uniqueKey":"idempotency_key","typeLabel":"string"},"autoclaim":{"type":"boolean","description":"Sticky per-account setting (not per-order). Send `true` once to switch your key into auto-claim mode: every held order is then auto-released the moment its hold clears (your bot must auto-accept the Steam trade offer within ~15 minutes). Send `false` to switch back to manual claiming via `POST /orders/{id}/claim`. Omit to leave the setting unchanged.","uniqueKey":"autoclaim","typeLabel":"boolean"},"appId":{"type":"integer","enum":[730,570,252490],"default":730,"description":"Game the `item_ids` belong to: `730` = CS2 (the default), `570` = Dota 2, `252490` = Rust. Send the same `appId` you read the ids with from `GET /listings`. A game this key may not buy in answers `400 unsupported_game` — `tradable` in `GET /games` tells you in advance.","uniqueKey":"appId","typeLabel":"enum\u003cinteger>"}},"required":["item_ids"],"uniqueKey":"","typeLabel":"object"},"example":{"item_ids":["itm_8841201","itm_8841340"],"max_price_usd":30,"idempotency_key":"6f9c2b10-1a2b-4c3d-8e4f-5a6b7c8d9e0f"},"examples":{"Example":{"title":"Example","value":{"item_ids":["itm_8841201","itm_8841340"],"max_price_usd":30,"idempotency_key":"6f9c2b10-1a2b-4c3d-8e4f-5a6b7c8d9e0f"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"93ffe73f-51a3-4a52-a634-63f2592bba38":{"description":"Idempotent replay: a request with an `Idempotency-Key` (or `idempotency_key`) already used for a completed order returns that original response body, with the header `Idempotent-Replayed: true`. Nothing new is bought.","headers":{"Idempotent-Replayed":{"description":"`true` on a replayed response.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"The order as it stands the moment it was created. `status` here is the internal state at that instant (for example `paid` or `pending_delivery`), not the normalised vocabulary of `GET /orders` — read the order there, or subscribe to webhooks, to follow it.","properties":{"order_id":{"type":"string","description":"Order id. Use it with `GET /orders/{id}`.","isRequired":true,"uniqueKey":"order_id","typeLabel":"string"},"status":{"type":"string","description":"Internal order state when the response was built, e.g. `paid` or `pending_delivery`. Poll `GET /orders/{id}` for the public `status`.","isRequired":true,"uniqueKey":"status","typeLabel":"string"},"currency":{"type":"string","enum":["USD"],"isRequired":true,"uniqueKey":"currency","typeLabel":"enum\u003cstring>"},"charged_total_usd":{"type":"number","description":"Total debited from your balance, in USD.","isRequired":true,"uniqueKey":"charged_total_usd","typeLabel":"number"},"delivery":{"oneOf":[{"type":"string","enum":["instant","pending",null],"description":"How the order is being delivered, when known: `instant` (bot delivery) or `pending` (a seller or supplier still has to send the trade). Dota 2 and Rust orders always answer `pending`.","isRequired":true,"uniqueKey":"delivery.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["instant","pending",null],"description":"How the order is being delivered, when known: `instant` (bot delivery) or `pending` (a seller or supplier still has to send the trade). Dota 2 and Rust orders always answer `pending`.","isRequired":true,"uniqueKey":"delivery.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"delivery","typeLabel":"enum\u003cstring> | null"},"expected_minutes":{"oneOf":[{"type":"integer","description":"Rough delivery estimate in minutes, when we can state one. Always `null` for Dota 2 and Rust orders.","isRequired":true,"uniqueKey":"expected_minutes.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Rough delivery estimate in minutes, when we can state one. Always `null` for Dota 2 and Rust orders.","isRequired":true,"uniqueKey":"expected_minutes.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"expected_minutes","typeLabel":"integer | null"},"item_count":{"type":"integer","description":"Number of items in the order.","uniqueKey":"item_count","typeLabel":"integer"},"items":{"type":"array","description":"One entry per item bought.","items":{"type":"object","properties":{"market_hash_name":{"oneOf":[{"type":"string","uniqueKey":"\\items.items.[INDEX].market_hash_name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"\\items.items.[INDEX].market_hash_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].market_hash_name","typeLabel":"string | null"},"price_usd":{"oneOf":[{"type":"number","description":"What this item was charged, in USD.","uniqueKey":"\\items.items.[INDEX].price_usd.oneOf.0","typeLabel":"number"},{"type":"null","description":"What this item was charged, in USD.","uniqueKey":"\\items.items.[INDEX].price_usd.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].price_usd","typeLabel":"number | null"},"status":{"oneOf":[{"type":"string","description":"Internal item state, if one is set yet; usually `null` right after purchase.","uniqueKey":"\\items.items.[INDEX].status.oneOf.0","typeLabel":"string"},{"type":"null","description":"Internal item state, if one is set yet; usually `null` right after purchase.","uniqueKey":"\\items.items.[INDEX].status.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].status","typeLabel":"string | null"}},"uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"uniqueKey":"\\items","typeLabel":"object[]"},"created_at":{"type":"string","format":"date-time","uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"updated_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"updated_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time> | null"}},"required":["order_id","status","currency","charged_total_usd","delivery","expected_minutes"],"uniqueKey":"","typeLabel":"object"},"example":{"order_id":"cmg9x2k1p0007qz3h5v8w2r4n","status":"paid","currency":"USD","charged_total_usd":26.47,"item_count":2,"items":[{"market_hash_name":"AK-47 | Redline (Minimal Wear)","price_usd":14.37,"status":null},{"market_hash_name":"AWP | Atheris (Field-Tested)","price_usd":12.1,"status":null}],"delivery":"instant","expected_minutes":1,"created_at":"2026-06-29T17:12:04.000Z","updated_at":"2026-06-29T17:12:04.000Z"},"examples":{"Example":{"title":"Example","value":{"order_id":"cmg9x2k1p0007qz3h5v8w2r4n","status":"paid","currency":"USD","charged_total_usd":26.47,"item_count":2,"items":[{"market_hash_name":"AK-47 | Redline (Minimal Wear)","price_usd":14.37,"status":null},{"market_hash_name":"AWP | Atheris (Field-Tested)","price_usd":12.1,"status":null}],"delivery":"instant","expected_minutes":1,"created_at":"2026-06-29T17:12:04.000Z","updated_at":"2026-06-29T17:12:04.000Z"}}},"exampleType":"examples"}},"exampleType":"examples"},"4e2782e4-5dda-44c3-9d8f-d5e759c9f9a7":{"description":"Order created and debited from your balance.","content":{"application/json":{"schema":{"type":"object","description":"The order as it stands the moment it was created. `status` here is the internal state at that instant (for example `paid` or `pending_delivery`), not the normalised vocabulary of `GET /orders` — read the order there, or subscribe to webhooks, to follow it.","properties":{"order_id":{"type":"string","description":"Order id. Use it with `GET /orders/{id}`.","isRequired":true,"uniqueKey":"order_id","typeLabel":"string"},"status":{"type":"string","description":"Internal order state when the response was built, e.g. `paid` or `pending_delivery`. Poll `GET /orders/{id}` for the public `status`.","isRequired":true,"uniqueKey":"status","typeLabel":"string"},"currency":{"type":"string","enum":["USD"],"isRequired":true,"uniqueKey":"currency","typeLabel":"enum\u003cstring>"},"charged_total_usd":{"type":"number","description":"Total debited from your balance, in USD.","isRequired":true,"uniqueKey":"charged_total_usd","typeLabel":"number"},"delivery":{"oneOf":[{"type":"string","enum":["instant","pending",null],"description":"How the order is being delivered, when known: `instant` (bot delivery) or `pending` (a seller or supplier still has to send the trade). Dota 2 and Rust orders always answer `pending`.","isRequired":true,"uniqueKey":"delivery.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["instant","pending",null],"description":"How the order is being delivered, when known: `instant` (bot delivery) or `pending` (a seller or supplier still has to send the trade). Dota 2 and Rust orders always answer `pending`.","isRequired":true,"uniqueKey":"delivery.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"delivery","typeLabel":"enum\u003cstring> | null"},"expected_minutes":{"oneOf":[{"type":"integer","description":"Rough delivery estimate in minutes, when we can state one. Always `null` for Dota 2 and Rust orders.","isRequired":true,"uniqueKey":"expected_minutes.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Rough delivery estimate in minutes, when we can state one. Always `null` for Dota 2 and Rust orders.","isRequired":true,"uniqueKey":"expected_minutes.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"expected_minutes","typeLabel":"integer | null"},"item_count":{"type":"integer","description":"Number of items in the order.","uniqueKey":"item_count","typeLabel":"integer"},"items":{"type":"array","description":"One entry per item bought.","items":{"type":"object","properties":{"market_hash_name":{"oneOf":[{"type":"string","uniqueKey":"\\items.items.[INDEX].market_hash_name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"\\items.items.[INDEX].market_hash_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].market_hash_name","typeLabel":"string | null"},"price_usd":{"oneOf":[{"type":"number","description":"What this item was charged, in USD.","uniqueKey":"\\items.items.[INDEX].price_usd.oneOf.0","typeLabel":"number"},{"type":"null","description":"What this item was charged, in USD.","uniqueKey":"\\items.items.[INDEX].price_usd.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].price_usd","typeLabel":"number | null"},"status":{"oneOf":[{"type":"string","description":"Internal item state, if one is set yet; usually `null` right after purchase.","uniqueKey":"\\items.items.[INDEX].status.oneOf.0","typeLabel":"string"},{"type":"null","description":"Internal item state, if one is set yet; usually `null` right after purchase.","uniqueKey":"\\items.items.[INDEX].status.oneOf.1","typeLabel":"null"}],"uniqueKey":"\\items.items.[INDEX].status","typeLabel":"string | null"}},"uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"uniqueKey":"\\items","typeLabel":"object[]"},"created_at":{"type":"string","format":"date-time","uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"updated_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"updated_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time> | null"}},"required":["order_id","status","currency","charged_total_usd","delivery","expected_minutes"],"uniqueKey":"","typeLabel":"object"},"example":{"order_id":"cmg9x2k1p0007qz3h5v8w2r4n","status":"paid","currency":"USD","charged_total_usd":26.47,"item_count":2,"items":[{"market_hash_name":"AK-47 | Redline (Minimal Wear)","price_usd":14.37,"status":null},{"market_hash_name":"AWP | Atheris (Field-Tested)","price_usd":12.1,"status":null}],"delivery":"instant","expected_minutes":1,"created_at":"2026-06-29T17:12:04.000Z","updated_at":"2026-06-29T17:12:04.000Z"},"examples":{"Example":{"title":"Example","value":{"order_id":"cmg9x2k1p0007qz3h5v8w2r4n","status":"paid","currency":"USD","charged_total_usd":26.47,"item_count":2,"items":[{"market_hash_name":"AK-47 | Redline (Minimal Wear)","price_usd":14.37,"status":null},{"market_hash_name":"AWP | Atheris (Field-Tested)","price_usd":12.1,"status":null}],"delivery":"instant","expected_minutes":1,"created_at":"2026-06-29T17:12:04.000Z","updated_at":"2026-06-29T17:12:04.000Z"}}},"exampleType":"examples"}},"exampleType":"examples"},"8288632c-957f-4aee-a1e9-fd181b646321":{"description":"Bad request — a malformed body (`invalid_request`, whose `detail` is the field-error map), an id that cannot be bought here, items that must be split into separate orders, no linked Steam account, or an `appId` this key may not buy in (`unsupported_game`).","content":{"application/json":{"schema":{"type":"object","description":"All errors return { code, detail }. Some carry extra fields (e.g. price_moved adds current_total_usd, insufficient_balance adds required_usd/current_usd, item_unavailable adds unavailable_ids and, on CS2 buys, unknown_ids).","properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. rate_limit_exceeded, trading_not_enabled, price_moved.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation.","uniqueKey":"detail","typeLabel":"string"}},"required":["code"],"uniqueKey":"","typeLabel":"object"},"examples":{"invalid_request":{"title":"invalid_request","value":{"code":"invalid_request","detail":{"formErrors":[],"fieldErrors":{"item_ids":["Duplicate item ids are not allowed"]}}}},"unsupported_game":{"title":"unsupported_game","value":{"code":"unsupported_game","detail":"appId 440 is not available to this key. Supported: 730 (CS2), 570 (Dota 2), 252490 (Rust).","supported_app_ids":[730,570,252490]}},"unsupported_item":{"title":"unsupported_item","value":{"code":"unsupported_item","detail":"Live (ss_live_*) ids are not buyable via API. Use ids from /v1/listings."}},"steam_account_required":{"title":"steam_account_required","value":{"code":"steam_account_required","detail":"Link your Steam account and trade URL on csboard.com before buying via API."}},"cannot_mix_sources":{"title":"cannot_mix_sources","value":{"code":"cannot_mix_sources","detail":"Buy external-market and platform items in separate orders."}},"one_external_per_order":{"title":"one_external_per_order","value":{"code":"one_external_per_order","detail":"Only one external-market item per order."}}},"exampleType":"examples"}},"exampleType":"examples"},"289330e9-fbc8-4b81-8c62-cc99021792a5":{"description":"Missing or invalid API key (`missing_api_key` or `invalid_api_key`).","content":{"application/json":{"schema":{"type":"object","description":"All errors return { code, detail }. Some carry extra fields (e.g. price_moved adds current_total_usd, insufficient_balance adds required_usd/current_usd, item_unavailable adds unavailable_ids and, on CS2 buys, unknown_ids).","properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. rate_limit_exceeded, trading_not_enabled, price_moved.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation.","uniqueKey":"detail","typeLabel":"string"}},"required":["code"],"uniqueKey":"","typeLabel":"object"},"example":{"code":"missing_api_key","detail":"Provide your API key via `Authorization: Bearer csb_pub_…`. Generate one at https://csboard.com/profile?tab=api"},"examples":{"Example":{"title":"Example","value":{"code":"missing_api_key","detail":"Provide your API key via `Authorization: Bearer csb_pub_…`. Generate one at https://csboard.com/profile?tab=api"}}},"exampleType":"examples"}},"exampleType":"examples"},"c93dd02b-9c11-4728-ad0a-a915d69577aa":{"description":"Payment required — the balance does not cover the order, or the purchase needs identity verification first.","content":{"application/json":{"schema":{"type":"object","description":"All errors return { code, detail }. Some carry extra fields (e.g. price_moved adds current_total_usd, insufficient_balance adds required_usd/current_usd, item_unavailable adds unavailable_ids and, on CS2 buys, unknown_ids).","properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. rate_limit_exceeded, trading_not_enabled, price_moved.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation.","uniqueKey":"detail","typeLabel":"string"}},"required":["code"],"uniqueKey":"","typeLabel":"object"},"examples":{"insufficient_balance":{"title":"insufficient_balance","value":{"code":"insufficient_balance","detail":"Top up your CSBoard balance to cover this order.","required_usd":26.47,"current_usd":10}},"kyc_required":{"title":"kyc_required","value":{"code":"kyc_required","detail":"Identity verification required before this purchase.","kyc_url":"https://csboard.com/...","reasons":["..."]}}},"exampleType":"examples"}},"exampleType":"examples"},"1ae69c8f-e98b-4b0a-87e0-b4f07c324850":{"description":"Forbidden — trading is not enabled on this key, the account is restricted, or the account is not eligible for this purchase.","content":{"application/json":{"schema":{"type":"object","description":"All errors return { code, detail }. Some carry extra fields (e.g. price_moved adds current_total_usd, insufficient_balance adds required_usd/current_usd, item_unavailable adds unavailable_ids and, on CS2 buys, unknown_ids).","properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. rate_limit_exceeded, trading_not_enabled, price_moved.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation.","uniqueKey":"detail","typeLabel":"string"}},"required":["code"],"uniqueKey":"","typeLabel":"object"},"examples":{"trading_not_enabled":{"title":"trading_not_enabled","value":{"code":"trading_not_enabled","detail":"Buying via API is disabled for this key. Enable it at https://csboard.com/profile?tab=api"}},"account_restricted":{"title":"account_restricted","value":{"code":"account_restricted","detail":"Account is restricted — contact support."}}},"exampleType":"examples"}},"exampleType":"examples"},"4f394fc0-0c34-4969-a87e-5a477e4edced":{"description":"Conflict — the live price moved past your ceiling, an item sold out, a duplicate Idempotency-Key is still processing, the recipient has too many pending offers, prices are mid-refresh, or a concurrent order won the race. An in-progress conflict leaves the original request unresolved. `item_unavailable` lists every missing id in `unavailable_ids`; on a CS2 buy, `unknown_ids` names the ones we have no record of at all — not a CSBoard listing id (a Steam asset id is the usual mix-up; listing ids are never all digits) or a listing that left the catalogue more than an hour ago. Follow the stream's `gone` events to drop listings before you buy them.","content":{"application/json":{"schema":{"type":"object","description":"All errors return { code, detail }. Some carry extra fields (e.g. price_moved adds current_total_usd, insufficient_balance adds required_usd/current_usd, item_unavailable adds unavailable_ids and, on CS2 buys, unknown_ids).","properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. rate_limit_exceeded, trading_not_enabled, price_moved.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation.","uniqueKey":"detail","typeLabel":"string"}},"required":["code"],"uniqueKey":"","typeLabel":"object"},"examples":{"price_moved":{"title":"price_moved","value":{"code":"price_moved","detail":"Live price exceeds your max_price_usd. Re-read /v1/listings and retry.","quoted_max_usd":30,"current_total_usd":31.2,"items":[{"id":"itm_8841201","market_hash_name":"AK-47 | Redline (Minimal Wear)","price_usd":15.1},{"id":"itm_8841340","market_hash_name":"AWP | Atheris (Field-Tested)","price_usd":16.1}]}},"item_unavailable":{"title":"item_unavailable","value":{"code":"item_unavailable","detail":"One or more items are no longer available.","unavailable_ids":["itm_8841999"]}},"item_unknown":{"title":"item_unknown","value":{"code":"item_unavailable","detail":"One or more items are no longer available. 1 of the ids are not known here (`unknown_ids`): not a listing id, or a listing gone for over an hour. Steam asset ids are not listing ids: send the `id` of a row from /v1/listings or the stream.","unavailable_ids":["31846262931"],"unknown_ids":["31846262931"]}},"idempotency_in_progress":{"title":"idempotency_in_progress","value":{"code":"idempotency_in_progress","detail":"A request with this Idempotency-Key is still processing."}},"concurrent_update":{"title":"concurrent_update","value":{"code":"concurrent_update","detail":"Another order touched the same items at the same moment and this one was rolled back. Nothing was charged — retry."}},"pending_trades_limit":{"title":"pending_trades_limit","value":{"code":"pending_trades_limit","detail":"The recipient has too many pending Steam trade offers; they must accept them before more can be delivered.","limit":5}},"price_updating":{"title":"price_updating","value":{"code":"price_updating","detail":"Prices are being updated — retry in a moment."}}},"exampleType":"examples"}},"exampleType":"examples"},"0d571e76-e9c5-4a29-be40-e86e5b831268":{"description":"A per-key limit is spent. The key's own buckets answer `rate_limit_exceeded` with `bucket` (`read`, `trading` or `buy_orders`), `limit_per_min` and `retry_after_sec`. `Retry-After` is the seconds left until the one-minute window restarts (1–60), not a flat 60. Endpoint-specific limits (`snapshot_rate_limited` on the price snapshot, `rate_limited` on Instant Sell) send only `code` and `detail`.","headers":{"Retry-After":{"description":"Seconds until the one-minute window restarts (1–60). Waiting that long is always enough.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"The ceiling per minute of the bucket this call spent (named in `X-RateLimit-Bucket`).","schema":{"type":"integer"},"example":3000},"X-RateLimit-Remaining":{"description":"Calls left on that bucket in the current one-minute window.","schema":{"type":"integer","minimum":0},"example":2987},"X-RateLimit-Reset":{"description":"Seconds until the one-minute window restarts and the counter starts again.","schema":{"type":"integer","minimum":1,"maximum":60},"example":41},"X-RateLimit-Bucket":{"description":"The bucket this call spent: `read` (reads and every other keyed call) or `trading` (buys, order reads, claims, cancels, balance). A `429` from the buy-order limit says `buy_orders`.","schema":{"type":"string","enum":["read","trading","buy_orders"]},"example":"trading"}},"content":{"application/json":{"schema":{"type":"object","description":"The `429` body of a per-key bucket. Endpoint-specific limits send only `code` and `detail`.","properties":{"code":{"type":"string","description":"`rate_limit_exceeded` for the key's buckets. Endpoint-specific limits use their own code (`snapshot_rate_limited`, `rate_limited`).","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation.","uniqueKey":"detail","typeLabel":"string"},"bucket":{"type":"string","enum":["read","trading","buy_orders"],"description":"Which bucket is spent.","uniqueKey":"bucket","typeLabel":"enum\u003cstring>"},"limit_per_min":{"type":"integer","description":"That bucket's ceiling per minute.","uniqueKey":"limit_per_min","typeLabel":"integer"},"retry_after_sec":{"type":"integer","minimum":1,"maximum":60,"description":"Seconds until the window restarts — the same number as `Retry-After`.","uniqueKey":"retry_after_sec","typeLabel":"integer"}},"required":["code"],"uniqueKey":"","typeLabel":"object"},"example":{"code":"rate_limit_exceeded","detail":"Read rate limit of 100 requests/min exceeded. The counter restarts in 23 s. For new listings use GET /v1/listings/stream instead of polling.","bucket":"read","limit_per_min":100,"retry_after_sec":23},"examples":{"Example":{"title":"Example","value":{"code":"rate_limit_exceeded","detail":"Read rate limit of 100 requests/min exceeded. The counter restarts in 23 s. For new listings use GET /v1/listings/stream instead of polling.","bucket":"read","limit_per_min":100,"retry_after_sec":23}}},"exampleType":"examples"}},"exampleType":"examples"},"5f3f28e5-26a4-44b8-a8d7-6484210081d2":{"description":"Unexpected failure. The order may still exist — check `GET /orders/info` with your `custom_id` before retrying.","content":{"application/json":{"schema":{"type":"object","description":"All errors return { code, detail }. Some carry extra fields (e.g. price_moved adds current_total_usd, insufficient_balance adds required_usd/current_usd, item_unavailable adds unavailable_ids and, on CS2 buys, unknown_ids).","properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. rate_limit_exceeded, trading_not_enabled, price_moved.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation.","uniqueKey":"detail","typeLabel":"string"}},"required":["code"],"uniqueKey":"","typeLabel":"object"},"example":{"code":"order_failed","detail":"Could not complete the order."},"examples":{"Example":{"title":"Example","value":{"code":"order_failed","detail":"Could not complete the order."}}},"exampleType":"examples"}},"exampleType":"examples"},"83eadbef-5fb8-40e3-8e61-82105c3989ad":{"description":"The marketplace for one of the items is temporarily unavailable. No charge was made.","content":{"application/json":{"schema":{"type":"object","description":"All errors return { code, detail }. Some carry extra fields (e.g. price_moved adds current_total_usd, insufficient_balance adds required_usd/current_usd, item_unavailable adds unavailable_ids and, on CS2 buys, unknown_ids).","properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. rate_limit_exceeded, trading_not_enabled, price_moved.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation.","uniqueKey":"detail","typeLabel":"string"}},"required":["code"],"uniqueKey":"","typeLabel":"object"},"example":{"code":"market_unavailable","detail":"The marketplace for one of these items is temporarily unavailable — retry shortly. No charge was made."},"examples":{"Example":{"title":"Example","value":{"code":"market_unavailable","detail":"The marketplace for one of these items is temporarily unavailable — retry shortly. No charge was made."}}},"exampleType":"examples"}},"exampleType":"examples"},"8e029c4f-7934-44e1-acd6-7cf3b129dd14":{"description":"The purchase outcome is unknown. Keep the original order pending and reconcile through GET /v1/orders/info using the saved identifier. An empty lookup can precede order creation. Do not automatically repeat an unresolved purchase, even with the same identifier.","content":{"application/json":{"schema":{"type":"object","description":"All errors return { code, detail }. Some carry extra fields (e.g. price_moved adds current_total_usd, insufficient_balance adds required_usd/current_usd, item_unavailable adds unavailable_ids and, on CS2 buys, unknown_ids).","properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. rate_limit_exceeded, trading_not_enabled, price_moved.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","description":"Human-readable explanation.","uniqueKey":"detail","typeLabel":"string"}},"required":["code"],"uniqueKey":"","typeLabel":"object"},"example":{"code":"upstream_timeout","detail":"The marketplace did not answer in time, so the outcome of this purchase is UNKNOWN — it may still have gone through. Do not re-send blindly: poll the order list (or re-send the identical custom_id, which replays rather than buys) before treating it as failed."},"examples":{"Example":{"title":"Example","value":{"code":"upstream_timeout","detail":"The marketplace did not answer in time, so the outcome of this purchase is UNKNOWN — it may still have gone through. Do not re-send blindly: poll the order list (or re-send the identical custom_id, which replays rather than buys) before treating it as failed."}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"06dc2d5d-3307-4e9d-932f-2c2f29b1a6df":{"bearerAuth":{"type":"http","scheme":"bearer","description":"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](/rate-limits).","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"0e703a7c-bb72-4382-a5c4-7af713801e30":{"url":"https://csboard.com/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"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](/rate-limits).","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"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](/rate-limits).","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"csboard","siteName":"CSBoard API","title":"POST /v1/orders — Buy CS2 Listings from Your Balance - CSBoard API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/api-reference/post-orders","matchLevel":0},"ru":{"href":"/ru/api-reference/post-orders","matchLevel":1},"zh-Hans":{"href":"/zh-Hans/api-reference/post-orders","matchLevel":1}}},"lastModified":"2026-11-06T03:11:40.422Z","originalFileLocation":"api-reference/post-orders.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Buy 1–10 CS2 listings by ID in a single atomic request, debited from your CSBoard balance. Requires a trading-enabled API key and linked Steam account.\">\u003cmeta data-mint-head name=\"application-name\" content=\"CSBoard API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/csboard/m4zEijRxsV60XgHV/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/csboard/m4zEijRxsV60XgHV/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/csboard/m4zEijRxsV60XgHV/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/csboard/m4zEijRxsV60XgHV/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/csboard/m4zEijRxsV60XgHV/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/csboard/m4zEijRxsV60XgHV/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/csboard/m4zEijRxsV60XgHV/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/csboard/m4zEijRxsV60XgHV/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/csboard/m4zEijRxsV60XgHV/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"POST /v1/orders — Buy CS2 Listings from Your Balance - CSBoard API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Buy 1–10 CS2 listings by ID in a single atomic request, debited from your CSBoard balance. Requires a trading-enabled API key and linked Steam account.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"CSBoard API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://api.csboard.com/api-reference/post-orders\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://csboard.mintlify.site/_mintlify/api/og/v2?division=Trading\u0026amp;title=POST+%2Fv1%2Forders+%E2%80%94+Buy+CS2+Listings+from+Your+Balance\u0026amp;description=Buy+1%E2%80%9310+CS2+listings+by+ID+in+a+single+atomic+request%2C+debited+from+your+CSBoard+balance.+Requires+a+trading-enabled+API+key+and+linked+Steam+account.\u0026amp;theme=932e691933583ab42431355a\u0026amp;signature=068440d2e8f3396d2ae46473107bd7f8cc6d05ad4a99c46775f79d4c8fc09a74\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"POST /v1/orders — Buy CS2 Listings from Your Balance - CSBoard API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Buy 1–10 CS2 listings by ID in a single atomic request, debited from your CSBoard balance. Requires a trading-enabled API key and linked Steam account.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://csboard.mintlify.site/_mintlify/api/og/v2?division=Trading\u0026amp;title=POST+%2Fv1%2Forders+%E2%80%94+Buy+CS2+Listings+from+Your+Balance\u0026amp;description=Buy+1%E2%80%9310+CS2+listings+by+ID+in+a+single+atomic+request%2C+debited+from+your+CSBoard+balance.+Requires+a+trading-enabled+API+key+and+linked+Steam+account.\u0026amp;theme=932e691933583ab42431355a\u0026amp;signature=068440d2e8f3396d2ae46473107bd7f8cc6d05ad4a99c46775f79d4c8fc09a74\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/csboard/m4zEijRxsV60XgHV/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"CSBoard API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2563eb\">\u003clink data-mint-head rel=\"canonical\" href=\"https://api.csboard.com/api-reference/post-orders\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/post-orders.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://api.csboard.com/api-reference/post-orders\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ru\" href=\"https://api.csboard.com/ru/api-reference/post-orders\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh-Hans\" href=\"https://api.csboard.com/zh-Hans/api-reference/post-orders\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://api.csboard.com/api-reference/post-orders\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://api.csboard.com/#organization\",\"name\":\"CSBoard API\",\"url\":\"https://api.csboard.com\"},{\"@type\":\"WebSite\",\"@id\":\"https://api.csboard.com#website\",\"name\":\"CSBoard API\",\"url\":\"https://api.csboard.com\",\"publisher\":{\"@id\":\"https://api.csboard.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://api.csboard.com/api-reference/post-orders#webpage\",\"url\":\"https://api.csboard.com/api-reference/post-orders\",\"name\":\"POST /v1/orders — Buy CS2 Listings from Your Balance\",\"description\":\"Buy 1–10 CS2 listings by ID in a single atomic request, debited from your CSBoard balance. Requires a trading-enabled API key and linked Steam account.\",\"dateModified\":\"2026-11-06T03:11:40.422Z\",\"isPartOf\":{\"@id\":\"https://api.csboard.com#website\"},\"breadcrumb\":{\"@id\":\"https://api.csboard.com/api-reference/post-orders#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://api.csboard.com/api-reference/post-orders#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"CSBoard API\",\"item\":\"https://api.csboard.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"POST /v1/orders — Buy CS2 Listings from Your Balance\",\"item\":\"https://api.csboard.com/api-reference/post-orders\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://api.csboard.com/api-reference/post-orders#apireference\",\"headline\":\"POST /v1/orders — Buy CS2 Listings from Your Balance\",\"name\":\"POST /v1/orders — Buy CS2 Listings from Your Balance\",\"description\":\"Buy 1–10 CS2 listings by ID in a single atomic request, debited from your CSBoard balance. Requires a trading-enabled API key and linked Steam account.\",\"url\":\"https://api.csboard.com/api-reference/post-orders\",\"mainEntityOfPage\":{\"@id\":\"https://api.csboard.com/api-reference/post-orders#webpage\"},\"dateModified\":\"2026-11-06T03:11:40.422Z\",\"publisher\":{\"@id\":\"https://api.csboard.com/#organization\"},\"isPartOf\":{\"@id\":\"https://api.csboard.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"CSBoard API\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"CSBoard API\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/post-orders.md","siteName":"CSBoard API","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"Market Data","pages":[{"title":"GET /v1/listings — Browse Live CS2 Marketplace Listings","sidebarTitle":"GET /listings","openapi":"GET /listings","href":"/api-reference/get-listings"},{"title":"GET /v1/listings/depth — One Item's Whole Book, Live","sidebarTitle":"GET /listings/depth","openapi":"GET /listings/depth","href":"/api-reference/get-listings-depth"},{"title":"GET /v1/listings/stream — Live Feed of New and Sold Listings","sidebarTitle":"GET /listings/stream","openapi":"GET /listings/stream","href":"/api-reference/get-listings-stream"},{"title":"GET /v1/listings/snapshot.ndjson.gz — Every Listing in One File","sidebarTitle":"GET /listings/snapshot","openapi":"GET /listings/snapshot.ndjson.gz","href":"/api-reference/get-listings-snapshot"},{"title":"GET /v1/listings/availability — Bulk Availability Check","sidebarTitle":"GET /listings/availability","openapi":"GET /listings/availability","href":"/api-reference/get-listings-availability"},{"title":"GET /v1/games — Games You Can Pass as appId","sidebarTitle":"GET /games","openapi":"GET /games","href":"/api-reference/get-games"},{"title":"GET /v1/prices — CS2 minAsk Price List by Item Group","sidebarTitle":"GET /prices","openapi":"GET /prices","href":"/api-reference/get-prices"},{"title":"GET /v1/prices/snapshot.ndjson.gz — Full Price Snapshot","sidebarTitle":"GET /prices/snapshot","openapi":"GET /prices/snapshot.ndjson.gz","href":"/api-reference/get-prices-snapshot"},{"title":"GET /v1/public/prices — Keyless Min-Ask Feed for CS2, Dota 2 and Rust","sidebarTitle":"GET /public/prices","openapi":"GET /public/prices","href":"/api-reference/get-public-prices"},{"title":"GET /v1/currency — FX Rates for USD Price Conversion","sidebarTitle":"GET /currency","description":"Retrieve the USD-base FX rate table used by CSBoard payment flows. Multiply any price_usd by the target currency rate for a local-currency price.","openapi":"GET /currency","href":"/api-reference/get-currency"}]},{"group":"Trading","pages":[{"title":"POST /v1/orders — Buy CS2 Listings from Your Balance","sidebarTitle":"POST /orders","openapi":"POST /orders","href":"/api-reference/post-orders"},{"title":"POST /v1/market/buy — Buy and Deliver to a Steam Trade URL","sidebarTitle":"POST /market/buy","description":"Buy up to 100 items and deliver them straight to any Steam trade URL you supply, paid from your settled balance. Built for wholesale and automated delivery.","openapi":"POST /market/buy","href":"/api-reference/post-market-buy"},{"title":"POST /v1/orders/:id/claim — Release a Held Order","sidebarTitle":"POST /orders/:id/claim","openapi":"POST /orders/{id}/claim","href":"/api-reference/post-orders-claim"},{"title":"POST /v1/orders/:id/cancel — Cancel an Undelivered Order","sidebarTitle":"POST /orders/:id/cancel","openapi":"POST /orders/{id}/cancel","href":"/api-reference/post-orders-cancel"},{"title":"GET /v1/orders — List Your Purchase History","sidebarTitle":"GET /orders","openapi":"GET /orders","href":"/api-reference/get-orders"},{"title":"GET /v1/orders/info — Batch Order Lookup","sidebarTitle":"GET /orders/info","openapi":"GET /orders/info","href":"/api-reference/get-orders-info"},{"title":"GET /v1/orders/{id} — Fetch a Single Order","sidebarTitle":"GET /orders/{id}","openapi":"GET /orders/{id}","href":"/api-reference/get-order"}]},{"group":"Instant Sell","pages":[{"title":"GET /v1/sell/status: Is Instant Sell Enabled for My Key?","sidebarTitle":"GET /sell/status","openapi":"GET /sell/status","href":"/api-reference/get-sell-status"},{"title":"POST /v1/sell/quotes: Quote a Steam Inventory for Instant Sell","sidebarTitle":"POST /sell/quotes","openapi":"POST /sell/quotes","href":"/api-reference/post-sell-quotes"},{"title":"POST /v1/sell/orders: Sell Items from a Steam Inventory","sidebarTitle":"POST /sell/orders","openapi":"POST /sell/orders","href":"/api-reference/post-sell-orders"},{"title":"GET /v1/sell/orders: List Your Instant Sell Orders","sidebarTitle":"GET /sell/orders","openapi":"GET /sell/orders","href":"/api-reference/get-sell-orders"},{"title":"GET /v1/sell/orders/{id}: One Instant Sell Order","sidebarTitle":"GET /sell/orders/{id}","openapi":"GET /sell/orders/{id}","href":"/api-reference/get-sell-order"},{"title":"POST /v1/sell/orders/{id}/cancel: Cancel an Instant Sell Order","sidebarTitle":"POST /sell/orders/{id}/cancel","openapi":"POST /sell/orders/{id}/cancel","href":"/api-reference/post-sell-order-cancel"}]},{"group":"P2P","pages":[{"title":"GET /v1/p2p/inventory — Your CS2 Inventory, Ready to List","sidebarTitle":"GET /p2p/inventory","openapi":"GET /p2p/inventory","href":"/api-reference/get-p2p-inventory"},{"title":"POST /v1/p2p/listings — List Your CS2 Items on the P2P Market","sidebarTitle":"POST /p2p/listings","openapi":"POST /p2p/listings","href":"/api-reference/post-p2p-listings"},{"title":"GET /v1/p2p/listings — Your P2P Listings","sidebarTitle":"GET /p2p/listings","openapi":"GET /p2p/listings","href":"/api-reference/get-p2p-listings"},{"title":"PATCH /v1/p2p/listings/{id} — Change a Listing's Price","sidebarTitle":"PATCH /p2p/listings/{id}","openapi":"PATCH /p2p/listings/{id}","href":"/api-reference/patch-p2p-listing"},{"title":"DELETE /v1/p2p/listings/{id} — Remove a P2P Listing","sidebarTitle":"DELETE /p2p/listings/{id}","openapi":"DELETE /p2p/listings/{id}","href":"/api-reference/delete-p2p-listing"}]},{"group":"Account","pages":[{"title":"GET /v1/balance — Account Balance and Trading Status","sidebarTitle":"GET /balance","openapi":"GET /balance","href":"/api-reference/get-balance"},{"title":"GET /v1/transactions — Your Balance Ledger","sidebarTitle":"GET /transactions","openapi":"GET /transactions","href":"/api-reference/get-transactions"},{"title":"GET /v1/stats — Your Delivery and Refund Record","sidebarTitle":"GET /stats","openapi":"GET /stats","href":"/api-reference/get-stats"},{"title":"GET /v1/key — Inspect Your API Key","sidebarTitle":"GET /key","openapi":"GET /key","href":"/api-reference/get-key"},{"title":"PUT /v1/key/allowed-ips — Restrict a Key to Your Servers","sidebarTitle":"PUT /key/allowed-ips","openapi":"PUT /key/allowed-ips","href":"/api-reference/put-key-allowed-ips"}]},{"group":"Webhooks","pages":[{"title":"GET /v1/webhooks — List Your Webhook Endpoints","sidebarTitle":"GET /webhooks","openapi":"GET /webhooks","href":"/api-reference/get-webhooks"},{"title":"POST /v1/webhooks — Register a Webhook Endpoint","sidebarTitle":"POST /webhooks","openapi":"POST /webhooks","href":"/api-reference/post-webhooks"},{"title":"PATCH /v1/webhooks/{id} — Update a Webhook Endpoint","sidebarTitle":"PATCH /webhooks/{id}","openapi":"PATCH /webhooks/{id}","href":"/api-reference/patch-webhook"},{"title":"DELETE /v1/webhooks/{id} — Remove a Webhook Endpoint","sidebarTitle":"DELETE /webhooks/{id}","openapi":"DELETE /webhooks/{id}","href":"/api-reference/delete-webhook"},{"title":"POST /v1/webhooks/{id}/test — Send a Test Event","sidebarTitle":"POST /webhooks/{id}/test","openapi":"POST /webhooks/{id}/test","href":"/api-reference/post-webhook-test"},{"title":"POST /v1/webhooks/{id}/rotate-secret — Rotate the Signing Secret","sidebarTitle":"POST /webhooks/{id}/rotate-secret","openapi":"POST /webhooks/{id}/rotate-secret","href":"/api-reference/post-webhook-rotate-secret"},{"title":"GET /v1/webhooks/{id}/deliveries — Delivery History","sidebarTitle":"GET /webhooks/{id}/deliveries","openapi":"GET /webhooks/{id}/deliveries","href":"/api-reference/get-webhook-deliveries"},{"title":"POST /v1/webhooks/{id}/deliveries/{deliveryId}/retry — Retry a Delivery","sidebarTitle":"POST …/retry","openapi":"POST /webhooks/{id}/deliveries/{deliveryId}/retry","href":"/api-reference/post-webhook-delivery-retry"}]},{"group":"Status","pages":[{"title":"GET /v1/health — CSBoard API Liveness and Freshness Probe","sidebarTitle":"GET /health","openapi":"GET /health","href":"/api-reference/get-health"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/overview"}]}]},{"language":"ru","pages":[{"title":"ru","href":"/ru/api-reference/post-orders"}]},{"language":"zh-Hans","pages":[{"title":"zh-Hans","href":"/zh-Hans/api-reference/post-orders"}]}]},"basePath":"","title":"POST /v1/orders — Buy CS2 Listings from Your Balance - CSBoard API","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-DDP9JXtj.js","utils-8yQyvEtx.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CBCFR8Sn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-rQaXkUHa.js","snippetPresets-J5KpBTgV.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","Page-DTNSD-0M.js","ApiExamples-BVxVH4Cj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BxdQ2vIi.js","shallow-BjV2tFiD.js","getApiPlaygroundDisplay-C_55tL4O.js","CodeSnippet-C0JpiCOC.js","CodeSnippets-w9Ps7djG.js","getPastedJson-BDfB-H8d.js","icon-g-kUkkO9.js","MethodPill-v4l6fq0h.js","DuplicateIcon-CvLo-CfU.js","createIcon-165clrrV.js","DynamicMarkdown-D3RQ-fEj.js","SectionHeading-vvo-3yLf.js","axios-vUo_bRtp.js","Markdown-CMT1uFWQ.js","clsx-C8f2yC9R.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CI2D8R2Y.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-k78Wrw_e.js"]}