# ProxyDeen Reseller API Documentation Canonical page: https://proxydeen.com/docs This is a plain-markdown mirror of the ProxyDeen Reseller API documentation, written so that AI crawlers, LLMs, and search engines can read and understand the full API without executing JavaScript. ## About ProxyDeen ProxyDeen (https://proxydeen.com) is a Nigerian proxy marketplace selling residential proxy CDKEYs and bandwidth/IP-based proxy products with instant automated delivery. The Reseller API lets approved partners place orders programmatically against their reseller balance, retrieve credentials, and receive real-time delivery webhooks. ## Base URL ``` https://aacxceacytmuxwyyrurh.supabase.co/functions/v1/reseller-api ``` All requests are HTTPS only. Request and response bodies are JSON (`Content-Type: application/json`). ## Authentication Every request must include your reseller API key in the `Authorization` header as a Bearer token: ``` Authorization: Bearer pd_live_xxxxxxxxxxxxxxxx ``` Keys are generated and revoked from the Reseller dashboard at https://proxydeen.com/dashboard (Reseller → API Keys). Keep keys secret — never embed them in client-side code. Rotate immediately if leaked. Rate limit: **60 requests per minute per key**. Exceeding the limit returns HTTP `429`. ## Products | Product ID | Type | Fulfillment | |---|---|---| | `9proxy` | CD Key | Instant | | `711proxy` | CD Key | Instant | | `clipproxy` | CD Key | Instant | | `novproxy` | CD Key | Instant | | `rotating_residential` | Bandwidth (GB) | Manual, minutes | | `rotating_mobile` | Bandwidth (GB) | Manual, minutes | | `static_residential` | IP | Manual, minutes | | `datacenter_ipv4` | IP | Manual, minutes | | `datacenter_ipv6` | IP | Manual, minutes | | `mobile_lte` | IP | Manual, minutes | CD Key products return credentials in the response body immediately. Bandwidth and IP products return an order in `pending` status; poll `GET /orders/:id` or subscribe to webhooks to receive the delivered payload. ## Endpoints ### POST /orders — Create an order Creates and fulfills an order. The reseller balance is debited atomically when the order is accepted. If a product is out of stock the order is auto-refunded and the response returns HTTP `503`. Request body: ```json { "product": "9proxy", "quantity": 10, "period": "1m", "external_ref": "your-order-id-123" } ``` `period` is required for bandwidth and IP products (`1w`, `1m`, `3m`, etc.) and ignored for CD keys. `external_ref` is optional and echoed back on the order. Instant response (CD key product): ```json { "order_id": "ord_01HXYZ...", "status": "delivered", "product": "9proxy", "quantity": 10, "amount_charged": 2000, "currency": "NGN", "delivered_at": "2026-06-29T10:15:00Z", "payload": { "keys": ["KEY-AAAA-...", "KEY-BBBB-..."] } } ``` ### GET /balance — Account status Returns reseller balance, business name, and account status (`active`, `paused`, `banned`). ```json { "balance": 154200, "currency": "NGN", "business_name": "Acme Proxies", "status": "active" } ``` ### GET /orders — List orders Paginated order history. Credential payloads are omitted from the list view to keep responses small; fetch a single order to see delivered keys/credentials. Query parameters: `page` (default 1), `per_page` (default 25, max 100), `status`, `product`, `from`, `to`. ### GET /orders/:id — Single order Returns the full order including the delivered payload. Use this to poll bandwidth/IP orders after they leave `pending`. ```json { "order_id": "ord_01HXYZ...", "status": "delivered", "product": "static_residential", "quantity": 5, "period": "1m", "amount_charged": 30000, "delivered_at": "2026-06-29T10:18:00Z", "payload": { "ips": ["1.2.3.4:8080:user:pass", "..."] } } ``` ## Webhooks Subscribe one or more HTTPS endpoints from the Reseller dashboard (Reseller → Webhooks). ProxyDeen POSTs JSON events for these types: - `order.delivered` — order fulfilled, payload included - `order.refunded` — order refunded (out of stock or manual refund) - `order.failed` — order could not be fulfilled ### Signature verification Every delivery includes an `X-ProxyDeen-Signature` header containing an HMAC-SHA256 hex digest of the raw request body, signed with your webhook secret. Verify before trusting the payload: ```js import crypto from "node:crypto"; const expected = crypto.createHmac("sha256", WEBHOOK_SECRET).update(rawBody).digest("hex"); const ok = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signatureHeader)); ``` Failed deliveries are retried with exponential backoff for up to 24 hours. Respond `2xx` within 10 seconds to acknowledge. ## Errors | Code | Meaning | |---|---| | 400 | Malformed request body or invalid parameters | | 401 | Missing, invalid, or revoked API key | | 402 | Insufficient reseller balance | | 403 | Account paused or banned — contact support | | 404 | Order or resource not found | | 429 | Rate limit exceeded (60 req/min) | | 503 | Product out of stock — order auto-refunded | Error response shape: ```json { "error": { "code": "insufficient_balance", "message": "Reseller balance is too low for this order." } } ``` ## Managing API Keys Generate, label, and revoke API keys from https://proxydeen.com/dashboard (Reseller → API Keys). Keys are shown in full only once at creation time — store them in a secret manager. ## Support - Telegram (24/7): https://t.me/proxydeen - Reseller dashboard: https://proxydeen.com/dashboard ## Related markdown mirrors - https://proxydeen.com/seo/home.md - https://proxydeen.com/seo/login.md - https://proxydeen.com/seo/signup.md - https://proxydeen.com/llms.txt