HydraCore
API by router

Instances

List Instances

GET
/v1/instances

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response
instances*array<>
Example Request
curl -X GET 'https://example.com/v1/instances'
Example Response
{  "instances": [    {      "agent_name": "string",      "created_at": "2019-08-24T14:15:22Z",      "customer_email": "string",      "hostname": "string",      "id": "string",      "ip_address": "string",      "preset_id": "string",      "product_tier_name": "string",      "provider": "string",      "region_id": "string",      "runtime_type": "expressclaw",      "status": "string",      "workload_type": "agent"    }  ]}

Create Instance

POST
/v1/instances

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Header Parameters

X-Api-Key?string|null

Request Body

application/json
  1. body
agent_name?|null
customer_id?|null
idempotency_key?|null
manifest_id?|null
preset_id?Preset Id
Default"personal_assistant"
recipe_id?|null
region_id*Region Id
tier_id*Tier Id
user_display_name?|null
website_template_slug?|null
workflow_slugs?array<string>|null

Response Body

Successful Response

application/json
  1. response
idempotency_key*Idempotency Key
instance_id?string|null
message*Message
task_id*Task Id
Example Request
curl -X POST 'https://example.com/v1/instances' \  -H 'Content-Type: application/json' \  -d '{  "region_id": "string",  "tier_id": "string"}'
Example Response
{  "idempotency_key": "string",  "instance_id": "string",  "message": "string",  "task_id": "string"}

Rotate Agent Key

POST
/v1/instances/admin/{instance_id}/rotate-key

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response
instance_id*Instance Id
status*Status
Example Request
curl -X POST 'https://example.com/v1/instances/admin/497f6eca-6276-4993-bfeb-53cbbbba6f08/rotate-key'
Example Response
{  "instance_id": "string",  "status": "string"}

Poll By Idempotency Key

GET
/v1/instances/by-key/{idempotency_key}

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

idempotency_key*Idempotency Key

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response

Lightweight response for polling deploy status by idempotency key.

Note: ip_address deliberately omitted — no need to expose VPS IP during the deploy flow. Operators can see it on the instance detail page. "Loose lips sink ships." — WWII poster (and provision poll responses)

bootstrap_seq?integer|null
bootstrap_stage?string|null
error_message?string|null
found*Found
hostname?string|null
instance_id?string|null
logs?array<>|null
provisioning_stage?string|null
status?string|null
Example Request
curl -X GET 'https://example.com/v1/instances/by-key/string'
Example Response
{  "bootstrap_seq": 0,  "bootstrap_stage": "string",  "error_message": "string",  "found": true,  "hostname": "string",  "instance_id": "string",  "logs": [    {}  ],  "provisioning_stage": "string",  "status": "string"}

Cleanup Dead Instances

POST
/v1/instances/cleanup

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response
cleaned*Cleaned
errors*Errors
message*Message
Example Request
curl -X POST 'https://example.com/v1/instances/cleanup'
Example Response
{  "cleaned": 0,  "errors": 0,  "message": "string"}

Get Instance

GET
/v1/instances/{instance_id}

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response
agent_name?string|null
callback_seq?integer|null
callback_stage?string|null
capabilities?
created_at*Created At
Formatdate-time
error_message*string|null
health_status*Health Status
hostname*Hostname
id*Id
ip_address*string|null
preset_id?string|null
provider*Provider
provisioning_stage*string|null
region_id*string|null
runtime_type?Runtime Type
Default"expressclaw"
server_type_plan*string|null
status*Status
updated_at*Updated At
Formatdate-time
vpn_ip*string|null
workload_type?Workload Type
Default"agent"
Example Request
curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08'
Example Response
{  "agent_name": "string",  "callback_seq": 0,  "callback_stage": "string",  "capabilities": {    "property1": true,    "property2": true  },  "created_at": "2019-08-24T14:15:22Z",  "error_message": "string",  "health_status": "string",  "hostname": "string",  "id": "string",  "ip_address": "string",  "preset_id": "string",  "provider": "string",  "provisioning_stage": "string",  "region_id": "string",  "runtime_type": "expressclaw",  "server_type_plan": "string",  "status": "string",  "updated_at": "2019-08-24T14:15:22Z",  "vpn_ip": "string",  "workload_type": "agent"}

Delete Instance

DELETE
/v1/instances/{instance_id}

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response
already_deleted?Already Deleted
Defaultfalse
instance_id*Instance Id
message*Message
status*Status
Example Request
curl -X DELETE 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08'
Example Response
{  "already_deleted": false,  "instance_id": "string",  "message": "string",  "status": "string"}

Proxy Chat

POST
/v1/instances/{instance_id}/chat

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Request Body

application/json
  1. body
conversation_id?|null
message*Message
Length1 <= length <= 8000

Response Body

Successful Response

response?unknownapplication/json
Example Request
curl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/chat' \  -H 'Content-Type: application/json' \  -d '{  "message": "string"}'
Example Response
null

Proxy Get Config

GET
/v1/instances/{instance_id}/config

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

response?unknownapplication/json
Example Request
curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/config'
Example Response
null

Proxy Update Config

POST
/v1/instances/{instance_id}/config

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Request Body

application/json
  1. body
agent_name?string|null
customer_facing_prompt?string|null
model_temperature?|null
recipe_id?string|null
system_prompt?string|null
telegram_bot_token?string|null
workflow_slugs?array<string>|null

Response Body

Successful Response

response?unknownapplication/json
Example Request
curl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/config' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
null
PATCH
/v1/instances/{instance_id}/consent

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Request Body

application/json
  1. body
consent_debug_access*Consent Debug Access

Response Body

Successful Response

