Skip to content

API Reference

All requests go to the base URL https://api.orquestio.com. An interactive Swagger UI is available at /docs.

Every endpoint except GET /health requires a Bearer token:

Terminal window
Authorization: Bearer <API_KEY>

Unauthenticated requests receive 401 Unauthorized.

StatusMeaning
400State precondition not met (e.g. trying to stop an already-stopped instance)
401Missing or invalid API key
403Direct IP access — use the Cloudflare-fronted URL
404Resource not found
409Conflict — a concurrent operation is already running on this instance
422Validation error in request body
429Rate limit exceeded

Public endpoint. No authentication, no rate limit.

Response 200

{
"status": "healthy",
"checks": {
"api": "ok",
"database": "ok",
"redis": "ok"
}
}

Example

Terminal window
curl https://api.orquestio.com/health

Create a new tenant instance.

AuthRequired
Rate limit10 req/min

Request body

FieldTypeRequiredValidationDefault
instance_idstringyes^[a-z0-9][a-z0-9-]*[a-z0-9]$, 3–63 chars
tenant_idstringyes^[a-z0-9][a-z0-9-]*[a-z0-9]$, 3–63 chars
blueprint_namestringno^[a-zA-Z0-9][a-zA-Z0-9_-]*$, max 63 chars"OpenClaw"
plan_idstringno^[a-z0-9][a-z0-9-]*[a-z0-9]$, max 63 chars"openclaw-basic"

Response 201

Returns the created instance record.

Example

Terminal window
curl -X POST https://api.orquestio.com/instances/create \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instance_id": "acme-prod-01",
"tenant_id": "acme-corp",
"blueprint_name": "OpenClaw",
"plan_id": "openclaw-basic"
}'

Destroy an instance and release all associated resources.

AuthRequired
Rate limit10 req/min

Response 200

{
"instance_id": "acme-prod-01",
"state": "destroying"
}

Example

Terminal window
curl -X DELETE https://api.orquestio.com/instances/acme-prod-01 \
-H "Authorization: Bearer $API_KEY"

Return the full instance record.

AuthRequired
Rate limit60 req/min

Response 200

{
"instance_id": "acme-prod-01",
"tenant_id": "acme-corp",
"blueprint_name": "OpenClaw",
"ec2_id": "i-0abc123def456789",
"ip_address": "54.210.xx.xx",
"state": "running",
"access_url": "https://acme-prod-01.orquestio.com",
"last_health_check": "2026-04-11T12:00:00Z",
"created_at": "2026-04-10T08:30:00Z"
}

Example

Terminal window
curl https://api.orquestio.com/instances/acme-prod-01/status \
-H "Authorization: Bearer $API_KEY"

Proxy a health check to the running instance and return the result.

AuthRequired
Rate limit60 req/min

Example

Terminal window
curl https://api.orquestio.com/instances/acme-prod-01/health \
-H "Authorization: Bearer $API_KEY"

Stop the instance EC2. Requires the instance to be in running state.

AuthRequired
Rate limit20 req/min

Example

Terminal window
curl -X POST https://api.orquestio.com/instances/acme-prod-01/stop \
-H "Authorization: Bearer $API_KEY"

Start a stopped instance. Requires the instance to be in stopped state.

AuthRequired
Rate limit20 req/min

Example

Terminal window
curl -X POST https://api.orquestio.com/instances/acme-prod-01/start \
-H "Authorization: Bearer $API_KEY"

Stop and start the instance. Requires the instance to be in running state.

AuthRequired
Rate limit20 req/min

Example

Terminal window
curl -X POST https://api.orquestio.com/instances/acme-prod-01/restart \
-H "Authorization: Bearer $API_KEY"

Change the EC2 instance type.

AuthRequired
Rate limit10 req/min

Request body

FieldTypeRequired
new_instance_typestringyes

Example

Terminal window
curl -X PUT https://api.orquestio.com/instances/acme-prod-01/resize \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"new_instance_type": "t3.large"}'

Bring your own domain to an instance. The orchestrator provisions a Let’s Encrypt TLS certificate automatically.

POST /instances/{instance_id}/custom-domain

Section titled “POST /instances/{instance_id}/custom-domain”

Attach a custom domain to the instance.

AuthRequired
Rate limit10 req/min

Request body

FieldTypeRequired
domainstringyes

Response 202

The domain attachment is asynchronous. Poll the GET endpoint to track provisioning status.

Example

Terminal window
curl -X POST https://api.orquestio.com/instances/acme-prod-01/custom-domain \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain": "app.acme.com"}'

GET /instances/{instance_id}/custom-domain

Section titled “GET /instances/{instance_id}/custom-domain”

Check the provisioning status of the custom domain.

AuthRequired
Rate limit30 req/min

Example

Terminal window
curl https://api.orquestio.com/instances/acme-prod-01/custom-domain \
-H "Authorization: Bearer $API_KEY"

DELETE /instances/{instance_id}/custom-domain

Section titled “DELETE /instances/{instance_id}/custom-domain”

Remove the custom domain and its TLS certificate.

AuthRequired
Rate limit10 req/min

Response 202

Removal is asynchronous.

Example

Terminal window
curl -X DELETE https://api.orquestio.com/instances/acme-prod-01/custom-domain \
-H "Authorization: Bearer $API_KEY"

Dispatch arbitrary operations to an instance via SSM. Only one task can run per instance at a time — concurrent requests return 409.

Dispatch a task.

AuthRequired
Rate limit10 req/min
Concurrency1 per instance

Request body

FieldTypeRequiredDescription
operation_codestringyesIdentifier for the operation type
script_pathstringyesPath to the script on the instance
script_argsobjectnoArguments passed to the script
timeout_secondsintegernoMax execution time
idempotency_keystringnoPrevents duplicate execution of the same task

Response 202

The task is queued for execution. Use the task endpoints to poll for completion.

Example

Terminal window
curl -X POST https://api.orquestio.com/instances/acme-prod-01/tasks \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"operation_code": "backup_db",
"script_path": "/opt/openclaw/scripts/backup.sh",
"script_args": {"compress": true},
"timeout_seconds": 300,
"idempotency_key": "backup-2026-04-11"
}'

List tasks for an instance. Supports pagination and filtering.

AuthRequired
Rate limit60 req/min

Query parameters

ParamTypeDescription
statusstringFilter by task status
operation_codestringFilter by operation code
limitintegerPage size
offsetintegerPagination offset

Example

Terminal window
curl "https://api.orquestio.com/instances/acme-prod-01/tasks?status=completed&limit=10" \
-H "Authorization: Bearer $API_KEY"

Get details for a single task.

AuthRequired
Rate limit60 req/min

Example

Terminal window
curl https://api.orquestio.com/tasks/task-abc123 \
-H "Authorization: Bearer $API_KEY"