HydraCore
API by router

Instance ops

GET
/v1/instances/fleet/runtime-rollouts/{rollout_id}/timeline

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

rollout_id*Rollout Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response
completed_at?string|null
created_at*Created At
rollout_id*Rollout Id
scope*Scope
status*Status
timeline*array<>
total_duration_seconds?number|null
total_targets*Total Targets
Example Request
curl -X GET 'https://example.com/v1/instances/fleet/runtime-rollouts/497f6eca-6276-4993-bfeb-53cbbbba6f08/timeline'
Example Response
{  "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}

Fleet runtime rollout

POST
/v1/instances/fleet/runtime/rollout

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Query Parameters

override_window?Override Window

Emergency override: bypass maintenance window. Requires tenant-wide admin flag.

Defaultfalse

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response
enqueued*Enqueued
message*Message
skipped*Skipped
tasks*array<>
total*Total
Example Request
curl -X POST 'https://example.com/v1/instances/fleet/runtime/rollout'
Example Response
{  "enqueued": 0,  "message": "string",  "skipped": 0,  "tasks": [    {}  ],  "total": 0}
GET
/v1/instances/fleet/runtime/rollouts

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Query Parameters

limit?Limit
Range1 <= value <= 100
Default20
offset?Offset
Range0 <= value
Default0

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response
[index: integer]?
Example Request
curl -X GET 'https://example.com/v1/instances/fleet/runtime/rollouts'
Example Response
[  {    "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  }]
GET
/v1/instances/fleet/runtime/rollouts/{rollout_id}

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

rollout_id*Rollout Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response
rollout*
targets*array<>
Example Request
curl -X GET 'https://example.com/v1/instances/fleet/runtime/rollouts/497f6eca-6276-4993-bfeb-53cbbbba6f08'
Example Response
{  "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"    }  ]}
POST
/v1/instances/fleet/runtime/rollouts/{rollout_id}/cancel

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

rollout_id*Rollout Id
Formatuuid

Query Parameters

force?Force

Hard-stop: also terminate in-progress tasks via SIGTERM

Defaultfalse

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

response?unknownapplication/json
Example Request
curl -X POST 'https://example.com/v1/instances/fleet/runtime/rollouts/497f6eca-6276-4993-bfeb-53cbbbba6f08/cancel'
Example Response
null
POST
/v1/instances/fleet/runtime/rollouts/{rollout_id}/pause

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

rollout_id*Rollout Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

response?unknownapplication/json
Example Request
curl -X POST 'https://example.com/v1/instances/fleet/runtime/rollouts/497f6eca-6276-4993-bfeb-53cbbbba6f08/pause'
Example Response
null
POST
/v1/instances/fleet/runtime/rollouts/{rollout_id}/resume

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

rollout_id*Rollout Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

response?unknownapplication/json
Example Request
curl -X POST 'https://example.com/v1/instances/fleet/runtime/rollouts/497f6eca-6276-4993-bfeb-53cbbbba6f08/resume'
Example Response
null
POST
/v1/instances/fleet/runtime/rollouts/{rollout_id}/targets/{target_id}/retry

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

rollout_id*Rollout Id
Formatuuid
target_id*Target Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

response?unknownapplication/json
Example Request
curl -X POST 'https://example.com/v1/instances/fleet/runtime/rollouts/497f6eca-6276-4993-bfeb-53cbbbba6f08/targets/497f6eca-6276-4993-bfeb-53cbbbba6f08/retry'
Example Response
null
GET
/v1/instances/fleet/updates/policy

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response
maintenance_window_end_hour_utc?integer|null
maintenance_window_start_hour_utc?integer|null
max_parallel_rollouts?Max Parallel Rollouts
Default2
mcp_servers_default?Mcp Servers Default
Default"notify"
runtime_default?Runtime Default
Default"notify"
skills_default?Skills Default
Default"notify"
Example Request
curl -X GET 'https://example.com/v1/instances/fleet/updates/policy'
Example Response
{  "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"}
PATCH
/v1/instances/fleet/updates/policy

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Header Parameters

X-Api-Key?string|null

Request Body

application/json
  1. body
maintenance_window_end_hour_utc?|null
maintenance_window_start_hour_utc?|null
max_parallel_rollouts?|null
mcp_servers_default?|null
runtime_default?|null
skills_default?|null

Response Body

Successful Response

application/json
  1. response
maintenance_window_end_hour_utc?integer|null
maintenance_window_start_hour_utc?integer|null
max_parallel_rollouts?Max Parallel Rollouts
Default2
mcp_servers_default?Mcp Servers Default
Default"notify"
runtime_default?Runtime Default
Default"notify"
skills_default?Skills Default
Default"notify"
Example Request
curl -X PATCH 'https://example.com/v1/instances/fleet/updates/policy' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "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"}

List Actions

GET
/v1/instances/{instance_id}/actions

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

application/json
  1. response
actions*array<>
total*Total
Example Request
curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/actions'
Example Response
{  "actions": [    {}  ],  "total": 0}

Clear Circuit Breakers

POST
/v1/instances/{instance_id}/actions/clear-circuit-breakers

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
action*Action
action_id*Action Id
detail?
duration_ms?integer|null
instance_id*Instance Id
message*Message
status*Status
Example Request
curl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/actions/clear-circuit-breakers'
Example Response
{  "action": "string",  "action_id": "string",  "detail": {},  "duration_ms": 0,  "instance_id": "string",  "message": "string",  "status": "string"}