application/json
  1. response
consent_debug_access*Consent Debug Access
instance_id*Instance Id
message*Message
Example Request
curl -X PATCH 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/consent' \  -H 'Content-Type: application/json' \  -d '{  "consent_debug_access": true}'
Example Response
{  "consent_debug_access": true,  "instance_id": "string",  "message": "string"}

Proxy Conversations

GET
/v1/instances/{instance_id}/conversations

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Query Parameters

limit?Limit
Range1 <= value <= 100
Default20

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

response?unknownapplication/json
Example Request
curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/conversations'
Example Response
null
GET
/v1/instances/{instance_id}/conversations/{conversation_id}

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid
conversation_id*Conversation Id
Match^[A-Za-z0-9:_-]{1,128}$
Lengthlength <= 128

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

response?unknownapplication/json
Example Request
curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/conversations/string'
Example Response
null

Get Instance Logs

GET
/v1/instances/{instance_id}/logs

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response

Provision logs for an instance.

instance_id*Instance Id
logs*array<>
total*Total
Example Request
curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/logs'
Example Response
{  "instance_id": "string",  "logs": [    {      "created_at": "2019-08-24T14:15:22Z",      "level": "string",      "message": "string",      "seq": 0,      "stage": "string"    }  ],  "total": 0}

Update Model Policy

PATCH
/v1/instances/{instance_id}/model-policy

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Request Body

application/json
  1. body

Update the model policy for an instance.

budget_daily_usd?|null
budget_monthly_usd?|null
embedding_model?string|null
fallbacks?array<string>|null
max_tokens?|null
primary?|null
temperature?|null

Response Body

Successful Response

application/json
  1. response
instance_id*Instance Id
message*Message
model_policy*
Example Request
curl -X PATCH 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/model-policy' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "instance_id": "string",  "message": "string",  "model_policy": {}}

Get Platform Config

GET
/v1/instances/{instance_id}/platform-config

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response

Platform-level config stored in agent_config JSONB.

advanced?
Default{}
channels?
Default{}
instance_id*Instance Id
integrations?array<string>
Default[]
recipe_id?string|null
skills?array<string>
Default[]
workflow_slugs?array<string>
Default[]
Example Request
curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/platform-config'
Example Response
{  "advanced": {},  "channels": {},  "instance_id": "string",  "integrations": [],  "recipe_id": "string",  "skills": [],  "workflow_slugs": []}

Patch Platform Config

PATCH
/v1/instances/{instance_id}/platform-config

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Request Body

application/json
  1. body

Partial update — only provided fields are merged.

advanced?|null
channels?|null
integrations?array<string>|null
recipe_id?string|null
skills?array<string>|null
workflow_slugs?array<string>|null

Response Body

Successful Response

application/json
  1. response

Platform-level config stored in agent_config JSONB.

advanced?
Default{}
channels?
Default{}
instance_id*Instance Id
integrations?array<string>
Default[]
recipe_id?string|null
skills?array<string>
Default[]
workflow_slugs?array<string>
Default[]
Example Request
curl -X PATCH 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/platform-config' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "advanced": {},  "channels": {},  "instance_id": "string",  "integrations": [],  "recipe_id": "string",  "skills": [],  "workflow_slugs": []}

Get Runtime Status

GET
/v1/instances/{instance_id}/runtime

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response

Runtime health and version info from the VPS agent.

Returns useful context in ALL states — not just when running. During provisioning: bootstrap_stage, provision_logs, health_status. When running: live agent data + health context. When unreachable: last known health data so the UI can explain WHY.

"I see dead processes." — Cole Sear, The Sixth Sense (networking edition)

active_connections?Active Connections
Default0
bootstrap_seq?integer|null
bootstrap_stage?string|null
error_code?string|null
error_message?string|null
health_failures?Health Failures
Default0
health_status?string|null
instance_id*Instance Id
last_heartbeat?|null
node_version?string|null
openclaw_version?string|null
provision_logs?array<>|null
provisioning_stage?string|null
skills_loaded?array<string>
Default[]
status*Status
uptime_seconds?integer|null
Example Request
curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/runtime'
Example Response
{  "active_connections": 0,  "bootstrap_seq": 0,  "bootstrap_stage": "string",  "error_code": "string",  "error_message": "string",  "health_failures": 0,  "health_status": "string",  "instance_id": "string",  "last_heartbeat": "2019-08-24T14:15:22Z",  "node_version": "string",  "openclaw_version": "string",  "provision_logs": [    {}  ],  "provisioning_stage": "string",  "skills_loaded": [],  "status": "string",  "uptime_seconds": 0}

Apply Updates

POST
/v1/instances/{instance_id}/updates/apply

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Request Body

application/json
  1. body

Request to apply pending updates to a running instance.

force?Force
Defaultfalse
restart_agent?Restart Agent
Defaultfalse

Response Body

Successful Response

application/json
  1. response
instance_id*Instance Id
message*Message
status*Status
Example Request
curl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/updates/apply' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "instance_id": "string",  "message": "string",  "status": "string"}

Get Instance Usage

GET
/v1/instances/{instance_id}/usage

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Query Parameters

days?Days
Default30

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response

Usage metrics for a single instance.

daily*array<>
hostname*Hostname
instance_id*Instance Id
total_cost_usd*Total Cost Usd
total_requests*Total Requests
total_tokens*Total Tokens
unique_end_users*Unique End Users
Example Request
curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/usage'
Example Response
{  "daily": [    {}  ],  "hostname": "string",  "instance_id": "string",  "total_cost_usd": "string",  "total_requests": 0,  "total_tokens": 0,  "unique_end_users": 0}