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.

Endpoints

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.

Endpoints

Generate (Single)

Generates proxies for a single set of geo parameters.

Parameters

ParameterTypeDescription
package_idstring (uuid)Optional. Usually omit this — Jetproxy auto-selects one of your active packages with remaining traffic.
preset_namestringName of a saved preset (dashboard). Its geo fields fill in anything you do not pass explicitly.
country_codestring (2)ISO 3166-1 alpha-2 country code (e.g. "US"). Omit for a random worldwide IP.
statestringRegion 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_codenumberNumeric upstream subdivision code (advanced) — the value that applies region targeting.
citystringCity name from GET /geo/cities (e.g. "New York"). City targeting works by name.
ispstringISP id from GET /geo/isps. Per-ISP targeting needs a numeric upstream code (isp_code); for network targeting use asn.
isp_codenumberNumeric upstream ISP code (advanced) — the value that applies ISP targeting.
asnstringAutonomous System Number, e.g. "AS7018" or "7018". Independent filter.
zipstringZIP/postal code. Only applied together with country_code.
session_type"rotating" | "sticky"rotating = fresh IP per request; sticky = hold one IP per proxy string.
session_ttlstringSticky-session lifetime (30s, 15m, 1h). Only applies when session_type is "sticky"; ignored for rotating.
quantitynumber (1–1000)How many proxy strings to return.
formatstring (enum)Output format — one of the three values (see notes below).
protocol"http" | "socks5"Proxy protocol.
rotation_mode0 | 1 | 2Advanced sticky-session rotation behaviour. Only takes effect for sticky sessions; ignored for rotating.

Request Body

json
{
  "country_code": "US",
  "city": "New York",
  "session_type": "sticky",
  "session_ttl": "30s",
  "quantity": 5,
  "protocol": "socks5"
}

Response

json
{
  "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

ParameterTypeDescription
package_idstring (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.
formatstring (enum)Output format applied to all items.
protocol"http" | "socks5"Protocol applied to all items.

Request Body

json
{
  "items": [
    { "country_code": "US", "quantity": 3 },
    { "country_code": "DE", "city": "Berlin", "quantity": 2 }
  ],
  "protocol": "http"
}

Response

json
{
  "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).

Endpoints

List Countries

Returns all available countries.

Response

json
{
  "results": [
    { "name": "United States", "code": "US" },
    { "name": "Germany", "code": "DE" },
    { "name": "Japan", "code": "JP" }
  ]
}

List Regions

Returns regions/states of the specified country.

Parameters

ParameterTypeDescription
country_code*string (2)Country code

Response

json
{
  "results": [
    { "name": "California", "id": "California" },
    { "name": "Texas", "id": "Texas" }
  ]
}

List Cities

Returns cities of the specified region.

Parameters

ParameterTypeDescription
country_code*string (2)Country code
state*stringRegion id from /geo/states

Response

json
{
  "results": [
    { "name": "Los Angeles", "id": "Los Angeles" },
    { "name": "San Francisco", "id": "San Francisco" }
  ]
}

List ISPs

Returns internet service providers for the selected city.

Parameters

ParameterTypeDescription
country_code*string (2)Country code
state*stringRegion id from /geo/states
city*stringCity id from /geo/cities

Response

json
{
  "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": "..." }

HTTPCodeDescription
400bad_requestInvalid request parameters
400malformed_jsonRequest body is not valid JSON
401unauthorizedInvalid or inactive API key
402no_active_packageNo active package with remaining traffic is available for generation
402package_inactivePackage is not active
402package_expiredPackage has expired
402no_traffic_allocationThe selected package has no available traffic allocation
402traffic_exhaustedTraffic exhausted
403forbiddenIP is temporarily blocked, or the account is banned
404not_foundEndpoint, package, or preset not found
413payload_too_largeRequest body exceeds 64 KB
429rate_limitRate limit exceeded
500internal_errorUnexpected server error
503credentials_unavailableProxy credentials are temporarily unavailable
503traffic_check_unavailableTraffic quota could not be verified, so proxies were not issued
503service_unavailableUpstream proxy service is temporarily unavailable