Mateo Shop
Reseller API  ·  v1.0
Initializing...
Docs Reseller API Reference
api.mateoshop.online
Get API Key
Live/REST API · JSON · v1.0

Reseller APIDocumentation

Programmatically buy OTT subscription products, manage your wallet, and build your own reseller storefront on top of Mateo Shop's infrastructure.

6
Endpoints
USDT
Currency
<1s
Delivery
REST
Protocol
Authentication
All requests require your secret API key sent as a request header.

Get your API key by sending /apikey to the bot on Telegram, or by tapping Reseller API from the main menu.

Required Header
X-API-Key: SHOP_your_secret_key_here
cURL Example
curl https://api.mateoshop.online/api/v1/me \
  -H "X-API-Key: SHOP_your_secret_key_here"
Quick Start
Go from zero to your first delivered order in under 5 minutes.
1

Get your API key

Tap Reseller API in the bot's main menu. Your key is generated instantly. Store it securely — it grants full access to place orders on your behalf.

2

Top up your balance

Go to Wallet → Deposit inside the bot and send USDT (BEP-20) to the shown address. Your balance updates automatically after on-chain confirmation.

3

Fetch available products

Hit GET /api/v1/products to get all active products with their IDs, prices, descriptions, and real-time stock counts.

4

Place your first order

Call POST /api/v1/order with a product ID. Credentials or activation links are returned instantly inside the response — ready to deliver to your customer.

Endpoints
Base URL: https://api.mateoshop.online/api/v1 — All endpoints require X-API-Key.
GET/api/v1/meYour balance & profile
Response 200
{
  "user_id":  123456789,
  "name":    "Rahul",
  "balance": 25.00,
  "currency": "USDT"
}
GET/api/v1/productsList all products with stock
Response 200
{
  "products": [
    {
      "id":          "cat_abc123",
      "name":        "Netflix Premium 1 Month",
      "price":       4.99,
      "description": "4K UHD · 4 Screens",
      "cat_type":    "id_pass",
      "in_stock":    14
    }
  ],
  "total": 1
}
POST/api/v1/orderPlace an order & receive credentials
Request Body
FieldTypeRequiredDescription
product_idstringREQUIREDCategory ID from /products
quantityintegerOPTIONAL1–10 units, default 1
Response 200
{
  "ok":               true,
  "order_id":        "550e8400-e29b-41d4...",
  "product":         "Netflix Premium 1 Month",
  "quantity":        1,
  "total_charged":   4.99,
  "currency":        "USDT",
  "balance_after":   20.01,
  "delivered_items": ["user@gmail.com:pass123"],
  "status":          "delivered"
}
Errors
402Insufficient balance — top up your wallet first.
400Not enough stock for the requested quantity.
404Product not found or unavailable.
401Invalid or missing API key.
GET/api/v1/ordersYour full order history
Query Parameters
ParamTypeDescription
limitintegerOPTIONALMax results per page, default 20
offsetintegerOPTIONALPagination offset, default 0
Response 200
{
  "orders": [
    {
      "id":         "550e8400...",
      "product_id": "cat_abc123",
      "product":    "Netflix Premium 1 Month",
      "price":      4.99,
      "status":     "delivered",
      "created_at": "2026-09-21T12:00:00"
    }
  ],
  "total": 42, "limit": 20, "offset": 0
}
GET/api/v1/orders/{order_id}Single order with credentials
Path Parameter
ParamTypeDescription
order_idstring (UUID)REQUIREDThe UUID of the order to retrieve
Response 200
{
  "id":             "550e8400...",
  "product_id":     "cat_abc123",
  "product":        "Netflix Premium 1 Month",
  "price":          4.99,
  "status":         "delivered",
  "created_at":     "2026-09-21T12:00:00",
  "delivered_item": "user@gmail.com:pass123"
}
GET/api/v1/statsYour account statistics
Response 200
{
  "user_id":      123456789,
  "balance":      20.01,
  "currency":     "USDT",
  "total_orders": 42,
  "delivered":    40,
  "api_orders":   38,
  "total_spent":  199.60
}
Error Handling
All errors return a JSON body with a detail field. Use the HTTP status code to handle errors programmatically.
200Request succeeded.
401Invalid or missing API key.
402Insufficient balance — deposit USDT via the bot first.
400Bad request — not enough stock, invalid params, etc.
403Forbidden — this resource belongs to another account.
404Product or order not found.

{ "detail": "Insufficient balance. Required: $4.99 USDT, Your balance: $2.00 USDT." }
Code Examples
Ready-to-run snippets for the most common integrations.
Python
Node.js
cURL
import requests

API_KEY  = "SHOP_your_key_here"
BASE     = "https://api.mateoshop.online"
H        = {"X-API-Key": API_KEY}

# ── Balance ──────────────────────────────────
me = requests.get(f"{BASE}/api/v1/me", headers=H).json()
print(f"Balance: ${me['balance']} USDT")

# ── List products ─────────────────────────────
prods = requests.get(f"{BASE}/api/v1/products", headers=H).json()
for p in prods["products"]:
    print(f"{p['name']} — ${p['price']} | Stock: {p['in_stock']}")

# ── Place order ───────────────────────────────
r = requests.post(f"{BASE}/api/v1/order", headers=H,
    json={"product_id": "cat_abc123", "quantity": 1}).json()

if r["ok"]:
    print("✅ Delivered:", r["delivered_items"][0])
    print(f"Balance left: ${r['balance_after']} USDT")
else:
    print("❌", r["detail"])
const axios = require('axios');
const BASE = 'https://api.mateoshop.online';
const cfg  = { headers: { 'X-API-Key': 'SHOP_your_key' } };

// Balance
const { data: me } = await axios.get(`${BASE}/api/v1/me`, cfg);
console.log(`Balance: $${me.balance} USDT`);

// Place order
const { data } = await axios.post(
  `${BASE}/api/v1/order`,
  { product_id: 'cat_abc123', quantity: 1 },
  cfg
);
if (data.ok) console.log('✅', data.delivered_items[0]);
else console.error('❌', data.detail);
# Balance
curl https://api.mateoshop.online/api/v1/me \
  -H "X-API-Key: SHOP_your_key"

# Products
curl https://api.mateoshop.online/api/v1/products \
  -H "X-API-Key: SHOP_your_key"

# Place order
curl -X POST https://api.mateoshop.online/api/v1/order \
  -H "X-API-Key: SHOP_your_key" \
  -H "Content-Type: application/json" \
  -d '{"product_id":"cat_abc123","quantity":1}'
Mateo Shop Reseller API  ·  v1.0.0
Send /apikey to the bot on Telegram