Seller import API
Manage your offers and stock from your own system. All requests use HTTPS and JSON, amounts are in EUR.
https://buycheapkeys.com/partner-api/v1/seller
Authentication
Create a key in Seller panel → API and send it in the Authorization header. Keep it secret: it gives full access to your offers and stock.
Authorization: Bearer bcks_xxxxxxxxxxxx_…Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /me | Your store and current commission terms. |
| GET | /products?search=&page=&limit= | Search the catalogue. Returns productId, shop price and best seller price. |
| GET | /offers?status=&page=&limit= | Your offers with stock, customer price and whether you are the cheapest. |
| POST | /offers | Create or update your offer for a product: { productId, price, status? }. |
| GET | /offers/{id} | One offer. |
| PATCH | /offers/{id} | Change price and/or status (active | paused). |
| DELETE | /offers/{id} | Delete an offer without stock (offers with sales are paused instead). |
| POST | /offers/{id}/keys | Upload keys: { keys: ["…"] } (max 1,000 per request). |
| POST | /offers/{id}/withdraw | Take unsold keys back: { count? }. Returns them in plain text. |
| GET | /sales?page=&limit= | Your sales, earnings and hold dates. |
| GET | /balance | Pending and available balance and upcoming releases. |
| GET | /disputes?status=&page=&limit= | Customer disputes on your sales (open | escalated | resolved). |
| GET | /disputes/{id} | One dispute with its messages. |
| POST | /disputes/{id}/messages | Answer the customer: { body }. |
| POST | /disputes/{id}/replace | Send a replacement: { key } or { fromStock: true }. |
| POST | /disputes/{id}/refund | Refund the customer (the sale is reversed). |
Prices
price is what you receive per unit. The customer pays your price plus the commission of the product type (keys, accounts and gifts, special subscriptions), shown in /me and in each offer. Your offer is sold when its customer price is the lowest available.
Example: list a product and upload keys
# 1. Find the product
curl "https://buycheapkeys.com/partner-api/v1/seller/products?search=elden%20ring" \
-H "Authorization: Bearer $BCK_SELLER_KEY"
# 2. Create (or update) your offer — price = what you receive per unit, EUR
curl -X POST "https://buycheapkeys.com/partner-api/v1/seller/offers" \
-H "Authorization: Bearer $BCK_SELLER_KEY" \
-H "Content-Type: application/json" \
-d '{"productId":"<productId>","price":24.90}'
# → { "created": true, "offer": { "id": "off_…", "customerPrice": 27.15, "stock": 0, … } }
# 3. Upload keys (max 1,000 per request; duplicates are skipped)
curl -X POST "https://buycheapkeys.com/partner-api/v1/seller/offers/off_…/keys" \
-H "Authorization: Bearer $BCK_SELLER_KEY" \
-H "Content-Type: application/json" \
-d '{"keys":["XXXXX-XXXXX-XXXXX","YYYYY-YYYYY-YYYYY"]}'
# → { "added": 2, "duplicates": 0, "stock": 2 }
# 4. Follow your sales and balance
curl "https://buycheapkeys.com/partner-api/v1/seller/sales" -H "Authorization: Bearer $BCK_SELLER_KEY"
curl "https://buycheapkeys.com/partner-api/v1/seller/balance" -H "Authorization: Bearer $BCK_SELLER_KEY"Errors and limits
Errors return { error: { code, message, requestId } } with a 4xx/5xx status. Limits: 20 requests per second and 600 per minute per key; 300 key uploads per minute.