← Back to Dashboard

Proxy Router API

All endpoints on dashboard port (default 8181). Timestamps: ISO 8601 UTC.

Authentication

Most endpoints: Authorization: Bearer <token>
Create tokens on the API Tokens tab. Roles: viewer < admin < owner.
POST/api/loginGet session token

Body

{"username":"admin","password":"secret"}

Response

{"token":"eyJ...","username":"admin","role":"owner"}

Status & Monitoring

GET/api/statusPool health
{"status":"ok","pool_size":142,"scraping":false,"active_connections":3,"total_requests":1500,"proxied_requests":1200,"failed_requests":12,"avg_latency_ms":312.4,"last_scrape":"2025-01-01T12:00:00+00:00","scrape_count":5,"low_pool_threshold":100,"bad_sources_count":2}
GET/api/proxiesFull proxy list
{"pool_size":142,"proxies":[{"host":"1.2.3.4","port":8080,"alive":true,"latency_ms":245.1,"success_count":12,"fail_count":0,"total_bytes":204800}]}
GET/api/eventsRecent event log (last 50)
{"events":[{"ts":"2025-01-01T12:00:00+00:00","level":"info","message":"Scrape complete: 142 live proxies."}]}

Configuration

GET/api/configGet full config
POST/api/configUpdate configowner
FieldTypeDescription
scrape_intervalintSeconds between auto scrapes (default: 3600)
health_intervalintSeconds between health checks (default: 600)
max_fail_countintFailures before proxy eviction (default: 3)
min_pool_sizeintMin pool before emergency scrape (default: 10)
low_pool_thresholdintPool size triggering emergency re-scrape (default: 100)
retry_countintMax proxy retries per request (default: 5)
repopulate_waitintWait seconds on empty pool (default: 60)
max_proxiesintProxy cap per scrape validation (default: 2000)
max_latency_msintMax latency ms, 0=disabled (default: 0)
webhook_urlstringDiscord webhook URL, empty=disabled
validation_urlsarrayURLs used to validate scraped proxies
scrape_sourcesarray|nullCustom sources (null=use built-in 44k list)
proxy_strategystringroundrobin or random
routed_domainsarrayDomains routed through proxies
alert_on_emptyboolWebhook alert when pool empties
alert_on_recoveryboolWebhook alert on pool recovery
GET/api/config/migrationCheck migrationsowner
{"needs_migration":true,"pending":[{"key":"low_pool_threshold","path":"pool","default":100}]}
POST/api/config/migrateApply migrationsowner
{"ok":true,"applied":[{"key":"low_pool_threshold","path":"pool","default":100}]}

Scraping

POST/api/scrapeTrigger immediate scrapeadmin

No request body needed.

{"ok":true,"message":"Scrape started."}
// already running: {"ok":false,"message":"Scrape already running."}
POST/api/webhook/testSend test webhookowner
{"ok":true}

Users — owner role required

GET/api/usersList users
POST/api/usersCreate user
{"username":"alice","password":"secret123","role":"admin"}
DELETE/api/users/{uid}Delete user
POST/api/users/{uid}/passwordChange password
{"password":"new-secure-pass"}

API Tokens

GET/api/tokensList tokens (owners see all)
POST/api/tokensCreate token (shown once)
// Body: {"label":"My Bot"}
// Response: {"token":"pr_...","label":"My Bot","created_at":"2025-01-01T12:00:00+00:00"}
DELETE/api/tokens/{tid}Revoke token

Setup

GET/api/setup-scriptNode setup scriptowner

Proxy Router — self-hosted