Logo

API Documentation

Beta API

This API is currently in beta and is subject to potential changes. Endpoints, request formats, and responses may be modified as we continue to improve the platform. Documentation may not be fully up to date or 100% accurate.

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_xxxxxxxxxxxx

Obtaining 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

ScopeDescription
dashboard:readView overview
workers:readView workers list and details
workers:writeAssign workers to profiles
pools:readView pools list and details
pools:writeCreate, update, delete pools
profiles:readView profiles list and details
profiles:writeCreate, 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 Limit60 requests/minute10 requests/minute
API KeysUp to 51
Pools per AlgorithmUnlimited5
Profiles per AlgorithmUnlimited5

Response Headers

  • X-RateLimit-Limit - Maximum requests allowed
  • X-RateLimit-Remaining - Requests remaining in window
  • X-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/overviewReturns worker and pool statistics for the authenticated user.

Workers

GET/v1/workersReturns a paginated list of workers with profile names.
GET/v1/workers/{id}Returns a single worker's details.
GET/v1/workers/{id}/hashrateReturns hashrate data points over time for a specific worker.
POST/v1/workers/bulk-assignAssigns multiple workers to the specified profile.
GET/v1/workers/hashrateReturns hashrate data points over time for all workers of the authenticated user.

Pools

GET/v1/poolsReturns a paginated list of the user's mining pools.
POST/v1/poolsCreates a new mining pool. Tests the connection before saving. May auto-create a default profile.
GET/v1/pools/{id}Returns a single pool's details.
PUT/v1/pools/{id}Updates pool settings. Re-tests the connection if host/port/credentials change.
DELETE/v1/pools/{id}Deletes a pool if it is not in use by any profile.
POST/v1/pools/testTests connectivity, subscription, and authorization for a pool. Resets health on success.

Profiles

GET/v1/profilesReturns a paginated list of profiles for the authenticated user.
POST/v1/profilesCreates a new mining profile with pool configurations. First profile for an algorithm becomes the default.
PUT/v1/profiles/{id}Updates profile name, algorithm, and pool configurations.
DELETE/v1/profiles/{id}Deletes a profile and migrates its workers to the default profile. Cannot delete the default profile.
POST/v1/profiles/{id}/defaultSets the specified profile as the default for its algorithm.
GET/v1/profiles/defaultReturns the default profile for the specified algorithm.

Error Responses

All errors return JSON with an error field:

{
  "error": "Error message here"
}

HTTP Status Codes

StatusMeaning
400Bad request (validation error, invalid parameters)
401Invalid/missing API key
403API key lacks required scope, IP not whitelisted, or access denied
404Resource not found
409Conflict (e.g., deleting default profile, pool in use)
429Rate limit exceeded (check Retry-After header)
500Internal server error

Common Field Types

FieldTypeDescription
_idstringMongoDB ObjectID (24 hex chars)
timestampint64Unix timestamp in seconds
hashrateint64/float64Hashrate in H/s
*_atstringISO 8601 datetime or null