Generate a personal API key inside the Telegram bot, top up your wallet, and purchase instantly — connect your own site, script, or agent in minutes.
https://vaultifyvip.lovable.app/api/public/v1X-API-Key: vk_...Three steps to your first purchase.
Open any VaultifyVIP bot → 🔑 API → Generate. Copy your key (starts with vk_).
Fund your wallet in-bot with CryptoBot, Binance Pay, or USDT (BEP20) — pollers auto-credit within a minute.
Send your key in the X-API-Key header on every request. That's it.
Both pollers run every minute and are strictly idempotent — replaying the same event never credits twice.
provider_order_id, else by exact expected_amount_cents.UNIQUE(bot_id, provider_order_id) on binance_pay_intents — duplicate order ids are rejected..neq('status','paid') guard, so a second poll for the same order is a no-op.tx_hash, else by exact amount to that wallet.UNIQUE(bot_id, tx_hash) on bep20_deposits; the same hash can never credit twice, and cross-bot writes are blocked by RLS.Every bot's keys, wallets, intents and deposits are scoped by bot_id under row-level security — no seller can read or write another seller's rows, even through the API.
Paste the prompt below into Claude Code or Cursor. Replace the last two lines. Ship.
I want to integrate the VaultifyVIP Buyer API into my project.
API base URL: https://vaultifyvip.lovable.app/api/public/v1
Auth: send my key on EVERY request in the header -> X-API-Key: <MY_KEY>
(I get the key from any VaultifyVIP Telegram bot: tap "🔑 API" -> Generate new key.)
Endpoints:
- GET /balance -> { balance, currency: "USD", loyalty_tier }
- GET /products -> { products: [ { id, name, price, stock, in_stock, category, image_url } ] }
- GET /orders -> { orders: [ ... ] }
- GET /orders/{id} -> { order: { ..., codes: [...] } }
- GET /wallet/transactions -> { transactions: [ ... ] }
- POST /purchase -> buy with wallet balance
body: { "product_id": "<uuid from /products>", "quantity": 1 }
header: Idempotency-Key: <any-unique-id> (optional; safe retries, never double-charges)
success -> { success, order_id, codes: [...], balance_remaining }
Rules:
- Send X-API-Key on every request.
- Branch on JSON "code" for errors:
NO_KEY / INVALID_KEY (401), VALIDATION (400), INSUFFICIENT_BALANCE (402),
FORBIDDEN (403), PRODUCT_NOT_FOUND (404), OUT_OF_STOCK (409),
RATE_LIMITED (429 -> wait retry_after_seconds), BOT_OFFLINE (503).
- Rate limit: 60 requests/minute.
- Purchases require wallet balance (top up inside the Telegram bot).
Now please build this for me:
>>> DESCRIBE WHAT YOU WANT, e.g. "a Node.js script that lists products and buys one by id" <<<
Use my API key: >>> PASTE_YOUR_API_KEY_HERE <<<Six endpoints. One key. Every VaultifyVIP shop.
| Method | Path | Description | Scope |
|---|---|---|---|
GET | /balance | Your live wallet balance | balance.read |
GET | /products | Active catalog with live stock | products.read |
POST | /purchase | Buy with wallet · idempotent | purchase.write |
GET | /orders | Recent orders | orders.read |
GET | /orders/{id} | Order details + delivered codes | orders.read |
GET | /wallet/transactions | Wallet ledger | balance.read |
Balance → products → purchase in three calls.
# 1) Balance
curl -s "https://vaultifyvip.lovable.app/api/public/v1/balance" -H "X-API-Key: YOUR_KEY"
# 2) Products
curl -s "https://vaultifyvip.lovable.app/api/public/v1/products" -H "X-API-Key: YOUR_KEY"
# 3) Purchase (idempotent — retry-safe)
curl -s -X POST "https://vaultifyvip.lovable.app/api/public/v1/purchase" \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-001" \
-d '{"product_id":"<uuid from /products>","quantity":1}'Stable machine-readable code field on every error.
| Status | code | Meaning | What to do |
|---|---|---|---|
| 401 | NO_KEY / INVALID_KEY | Missing or revoked key | Regenerate via Telegram bot 🔑 API |
| 400 | VALIDATION | Bad body (quantity 1–10) | Fix the request body |
| 402 | INSUFFICIENT_BALANCE | Wallet too low | Top up in-bot; see required/available |
| 403 | FORBIDDEN | Account suspended or missing scope | Contact seller / regenerate key |
| 404 | PRODUCT_NOT_FOUND | Unknown product / order id | Re-fetch /products |
| 409 | OUT_OF_STOCK | Not enough stock | Lower quantity or retry later |
| 429 | RATE_LIMITED | Over 60 req/min | Back off `retry_after_seconds` |
| 503 | BOT_OFFLINE | Shop paused by seller | Retry later |
Idempotency-Key header on POST /purchase. Retrying with the same key within 24h replays the original result instead of charging twice.