Instances
HTTPBearerAuthorizationBearer <token>X-Api-Key?string|nullSuccessful Response
application/json- response
instances*array<>curl -X GET 'https://example.com/v1/instances'{ "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" } ]}HTTPBearerAuthorizationBearer <token>X-Api-Key?string|nullapplication/json- body
agent_name?|nullcustomer_id?|nullidempotency_key?|nullmanifest_id?|nullpreset_id?Preset Id"personal_assistant"recipe_id?|nullregion_id*Region Idtier_id*Tier Iduser_display_name?|nullwebsite_template_slug?|nullworkflow_slugs?array<string>|nullSuccessful Response
application/json- response
idempotency_key*Idempotency Keyinstance_id?string|nullmessage*Messagetask_id*Task Idcurl -X POST 'https://example.com/v1/instances' \ -H 'Content-Type: application/json' \ -d '{ "region_id": "string", "tier_id": "string"}'{ "idempotency_key": "string", "instance_id": "string", "message": "string", "task_id": "string"}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullSuccessful Response
application/json- response
instance_id*Instance Idstatus*Statuscurl -X POST 'https://example.com/v1/instances/admin/497f6eca-6276-4993-bfeb-53cbbbba6f08/rotate-key'{ "instance_id": "string", "status": "string"}HTTPBearerAuthorizationBearer <token>idempotency_key*Idempotency KeyX-Api-Key?string|nullSuccessful Response
application/json- 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|nullbootstrap_stage?string|nullerror_message?string|nullfound*Foundhostname?string|nullinstance_id?string|nulllogs?array<>|nullprovisioning_stage?string|nullstatus?string|nullcurl -X GET 'https://example.com/v1/instances/by-key/string'{ "bootstrap_seq": 0, "bootstrap_stage": "string", "error_message": "string", "found": true, "hostname": "string", "instance_id": "string", "logs": [ {} ], "provisioning_stage": "string", "status": "string"}HTTPBearerAuthorizationBearer <token>X-Api-Key?string|nullSuccessful Response
application/json- response
cleaned*Cleanederrors*Errorsmessage*Messagecurl -X POST 'https://example.com/v1/instances/cleanup'{ "cleaned": 0, "errors": 0, "message": "string"}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullSuccessful Response
application/json- response
agent_name?string|nullcallback_seq?integer|nullcallback_stage?string|nullcapabilities?created_at*Created Atdate-timeerror_message*string|nullhealth_status*Health Statushostname*Hostnameid*Idip_address*string|nullpreset_id?string|nullprovider*Providerprovisioning_stage*string|nullregion_id*string|nullruntime_type?Runtime Type"expressclaw"server_type_plan*string|nullstatus*Statusupdated_at*Updated Atdate-timevpn_ip*string|nullworkload_type?Workload Type"agent"curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "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"}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullSuccessful Response
application/json- response
already_deleted?Already Deletedfalseinstance_id*Instance Idmessage*Messagestatus*Statuscurl -X DELETE 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "already_deleted": false, "instance_id": "string", "message": "string", "status": "string"}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullapplication/json- body
conversation_id?|nullmessage*Message1 <= length <= 8000Successful Response
response?unknownapplication/jsoncurl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/chat' \ -H 'Content-Type: application/json' \ -d '{ "message": "string"}'nullHTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullSuccessful Response
response?unknownapplication/jsoncurl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/config'nullHTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullapplication/json- body
agent_name?string|nullcustomer_facing_prompt?string|nullmodel_temperature?|nullrecipe_id?string|nullsystem_prompt?string|nulltelegram_bot_token?string|nullworkflow_slugs?array<string>|nullSuccessful Response
response?unknownapplication/jsoncurl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/config' \ -H 'Content-Type: application/json' \ -d '{}'nullHTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullapplication/json- body
consent_debug_access*Consent Debug AccessSuccessful Response
application/json- response
consent_debug_access*Consent Debug Accessinstance_id*Instance Idmessage*Messagecurl -X PATCH 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/consent' \ -H 'Content-Type: application/json' \ -d '{ "consent_debug_access": true}'{ "consent_debug_access": true, "instance_id": "string", "message": "string"}HTTPBearerAuthorizationBearer <token>instance_id*Instance Iduuidlimit?Limit1 <= value <= 10020X-Api-Key?string|nullSuccessful Response
response?unknownapplication/jsoncurl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/conversations'nullHTTPBearerAuthorizationBearer <token>instance_id*Instance Iduuidconversation_id*Conversation Id^[A-Za-z0-9:_-]{1,128}$length <= 128X-Api-Key?string|nullSuccessful Response
response?unknownapplication/jsoncurl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/conversations/string'nullHTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullSuccessful Response
application/json- response
Provision logs for an instance.
instance_id*Instance Idlogs*array<>total*Totalcurl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/logs'{ "instance_id": "string", "logs": [ { "created_at": "2019-08-24T14:15:22Z", "level": "string", "message": "string", "seq": 0, "stage": "string" } ], "total": 0}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullapplication/json- body
Update the model policy for an instance.
budget_daily_usd?|nullbudget_monthly_usd?|nullembedding_model?string|nullfallbacks?array<string>|nullmax_tokens?|nullprimary?|nulltemperature?|nullSuccessful Response
application/json- response
instance_id*Instance Idmessage*Messagemodel_policy*curl -X PATCH 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/model-policy' \ -H 'Content-Type: application/json' \ -d '{}'{ "instance_id": "string", "message": "string", "model_policy": {}}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullSuccessful Response
application/json- response
Platform-level config stored in agent_config JSONB.
advanced?{}channels?{}instance_id*Instance Idintegrations?array<string>[]recipe_id?string|nullskills?array<string>[]workflow_slugs?array<string>[]curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/platform-config'{ "advanced": {}, "channels": {}, "instance_id": "string", "integrations": [], "recipe_id": "string", "skills": [], "workflow_slugs": []}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullapplication/json- body
Partial update — only provided fields are merged.
advanced?|nullchannels?|nullintegrations?array<string>|nullrecipe_id?string|nullskills?array<string>|nullworkflow_slugs?array<string>|nullSuccessful Response
application/json- response
Platform-level config stored in agent_config JSONB.
advanced?{}channels?{}instance_id*Instance Idintegrations?array<string>[]recipe_id?string|nullskills?array<string>[]workflow_slugs?array<string>[]curl -X PATCH 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/platform-config' \ -H 'Content-Type: application/json' \ -d '{}'{ "advanced": {}, "channels": {}, "instance_id": "string", "integrations": [], "recipe_id": "string", "skills": [], "workflow_slugs": []}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullSuccessful Response
application/json- 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 Connections0bootstrap_seq?integer|nullbootstrap_stage?string|nullerror_code?string|nullerror_message?string|nullhealth_failures?Health Failures0health_status?string|nullinstance_id*Instance Idlast_heartbeat?|nullnode_version?string|nullopenclaw_version?string|nullprovision_logs?array<>|nullprovisioning_stage?string|nullskills_loaded?array<string>[]status*Statusuptime_seconds?integer|nullcurl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/runtime'{ "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}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullapplication/json- body
Request to apply pending updates to a running instance.
force?Forcefalserestart_agent?Restart AgentfalseSuccessful Response
application/json- response
instance_id*Instance Idmessage*Messagestatus*Statuscurl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/updates/apply' \ -H 'Content-Type: application/json' \ -d '{}'{ "instance_id": "string", "message": "string", "status": "string"}HTTPBearerAuthorizationBearer <token>instance_id*Instance Iduuiddays?Days30X-Api-Key?string|nullSuccessful Response
application/json- response
Usage metrics for a single instance.
daily*array<>hostname*Hostnameinstance_id*Instance Idtotal_cost_usd*Total Cost Usdtotal_requests*Total Requeststotal_tokens*Total Tokensunique_end_users*Unique End Userscurl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/usage'{ "daily": [ {} ], "hostname": "string", "instance_id": "string", "total_cost_usd": "string", "total_requests": 0, "total_tokens": 0, "unique_end_users": 0}