Reseller API
Buy proxies, manage orders, and check your account - all over REST. Keys are per-reseller and rate limited at 1000 req/hour.
https://catproxies.com/api/v1/publicAuthentication
API Key Format
API keys are prefixed with cp_ followed by 64 hexadecimal characters.
cp_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2Using Your API Key
Include your API key in the Authorization header using the Bearer scheme:
curl -X GET https://catproxies.com/api/v1/public/account \
-H "Authorization: Bearer cp_your_api_key_here"Rate Limits
1000 requests per hour per API key, reset at the top of each hour.
Mobile Targeting endpoints have a separate shared bucket: 60 requests per 10 minutes across all 4 mobile targeting sub-endpoints per API key. Cache responses where possible.
Check your current rate limit usage via the /account endpoint:
{
"rateLimits": {
"requestsPerHour": 1000,
"requestsUsed": 47,
"requestsRemaining": 953,
"resetAt": "2025-11-29T21:00:00.000Z"
}
}Rotating Mobile - targeting endpoints
Need all countries, regions, cities, and ISPs at once? Download the full offline snapshot instead of hitting these endpoints repeatedly.
ISP Proxies - Quick Guide
ISP proxies use per-IP pricing. The resellerPrice in /store is the price per single IP. Your total = resellerPrice × quantity.
Complete ISP workflow
# 1. List ISP packages - note resellerPrice (per IP), minQty, maxQty, locations[]
GET /api/v1/public/store?proxyType=Isp
# 2. Buy 5 IPs in the US (countryId from locations[].id)
POST /api/v1/public/order
{ "packageId": "...", "ispData": { "quantity": 5, "countryId": 1 } }
# Charged: resellerPrice × 5
# 3. Get credentials
GET /api/v1/public/order/{orderId}
# 4. Check extend cost (resellerPrice × 5 for another 30 days)
GET /api/v1/public/order/{orderId}/extendOptions
# 5. Extend - packageId is optional for ISP
POST /api/v1/public/order/{orderId}/extend
{}
# Charged: resellerPrice × 5 again| Field | Notes |
|---|---|
ispData.quantity | Defaults to 1 if omitted. Must be ≥ minQty and ≤ maxQty from the store product. |
ispData.countryId | Defaults to the first location if omitted. Use locations[].id from the store product. |
Extend packageId | Optional for ISP - the API resolves the package from the order automatically. Pass {} as the body. |
extendType | "days" for ISP (adds one full period). "bandwidth" for Residential/Mobile. |
Extend cost | resellerPrice × order.package_ips (same quantity as the original purchase). |
Errors
| Status Code | Description |
|---|---|
200 | Success - Request completed successfully |
400 | Bad Request - Invalid parameters |
401 | Unauthorized - Invalid or missing API key |
403 | Forbidden - Not a reseller account or access denied |
404 | Not Found - Resource doesn't exist |
429 | Too Many Requests - Rate limit exceeded |
500 | Internal Server Error - Something went wrong |
Error Response Format
{
"type": "error",
"message": "Insufficient balance. Required: $2.50, Available: $1.00",
"status": 400
}Ready to Get Started?
Create your first API key and start integrating CatProxies into your application today.
