ProdSeller API
Resell products from your balance on any bot or website. Authenticate with your API key, list available products, create orders deducted from your balance, and get instant key delivery.
API Key Auth
Send your key in the X-API-Key header with every request.
Balance-based
Orders are deducted directly from your USDT balance — no payment step needed.
Rate limit
300 requests per 15 minutes per IP. Use the X-RateLimit-* headers to track usage.
Authentication
Every request must include your API key in the X-API-Key request header. Get or generate your key in the ProdSeller admin panel under API Manager.
Header format
X-API-Key: psk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# curl curl -H "X-API-Key: psk_YOUR_KEY" http://51.77.244.194/v1/balance
Error Handling
All errors return a JSON object with an error field and a standard HTTP status code.
// Error response shape { "error": "Solde insuffisant" }
| Code | Meaning |
|---|---|
| 401 | API key missing, invalid, or disabled |
| 400 | Bad request — missing or invalid parameter |
| 402 | Insufficient balance |
| 404 | Resource not found |
| 409 | Conflict — e.g., out of stock |
| 429 | Rate limit exceeded |
| 500 | Internal server error |
Endpoints
Returns all active products available for purchase.
{
"products": [
{
"id": "64abc...",
"name": "ChatGpt Pro K12",
"description": "ChatGPT Pro account access",
"price": 0.5,
"imageUrl": "https://...",
"delivery": { "type": "instant" },
"sold": 0,
"inStock": true
}
]
}
| Parameter | Type | Description |
|---|---|---|
| id * | string | MongoDB product ID |
{
"id": "64abc...",
"name": "ChatGpt Pro K12",
"price": 0.5,
"stock": 28, // null for custom-delivery products
"delivery": { "type": "instant" }
}
Returns the balance and membership tier of the user linked to the API key.
{
"telegramId": 123456789,
"username": "mybot",
"balance": 25.50,
"membership": "gold"
}
Purchases a product and delivers the key(s) instantly. The order amount is deducted from your balance. Your membership discount is applied automatically.
Request body
| Field | Type | Description |
|---|---|---|
| productId * | string | Product ID to purchase |
| quantity | number | Quantity (default: 1) |
{
"productId": "64abc...",
"quantity": 1
}
{
"orderId": "64xyz...",
"status": "delivered",
"product": { "id": "64abc...", "name": "ChatGpt Pro K12" },
"quantity": 1,
"amount": 0.5,
"discountPercent": 5,
"discountAmount": 0.25,
"deliveredKey": "email:pass123", // single key
"deliveredKeys": ["key1", "key2"], // multiple (quantity > 1)
"createdAt": "2026-01-15T10:30:00Z"
}
| Parameter | Type | Description |
|---|---|---|
| id * | string | Order ID returned from POST /orders |
{
"orderId": "64xyz...",
"status": "delivered", // pending | paid | delivered | failed
"product": { "id": "...", "name": "..." },
"quantity": 1,
"amount": 0.5,
"deliveredKey": "email:pass"
}
Code Examples
Python
import requests API_KEY = "psk_YOUR_KEY_HERE" BASE_URL = "http://51.77.244.194/v1" HEADERS = { "X-API-Key": API_KEY } # 1. List products products = requests.get(f"{BASE_URL}/products", headers=HEADERS).json()["products"] product = products[0] print(f"Buying: {product['name']} — ${product['price']}") # 2. Check balance balance = requests.get(f"{BASE_URL}/balance", headers=HEADERS).json()["balance"] print(f"Balance: ${balance}") # 3. Create order order = requests.post(f"{BASE_URL}/orders", headers=HEADERS, json={ "productId": product["id"], "quantity": 1 }).json() print(f"Key: {order.get('deliveredKey')}")
Node.js
const API_KEY = 'psk_YOUR_KEY_HERE'; const BASE_URL = 'http://51.77.244.194/v1'; const headers = { 'X-API-Key': API_KEY, 'Content-Type': 'application/json' }; // List products const { products } = await fetch(`${BASE_URL}/products`, { headers }).then(r => r.json()); // Buy first product const order = await fetch(`${BASE_URL}/orders`, { method: 'POST', headers, body: JSON.stringify({ productId: products[0].id, quantity: 1 }) }).then(r => r.json()); console.log('Delivered key:', order.deliveredKey);
Telegram Bot (python-telegram-bot)
from telegram import Update from telegram.ext import CommandHandler, ApplicationBuilder import requests API_KEY = "psk_YOUR_KEY" HEADERS = { "X-API-Key": API_KEY } BASE = "http://51.77.244.194/v1" async def buy(update: Update, context): args = context.args if not args: await update.message.reply_text("Usage: /buy <productId>") return resp = requests.post(f"{BASE}/orders", headers=HEADERS, json={ "productId": args[0], "quantity": 1 }) order = resp.json() if "error" in order: await update.message.reply_text(f"❌ {order['error']}") else: key = order.get("deliveredKey", "(pending delivery)") await update.message.reply_text(f"✅ Order #{order['orderId'][:8]}\n\n🔑 {key}") app = ApplicationBuilder().token("BOT_TOKEN").build() app.add_handler(CommandHandler("buy", buy)) app.run_polling()