验证
不记名令牌,按密钥限定范围。
在 Developers -> APIkeys 下创建一个密钥。在创建时选择功能 - 例如,用于分析的只读密钥,用于履行的只读密钥。立即撤销,不影响其他人。
实时密钥
sx_live_…
真实支出。真正的钱包。真正的结算。
测试键
sx_test_…
沙盒 - 无链上运动,相同的响应形状。
错误
RFC 7807。始终 JSON。
每个非 2xx 都会返回一个结构化主体 - 绝不是裸露的 HTML。在 type 块上分支。
400
invalid_request
Bad JSON or missing parameter.
401
unauthenticated
Missing or invalid bearer token.
403
forbidden_scope
Key is valid but lacks the ability for this endpoint.
404
not_found
The resource doesn't exist or isn't yours.
409
conflict
Idempotency key already used with a different payload.
422
unprocessable
Validation failed. Body has an `errors` map per-field.
429
rate_limited
You're going too fast. `Retry-After` is set.
500
server_error
Our side broke. Includes a `trace_id` for support.
速率限制和幂等性
理智的默认设置是一成不变的。
速率限制
写入为 120 req/min,读取为 600 req/min。持续突发会通过 Retry-After 进行反压。
幂等性
每次写入时发送 Idempotency-Key 来转移资金。相同的键+相同的主体返回相同的响应,没有重复的副作用。
Parameters
-
limit
optional
integer
query
How many items to return per page.
values:1 – 100
default:25
-
cursor
optional
string
query
Opaque pagination cursor from a previous response.
-
status
optional
enum
query
Filter by lifecycle status.
values:active | archived | draft
-
type
optional
enum
query
Filter by product kind.
values:license_key | account | file_download | physical | subscription
Example response
200
{
"object": "list",
"has_more": false,
"next_cursor": null,
"data": [
{
"id": "prod_01J2PVQR41",
"name": "Adobe Creative Cloud Key",
"type": "license_key",
"price_cents": 12900,
"currency": "USD",
"stock": 47,
"status": "active"
},
{
"id": "prod_01J2PVQS6X",
"name": "VIP Discord Role",
"type": "account",
"price_cents": 999,
"currency": "USD",
"stock": null,
"status": "active"
}
]
}
Try it - runs in your browser against a sandbox mock.
Parameters
-
name
required
string
body
Display name shown on the storefront.
-
type
required
enum
body
Decides which delivery strategy fires on payment.
values:license_key | account | file_download | dynamic | physical | subscription
-
price_cents
required
integer
body
Price in the smallest unit of `currency`.
values:≥ 0
-
currency
required
string
body
Three-letter fiat currency code.
values:ISO-4217 - e.g. USD, EUR, GBP
-
description
optional
string
body
Markdown-flavoured description body.
-
stock
optional
integer
body
`null` = unlimited / pool-driven.
values:≥ 0 or null
Example response
201
{
"id": "prod_01J2PVQR41",
"name": "Adobe Creative Cloud Key",
"slug": "adobe-creative-cloud-key",
"type": "license_key",
"price_cents": 12900,
"currency": "USD",
"stock": 0,
"status": "active",
"created_at": "2026-05-26T07:18:03Z"
}
Try it - runs in your browser against a sandbox mock.
Example response
200
{
"id": "prod_01J2PVQR41",
"name": "Adobe Creative Cloud Key",
"slug": "adobe-creative-cloud-key",
"type": "license_key",
"price_cents": 12900,
"currency": "USD",
"stock": 47,
"status": "active",
"created_at": "2026-05-26T07:18:03Z"
}
Try it - runs in your browser against a sandbox mock.
Parameters
-
id
required
string
path
The product identifier.
-
name
optional
string
body
New display name.
-
price_cents
optional
integer
body
New price in smallest currency unit.
values:≥ 0
-
status
optional
enum
body
Lifecycle status.
values:active | archived | draft
-
description
optional
string
body
Markdown body.
Example response
200
{
"id": "prod_01J2PVQR41",
"price_cents": 9900,
"status": "active",
"updated_at": "2026-05-26T07:32:18Z"
}
Try it - runs in your browser against a sandbox mock.
Example response
200
{
"id": "prod_01J2PVQR41",
"deleted": true,
"archived_at": "2026-05-26T07:36:51Z"
}
Try it - runs in your browser against a sandbox mock.
Example response
201
{
"imported": 3,
"duplicates": 0,
"stock_after": 50
}
Try it - runs in your browser against a sandbox mock.
Parameters
-
limit
optional
integer
query
Items per page.
values:1 – 100
default:25
-
status
optional
enum
query
Filter by order status.
values:pending | awaiting_payment | paid | delivering | completed | failed | refunded
-
from
optional
string
query
Created at or after this date.
values:ISO-8601 date
-
to
optional
string
query
Created at or before this date.
values:ISO-8601 date
Example response
200
{
"object": "list",
"has_more": false,
"next_cursor": null,
"data": [
{
"id": "ord_01J2PVP4XJ",
"status": "paid",
"total_cents": 4900,
"currency": "USD",
"customer_email": "[email protected]",
"paid_at": "2026-05-26T07:14:22Z"
},
{
"id": "ord_01J2PVN29D",
"status": "paid",
"total_cents": 12900,
"currency": "USD",
"customer_email": "[email protected]",
"paid_at": "2026-05-26T07:09:58Z"
}
]
}
Try it - runs in your browser against a sandbox mock.
Example response
200
{
"id": "ord_01J2PVP4XJ",
"status": "paid",
"total_cents": 4900,
"currency": "USD",
"customer_email": "[email protected]",
"paid_at": "2026-05-26T07:14:22Z",
"payment": {
"provider": "blockpn",
"chain": "tron",
"asset": "USDT",
"tx_hash": "0xae9c2\u2026"
},
"items": [
{
"product": "Adobe Creative Cloud Key",
"qty": 1,
"subtotal_cents": 4900
}
],
"delivery": {
"kind": "license_key",
"state": "delivered",
"delivered_at": "2026-05-26T07:14:24Z"
}
}
Try it - runs in your browser against a sandbox mock.
Parameters
-
uuid
required
string
path
The order identifier.
-
amount_cents
optional
integer
body
Defaults to the full order total.
values:> 0 and ≤ order total
-
reason
optional
enum
body
For your accounting + the buyer receipt.
values:requested_by_buyer | duplicate | fraud | other
-
note
optional
string
body
Internal note attached to the refund record.
Example response
200
{
"id": "rf_01J2PVS78B",
"order_id": "ord_01J2PVP4XJ",
"status": "processing",
"amount_cents": 4900,
"reason": "requested_by_buyer",
"destination_tx": null,
"created_at": "2026-05-26T07:22:51Z"
}
Try it - runs in your browser against a sandbox mock.
Example response
200
{
"sent_at": "2026-05-26T07:41:09Z",
"recipient": "[email protected]",
"delivery_kind": "license_key"
}
Try it - runs in your browser against a sandbox mock.
Parameters
-
limit
optional
integer
query
Items per page.
values:1 – 100
default:25
-
cursor
optional
string
query
Opaque pagination cursor.
Example response
200
{
"object": "list",
"has_more": false,
"data": [
{
"id": "cus_01J2PR9M5C",
"email": "[email protected]",
"orders_count": 8,
"lifetime_cents": 103200
},
{
"id": "cus_01J2PRA1FE",
"email": "[email protected]",
"orders_count": 3,
"lifetime_cents": 149700
}
]
}
Try it - runs in your browser against a sandbox mock.
Example response
200
{
"id": "cus_01J2PR9M5C",
"email": "[email protected]",
"orders_count": 8,
"lifetime_cents": 103200,
"first_seen_at": "2026-04-12T09:21:55Z",
"last_seen_at": "2026-05-26T07:14:22Z",
"orders": [
{
"id": "ord_01J2PVP4XJ",
"total_cents": 4900,
"paid_at": "2026-05-26T07:14:22Z"
},
{
"id": "ord_01J0HE83KW",
"total_cents": 12900,
"paid_at": "2026-05-19T22:01:08Z"
}
]
}
Try it - runs in your browser against a sandbox mock.
Parameters
-
limit
optional
integer
query
Items per page.
values:1 – 100
default:25
-
status
optional
enum
query
Filter by payout status.
values:queued | broadcast | confirmed | failed
Example response
200
{
"object": "list",
"has_more": false,
"data": [
{
"id": "po_01J2PVZ8KK",
"status": "confirmed",
"chain": "tron",
"asset": "USDT",
"amount_cents": 25000,
"tx_hash": "0xfa3b\u2026",
"confirmed_at": "2026-05-26T08:01:11Z"
}
]
}
Try it - runs in your browser against a sandbox mock.
Parameters
-
chain
required
enum
body
Network to broadcast on.
values:tron | base | ethereum | bitcoin | solana | polygon | bsc
-
asset
required
string
body
Asset symbol on that chain.
values:USDT | USDC | BTC | ETH | SOL | …
-
amount_cents
required
integer
body
Amount in fiat-cents (we convert on the way out).
values:> 0
-
destination_address
required
string
body
On-chain address to send to.
-
memo
optional
string
body
Optional memo/tag for chains that need one.
Example response
201
{
"id": "po_01J2PW01GG",
"status": "queued",
"chain": "tron",
"asset": "USDT",
"amount_cents": 25000,
"destination_address": "T...",
"created_at": "2026-05-26T08:03:47Z"
}
Try it - runs in your browser against a sandbox mock.
Example response
200
{
"object": "list",
"data": [
{
"id": "wh_01J2PTR7QW",
"url": "https://your.app/sellix/webhook",
"events": [
"order.paid",
"order.refunded"
],
"status": "active"
}
]
}
Try it - runs in your browser against a sandbox mock.
Parameters
-
url
required
string
body
HTTPS URL we POST to.
-
events
required
array<string>
body
Events to subscribe to. Use `*` for all.
values:order.paid | order.refunded | order.delivered | order.failed | product.* | payout.* | customer.created
-
description
optional
string
body
Human-readable note. Shown in the dashboard.
Example response
201
{
"id": "wh_01J2PVT0KZ",
"url": "https://your.app/sellix/webhook",
"events": [
"order.paid",
"order.refunded"
],
"signing_secret": "whsec_29Ax\u2026",
"status": "active",
"created_at": "2026-05-26T08:08:14Z"
}
Try it - runs in your browser against a sandbox mock.
Example response
200
{
"delivered": true,
"response_code": 200,
"delivery_ms": 184
}
Try it - runs in your browser against a sandbox mock.
Example response
200
{
"id": "wh_01J2PVT0KZ",
"deleted": true
}
Try it - runs in your browser against a sandbox mock.
Example response
200
{
"object": "list",
"data": [
{
"id": "apik_01J2PR\u2026",
"name": "Fulfilment worker",
"abilities": [
"orders:read",
"orders:write"
],
"last_used_at": "2026-05-26T08:11:00Z"
},
{
"id": "apik_01J2PS\u2026",
"name": "Analytics dash",
"abilities": [
"orders:read",
"customers:read"
],
"last_used_at": null
}
]
}
Try it - runs in your browser against a sandbox mock.
Parameters
-
name
required
string
body
Human-readable label.
-
abilities
required
array<string>
body
Permission set this key grants.
values:orders:read | orders:write | products:read | products:write | customers:read | payouts:read | payouts:write | webhooks:read | webhooks:write
-
mode
optional
enum
body
Live or sandbox.
values:live | test
default:live
Example response
201
{
"id": "apik_01J2PW2F88",
"name": "Fulfilment worker",
"abilities": [
"orders:read",
"orders:write"
],
"secret": "sx_live_9kzQ7xV9c4fT2mN8rY",
"created_at": "2026-05-26T08:15:31Z"
}
Try it - runs in your browser against a sandbox mock.
Example response
200
{
"id": "apik_01J2PW2F88",
"revoked": true
}
Try it - runs in your browser against a sandbox mock.