Instance ops
HTTPBearerAuthorizationBearer <token>rollout_id*Rollout IduuidX-Api-Key?string|nullSuccessful Response
application/json- response
completed_at?string|nullcreated_at*Created Atrollout_id*Rollout Idscope*Scopestatus*Statustimeline*array<>total_duration_seconds?number|nulltotal_targets*Total Targetscurl -X GET 'https://example.com/v1/instances/fleet/runtime-rollouts/497f6eca-6276-4993-bfeb-53cbbbba6f08/timeline'{ "completed_at": "string", "created_at": "string", "rollout_id": "string", "scope": "string", "status": "string", "timeline": [ { "completed_at": "string", "created_at": "string", "duration_seconds": 0, "error_message": "string", "instance_hostname": "string", "instance_id": "string", "last_result_status": "string", "scheduled_countdown_seconds": 0, "started_at": "string", "status": "string", "target_id": "string" } ], "total_duration_seconds": 0, "total_targets": 0}HTTPBearerAuthorizationBearer <token>override_window?Override WindowEmergency override: bypass maintenance window. Requires tenant-wide admin flag.
falseX-Api-Key?string|nullSuccessful Response
application/json- response
enqueued*Enqueuedmessage*Messageskipped*Skippedtasks*array<>total*Totalcurl -X POST 'https://example.com/v1/instances/fleet/runtime/rollout'{ "enqueued": 0, "message": "string", "skipped": 0, "tasks": [ {} ], "total": 0}HTTPBearerAuthorizationBearer <token>limit?Limit1 <= value <= 10020offset?Offset0 <= value0X-Api-Key?string|nullSuccessful Response
application/json- response
[index: integer]?curl -X GET 'https://example.com/v1/instances/fleet/runtime/rollouts'[ { "completed_at": "string", "created_at": "string", "failed_targets": 0, "id": "string", "in_progress_targets": 0, "initiated_from_ip": "string", "metadata_json": {}, "queued_targets": 0, "scope": "string", "status": "string", "succeeded_targets": 0, "total_targets": 0, "uncertain_targets": 0 }]HTTPBearerAuthorizationBearer <token>rollout_id*Rollout IduuidX-Api-Key?string|nullSuccessful Response
application/json- response
rollout*targets*array<>curl -X GET 'https://example.com/v1/instances/fleet/runtime/rollouts/497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "rollout": { "completed_at": "string", "created_at": "string", "failed_targets": 0, "id": "string", "in_progress_targets": 0, "initiated_from_ip": "string", "metadata_json": {}, "queued_targets": 0, "scope": "string", "status": "string", "succeeded_targets": 0, "total_targets": 0, "uncertain_targets": 0 }, "targets": [ { "bundle_hash": "string", "celery_task_id": "string", "completed_at": "string", "created_at": "string", "detail_json": {}, "error_message": "string", "id": "string", "instance_id": "string", "last_result_status": "string", "rollout_id": "string", "rollout_scope": "string", "rollout_status": "string", "scheduled_countdown_seconds": 0, "started_at": "string", "status": "string" } ]}HTTPBearerAuthorizationBearer <token>rollout_id*Rollout Iduuidforce?ForceHard-stop: also terminate in-progress tasks via SIGTERM
falseX-Api-Key?string|nullSuccessful Response
response?unknownapplication/jsoncurl -X POST 'https://example.com/v1/instances/fleet/runtime/rollouts/497f6eca-6276-4993-bfeb-53cbbbba6f08/cancel'nullHTTPBearerAuthorizationBearer <token>rollout_id*Rollout IduuidX-Api-Key?string|nullSuccessful Response
response?unknownapplication/jsoncurl -X POST 'https://example.com/v1/instances/fleet/runtime/rollouts/497f6eca-6276-4993-bfeb-53cbbbba6f08/pause'nullHTTPBearerAuthorizationBearer <token>rollout_id*Rollout IduuidX-Api-Key?string|nullSuccessful Response
response?unknownapplication/jsoncurl -X POST 'https://example.com/v1/instances/fleet/runtime/rollouts/497f6eca-6276-4993-bfeb-53cbbbba6f08/resume'nullHTTPBearerAuthorizationBearer <token>rollout_id*Rollout Iduuidtarget_id*Target IduuidX-Api-Key?string|nullSuccessful Response
response?unknownapplication/jsoncurl -X POST 'https://example.com/v1/instances/fleet/runtime/rollouts/497f6eca-6276-4993-bfeb-53cbbbba6f08/targets/497f6eca-6276-4993-bfeb-53cbbbba6f08/retry'nullHTTPBearerAuthorizationBearer <token>X-Api-Key?string|nullSuccessful Response
application/json- response
maintenance_window_end_hour_utc?integer|nullmaintenance_window_start_hour_utc?integer|nullmax_parallel_rollouts?Max Parallel Rollouts2mcp_servers_default?Mcp Servers Default"notify"runtime_default?Runtime Default"notify"skills_default?Skills Default"notify"curl -X GET 'https://example.com/v1/instances/fleet/updates/policy'{ "maintenance_window_end_hour_utc": 0, "maintenance_window_start_hour_utc": 0, "max_parallel_rollouts": 2, "mcp_servers_default": "notify", "runtime_default": "notify", "skills_default": "notify"}HTTPBearerAuthorizationBearer <token>X-Api-Key?string|nullapplication/json- body
maintenance_window_end_hour_utc?|nullmaintenance_window_start_hour_utc?|nullmax_parallel_rollouts?|nullmcp_servers_default?|nullruntime_default?|nullskills_default?|nullSuccessful Response
application/json- response
maintenance_window_end_hour_utc?integer|nullmaintenance_window_start_hour_utc?integer|nullmax_parallel_rollouts?Max Parallel Rollouts2mcp_servers_default?Mcp Servers Default"notify"runtime_default?Runtime Default"notify"skills_default?Skills Default"notify"curl -X PATCH 'https://example.com/v1/instances/fleet/updates/policy' \ -H 'Content-Type: application/json' \ -d '{}'{ "maintenance_window_end_hour_utc": 0, "maintenance_window_start_hour_utc": 0, "max_parallel_rollouts": 2, "mcp_servers_default": "notify", "runtime_default": "notify", "skills_default": "notify"}HTTPBearerAuthorizationBearer <token>instance_id*Instance Iduuidlimit?Limit1 <= value <= 10020X-Api-Key?string|nullSuccessful Response
application/json- response
actions*array<>total*Totalcurl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/actions'{ "actions": [ {} ], "total": 0}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullSuccessful Response
application/json- response
action*Actionaction_id*Action Iddetail?duration_ms?integer|nullinstance_id*Instance Idmessage*Messagestatus*Statuscurl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/actions/clear-circuit-breakers'{ "action": "string", "action_id": "string", "detail": {}, "duration_ms": 0, "instance_id": "string", "message": "string", "status": "string"}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullSuccessful Response
application/json- response
action*Actionaction_id*Action Iddetail?duration_ms?integer|nullinstance_id*Instance Idmessage*Messagestatus*Statuscurl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/actions/power-cycle'{ "action": "string", "action_id": "string", "detail": {}, "duration_ms": 0, "instance_id": "string", "message": "string", "status": "string"}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullSuccessful Response
application/json- response
action*Actionaction_id*Action Iddetail?duration_ms?integer|nullinstance_id*Instance Idmessage*Messagestatus*Statuscurl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/actions/reboot'{ "action": "string", "action_id": "string", "detail": {}, "duration_ms": 0, "instance_id": "string", "message": "string", "status": "string"}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullSuccessful Response
application/json- response
cached?Cachedfalsechecked_at?string|nullinstance_id*Instance Idstatus*Statussubsystems?|nulluptime_seconds?integer|nullcurl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/actions/run-diagnostics'{ "cached": false, "checked_at": "string", "instance_id": "string", "status": "string", "subsystems": {}, "uptime_seconds": 0}HTTPBearerAuthorizationBearer <token>instance_id*Instance Iduuidforce?ForcefalseX-Api-Key?string|nullSuccessful Response
application/json- response
cached?Cachedfalsechecked_at?string|nullinstance_id*Instance Idstatus*Statussubsystems?|nulluptime_seconds?integer|nullcurl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/health/deep'{ "cached": false, "checked_at": "string", "instance_id": "string", "status": "string", "subsystems": {}, "uptime_seconds": 0}HTTPBearerAuthorizationBearer <token>instance_id*Instance Iduuidconversation_id?string|nullcustomer_id?string|nulllimit?Limit1 <= value <= 200100X-Api-Key?string|nullSuccessful Response
application/json- response
count*Countinstance_id*Instance Idmemories*array<>status?curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/memory'{ "count": 0, "instance_id": "string", "memories": [ {} ], "status": {}}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullapplication/json- body
Successful Response
application/json- response
instance_id*Instance Idmemory?status*Statuscurl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/memory' \ -H 'Content-Type: application/json' \ -d '{}'{ "instance_id": "string", "memory": {}, "status": "string"}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullapplication/json- body
Successful Response
application/json- response
deleted*Deletedinstance_id*Instance Idstatus*Statuscurl -X DELETE 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/memory' \ -H 'Content-Type: application/json' \ -d '{}'{ "deleted": 0, "instance_id": "string", "status": "string"}HTTPBearerAuthorizationBearer <token>instance_id*Instance Iduuidlimit?Limit1 <= value <= 500100offset?Offset0 <= value0X-Api-Key?string|nullSuccessful Response
application/json- response
[index: integer]?curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/runtime/audit'[ { "conversation_id": "string", "event_id": "string", "event_ts": "string", "event_type": "string", "id": "string", "ingested_at": "string", "metadata_json": {}, "outcome": "string", "request_id": "string", "role": "string", "server_slug": "string", "source": "string", "tool_name": "string" }]HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullSuccessful Response
application/json- response
by_source?denied_events*Denied Eventserror_events*Error Eventssuccess_events*Success Eventstotal_events*Total Eventscurl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/runtime/audit/summary'{ "by_source": {}, "denied_events": 0, "error_events": 0, "success_events": 0, "total_events": 0}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullSuccessful Response
application/json- response
instance_id*Instance Idmessage*Messagestatus*Statustask_id*Task Idcurl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/runtime/redeploy'{ "instance_id": "string", "message": "string", "status": "string", "task_id": "string"}HTTPBearerAuthorizationBearer <token>instance_id*Instance Iduuidlimit?Limit1 <= value <= 10020offset?Offset0 <= value0X-Api-Key?string|nullSuccessful Response
application/json- response
[index: integer]?curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/runtime/rollouts'[ { "bundle_hash": "string", "celery_task_id": "string", "completed_at": "string", "created_at": "string", "detail_json": {}, "error_message": "string", "id": "string", "instance_id": "string", "last_result_status": "string", "rollout_id": "string", "rollout_scope": "string", "rollout_status": "string", "scheduled_countdown_seconds": 0, "started_at": "string", "status": "string" }]HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullSuccessful Response
application/json- response
instance_id*Instance Idmessage*Messageruntime_task_id?string|nullskills_applied?array<string>curl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/updates/apply-all'{ "instance_id": "string", "message": "string", "runtime_task_id": "string", "skills_applied": [ "string" ]}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullSuccessful Response
application/json- response
instance_id*Instance Idmcp_servers?array<>runtime*A single component that has an available update.
Version field semantics vary by component_type:
-
skill / mcp_server: current_version and available_version contain human-readable semver strings (e.g. "1.0.0", "1.1.0") resolved from MarketplaceSkillVersion.version.
-
runtime: current_version and available_version contain 12-character truncated SHA-256 hash prefixes (e.g. "a1b2c3d4e5f6") since the runtime bundle has no semver — same convention as Docker/Git short IDs.
Neither field ever contains raw database UUIDs.
When update_reason is "content_changed", has_update is true but current_version may equal available_version (same version, different content). The dashboard should use update_reason to explain this.
"These go to eleven." — Nigel Tufnel, This Is Spinal Tap
skills?array<>total_available?Total Available0update_policy?Per-component update policy.
auto_supported indicates which channels have a working auto-update path. The frontend should disable the 'auto' option for channels where auto_supported is False.
versions_reported_at?string|nullcurl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/updates/available'{ "instance_id": "string", "mcp_servers": [ { "available_version": "string", "changelog": "string", "component_type": "string", "current_version": "string", "has_update": false, "slug": "string", "update_reason": "string" } ], "runtime": { "available_version": "string", "changelog": "string", "component_type": "string", "current_version": "string", "has_update": false, "slug": "string", "update_reason": "string" }, "skills": [ { "available_version": "string", "changelog": "string", "component_type": "string", "current_version": "string", "has_update": false, "slug": "string", "update_reason": "string" } ], "total_available": 0, "update_policy": { "mcp_servers": "notify", "mcp_servers_auto_supported": false, "mcp_servers_override": "string", "mcp_servers_source": "platform_default", "runtime": "notify", "runtime_auto_supported": true, "runtime_override": "string", "runtime_source": "platform_default", "skills": "notify", "skills_auto_supported": false, "skills_override": "string", "skills_source": "platform_default" }, "versions_reported_at": "string"}HTTPBearerAuthorizationBearer <token>instance_id*Instance IduuidX-Api-Key?string|nullapplication/json- body
Set update policy per component type.
Note: 'auto' is only valid for runtime. Skills and MCP servers do not yet have an auto-update path — setting 'auto' on them will be rejected until the marketplace version system is built.
mcp_servers?|nullruntime?|nullskills?|nullSuccessful Response
application/json- response
Per-component update policy.
auto_supported indicates which channels have a working auto-update path. The frontend should disable the 'auto' option for channels where auto_supported is False.
mcp_servers?Mcp Servers"notify"mcp_servers_auto_supported?Mcp Servers Auto Supportedfalsemcp_servers_override?string|nullmcp_servers_source?Mcp Servers Source"platform_default"runtime?Runtime"notify"runtime_auto_supported?Runtime Auto Supportedtrueruntime_override?string|nullruntime_source?Runtime Source"platform_default"skills?Skills"notify"skills_auto_supported?Skills Auto Supportedfalseskills_override?string|nullskills_source?Skills Source"platform_default"curl -X PATCH 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/updates/policy' \ -H 'Content-Type: application/json' \ -d '{}'{ "mcp_servers": "notify", "mcp_servers_auto_supported": false, "mcp_servers_override": "string", "mcp_servers_source": "platform_default", "runtime": "notify", "runtime_auto_supported": true, "runtime_override": "string", "runtime_source": "platform_default", "skills": "notify", "skills_auto_supported": false, "skills_override": "string", "skills_source": "platform_default"}