REST API Overview
Base URLs
Application REST endpoints are served under:
/api
Examples:
POST /api/loginGET /api/getProxyPage/1POST /api/rotatingProxies
Observability endpoints are served at root (not under /api):
GET /healthzGET /readyzGET /metrics
Authentication headers
Protected API routes use JWT bearer auth:
Authorization: Bearer <token>
Additional headers used by specific endpoints:
X-Observability-Token: optional token for/healthz,/readyz,/metricswhen public observability is disabled.
Data formats
- Most endpoints use JSON request/response bodies.
- Upload endpoints use
multipart/form-data. - Some endpoints return a JSON string payload instead of an object.
Endpoint groups
- Auth and user: register/login/token lifecycle, password/account, user settings
- Proxies: upload, list/filter, detail/stats, delete, export
- Rotating proxies: create/list/delete/manual rotate + instance discovery
- Scraping sources: upload/list/detail/delete/robots checks
- Admin/system: global settings, dashboard info, releases
- GraphQL: dashboard + user settings API
- Observability: health/readiness/Prometheus metrics
Pagination and filtering
Proxy list endpoints support:
- Path page index:
.../getProxyPage/{page} - Optional
pageSize - Optional
search - Optional filter query params:
status=alive|dead- repeated:
protocol,country,type,anonymity,reputation - numeric:
maxTimeout,maxRetries
Scrape-source proxy lists use the same filter model plus page.
Request size limits
The backend enforces body-size limits from environment config:
API_UPLOAD_MAX_BODY_BYTES(multipart uploads)API_JSON_MAX_BODY_BYTES(JSON routes)GRAPHQL_MAX_QUERY_BYTES(GraphQL query string)
Exceeded limits return 413 Request Entity Too Large.
Response status conventions
Common status codes:
200 OK: success201 Created: resource created204 No Content: success with empty body400 Bad Request: invalid payload/params401 Unauthorized: missing/invalid token403 Forbidden: authenticated but missing required permission404 Not Found: resource not found409 Conflict: duplicate/conflicting state413 Request Entity Too Large: request/query too large429 Too Many Requests: auth rate limits exceeded (includesRetry-After)500 Internal Server Error: unexpected server error503 Service Unavailable: transient backend dependency/port capacity limits