●api reference · v1
The whole surface, documented.
Every endpoint your dashboard calls is yours. Mint a personal access token, set the Authorization header, and ship. The API is free — you only pay for what you provision.
auth
Authentication
Every request authenticates with a personal access token in the Authorization header. Mint a token in your dashboard at /api-tokens. Each token can be scoped to specific abilities (instances:read, agent:write, waf:*, etc.) or granted full access.
GET
/meGet the authenticated userReturns the user record and the projects they belong to.
responses
- 200User and project list
{ "user": { "id": 42, "email": "[email protected]", "name": "Jane Operator", "wallet_balance": 5240, "onboarded": true }, "projects": [ { "id": 1, "name": "default", "type": "personal" } ] }
example
curl https://api.evorxa.com/api/me \ -H "Authorization: Bearer $EVORXA_TOKEN"
GET
/me/api-tokensList your personal API tokensrequired scope
allresponses
- 200Token list (without the secret)
[ { "id": 7, "name": "CI deployer", "abilities": ["instances:read", "instances:write"], "last_used_at": "2026-05-14T09:12:03.000Z", "created_at": "2026-05-01T18:00:00.000Z" } ]
example
curl https://api.evorxa.com/api/me/api-tokens \ -H "Authorization: Bearer $EVORXA_TOKEN"
POST
/me/api-tokensMint a new API tokenRequest body
name type description namerequiredstringHuman label for this token. abilitiesstring[]Optional. Defaults to ["*"] (full access). Use scoped abilities like "instances:read" to limit the token. responses
- 201Token created. The plaintext token is returned only once — store it now.
{ "id": 8, "name": "CI deployer", "abilities": ["instances:read", "instances:write"], "token": "8|aB9xKp2QrLm...", "created_at": "2026-05-14T19:42:18.000Z" }
example
curl -X POST https://api.evorxa.com/api/me/api-tokens \ -H "Authorization: Bearer $EVORXA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"","abilities":[]}'DELETE
/me/api-tokens/{id}Revoke an API tokenPath parameters
name type description idrequiredintegerToken ID. responses
- 204Revoked.
example
curl -X DELETE https://api.evorxa.com/api/me/api-tokens/{id} \ -H "Authorization: Bearer $EVORXA_TOKEN"
instances
Instances
Provision, list, inspect, power-cycle, reinstall, upgrade, and retire VPS instances. Pricing is debited from the wallet at creation and at upgrade.
GET
/instancesList instancesrequired scope
instances:readQuery parameters
name type description project_idintegerFilter to one project. Defaults to all projects you own. responses
- 200Array of instances.
[ { "id": "01H9...", "name": "api-prod-1", "hostname": "api-prod-1.server.evorxa.net", "plan": "scout-2", "status": "running", "main_ip": "203.0.113.42", "vcpu": 2, "ram": 4, "storage": 60, "billed_till": "2026-06-14T00:00:00.000Z", "ip_addresses": [...] } ]
example
curl https://api.evorxa.com/api/instances \ -H "Authorization: Bearer $EVORXA_TOKEN"
POST
/instancesProvision a new instanceProvisions a server on the Evorxa platform, builds the OS, debits the wallet, and returns the new record. The instance starts in 'provisioning' status and transitions to 'running' once the OS boots.
required scope
instances:writeRequest body
name type description namerequiredstringDisplay name. Used in hostname derivation. hostnamerequiredstringFQDN. Auto-managed reverse DNS. project_idrequiredintegerOwning project. package_idrequiredintegerPlan package ID. See /me/catalog/plans. categoryrequiredstringEither "standard" or "cpu-optimized". os_template_idrequiredintegerFrom /catalog/os-templates/{packageId}. os_namerequiredstringDisplay label for the OS. billing_cyclerequiredstring"monthly", "6months", or "yearly". ssh_key_idsinteger[]Optional. SSH keys to inject at build time. responses
- 201Instance created. Status is 'provisioning'.
- 402Insufficient wallet balance.
- 422Invalid plan, package, or category.
example
curl -X POST https://api.evorxa.com/api/instances \ -H "Authorization: Bearer $EVORXA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"","hostname":"","project_id":0,"package_id":0,"category":"","os_template_id":0,"os_name":"","billing_cycle":"","ssh_key_ids":[]}'GET
/instances/{id}Get an instancerequired scope
instances:readPath parameters
name type description idrequiredstringInstance UUID. responses
- 200Instance with live runtime state attached.
{ "id": "01H9...", "name": "api-prod-1", "status": "running", "vf_state": "complete", "vf_remote_state": { "state": "running", "cpu": 12.4, "memory": { "memtotal": 4194304, "memfree": 1572864 } } } - 404Instance not found or deleted.
example
curl https://api.evorxa.com/api/instances/{id} \ -H "Authorization: Bearer $EVORXA_TOKEN"DELETE
/instances/{id}Delete an instancerequired scope
instances:writePath parameters
name type description idrequiredstringInstance UUID. Request body
name type description moderequiredstring"immediate" (delete now, prorated refund) or "end_of_cycle" (cancel renewal). responses
- 200Deleted, with refund amount in cents.
example
curl -X DELETE https://api.evorxa.com/api/instances/{id} \ -H "Authorization: Bearer $EVORXA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"mode":""}'POST
/instances/{id}/power/{action}Power actionBoot, shutdown, restart, or hard power-off. Local status moves to a transitional state and syncs from the hypervisor.
required scope
instances:writePath parameters
name type description idrequiredstringInstance UUID. actionrequiredstringboot · shutdown · restart · poweroff responses
- 200Command dispatched.
example
curl -X POST https://api.evorxa.com/api/instances/{id}/power/{action} \ -H "Authorization: Bearer $EVORXA_TOKEN"GET
/instances/{id}/metricsCPU / RAM / disk / networkLive snapshot from the hypervisor plus stored history for the requested period.
required scope
analytics:readPath parameters
name type description idrequiredstringInstance UUID. Query parameters
name type description periodstring"5m", "30m", "1h", "6h", "12h", "24h". Default "1h". responses
- 200Current snapshot + history points.
{ "current": { "cpu_percent": 12.4, "memory_used_kb": 2621440, "memory_total_kb": 4194304, "disk_used_bytes": 12884901888, "disk_total_bytes": 64424509440, "network_rx_bytes": 938472847, "network_tx_bytes": 271938247 }, "history": [...] }
example
curl https://api.evorxa.com/api/instances/{id}/metrics \ -H "Authorization: Bearer $EVORXA_TOKEN"POST
/instances/{id}/upgradeUpgrade planProrates the difference and debits the wallet. Optionally reboots immediately.
required scope
instances:writePath parameters
name type description idrequiredstringInstance UUID. Request body
name type description package_idrequiredintegerTarget plan package. rebootrequiredbooleanReboot immediately to apply. responses
- 200Upgraded with prorated charge.
- 402Insufficient wallet balance for the difference.
example
curl -X POST https://api.evorxa.com/api/instances/{id}/upgrade \ -H "Authorization: Bearer $EVORXA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"package_id":0,"reboot":false}'POST
/instances/{id}/reinstallReinstall the OSrequired scope
instances:writePath parameters
name type description idrequiredstringInstance UUID. Request body
name type description os_template_idrequiredintegerFrom /instances/{id}/reinstall-options. os_namerequiredstringDisplay label. responses
- 200Reinstall started. Status moves to 'provisioning'.
example
curl -X POST https://api.evorxa.com/api/instances/{id}/reinstall \ -H "Authorization: Bearer $EVORXA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"os_template_id":0,"os_name":""}'GET
/instances/{id}/reinstall-optionsList OS templates for reinstallrequired scope
instances:readPath parameters
name type description idrequiredstringInstance UUID. responses
- 200OS template groups.
example
curl https://api.evorxa.com/api/instances/{id}/reinstall-options \ -H "Authorization: Bearer $EVORXA_TOKEN"POST
/instances/{id}/reset-passwordGenerate a new root/Administrator passwordrequired scope
instances:writePath parameters
name type description idrequiredstringInstance UUID. responses
- 200New password returned in cleartext (once).
example
curl -X POST https://api.evorxa.com/api/instances/{id}/reset-password \ -H "Authorization: Bearer $EVORXA_TOKEN"POST
/instances/{id}/cancel-deletionUndo a scheduled deletionrequired scope
instances:writePath parameters
name type description idrequiredstringInstance UUID. responses
- 200Deletion cancelled, billing resumed.
example
curl -X POST https://api.evorxa.com/api/instances/{id}/cancel-deletion \ -H "Authorization: Bearer $EVORXA_TOKEN"POST
/instances/{id}/reactivateReactivate a suspended instanceDebits the cycle cost from the wallet, extends billed_till, and unsuspends the instance.
required scope
instances:writePath parameters
name type description idrequiredstringInstance UUID. responses
- 200Reactivated.
- 402Insufficient wallet balance.
example
curl -X POST https://api.evorxa.com/api/instances/{id}/reactivate \ -H "Authorization: Bearer $EVORXA_TOKEN"GET
/instances/{id}/vncVNC console URLrequired scope
instances:readPath parameters
name type description idrequiredstringInstance UUID. responses
- 200wss URL with token + VNC password.
example
curl https://api.evorxa.com/api/instances/{id}/vnc \ -H "Authorization: Bearer $EVORXA_TOKEN"
agent
AI Agent
An LLM-driven operator with SSH into your box and a tool kit (shell, file edit, log tail). Open a chat to an instance and stream the agent's actions back. Credits are debited from your AI Agent credit pool, separate from the wallet.
GET
/agent/creditsGet AI agent credit balancerequired scope
agent:readresponses
- 200Balance in cents, includes trial credit.
{ "balance_cents": 1240, "trial_remaining_cents": 500 }
example
curl https://api.evorxa.com/api/agent/credits \ -H "Authorization: Bearer $EVORXA_TOKEN"
POST
/instances/{id}/agent/chatSend a message to the agentStarts a new conversation or appends to an existing one. The agent may issue tool calls (shell, file edit) which run on your instance via SSH. Each tool call and token is metered.
required scope
agent:writePath parameters
name type description idrequiredstringInstance UUID. Request body
name type description messagerequiredstringUser prompt. conversation_idintegerOptional. Continue an existing conversation. responses
- 200Conversation record with appended assistant message + any tool transcripts.
- 402Out of AI credits.
- 403Instance is suspended.
example
curl -X POST https://api.evorxa.com/api/instances/{id}/agent/chat \ -H "Authorization: Bearer $EVORXA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"message":"","conversation_id":0}'GET
/instances/{id}/agent/conversationsList conversations for an instancerequired scope
agent:readPath parameters
name type description idrequiredstringInstance UUID. responses
- 200Conversations, newest first.
example
curl https://api.evorxa.com/api/instances/{id}/agent/conversations \ -H "Authorization: Bearer $EVORXA_TOKEN"GET
/instances/{id}/agent/conversations/{convId}Get a conversation transcriptrequired scope
agent:readPath parameters
name type description idrequiredstringInstance UUID. convIdrequiredintegerConversation ID. responses
- 200Full message + tool call transcript.
example
curl https://api.evorxa.com/api/instances/{id}/agent/conversations/{convId} \ -H "Authorization: Bearer $EVORXA_TOKEN"DELETE
/instances/{id}/agent/conversations/{convId}Delete a conversationrequired scope
agent:writePath parameters
name type description idrequiredstringInstance UUID. convIdrequiredintegerConversation ID. responses
- 204Deleted.
example
curl -X DELETE https://api.evorxa.com/api/instances/{id}/agent/conversations/{convId} \ -H "Authorization: Bearer $EVORXA_TOKEN"GET
/instances/{id}/agent/telegramGet Telegram link statusrequired scope
agent:readPath parameters
name type description idrequiredstringInstance UUID. responses
- 200Linked Telegram chat ID, or null.
example
curl https://api.evorxa.com/api/instances/{id}/agent/telegram \ -H "Authorization: Bearer $EVORXA_TOKEN"POST
/instances/{id}/agent/telegramLink a Telegram chat to the agentrequired scope
agent:writePath parameters
name type description idrequiredstringInstance UUID. Request body
name type description telegram_chat_idrequiredstringFrom the /start reply. responses
- 200Linked.
example
curl -X POST https://api.evorxa.com/api/instances/{id}/agent/telegram \ -H "Authorization: Bearer $EVORXA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"telegram_chat_id":""}'
shield
Shield · Firewall & Visibility
Per-IP firewall rules, RDNS, bandwidth caps, and ingress visibility (top IPs, top ASNs, country breakdown, port mix, PPS). Backed by in-house Shield nodes.
GET
/shield/ipsList protected IPsrequired scope
shield:readresponses
- 200IPs with rule counts, policy summary, current bandwidth.
example
curl https://api.evorxa.com/api/shield/ips \ -H "Authorization: Bearer $EVORXA_TOKEN"
GET
/shield/ips/{id}Get a protected IPrequired scope
shield:readPath parameters
name type description idrequiredintegerIP record ID. responses
- 200Full IP profile: rules, policy, RDNS.
example
curl https://api.evorxa.com/api/shield/ips/{id} \ -H "Authorization: Bearer $EVORXA_TOKEN"POST
/shield/ips/{id}/rulesCreate a firewall rulerequired scope
shield:writePath parameters
name type description idrequiredintegerIP record ID. Request body
name type description actionrequiredstring"allow" or "block". protocolrequiredstring"tcp", "udp", or "any". src_cidrstringSource CIDR. Defaults to 0.0.0.0/0. dst_portintegerDestination port. Null = any. responses
- 201Rule created and pushed to Shield nodes.
example
curl -X POST https://api.evorxa.com/api/shield/ips/{id}/rules \ -H "Authorization: Bearer $EVORXA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"action":"","protocol":"","src_cidr":"","dst_port":0}'PUT
/shield/ips/{id}/rules/{ruleId}Update a firewall rulerequired scope
shield:writePath parameters
name type description idrequiredintegerIP record ID. ruleIdrequiredintegerRule ID. responses
- 200Updated.
example
curl -X PUT https://api.evorxa.com/api/shield/ips/{id}/rules/{ruleId} \ -H "Authorization: Bearer $EVORXA_TOKEN"DELETE
/shield/ips/{id}/rules/{ruleId}Delete a firewall rulerequired scope
shield:writePath parameters
name type description idrequiredintegerIP record ID. ruleIdrequiredintegerRule ID. responses
- 204Deleted.
example
curl -X DELETE https://api.evorxa.com/api/shield/ips/{id}/rules/{ruleId} \ -H "Authorization: Bearer $EVORXA_TOKEN"PUT
/shield/ips/{id}/policyUpdate default policyrequired scope
shield:writePath parameters
name type description idrequiredintegerIP record ID. Request body
name type description default_instring"allow" or "block". default_outstring"allow" or "block". responses
- 200Policy updated.
example
curl -X PUT https://api.evorxa.com/api/shield/ips/{id}/policy \ -H "Authorization: Bearer $EVORXA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"default_in":"","default_out":""}'GET
/shield/ips/{id}/bandwidthBandwidth samplesrequired scope
analytics:readPath parameters
name type description idrequiredintegerIP record ID. responses
- 200Time-series of bps in/out.
example
curl https://api.evorxa.com/api/shield/ips/{id}/bandwidth \ -H "Authorization: Bearer $EVORXA_TOKEN"GET
/shield/ips/{id}/visibility/top-ipsTop source IPsrequired scope
analytics:readPath parameters
name type description idrequiredintegerIP record ID. responses
- 200Ranked list of source IPs by bytes/packets.
example
curl https://api.evorxa.com/api/shield/ips/{id}/visibility/top-ips \ -H "Authorization: Bearer $EVORXA_TOKEN"GET
/shield/ips/{id}/visibility/top-asnsTop source ASNsrequired scope
analytics:readPath parameters
name type description idrequiredintegerIP record ID. responses
- 200Ranked ASN list.
example
curl https://api.evorxa.com/api/shield/ips/{id}/visibility/top-asns \ -H "Authorization: Bearer $EVORXA_TOKEN"GET
/shield/ips/{id}/visibility/countriesCountry breakdownrequired scope
analytics:readPath parameters
name type description idrequiredintegerIP record ID. responses
- 200Country share of incoming traffic.
example
curl https://api.evorxa.com/api/shield/ips/{id}/visibility/countries \ -H "Authorization: Bearer $EVORXA_TOKEN"GET
/shield/ips/{id}/visibility/portsPort distributionrequired scope
analytics:readPath parameters
name type description idrequiredintegerIP record ID. responses
- 200Most-hit destination ports.
example
curl https://api.evorxa.com/api/shield/ips/{id}/visibility/ports \ -H "Authorization: Bearer $EVORXA_TOKEN"GET
/shield/ips/{id}/visibility/ppsPackets per secondrequired scope
analytics:readPath parameters
name type description idrequiredintegerIP record ID. responses
- 200Time-series PPS.
example
curl https://api.evorxa.com/api/shield/ips/{id}/visibility/pps \ -H "Authorization: Bearer $EVORXA_TOKEN"
waf
Web Application Firewall
Front your apps with a managed WAF + DDoS layer. Add hostnames, get TLS issued automatically, toggle rule sets, and roll back at any time.
GET
/shield/wafList WAF applicationsrequired scope
waf:readresponses
- 200Apps with hostnames, firewall state, origin IP.
example
curl https://api.evorxa.com/api/shield/waf \ -H "Authorization: Bearer $EVORXA_TOKEN"
POST
/shield/wafCreate a WAF applicationrequired scope
waf:writeRequest body
name type description namerequiredstringApplication label. origin_iprequiredstringOrigin (instance) IP. origin_portintegerDefaults to 80/443. hostnamerequiredstringPrimary hostname (CNAME this to the issued edge). responses
- 201App created. TLS issuance is queued.
example
curl -X POST https://api.evorxa.com/api/shield/waf \ -H "Authorization: Bearer $EVORXA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"","origin_ip":"","origin_port":0,"hostname":""}'GET
/shield/waf/{id}Get a WAF applicationrequired scope
waf:readPath parameters
name type description idrequiredintegerApp ID. responses
- 200App with hostnames + SSL status.
example
curl https://api.evorxa.com/api/shield/waf/{id} \ -H "Authorization: Bearer $EVORXA_TOKEN"DELETE
/shield/waf/{id}Delete a WAF applicationrequired scope
waf:writePath parameters
name type description idrequiredintegerApp ID. responses
- 204Deleted.
example
curl -X DELETE https://api.evorxa.com/api/shield/waf/{id} \ -H "Authorization: Bearer $EVORXA_TOKEN"POST
/shield/waf/{id}/firewallToggle WAF firewallrequired scope
waf:writePath parameters
name type description idrequiredintegerApp ID. Request body
name type description enabledrequiredbooleanEnable or disable the rule set. responses
- 200State toggled.
example
curl -X POST https://api.evorxa.com/api/shield/waf/{id}/firewall \ -H "Authorization: Bearer $EVORXA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"enabled":false}'POST
/shield/waf/{id}/hostnamesAdd a hostname to a WAF apprequired scope
waf:writePath parameters
name type description idrequiredintegerApp ID. Request body
name type description hostnamerequiredstringHostname to add. SSL will be issued. responses
- 201Hostname added, SSL queued.
example
curl -X POST https://api.evorxa.com/api/shield/waf/{id}/hostnames \ -H "Authorization: Bearer $EVORXA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"hostname":""}'POST
/shield/waf/{id}/hostnames/{hostnameId}/retry-sslRetry SSL issuancerequired scope
waf:writePath parameters
name type description idrequiredintegerApp ID. hostnameIdrequiredintegerHostname ID. responses
- 200Retry queued.
example
curl -X POST https://api.evorxa.com/api/shield/waf/{id}/hostnames/{hostnameId}/retry-ssl \ -H "Authorization: Bearer $EVORXA_TOKEN"DELETE
/shield/waf/{id}/hostnames/{hostnameId}Remove a hostnamerequired scope
waf:writePath parameters
name type description idrequiredintegerApp ID. hostnameIdrequiredintegerHostname ID. responses
- 204Removed.
example
curl -X DELETE https://api.evorxa.com/api/shield/waf/{id}/hostnames/{hostnameId} \ -H "Authorization: Bearer $EVORXA_TOKEN"
wallet
Wallet & Billing
Balance, transactions, and top-ups. Wallet is the money primitive — all paid actions (instance create/upgrade, reactivate) debit from it.
GET
/wallet/balanceGet wallet balancerequired scope
wallet:readresponses
- 200Balance and a fresh exchange rate.
{ "balance_cents": 5240, "balance_usd": 52.40 }
example
curl https://api.evorxa.com/api/wallet/balance \ -H "Authorization: Bearer $EVORXA_TOKEN"
GET
/wallet/transactionsList transactionsrequired scope
wallet:readQuery parameters
name type description typestring"debit", "credit", or both. limitintegerDefault 50, max 200. responses
- 200Paginated transaction ledger.
example
curl https://api.evorxa.com/api/wallet/transactions \ -H "Authorization: Bearer $EVORXA_TOKEN"
catalog
Catalog
What you can buy. Public read-only catalog (no auth) plus an authenticated /me view.
GET
/catalog/plansPublic plans (no auth)responses
- 200Plan categories with per-cycle pricing.
example
curl https://api.evorxa.com/api/catalog/plans \ -H "Authorization: Bearer $EVORXA_TOKEN"
GET
/catalog/regionsPublic regions (no auth)responses
- 200Region codes, names, flags.
example
curl https://api.evorxa.com/api/catalog/regions \ -H "Authorization: Bearer $EVORXA_TOKEN"
GET
/catalog/billing-cyclesPublic billing cycles (no auth)responses
- 200Monthly, 6-month, yearly + their cycle discounts.
example
curl https://api.evorxa.com/api/catalog/billing-cycles \ -H "Authorization: Bearer $EVORXA_TOKEN"
GET
/me/catalog/plansAuthenticated plansresponses
- 200Same shape as public, with personalised pricing applied.
example
curl https://api.evorxa.com/api/me/catalog/plans \ -H "Authorization: Bearer $EVORXA_TOKEN"
GET
/catalog/os-templates/{packageId}OS templates for a packagerequired scope
instances:readPath parameters
name type description packageIdrequiredintegerPlan package ID. responses
- 200OS groups with template variants.
example
curl https://api.evorxa.com/api/catalog/os-templates/{packageId} \ -H "Authorization: Bearer $EVORXA_TOKEN"
ssh-keys
SSH Keys
Public SSH keys that can be injected at instance build time. Stored once, reused everywhere.
GET
/ssh-keysList SSH keysrequired scope
instances:readresponses
- 200Your registered keys.
example
curl https://api.evorxa.com/api/ssh-keys \ -H "Authorization: Bearer $EVORXA_TOKEN"
POST
/ssh-keysAdd an SSH keyrequired scope
instances:writeRequest body
name type description namerequiredstringLabel. public_keyrequiredstringOpenSSH-format public key. responses
- 201Created.
example
curl -X POST https://api.evorxa.com/api/ssh-keys \ -H "Authorization: Bearer $EVORXA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"","public_key":""}'DELETE
/ssh-keys/{id}Delete an SSH keyrequired scope
instances:writePath parameters
name type description idrequiredintegerKey ID. responses
- 204Deleted.
example
curl -X DELETE https://api.evorxa.com/api/ssh-keys/{id} \ -H "Authorization: Bearer $EVORXA_TOKEN"