Bulk AI subscriptions and gift cards: wholesale via API / MCP

AIBulk has no separate "wholesaler" status and no approval queue. Any registered user can generate an API key and buy ChatGPT, Claude, Gemini, Grok, X Premium and Telegram Premium codes, plus US Apple and Roblox gift cards, in bulk from a prepaid balance, then resell or distribute them. Web retail and the API share the same price at the same level.

Who it is for

  • Resellers and top-up shops: a steady supply, instant codes, and activation on behalf of your customers.
  • Developers and SaaS: embed "buy an AI subscription" in your own product, buy on demand, hold no stock.
  • AI agents: order, check stock and top up directly over MCP, with no human clicking through a website.

Levels and pricing

Level score = cumulative spending + current balance, never downgraded. Every product has a fixed unit price per level, identical on the web, the REST API and MCP.

Level Level score Pricing
Lv1 $0 Retail price
Lv2 ≥ $100 Level price
Lv3 ≥ $500 Level price
Lv4 ≥ $2,000 Level price
Lv5 ≥ $10,000 Best price

Topping up raises your level immediately: deposit 500 USDT and every later order is priced at Lv3. Your current unit price per product is shown on the product page after login or in GET /wholesale/v1/products.

How to integrate

  • REST API: GET /wholesale/v1/products for products, your unit price and stock; GET …/availability?qty=N for a real-time quantity check; POST /wholesale/v1/orders to buy (balance payment returns codes synchronously; a hosted payment link is also available); POST /wholesale/v1/topup to deposit; GET /wholesale/v1/transactions for the ledger. Full API reference · OpenAPI · llms.txt for agents
  • MCP (Streamable HTTP): one command adds AIBulk to Claude Code, Cursor and other clients, with tools such as list_products, check_availability, get_balance, create_topup, purchase_codes and get_order. Config snippets are on the developer page.
  • Webhooks: HMAC-signed order.delivered, topup.credited, redemption.fulfilled / failed and more, retried up to 10 times with exponential backoff; polling remains the source of truth.
  • Server-side redemption: POST /wholesale/v1/redemptions activates one of your own codes for a customer; redeemFields tells you what to collect per product, so customers never visit a third-party page.

Four steps to start

  1. Register and sign in, then click "Get API key" in the account center (shown once, prefix awk_).
  2. Top up the balance in USDT / USDC (pay within 15 minutes; unpaid top-ups expire).
  3. Run the test product prod_api_order_test (a real 0.01 USDT charge, quantity 1) to exercise ordering, code retrieval, idempotency and webhooks.
  4. Go live: give every order a unique externalOrderId and reuse it on retries; you will never be charged twice.

Rules and guarantees

  • 1 to 1000 units per order; 300 requests per minute per key.
  • Orders are idempotent on externalOrderId, top-ups on externalTopupId; pass expectedUnitPrice to reject a changed quote instead of silently accepting it.
  • Codes issued through the API have no expiry; a failed redemption can be resubmitted with corrected details and the code stays valid.
  • fulfillmentStatus=needs_attention means manual delivery or refund review: keep the original order, contact support, never reorder.
  • Amounts are decimal strings (for example "12.50") in USDT / USDC; USDC deposits are credited 1:1 to the USDT balance.
  • Paying wallets must have no direct or indirect ties to sanctioned entities; see the Guide.

FAQ

Minimum order or monthly fee? None. Levels depend only on cumulative spending and balance; there is no minimum, no fee and no review.

How is stock guaranteed? Product pages and the availability endpoint reflect sellable quantity in real time; instant-delivery products issue codes on payment, manual-delivery products are labelled.

Can I activate in my customer's name? Yes, that is what server-side redemption is for; collect what redeemFields lists before ordering.

Do prices change? Unit prices can move with upstream costs, so send expectedUnitPrice and a change returns price_changed instead of a fill at the new price.

Contact

For integration issues, send the requestId from the failed response to Telegram @aibulk or X @aibulk_official. Related: Developer integration · Full API reference · Refund Policy

Last updated 2026-10-09