API Key Endpoints
Version 1.0 - Last Updated: 2025-01-20
Complete API reference for Ultimate Proxy.
Authentication
All API endpoints require API key authentication via one of the following methods:
# Header method (recommended)
X-API-Key: up_k_xxxxxxxxxxxx
# Or Bearer token method
Authorization: Bearer up_k_xxxxxxxxxxxxObtaining an API Key
API keys can be created in your Settings → API Keys page. Each key can have specific scopes and optional IP whitelisting.
Available Scopes
| Scope | Description |
|---|---|
dashboard:read | View overview |
workers:read | View workers list and details |
workers:write | Assign workers to profiles |
pools:read | View pools list and details |
pools:write | Create, update, delete pools |
profiles:read | View profiles list and details |
profiles:write | Create, update, delete profiles |
Rate Limits
Rate limits and resource limits vary based on your account tier. Limits are applied per user (shared across all API keys).
| Feature | VIP | Non-VIP |
|---|---|---|
| API Rate Limit | 60 requests/minute | 10 requests/minute |
| API Keys | Up to 5 | 1 |
| Pools per Algorithm | Unlimited | 5 |
| Profiles per Algorithm | Unlimited | 5 |
Response Headers
X-RateLimit-Limit- Maximum requests allowedX-RateLimit-Remaining- Requests remaining in windowX-RateLimit-Reset- Unix timestamp when limit resets
VIP Status
Your VIP status is displayed in the dashboard sidebar. Contact an administrator to upgrade your account to VIP.
Overview
GET/v1/overviewOverview statistics and performance metrics
Workers
GET/v1/workersPaginated list of workers
GET/v1/workers/hashrateAggregated hashrate time series for analytics charts
GET/v1/workers/{id}Single worker details
GET/v1/workers/{id}/hashrateHashrate history for a specific worker with aggregate stats
POST/v1/workers/bulk-assignAssign multiple workers to a profile
Pools
GET/v1/poolsPaginated list of pools
GET/v1/pools/{id}Single pool details (same structure as list item)
POST/v1/poolsCreate a new pool. Connection is tested before creation.
PUT/v1/pools/{id}Update a pool. Connection re-tested if host/port/credentials change.
DELETE/v1/pools/{id}Delete a pool. Fails if pool is used in any profile.
Profiles
GET/v1/profilesPaginated list of profiles
GET/v1/profiles/defaultGet the default profile for an algorithm
POST/v1/profilesCreate a new profile
PUT/v1/profiles/{id}Update a profile
DELETE/v1/profiles/{id}Delete a profile. Cannot delete the default profile.
POST/v1/profiles/{id}/defaultSet a profile as the default for its algorithm
Error Responses
All errors return JSON with an error field:
{
"error": "Error message here"
}HTTP Status Codes
| Status | Meaning |
|---|---|
| 400 | Bad request (validation error, invalid parameters) |
| 401 | Invalid/missing API key |
| 403 | API key lacks required scope, IP not whitelisted, or access denied |
| 404 | Resource not found |
| 409 | Conflict (e.g., deleting default profile, pool in use) |
| 429 | Rate limit exceeded (check Retry-After header) |
| 500 | Internal server error |
Common Field Types
| Field | Type | Description |
|---|---|---|
_id | string | MongoDB ObjectID (24 hex chars) |
timestamp | int64 | Unix timestamp in seconds |
hashrate | int64/float64 | Hashrate in H/s |
*_at | string | ISO 8601 datetime or null |
