Operations
Tunnel and device actions return immediately. Use operations to learn when the requested work finishes.
Operation lifecycle
| Status | Meaning |
|---|---|
queued | The action was accepted. |
claimed | The target device received it. |
running | The device started execution. |
succeeded | The action completed successfully. |
failed | Execution failed; inspect error. |
expired | The action was not completed in time. |
canceled | Authorization changed before completion. |
List operations
GET/operationsoperations:read
Returns operations newest first. Accepts limit from 1 to 100 and an opaque cursor.
Get an operation
GET/operations/{operation_id}operations:read
Poll this endpoint until status is terminal: succeeded, failed, expired or canceled.
Response
{
"data": {
"id": "OPERATION_ID",
"status": "succeeded",
"action": "start",
"device_id": "DEVICE_ID",
"tunnel_id": "TUNNEL_ID",
"result": {"running": true},
"error": null,
"created_at": "2026-09-09T18:00:00+00:00",
"finished_at": "2026-09-09T18:00:03+00:00"
},
"meta": {"request_id":"..."}
}Polling
Start with a short delay and back off between requests. For event-driven automation, subscribe to command.* webhooks instead.