Introduction
All endpoints live under https://api.batmanai.store/v1. Requests are JSON over HTTPS. Responses are JSON with a boolean ok field. Prices and stock match your account exactly — per-user prices, reseller discounts, and deals all applied automatically.
Authentication
Every call needs a Bearer token in the Authorization header.
Authorization: Bearer nxs_YOUR_KEY_HERE
Error codes
| Status | Meaning |
|---|---|
| 400 | Malformed request (bad JSON, missing field) |
| 401 | invalid_api_key — missing / wrong / revoked |
| 402 | insufficient_balance — top up your wallet from the bot |
| 403 | account_blocked — reach out to support |
| 404 | product_not_found or order_not_found |
| 409 | out_of_stock — product has zero credentials across all sources |
| 429 | rate_limit — slow down (see below) |
| 503 | store_offline — admin has disabled sales |
Rate limits
30 requests per minute per API key. Exceeding returns 429 — try again after a short wait. Use idempotency keys on POST /v1/orders to retry safely without double-charging.
GET /v1/products
Returns every live product with your account's exact price and current stock.
| Response field | Type | Notes |
|---|---|---|
products[].id | string | Product identifier |
products[].name | string | Display name |
products[].description | string | May be empty |
products[].price | number | Your unit price (deal / per-user / reseller already applied) |
products[].currency | string | Always USDT currently |
products[].stock | number | Local + supplier combined |
products[].in_stock | bool | Convenience flag |
products[].deal | bool | Price reflects an active deal |
products[].duration | string|null | e.g. "1 month" |
curl 'https://api.batmanai.store/v1/products' \
-H 'Authorization: Bearer nxs_YOUR_KEY'No parameters needed.
GET /v1/products/{id}
Fetch a single product by id.
| Path param | Type | Notes |
|---|---|---|
idrequired | string | Product id from the list |
curl 'https://api.batmanai.store/v1/products/<id>' \
-H 'Authorization: Bearer nxs_YOUR_KEY'GET /v1/balance
Your current wallet balance.
| Response field | Type | Notes |
|---|---|---|
balance | number | Available balance |
currency | string | Currency code |
curl 'https://api.batmanai.store/v1/balance' \
-H 'Authorization: Bearer nxs_YOUR_KEY'No parameters needed.
GET /v1/orders
Last 50 orders placed through your account (via the bot or the API).
| Response field | Type | Notes |
|---|---|---|
orders[].id | string | Order id (e.g. PAY-...) |
orders[].status | string | completed / partial / pending_delivery / pending |
orders[].qty | number | Requested quantity |
orders[].got | number | Actually delivered |
orders[].short_by | number | How many still owed (0 if complete) |
orders[].total | number | Amount charged (only for delivered items) |
orders[].created_at | number | ms epoch |
curl 'https://api.batmanai.store/v1/orders' \
-H 'Authorization: Bearer nxs_YOUR_KEY'No parameters needed.
GET /v1/orders/{id}
Full order detail including credentials array.
| Path param | Type | Notes |
|---|---|---|
idrequired | string | Order id |
| Response field | Type | Notes |
|---|---|---|
order.credentials[] | string[] | Delivered items — same format as the bot sends in Telegram |
curl 'https://api.batmanai.store/v1/orders/<id>' \
-H 'Authorization: Bearer nxs_YOUR_KEY'POST /v1/orders
Place an order — credentials returned inline in the response.
| Body field | Type | Notes |
|---|---|---|
product_idrequired | string | Product id |
qtyoptional | number | Default 1, max 100 |
idempotency_keyoptional | string | Same key → same order (24 h window). Safe retries. |
status: "partial", the credentials[] array, and short_by count. You are only charged for delivered items. The admin manually sends the remainder shortly.curl -X POST 'https://api.batmanai.store/v1/orders' \
-H 'Authorization: Bearer nxs_YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"product_id":"prod_xxx","qty":"1","idempotency_key":"uuid-123"}'