Power Cycle

POST
/v1/instances/{instance_id}/actions/power-cycle

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
action*Action
action_id*Action Id
detail?
duration_ms?integer|null
instance_id*Instance Id
message*Message
status*Status
Example Request
curl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/actions/power-cycle'
Example Response
{  "action": "string",  "action_id": "string",  "detail": {},  "duration_ms": 0,  "instance_id": "string",  "message": "string",  "status": "string"}

Reboot Vps

POST
/v1/instances/{instance_id}/actions/reboot

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
action*Action
action_id*Action Id
detail?
duration_ms?integer|null
instance_id*Instance Id
message*Message
status*Status
Example Request
curl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/actions/reboot'
Example Response
{  "action": "string",  "action_id": "string",  "detail": {},  "duration_ms": 0,  "instance_id": "string",  "message": "string",  "status": "string"}

Run Diagnostics

POST
/v1/instances/{instance_id}/actions/run-diagnostics

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
cached?Cached
Defaultfalse
checked_at?string|null
instance_id*Instance Id
status*Status
subsystems?|null
uptime_seconds?integer|null
Example Request
curl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/actions/run-diagnostics'
Example Response
{  "cached": false,  "checked_at": "string",  "instance_id": "string",  "status": "string",  "subsystems": {},  "uptime_seconds": 0}

Get Deep Health

GET
/v1/instances/{instance_id}/health/deep

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Query Parameters

force?Force
Defaultfalse

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response
cached?Cached
Defaultfalse
checked_at?string|null
instance_id*Instance Id
status*Status
subsystems?|null
uptime_seconds?integer|null
Example Request
curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/health/deep'
Example Response
{  "cached": false,  "checked_at": "string",  "instance_id": "string",  "status": "string",  "subsystems": {},  "uptime_seconds": 0}
GET
/v1/instances/{instance_id}/memory

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Query Parameters

conversation_id?string|null
customer_id?string|null
limit?Limit
Range1 <= value <= 200
Default100

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response
count*Count
instance_id*Instance Id
memories*array<>
status?
Example Request
curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/memory'
Example Response
{  "count": 0,  "instance_id": "string",  "memories": [    {}  ],  "status": {}}
POST
/v1/instances/{instance_id}/memory

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Request Body

application/json
  1. body

Response Body

Successful Response

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

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Header Parameters

X-Api-Key?string|null

Request Body

application/json
  1. body

Response Body

Successful Response

application/json
  1. response
deleted*Deleted
instance_id*Instance Id
status*Status
Example Request
curl -X DELETE 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/memory' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "deleted": 0,  "instance_id": "string",  "status": "string"}
GET
/v1/instances/{instance_id}/runtime/audit

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Query Parameters

limit?Limit
Range1 <= value <= 500
Default100
offset?Offset
Range0 <= value
Default0

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response
[index: integer]?
Example Request
curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/runtime/audit'
Example Response
[  {    "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"  }]
GET
/v1/instances/{instance_id}/runtime/audit/summary

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
by_source?
denied_events*Denied Events
error_events*Error Events
success_events*Success Events
total_events*Total Events
Example Request
curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/runtime/audit/summary'
Example Response
{  "by_source": {},  "denied_events": 0,  "error_events": 0,  "success_events": 0,  "total_events": 0}

Redeploy agent runtime

POST
/v1/instances/{instance_id}/runtime/redeploy

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
message*Message
status*Status
task_id*Task Id
Example Request
curl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/runtime/redeploy'
Example Response
{  "instance_id": "string",  "message": "string",  "status": "string",  "task_id": "string"}
GET
/v1/instances/{instance_id}/runtime/rollouts

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Path Parameters

instance_id*Instance Id
Formatuuid

Query Parameters

limit?Limit
Range1 <= value <= 100
Default20
offset?Offset
Range0 <= value
Default0

Header Parameters

X-Api-Key?string|null

Response Body

Successful Response

application/json
  1. response
[index: integer]?
Example Request
curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/runtime/rollouts'
Example Response
[  {    "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"  }]
POST
/v1/instances/{instance_id}/updates/apply-all

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
message*Message
runtime_task_id?string|null
skills_applied?array<string>
Example Request
curl -X POST 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/updates/apply-all'
Example Response
{  "instance_id": "string",  "message": "string",  "runtime_task_id": "string",  "skills_applied": [    "string"  ]}
GET
/v1/instances/{instance_id}/updates/available

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
mcp_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 Available
Default0
update_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|null
Example Request
curl -X GET 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/updates/available'
Example Response
{  "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"}
PATCH
/v1/instances/{instance_id}/updates/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

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?|null
runtime?|null
skills?|null

Response Body

Successful Response

application/json
  1. 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
Default"notify"
mcp_servers_auto_supported?Mcp Servers Auto Supported
Defaultfalse
mcp_servers_override?string|null
mcp_servers_source?Mcp Servers Source
Default"platform_default"
runtime?Runtime
Default"notify"
runtime_auto_supported?Runtime Auto Supported
Defaulttrue
runtime_override?string|null
runtime_source?Runtime Source
Default"platform_default"
skills?Skills
Default"notify"
skills_auto_supported?Skills Auto Supported
Defaultfalse
skills_override?string|null
skills_source?Skills Source
Default"platform_default"
Example Request
curl -X PATCH 'https://example.com/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/updates/policy' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "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"}