Loading...
REST API for eligible SP5 customers. Register, verify your email, accept the Terms and AUP, activate instantly, create a key, and add balance. Purchases use your SP5 account balance. Learn about the program or activate from your dashboard.
https://sp5proxies.com/api/v1/resellerAll requests must use HTTPS and include your API key:
Authorization: Bearer sp5_live_example_keySCOPE_NOT_GRANTED./statusAPI status check (authenticated). (scope: —)/accountYour reseller account summary. (scope: balance:read)/balanceYour current SP5 balance. (scope: balance:read)/usage30-day API usage and spend summary. (scope: balance:read)/packagesList purchasable packages with your prices. (scope: packages:read)/packages/{packageId}/countriesAvailable countries for a package. (scope: locations:read)/packages/{packageId}/countries/{countryId}/citiesAvailable cities in a country. (scope: locations:read)/packages/{packageId}/cities/{cityId}/providersAvailable service providers in a city. (scope: locations:read)/availabilityLive location availability overview. (scope: locations:read)/proxiesList your proxies. (scope: proxies:read)/proxies/{id}Get one proxy by its SP5 ID. (scope: proxies:read)/proxies/proxies/{id}/renewal-optionsRenewal options and prices for a proxy. (scope: proxies:renew)/proxies/{id}/renew/proxies/{id}/proxies/{id}/reportReport a problem with a proxy. (scope: proxies:report)/proxies/{id}/allowed-ipsList allowed IPs (IP-auth / Injection packages). (scope: proxies:read)/proxies/{id}/allowed-ipsAdd an allowed IP. (scope: proxies:update)/proxies/{id}/allowed-ips/{ip}Remove an allowed IP. (scope: proxies:update)Billable requests (purchase, renew) require a unique Idempotency-Key header (8–200 characters, e.g. a UUID per order).
IDEMPOTENCY_KEY_REUSED.Read endpoints: 120 requests/minute per key.
Billable endpoints (purchase/renew/update): 10 requests/minute per key.
Repeated authentication failures temporarily block the source IP. On 429, back off and retry after a delay.
Errors return JSON: { "code": "...", "message": "..." } with an appropriate HTTP status.
INSUFFICIENT_SP5_BALANCEYour SP5 balance is too low for this purchase. Top up from your dashboard.PACKAGE_NOT_AVAILABLEThe package does not exist or is not currently purchasable.LOCATION_NOT_AVAILABLEThe requested country/city/provider is not currently available.PROVIDER_TEMPORARILY_UNAVAILABLEUpstream provisioning is temporarily unavailable. Retry later; you were not charged.PROXY_NOT_FOUNDNo proxy with this ID exists on your account.INVALID_ALLOWED_IPThe IP address is invalid or not permitted for this package.RATE_LIMIT_EXCEEDEDToo many requests. Respect the rate limits and retry with backoff.API_KEY_REVOKEDThis API key was revoked or disabled. Generate a new key from your dashboard.EMAIL_VERIFICATION_REQUIREDVerify your SP5 account email before activation.ACCOUNT_SUSPENDEDYour SP5 account is suspended.TERMS_ACCEPTANCE_REQUIREDAccept the current Terms and AUP before activation.SECURITY_REVIEW_REQUIREDReseller access requires a security review.ORDER_ALREADY_PROCESSEDThis Idempotency-Key was already used; the original result is returned or still processing.IDEMPOTENCY_KEY_REQUIREDBillable requests require a unique Idempotency-Key header.SCOPE_NOT_GRANTEDYour API key does not have the scope required for this endpoint.INTERNAL_PROVIDER_ERRORAn internal error occurred. Contact support with your request time and endpoint.# List packages
curl -s https://sp5proxies.com/api/v1/reseller/packages \
-H "Authorization: Bearer sp5_live_example_key"
# Purchase a proxy (idempotent)
curl -s -X POST https://sp5proxies.com/api/v1/reseller/proxies \
-H "Authorization: Bearer sp5_live_example_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-2026-0001" \
-d '{"packageId": "PACKAGE_ID", "country": "United States", "protocol": "SOCKS5"}'const BASE = 'https://sp5proxies.com/api/v1/reseller';
const KEY = process.env.SP5_API_KEY; // never hardcode your key
async function api(path, options = {}) {
const res = await fetch(BASE + path, {
...options,
headers: {
Authorization: `Bearer ${KEY}`,
'Content-Type': 'application/json',
...options.headers,
},
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.message}`);
return data;
}
const { balance } = await api('/balance');
const purchase = await api('/proxies', {
method: 'POST',
headers: { 'Idempotency-Key': crypto.randomUUID() },
body: JSON.stringify({ packageId: 'PACKAGE_ID', protocol: 'SOCKS5' }),
});import os, uuid, requests
BASE = "https://sp5proxies.com/api/v1/reseller"
HEADERS = {"Authorization": f"Bearer {os.environ['SP5_API_KEY']}"}
balance = requests.get(f"{BASE}/balance", headers=HEADERS).json()
purchase = requests.post(
f"{BASE}/proxies",
headers={**HEADERS, "Idempotency-Key": str(uuid.uuid4())},
json={"packageId": "PACKAGE_ID", "protocol": "SOCKS5"},
).json()<?php
$base = 'https://sp5proxies.com/api/v1/reseller';
$key = getenv('SP5_API_KEY'); // never hardcode your key
function sp5(string $method, string $path, ?array $body = null, array $extra = []) {
global $base, $key;
$ch = curl_init($base . $path);
$headers = array_merge(["Authorization: Bearer $key", 'Content-Type: application/json'], $extra);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POSTFIELDS => $body ? json_encode($body) : null,
]);
return json_decode(curl_exec($ch), true);
}
$balance = sp5('GET', '/balance');
$purchase = sp5('POST', '/proxies',
['packageId' => 'PACKAGE_ID', 'protocol' => 'SOCKS5'],
['Idempotency-Key: ' . bin2hex(random_bytes(16))]);Stuck? Open a ticket from your dashboard with the endpoint, timestamp, and error code. Never share your API secret — support will never ask for it.