NewsPartnersAPI

ooeex API

Browse listings, place orders paid from your balance, fetch your keys, and manage per-key disputes — all over a simple REST API.

On this page

AuthenticationOrderingPer-key disputesErrors

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

GET/api/v1/balance
Your current balance.
GET/api/v1/collections
The collections you can filter listings by, with each one's live listing count and available stock.
GET/api/v1/products
Browse active, in-stock listings. Filters: platform, region, q, sellerId (exact) or seller (name), collectionId (exact) or collection (slug or name), page, pageSize. Each listing returns sellerId + sellerName and collectionId + collectionName + collectionSlug.
GET/api/v1/products/:id
Single listing detail, including its collection.
POST/api/v1/orders
Create an order and pay from balance. Requires Idempotency-Key.
GET/api/v1/orders/:id/keys
Delivered keys (deleted 7 days after purchase — fetch promptly).

Collections group listings the way the storefront does. Filter by collectionId for an exact match, or collection with a slug or name. Both match one collection exactly — “Gmail Accounts” will not return “Aged Gmail Accounts”. Listings that belong to no collection come back with collectionId: null and are excluded when you filter.

# discover the collections
curl https://ooeex.com/api/v1/collections -H "x-api-key: $KEY"

# then list everything in one of them
curl "https://ooeex.com/api/v1/products?collection=aged-gmail-accounts&pageSize=50" \
  -H "x-api-key: $KEY"
curl -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.

POST/api/v1/uploads/presign
Get a presigned URL to upload an evidence image (optional).
POST/api/v1/disputes
Open a per-key dispute. Requires Idempotency-Key.
GET/api/v1/disputes/:id
Dispute detail incl. per-key statuses and messages.
GET/api/v1/disputes/:id/replacements
Replacement keys delivered so far.
POST/api/v1/disputes/:id/messages
Post a message / extra evidence.
curl -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.

© 2025 ooeex. All rights reserved.