API Documentation
Base URL: https://jetproxy.io/api/v1
Rate limits: 200/min per IP, 100/min per user
Authentication
All API requests must include the x-api-key header with your API key. You can obtain a key in the API section of the dashboard.
Authentication Example
Every request must include the x-api-key header.
Example
curl -X POST -H "x-api-key: gpx_live_YOUR_KEY" -H "Content-Type: application/json" https://jetproxy.io/api/v1/generate -d '{"country_code":"US","quantity":1}'- All keys start with the gpx_live_ prefix
- Repeated rate-limit violations can temporarily block the IP
- Rate limits: 200 req/min per IP, 100 req/min per user
Proxy Generation
Main endpoint for creating proxy strings with geo-targeting, ASN, and sessions.
Generate (Single)
Generates proxies for a single set of geo parameters.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
package_id | string (uuid) | — | Optional. Usually omit this — Jetproxy auto-selects one of your active packages with remaining traffic. |
preset_name | string | — | Name of a saved preset (dashboard). Its geo fields fill in anything you do not pass explicitly. |
country_code | string (2) | — | ISO 3166-1 alpha-2 country code (e.g. "US"). Omit for a random worldwide IP. |
state | string | — | Region id from GET /geo/states. Region-level targeting needs a numeric upstream code (subdivision_code); city-level is the practical granularity — see targeting note. |
subdivision_code | number | — | Numeric upstream subdivision code (advanced) — the value that applies region targeting. |
city | string | — | City name from GET /geo/cities (e.g. "New York"). City targeting works by name. |
isp | string | — | ISP id from GET /geo/isps. Per-ISP targeting needs a numeric upstream code (isp_code); for network targeting use asn. |
isp_code | number | — | Numeric upstream ISP code (advanced) — the value that applies ISP targeting. |
asn | string | — | Autonomous System Number, e.g. "AS7018" or "7018". Independent filter. |
zip | string | — | ZIP/postal code. Only applied together with country_code. |
session_type | "rotating" | "sticky" | "rotating" | rotating = fresh IP per request; sticky = hold one IP per proxy string. |
session_ttl | string | none | Sticky-session lifetime (30s, 15m, 1h). Only applies when session_type is "sticky"; ignored for rotating. |
quantity | number (1–1000) | 10 | How many proxy strings to return. |
format | string (enum) | "login:password@host:port" | Output format — one of the three values (see notes below). |
protocol | "http" | "socks5" | "http" | Proxy protocol. |
rotation_mode | 0 | 1 | 2 | — | Advanced sticky-session rotation behaviour. Only takes effect for sticky sessions; ignored for rotating. |
Request Body
{
"country_code": "US",
"city": "New York",
"session_type": "sticky",
"session_ttl": "30s",
"quantity": 5,
"protocol": "socks5"
}Response
{
"count": 5,
"package_id": "550e8400-e29b-41d4-a716-446655440000",
"remaining_gb": 37.55,
"format": "login:password@host:port",
"protocol": "socks5",
"proxies": [
"user_c_US_city_New-York_s_sA1b2C3d40:pass@proxy.example.com:10000",
"user_c_US_city_New-York_s_sA1b2C3d41:pass@proxy.example.com:10001",
"..."
]
}- All fields are optional — a bare {} (or just {"quantity": N}) returns proxies from a random worldwide IP using your first active package.
- Geo targeting is hierarchical: country_code → state → city → isp. Resolve each level with the /geo endpoints first; asn and zip are independent filters (zip needs country_code).
- Targeting note: country_code + city (by name) + zip + asn are reliable. Region (state) and per-ISP filtering require a numeric upstream code (subdivision_code / isp_code) — the ids from /geo/states and /geo/isps are names and narrow to city level at most.
- Sessions: "rotating" (default) gives a fresh IP per request (session_ttl and rotation_mode are ignored). "sticky" holds one IP per proxy string; session_ttl sets its lifetime.
- Generated proxies draw from your package traffic — bandwidth is metered as you route requests through them, not at generation time. remaining_gb is the balance at the moment of generation.
- Output format — one of: protocol://login:password@host:port | host:port:login:password | login:password@host:port (default).
- Proxies use the gateway host on ports 10000–10999 (assigned round-robin per proxy in the batch).
- package_id is optional; if sent it must belong to the API key owner and be active with remaining traffic. preset_name geo values are used only as a fallback for fields you do not pass explicitly.
Generate (Bulk)
Generates proxies for multiple sets of geo parameters in a single request (up to 10 sets, up to 1000 proxies total).
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
package_id | string (uuid) | — | Optional. Usually omit this: Jetproxy automatically selects one of your active packages with remaining traffic. |
items* | array (1–10) | — | Per-set targeting objects. Each item accepts the same geo/session fields as single generate (country_code, state, subdivision_code, city, isp, isp_code, asn, zip, session_type, session_ttl, quantity, rotation_mode). format, protocol, package_id and preset_name are request-level only and ignored inside an item. |
format | string (enum) | "login:password@host:port" | Output format applied to all items. |
protocol | "http" | "socks5" | "http" | Protocol applied to all items. |
Request Body
{
"items": [
{ "country_code": "US", "quantity": 3 },
{ "country_code": "DE", "city": "Berlin", "quantity": 2 }
],
"protocol": "http"
}Response
{
"total_count": 5,
"package_id": "550e8400-...",
"remaining_gb": 37.55,
"format": "login:password@host:port",
"protocol": "http",
"results": [
{ "country_code": "US", "city": null, "count": 3, "proxies": ["..."] },
{ "country_code": "DE", "city": "Berlin", "count": 2, "proxies": ["..."] }
]
}- Each item controls its own count via quantity (default 10 if omitted); the 1000 total cap counts those defaults.
- format and protocol are set once at the request level and apply to every item — they are ignored if placed inside an item.
- Total proxy count across all items must not exceed 1000; maximum 10 items per request.
- package_id is optional; if sent it must belong to the API key owner and be active with remaining traffic.
Geo Data
Reference endpoints for available countries, regions, cities and ISPs. Resolve top-down — country → state → city → isp — feeding the id from each response into the next lookup. For /generate, country + city (by name) targeting is reliable; region and per-ISP filtering additionally need a numeric upstream code (subdivision_code / isp_code).
List Countries
Returns all available countries.
Response
{
"results": [
{ "name": "United States", "code": "US" },
{ "name": "Germany", "code": "DE" },
{ "name": "Japan", "code": "JP" }
]
}List Regions
Returns regions/states of the specified country.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
country_code* | string (2) | — | Country code |
Response
{
"results": [
{ "name": "California", "id": "California" },
{ "name": "Texas", "id": "Texas" }
]
}List Cities
Returns cities of the specified region.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
country_code* | string (2) | — | Country code |
state* | string | — | Region id from /geo/states |
Response
{
"results": [
{ "name": "Los Angeles", "id": "Los Angeles" },
{ "name": "San Francisco", "id": "San Francisco" }
]
}List ISPs
Returns internet service providers for the selected city.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
country_code* | string (2) | — | Country code |
state* | string | — | Region id from /geo/states |
city* | string | — | City id from /geo/cities |
Response
{
"results": [
{ "name": "AT&T Services", "id": "AT&T Services" },
{ "name": "Comcast Cable", "id": "Comcast Cable" }
]
}Error Codes
All errors are returned in the format { "error": "...", "code": "..." }
| HTTP | Code | Description |
|---|---|---|
| 400 | bad_request | Invalid request parameters |
| 400 | malformed_json | Request body is not valid JSON |
| 401 | unauthorized | Invalid or inactive API key |
| 402 | no_active_package | No active package with remaining traffic is available for generation |
| 402 | package_inactive | Package is not active |
| 402 | package_expired | Package has expired |
| 402 | no_traffic_allocation | The selected package has no available traffic allocation |
| 402 | traffic_exhausted | Traffic exhausted |
| 403 | forbidden | IP is temporarily blocked, or the account is banned |
| 404 | not_found | Endpoint, package, or preset not found |
| 413 | payload_too_large | Request body exceeds 64 KB |
| 429 | rate_limit | Rate limit exceeded |
| 500 | internal_error | Unexpected server error |
| 503 | credentials_unavailable | Proxy credentials are temporarily unavailable |
| 503 | traffic_check_unavailable | Traffic quota could not be verified, so proxies were not issued |
| 503 | service_unavailable | Upstream proxy service is temporarily unavailable |