POST /v1/market/buy — Buy and Deliver to a Steam Trade URL
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.
This endpoint lets you buy and deliver items directly to any Steam trade URL you supply — not just the trade URL linked to your account. The trade URL is built from the partner and token fields. Purchases are funded only from your settled (reversal-safe) balance, making it suitable for wholesale volume and automated delivery workflows.Save one custom_id per withdrawal. A cached success returns Idempotent-Replayed: true for up to 24 hours. If the response is lost, read order status with the saved id. An empty result can precede order creation. Keep the withdrawal pending until reconciled.
This endpoint ships behind a kill-switch and requires a trading-enabled, reversal-clean account. When the kill-switch is off it returns 403 external_buy_disabled.
Authentication required. Send your key as Authorization: Bearer csb_pub_....Trading capability required. Buying must be enabled for the key, and the account must be reversal-clean.
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 /v1/listings. Dota 2 and Rust take up to 10 ids per order and are queued, so every skin answers pending first.
Funds come exclusively from your settled balance. Check settled_balance_usd on GET /v1/balance before a large batch, and always send max_price_usd as overcharge protection.
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 buy (no appId, or 730) 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.
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. Dota 2 and Rust take up to 10 ids per order. 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
Purchase accepted and debited from settled balance.
{"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-market-buy","slug":"/api-reference/post-market-buy","pageMetadata":{"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"},"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 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.\"\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`,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:[`This endpoint lets you buy and deliver items directly to `,_jsx(_components.strong,{children:`any`}),` Steam trade URL you supply — not just the trade URL linked to your account. The trade URL is built from the `,_jsx(_components.code,{children:`partner`}),` and `,_jsx(_components.code,{children:`token`}),` fields. Purchases are funded `,_jsx(_components.strong,{children:`only`}),` from your `,_jsx(_components.strong,{children:`settled`}),` (reversal-safe) balance, making it suitable for wholesale volume and automated delivery workflows.`]}),`\n`,_jsxs(_components.p,{children:[`Save one `,_jsx(_components.code,{children:`custom_id`}),` per withdrawal. A cached success returns `,_jsx(_components.code,{children:`Idempotent-Replayed: true`}),` for up to 24 hours. If the response is lost, read `,_jsx(_components.a,{href:`/api-reference/get-orders-info`,children:`order status`}),` with the saved id. An empty result can precede order creation. Keep the withdrawal pending until reconciled.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`This endpoint ships behind a kill-switch and requires a trading-enabled, reversal-clean account. When the kill-switch is off it returns `,_jsx(_components.code,{children:`403 external_buy_disabled`}),`.`]})}),`\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.`}),` Buying must be enabled for the key, and the account must be reversal-clean.`]}),`\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:_jsx(_components.p,{children:`1–100 unique listing ids to buy.`})}),`\n`,_jsx(ParamField,{body:`partner`,type:`string`,required:true,id:`param-partner`,children:_jsxs(_components.p,{children:[`Steam trade URL `,_jsx(_components.code,{children:`partner`}),` value (1–32 chars). Together with `,_jsx(_components.code,{children:`token`}),`, forms the destination trade URL items are delivered to.`]})}),`\n`,_jsx(ParamField,{body:`token`,type:`string`,required:true,id:`param-token`,children:_jsxs(_components.p,{children:[`Steam trade URL `,_jsx(_components.code,{children:`token`}),` value (1–32 chars). Together with `,_jsx(_components.code,{children:`partner`}),`, forms the destination trade URL.`]})}),`\n`,_jsx(ParamField,{body:`max_price_usd`,type:`number`,id:`param-max-price-usd`,children:_jsxs(_components.p,{children:[`Total price ceiling in USD. If the live total exceeds it, the order is rejected with `,_jsx(_components.code,{children:`price_moved`}),` and nothing is charged. Strongly recommended.`]})}),`\n`,_jsx(ParamField,{body:`custom_id`,type:`string`,id:`param-custom-id`,children:_jsx(_components.p,{children:`Withdrawal identifier (1–128 characters). After the cached response expires, reusing the same id can start a new purchase.`})}),`\n`,_jsx(ParamField,{body:`skip_unavailable`,type:`boolean`,default:`false`,id:`param-skip-unavailable`,children:_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`true`}),`, skip items that are no longer available instead of failing the whole request.`]})}),`\n`,_jsx(ParamField,{body:`appId`,type:`integer`,default:`730`,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 (the default), `,_jsx(_components.code,{children:`570`}),` Dota 2, `,_jsx(_components.code,{children:`252490`}),` Rust. Send the same `,_jsx(_components.code,{children:`appId`}),` you read the ids with from `,_jsx(_components.a,{href:`/api-reference/get-listings`,children:_jsx(_components.code,{children:`GET /v1/listings`})}),`. Dota 2 and Rust take up to 10 ids per order and are queued, so every skin answers `,_jsx(_components.code,{children:`pending`}),` first.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`response-fields`,children:`Response fields`}),`\n`,_jsx(ResponseField,{name:`data`,type:`object`,required:true,id:`param-data`,children:_jsxs(Expandable,{title:`data object`,children:[_jsx(ResponseField,{name:`purchase_id`,type:`string`,required:true,id:`param-purchase-id`}),_jsx(ResponseField,{name:`steam_id`,type:`string`,required:true,id:`param-steam-id`,children:_jsxs(_components.p,{children:[`The Steam ID resolved from the supplied `,_jsx(_components.code,{children:`partner`}),` + `,_jsx(_components.code,{children:`token`}),`.`]})}),_jsx(ResponseField,{name:`created_at`,type:`datetime`,required:true,id:`param-created-at`}),_jsx(ResponseField,{name:`custom_id`,type:`string | null`,id:`param-custom-id-1`}),_jsxs(ResponseField,{name:`skins`,type:`object[]`,required:true,id:`param-skins`,children:[_jsx(_components.p,{children:`Per-item result.`}),_jsxs(Expandable,{title:`skin object`,children:[_jsx(ResponseField,{name:`name`,type:`string | null`,id:`param-name`}),_jsx(ResponseField,{name:`price`,type:`number | null`,id:`param-price`}),_jsx(ResponseField,{name:`status`,type:`string`,id:`param-status`}),_jsx(ResponseField,{name:`return_reason`,type:`string | null`,id:`param-return-reason`}),_jsx(ResponseField,{name:`steam_trade_offer_id`,type:`string | null`,id:`param-steam-trade-offer-id`})]})]})]})}),`\n`,_jsx(Heading,{level:`2`,id:`example-request`,children:`Example request`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`11`,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:`11`,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/market/buy`}),_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:` -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:` \"partner\": \"447383001\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"token\": \"Ab3xZ9Qp\",`})}),`\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:` \"custom_id\": \"batch-2026-06-29-01\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"skip_unavailable\": false`})}),`\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:`17`,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:`17`,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:` \"data\"`}),_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:` \"purchase_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"pur_01J9Z3K8Q2\"`}),_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:` \"steam_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"76561198000000000\"`}),_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:04Z\"`}),_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:` \"custom_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"batch-2026-06-29-01\"`}),_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:` \"skins\"`}),_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:` \"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\"`}),_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:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"delivering\"`}),_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:` \"return_reason\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_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:` \"steam_trade_offer_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"5512345678\"`})]}),`\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`,_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`]})})}),`\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 (e.g. `,_jsx(_components.code,{children:`item_ids`}),` empty or over 100).`]})]}),_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:[`One or more items cannot be delivered via this endpoint (e.g. `,_jsx(_components.code,{children:`ss_live_*`}),` ids).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`invalid_trade_url`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`partner`}),` + `,_jsx(_components.code,{children:`token`}),` do not form a valid Steam trade URL.`]})]}),_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:[`The `,_jsx(_components.code,{children:`appId`}),` is not available to this key. Includes `,_jsx(_components.code,{children:`supported_app_ids`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`400`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`too_many_items`})}),_jsxs(_components.td,{children:[`More than 10 Dota 2 or Rust ids in one order. Includes `,_jsx(_components.code,{children:`max_items`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`401`}),_jsx(_components.td,{children:_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_settled_balance`})}),_jsxs(_components.td,{children:[`Settled balance below the order total. Includes `,_jsx(_components.code,{children:`required_usd`}),` and `,_jsx(_components.code,{children:`settled_usd`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`402`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`insufficient_balance`})}),_jsx(_components.td,{children:`Balance below the order total.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`403`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`external_buy_disabled`})}),_jsx(_components.td,{children:`Kill-switch is off; the endpoint is currently disabled.`})]}),_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:`Buying is not enabled for this key.`})]}),_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 endpoint requires a reversal-clean account.`})]}),_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:[`One or more items are no longer available. Includes `,_jsx(_components.code,{children:`unavailable_ids[]`}),` and, for CS2, may include `,_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:`price_moved`})}),_jsxs(_components.td,{children:[`Live total exceeded the ceiling. Includes `,_jsx(_components.code,{children:`quoted_max_usd`}),`, `,_jsx(_components.code,{children:`current_total_usd`}),`, and `,_jsx(_components.code,{children:`items[]`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`409`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`idempotency_in_progress`})}),_jsxs(_components.td,{children:[`A request with this `,_jsx(_components.code,{children:`custom_id`}),` is still being processed.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`409`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`price_updating`})}),_jsx(_components.td,{children:`Prices are refreshing; retry shortly.`})]}),_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\"`}),`). Back off 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`})}),_jsx(_components.td,{children:`Check whether the original order exists before attempting another purchase.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`504`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`upstream_timeout`})}),_jsxs(_components.td,{children:[`The marketplace timed out. Keep the withdrawal pending and `,_jsx(_components.a,{href:`https://csboard.com/cs2-skins-api/for/case-opening/#reconciliation`,children:`look up the saved withdrawal id`}),`.`]})]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Funds come exclusively from your `,_jsx(_components.strong,{children:`settled`}),` balance. Check `,_jsx(_components.code,{children:`settled_balance_usd`}),` on `,_jsx(_components.a,{href:`/api-reference/get-balance`,children:_jsx(_components.code,{children:`GET /v1/balance`})}),` before a large batch, and always send `,_jsx(_components.code,{children:`max_price_usd`}),` as overcharge protection.`]})}),`\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 buy (no `,_jsx(_components.code,{children:`appId`}),`, or `,_jsx(_components.code,{children:`730`}),`) 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/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"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"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 and deliver to a Steam trade URL","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.","operationId":"marketBuy","requestBody":"63f70b05-c0ac-498d-965d-dc227e5ed296","responses":{"201":"c91847cf-bb06-414d-a180-633eebb59711","400":"6f327894-5d82-495a-8517-1c29bad7dde7","401":"fc046267-d064-4b4d-b8a2-074aedd9b2fb","402":"3d9fc73a-0fc0-4c2d-b7cf-19c2559b3bf6","403":"0e899eec-2d70-45c2-be96-afd05b599c26","409":"4f775094-982e-4307-848f-d6810ceac624","429":"c64b15ce-793e-4b81-bccc-743072b606bd","500":"1f854a22-669e-4cba-a7fc-e2c75d201dbb","504":"90a978ad-df3f-4f8e-ade9-5d93f6962a6f"},"method":"post","type":"path","servers":["0e703a7c-bb72-4382-a5c4-7af713801e30"],"security":["06dc2d5d-3307-4e9d-932f-2c2f29b1a6df"],"path":"/market/buy","baseUrlOptions":["https://csboard.com/v1"],"title":"Buy and deliver to a Steam trade URL","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"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":100,"uniqueItems":true,"description":"1–100 unique listing ids to buy.","isRequired":true,"uniqueKey":"item_ids","typeLabel":"string[]"},"partner":{"type":"string","minLength":1,"maxLength":32,"description":"Steam trade URL `partner` value. With `token`, forms the destination trade URL.","isRequired":true,"uniqueKey":"partner","typeLabel":"string"},"token":{"type":"string","minLength":1,"maxLength":32,"description":"Steam trade URL `token` value. With `partner`, forms the destination trade URL.","isRequired":true,"uniqueKey":"token","typeLabel":"string"},"max_price_usd":{"type":"number","description":"Total ceiling in USD. Order is rejected with `price_moved` if the live total exceeds it.","uniqueKey":"max_price_usd","typeLabel":"number"},"custom_id":{"type":"string","minLength":1,"maxLength":128,"description":"Save one key per withdrawal. A cached success can be replayed for up to 24 hours. After expiry the same value may start a new purchase.","uniqueKey":"custom_id","typeLabel":"string"},"skip_unavailable":{"type":"boolean","default":false,"description":"If true, skip items that are no longer available instead of failing the whole request.","uniqueKey":"skip_unavailable","typeLabel":"boolean"},"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`. Dota 2 and Rust take up to 10 ids per order. 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","partner","token"],"uniqueKey":"","typeLabel":"object"},"example":{"item_ids":["itm_8841201","itm_8841340"],"partner":"447383001","token":"Ab3xZ9Qp","max_price_usd":30,"custom_id":"batch-2026-06-29-01","skip_unavailable":false},"examples":{"Example":{"title":"Example","value":{"item_ids":["itm_8841201","itm_8841340"],"partner":"447383001","token":"Ab3xZ9Qp","max_price_usd":30,"custom_id":"batch-2026-06-29-01","skip_unavailable":false}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"c91847cf-bb06-414d-a180-633eebb59711":{"description":"Purchase accepted and debited from settled balance.","headers":{"Idempotent-Replayed":{"description":"Present and `true` when this response replays an earlier purchase made with the same `custom_id`.","schema":{"type":"boolean"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"purchase_id":{"type":"string","isRequired":true,"uniqueKey":"data.purchase_id","typeLabel":"string"},"steam_id":{"type":"string","isRequired":true,"uniqueKey":"data.steam_id","typeLabel":"string"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time>"},"skins":{"type":"array","items":{"type":"object","properties":{"name":{"oneOf":[{"type":"string","uniqueKey":"data.skins.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.skins.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.skins.items.[INDEX].name","typeLabel":"string | null"},"price":{"oneOf":[{"type":"number","uniqueKey":"data.skins.items.[INDEX].price.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"data.skins.items.[INDEX].price.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.skins.items.[INDEX].price","typeLabel":"number | null"},"status":{"type":"string","uniqueKey":"data.skins.items.[INDEX].status","typeLabel":"string"},"return_reason":{"oneOf":[{"type":"string","uniqueKey":"data.skins.items.[INDEX].return_reason.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.skins.items.[INDEX].return_reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.skins.items.[INDEX].return_reason","typeLabel":"string | null"},"steam_trade_offer_id":{"oneOf":[{"type":"string","uniqueKey":"data.skins.items.[INDEX].steam_trade_offer_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.skins.items.[INDEX].steam_trade_offer_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.skins.items.[INDEX].steam_trade_offer_id","typeLabel":"string | null"}},"uniqueKey":"data.skins.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.skins","typeLabel":"object[]"},"custom_id":{"oneOf":[{"type":"string","uniqueKey":"data.custom_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.custom_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.custom_id","typeLabel":"string | null"}},"required":["purchase_id","steam_id","created_at","skins"],"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["data"],"uniqueKey":"","typeLabel":"object"},"example":{"data":{"purchase_id":"pur_01J9Z3K8Q2","steam_id":"76561198000000000","created_at":"2026-06-29T17:12:04Z","custom_id":"batch-2026-06-29-01","skins":[{"name":"AK-47 | Redline (Minimal Wear)","price":14.37,"status":"delivering","return_reason":null,"steam_trade_offer_id":"5512345678"}]}},"examples":{"Example":{"title":"Example","value":{"data":{"purchase_id":"pur_01J9Z3K8Q2","steam_id":"76561198000000000","created_at":"2026-06-29T17:12:04Z","custom_id":"batch-2026-06-29-01","skins":[{"name":"AK-47 | Redline (Minimal Wear)","price":14.37,"status":"delivering","return_reason":null,"steam_trade_offer_id":"5512345678"}]}}}},"exampleType":"examples"}},"exampleType":"examples"},"6f327894-5d82-495a-8517-1c29bad7dde7":{"description":"Bad request.","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":"item_ids must contain 1–100 unique ids."}},"unsupported_item":{"title":"unsupported_item","value":{"code":"unsupported_item","detail":"One or more items cannot be delivered via this endpoint."}},"invalid_trade_url":{"title":"invalid_trade_url","value":{"code":"invalid_trade_url","detail":"partner and token do not form a valid Steam trade URL."}},"unsupported_game":{"title":"unsupported_game","value":{"code":"unsupported_game","detail":"appId 570 is not available to this key. Supported: CS2 (730).","supported_app_ids":[730]}},"too_many_items":{"title":"too_many_items","value":{"code":"too_many_items","detail":"Up to 10 Rust items per order.","max_items":10}}},"exampleType":"examples"}},"exampleType":"examples"},"fc046267-d064-4b4d-b8a2-074aedd9b2fb":{"description":"Missing 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":"invalid_api_key","detail":"Missing or invalid API key."},"examples":{"Example":{"title":"Example","value":{"code":"invalid_api_key","detail":"Missing or invalid API key."}}},"exampleType":"examples"}},"exampleType":"examples"},"3d9fc73a-0fc0-4c2d-b7cf-19c2559b3bf6":{"description":"Not enough funds.","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_settled_balance":{"title":"insufficient_settled_balance","value":{"code":"insufficient_settled_balance","detail":"External delivery is payable only from settled (reversal-safe) balance. Wait for in-window credit to settle or top up.","required_usd":26.47,"balance_usd":30,"settled_usd":10}},"insufficient_balance":{"title":"insufficient_balance","value":{"code":"insufficient_balance","detail":"Balance is lower than the order total. Top up and retry.","required_usd":26.47,"balance_usd":4.75,"settled_usd":4.75}}},"exampleType":"examples"}},"exampleType":"examples"},"0e899eec-2d70-45c2-be96-afd05b599c26":{"description":"Not permitted.","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":{"external_buy_disabled":{"title":"external_buy_disabled","value":{"code":"external_buy_disabled","detail":"This endpoint is currently disabled."}},"trading_not_enabled":{"title":"trading_not_enabled","value":{"code":"trading_not_enabled","detail":"Enable buying for this key in your profile."}},"account_restricted":{"title":"account_restricted","value":{"code":"account_restricted","detail":"This endpoint requires a reversal-clean account."}}},"exampleType":"examples"}},"exampleType":"examples"},"4f775094-982e-4307-848f-d6810ceac624":{"description":"Conflict — an item is gone, the live price moved past your ceiling, a request with the same `custom_id` is still running, or prices are mid-refresh. 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":{"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"]}},"price_moved":{"title":"price_moved","value":{"code":"price_moved","detail":"Live total exceeds max_price_usd.","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}]}},"idempotency_in_progress":{"title":"idempotency_in_progress","value":{"code":"idempotency_in_progress","detail":"A request with this custom_id is still being processed."}},"price_updating":{"title":"price_updating","value":{"code":"price_updating","detail":"Prices are updating; retry shortly."}},"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."}}},"exampleType":"examples"}},"exampleType":"examples"},"c64b15ce-793e-4b81-bccc-743072b606bd":{"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"},"1f854a22-669e-4cba-a7fc-e2c75d201dbb":{"description":"The purchase could not be completed.","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":"The purchase could not be completed."},"examples":{"Example":{"title":"Example","value":{"code":"order_failed","detail":"The purchase could not be completed."}}},"exampleType":"examples"}},"exampleType":"examples"},"90a978ad-df3f-4f8e-ade9-5d93f6962a6f":{"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/market/buy — Buy and Deliver to a Steam Trade URL - CSBoard API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/api-reference/post-market-buy","matchLevel":0},"ru":{"href":"/ru/api-reference/post-market-buy","matchLevel":1},"zh-Hans":{"href":"/zh-Hans/api-reference/post-market-buy","matchLevel":1}}},"lastModified":"2026-11-06T03:14:16.485Z","originalFileLocation":"api-reference/post-market-buy.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 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.\">\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/market/buy — Buy and Deliver to a Steam Trade URL - CSBoard API\">\u003cmeta data-mint-head property=\"og:description\" content=\"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.\">\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-market-buy\">\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%2Fmarket%2Fbuy+%E2%80%94+Buy+and+Deliver+to+a+Steam+Trade+URL\u0026amp;description=Buy+up+to+100+items+and+deliver+them+straight+to+any+Steam+trade+URL+you+supply%2C+paid+from+your+settled+balance.+Built+for+wholesale+and+automated+delivery.\u0026amp;theme=932e691933583ab42431355a\u0026amp;signature=23bc5c2c7bd96f3be47929296ec7da00af0136cb6670287f9d66ce2e8834da95\">\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/market/buy — Buy and Deliver to a Steam Trade URL - CSBoard API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"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.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://csboard.mintlify.site/_mintlify/api/og/v2?division=Trading\u0026amp;title=POST+%2Fv1%2Fmarket%2Fbuy+%E2%80%94+Buy+and+Deliver+to+a+Steam+Trade+URL\u0026amp;description=Buy+up+to+100+items+and+deliver+them+straight+to+any+Steam+trade+URL+you+supply%2C+paid+from+your+settled+balance.+Built+for+wholesale+and+automated+delivery.\u0026amp;theme=932e691933583ab42431355a\u0026amp;signature=23bc5c2c7bd96f3be47929296ec7da00af0136cb6670287f9d66ce2e8834da95\">\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-market-buy\">\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-market-buy.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://api.csboard.com/api-reference/post-market-buy\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ru\" href=\"https://api.csboard.com/ru/api-reference/post-market-buy\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh-Hans\" href=\"https://api.csboard.com/zh-Hans/api-reference/post-market-buy\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://api.csboard.com/api-reference/post-market-buy\">\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-market-buy#webpage\",\"url\":\"https://api.csboard.com/api-reference/post-market-buy\",\"name\":\"POST /v1/market/buy — Buy and Deliver to a Steam Trade URL\",\"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.\",\"dateModified\":\"2026-11-06T03:14:16.485Z\",\"isPartOf\":{\"@id\":\"https://api.csboard.com#website\"},\"breadcrumb\":{\"@id\":\"https://api.csboard.com/api-reference/post-market-buy#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://api.csboard.com/api-reference/post-market-buy#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Trading\",\"item\":\"https://api.csboard.com/api-reference/post-orders\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"POST /v1/market/buy — Buy and Deliver to a Steam Trade URL\",\"item\":\"https://api.csboard.com/api-reference/post-market-buy\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://api.csboard.com/api-reference/post-market-buy#apireference\",\"headline\":\"POST /v1/market/buy — Buy and Deliver to a Steam Trade URL\",\"name\":\"POST /v1/market/buy — Buy and Deliver to a Steam Trade URL\",\"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.\",\"url\":\"https://api.csboard.com/api-reference/post-market-buy\",\"mainEntityOfPage\":{\"@id\":\"https://api.csboard.com/api-reference/post-market-buy#webpage\"},\"dateModified\":\"2026-11-06T03:14:16.485Z\",\"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-market-buy.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","openapi":"GET /currency","href":"/api-reference/get-currency"}]},{"group":"Trading","pages":[{"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"},{"title":"POST /v1/market/buy — Buy and Deliver to a Steam Trade URL","sidebarTitle":"POST /market/buy","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","description":"Release delivery of a held (escrow) order once its hold has cleared. Some held orders deliver automatically; others require this explicit 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-market-buy"}]},{"language":"zh-Hans","pages":[{"title":"zh-Hans","href":"/zh-Hans/api-reference/post-market-buy"}]}]},"basePath":"","title":"POST /v1/market/buy — Buy and Deliver to a Steam Trade URL - 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"]}