ooeex API
Browse listings, place orders paid from your balance, fetch your keys, and manage per-key disputes — all over a simple REST API.
Authentication
Create a key under Account → Settings → API Keys. It is shown once. Send it on every request via the x-api-key header. Keys spend only your account balance — top up on the site first.
curl https://ooeex.com/api/v1/balance \
-H "x-api-key: hb_live_your_key_here"Rate limit: 120 requests/minute per key. Write requests (POST /orders, POST /disputes) require an Idempotency-Key header so a retry never charges or disputes twice.
Ordering
/api/v1/balance/api/v1/products/api/v1/products/:id/api/v1/orders/api/v1/orders/:id/keyscurl -X POST https://ooeex.com/api/v1/orders \
-H "x-api-key: $KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "content-type: application/json" \
-d '{ "items": [ { "productId": "PRODUCT_UUID", "quantity": 5 } ] }'Per-key disputes
Dispute the exact keys that don't work, with evidence per key, and fetch replacement keys the seller provides. All disputed keys in one dispute must be from the same seller.
/api/v1/uploads/presign/api/v1/disputes/api/v1/disputes/:id/api/v1/disputes/:id/replacements/api/v1/disputes/:id/messagescurl -X POST https://ooeex.com/api/v1/disputes \
-H "x-api-key: $KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "content-type: application/json" \
-d '{
"orderId": "ORDER_UUID",
"reason": "invalid_key",
"description": "5 of 100 keys already redeemed",
"disputedKeys": [
{ "orderItemId": "ITEM_UUID", "productKeyId": "KEY_UUID",
"evidenceText": "shows already used" }
]
}'Errors
Errors return { "error": { "code", "message", "details?" } } with a matching HTTP status — e.g. 402 insufficient_balance, 401 unauthorized, 429 rate_limited, 409 idempotency_conflict.