Computers
Create cloud computers, run commands on them, move files, and read usage.
| Operation | Request |
|---|---|
| Get computer usage | GET /v1/computer-usage |
| List computers | GET /v1/computers |
| Create computer | POST /v1/computers |
| Get computer capabilities | GET /v1/computers/capabilities |
| Remove computer named capabilities | DELETE /v1/computers/capabilities |
| Get computer | GET /v1/computers/{id} |
| Delete computer | DELETE /v1/computers/{id} |
| Create computer command | POST /v1/computers/{id}/commands |
| Get computer command | GET /v1/computers/{id}/commands/{command} |
| Cancel computer command | POST /v1/computers/{id}/commands/{command}/cancel |
| Attach computer command | GET /v1/computers/{id}/commands/{command}/output |
| Prepare computer credential reference | POST /v1/computers/{id}/credential-references |
| Get computer credential reference | GET /v1/computers/{id}/credential-references/{reference} |
| Revoke computer credential reference | DELETE /v1/computers/{id}/credential-references/{reference} |
| Read a workspace file | GET /v1/computers/{id}/files |
| Upload a workspace file | PUT /v1/computers/{id}/files |
| Stop computer | POST /v1/computers/{id}/stop |
| Wake computer | POST /v1/computers/{id}/wake |
Get computer usage
GET /v1/computer-usage · getComputerUsage
Read usage for the authenticated account with cloud access. Uses the same account permissions as computer reads. Account owner and payer headers are ignored; job credentials are refused. Accepted requests and observed results are separate events. Missing provider seconds remain unknown. Allocation allowances are operator limits, not customer charges; retail pricing is not enabled.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
after | query | integer | No | The previous response's after value. Events remain scoped to this account. |
limit | query | integer | No |
Response
200 — Account computer usage result.
Type: AppComputerUsage
| Field | Type | Required | Description |
|---|---|---|---|
schema | always "openagents.computers.usage.v1" | Yes | |
events | array of AppComputerUsageEvent | Yes | |
events[].sequence | integer | Yes | |
events[].computer | string | Yes | |
events[].kind | one of "accepted", "observed", "meter", "resolution" | Yes | |
events[].size | string | Yes | |
events[].shape | object or null | Yes | |
events[].shape.vcpus | integer | Yes | |
events[].shape.memory_mib | integer | Yes | |
events[].shape.min_disk_gib | integer or null | Yes | |
events[].boot | integer or null | Yes | |
events[].phase | string | Yes | |
events[].desired | one of "running", "stopped", "deleted" | Yes | |
events[].observed_ms | integer | Yes | |
events[].provider_seconds | integer or null | Yes | |
events[].measurement | one of "unknown", "reported" | Yes | |
events[].running | boolean or null | Yes | |
events[].storage | object | Yes | |
events[].storage.resource_deleted | boolean or null | Yes | |
events[].storage.bytes | integer or null | Yes | |
events[].storage.checkpoint_records | integer or null | Yes | |
after | integer | Yes | |
allocation_allowance | object | Yes | |
allocation_allowance.held_cpu_ms | integer or null | Yes | |
allocation_allowance.settled_cpu_ms | integer | Yes | |
allocation_allowance.unknown_allowances | integer | Yes | |
allocation_allowance.unresolved_allowances | integer | Yes | |
customer_charge | null | Yes | |
pricing | always "not_enabled" | Yes |
Errors
| Status | Meaning | Body |
|---|---|---|
| 400, 401, 403, 503 | Account computer usage result. | AppAccountError |
Example
curl 'https://api.openagents.com/v1/computer-usage' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN"
List computers
GET /v1/computers · listComputers
Account-owned cloud computers. Accepts live app sessions/sign-in keys or account-bound API keys with accounts scope. Cloud operations remain restricted to accounts with cloud access. Acceptance is not readiness or completion; poll the computer. Internal owner headers and service tokens are not public credentials.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
kind | query | one of "cloud" | No | Select only cloud computers. Without this, keep the existing list of your own computers and add your cloud computers when available. |
limit | query | integer | No | Cloud page size. |
after | query | string | No | The previous next_cursor; scoped to the same account. |
Response
200 — The requested computer result.
Type: AppComputerList
| Field | Type | Required | Description |
|---|---|---|---|
computers | array of AppComputer or AppEnrolledComputer | Yes | |
next_cursor | string or null | Yes |
Errors
| Status | Meaning | Body |
|---|---|---|
| 400, 401, 403, 404, 409, 413, 422, 429, 503 | The requested computer result. | AppAccountError |
Example
curl 'https://api.openagents.com/v1/computers' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN"
In the Rust SDK
Create computer
POST /v1/computers · createComputer
Account-owned cloud computers. Accepts live app sessions/sign-in keys or account-bound API keys with accounts scope. Cloud operations remain restricted to accounts with cloud access. Acceptance is not readiness or completion; poll the computer. Internal owner headers and service tokens are not public credentials.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Idempotency-Key | header | string | No | One logical request key; required in the header or body and reused across retries. Conflicting settings return 409. |
Request body
Content type: application/json
Type: AppCreateComputer
| Field | Type | Required | Description |
|---|---|---|---|
chat | string or null | No | An existing chat owned by this account. |
size | string or null | No | Default: |
environment | string or null | No | |
version | string or null | No | The saved version number, paired with environment. |
idempotency_key | string or null | No | Required here or in Idempotency-Key; both must match. Keep the key bound to the immutable request after completion or deletion. |
placement | one of null, "auto", "our-cloud", "fast-sandbox", "enrolled" | No | The service uses the kind you choose or refuses the request. You cannot add a computer you already own here yet. |
needs | AppComputerNeeds or null | No | |
egress_profile | string or null | No | Use an exact name@sha256:HASH value from capabilities. A value that isn't offered is refused. |
enrolled_host | string or null | No | Reserved. Non-null host selections are currently refused. |
Response
200 — The requested computer result.
Type: AppComputer
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string | Yes | |
kind | always "cloud" | Yes | |
chat | string or null | No | |
size | string | Yes | |
state | string | Yes | |
desired | one of "running", "stopped", "deleted" | Yes | |
online | boolean | Yes | |
turns | integer | No | |
created_unix | integer | No | |
updated_unix | integer | No | |
seen_unix | null | No | |
sync | null | No | |
last_error | string or null | No | |
capabilities | AppComputerResourceCapabilities (object or null) | No | The bound computer's supported operations. Absent or null means unknown. A known object defaults omitted memory_suspend and command_sessions declarations to false; a Suspend profile alone does not promise memory preservation. |
capabilities.profiles | array of one of "core", "suspend", "snapshot", "fork" | Yes | |
capabilities.sizes | array of string | Yes | |
capabilities.shapes | object | Yes | |
capabilities.memory_suspend | boolean | Yes | |
capabilities.command_sessions | boolean | Yes | |
capabilities.workspace_file_bytes | integer or null | Yes | |
lifecycle_policy | AppComputerLifecyclePolicy (object or null) | No | The recorded service policy for this computer. Absent or null means unavailable; clients must not invent timing or memory guarantees. |
lifecycle_policy.turn_complete | one of "suspend", "delete" | Yes | |
lifecycle_policy.idle_ms | integer | Yes | |
lifecycle_policy.observed_extension_ms | integer | Yes | |
lifecycle_policy.absolute_ms | integer | Yes | |
lifecycle_policy.absolute_scope | always "boot" | Yes | |
lifecycle_policy.uncertain_at_absolute_limit | always "delete" | Yes | |
lifecycle_policy.stopped_retention_ms | integer or null | No | Recorded maximum time to keep a stopped computer, in milliseconds. Zero means delete after the observed stop. Current operator/account limits can shorten this time; absent or null means unavailable. |
202 — Accepted intent; poll the same resource until its observed state confirms completion. A response or polling timeout does not cancel work.
Type: AppComputer
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string | Yes | |
kind | always "cloud" | Yes | |
chat | string or null | No | |
size | string | Yes | |
state | string | Yes | |
desired | one of "running", "stopped", "deleted" | Yes | |
online | boolean | Yes | |
turns | integer | No | |
created_unix | integer | No | |
updated_unix | integer | No | |
seen_unix | null | No | |
sync | null | No | |
last_error | string or null | No | |
capabilities | AppComputerResourceCapabilities (object or null) | No | The bound computer's supported operations. Absent or null means unknown. A known object defaults omitted memory_suspend and command_sessions declarations to false; a Suspend profile alone does not promise memory preservation. |
capabilities.profiles | array of one of "core", "suspend", "snapshot", "fork" | Yes | |
capabilities.sizes | array of string | Yes | |
capabilities.shapes | object | Yes | |
capabilities.memory_suspend | boolean | Yes | |
capabilities.command_sessions | boolean | Yes | |
capabilities.workspace_file_bytes | integer or null | Yes | |
lifecycle_policy | AppComputerLifecyclePolicy (object or null) | No | The recorded service policy for this computer. Absent or null means unavailable; clients must not invent timing or memory guarantees. |
lifecycle_policy.turn_complete | one of "suspend", "delete" | Yes | |
lifecycle_policy.idle_ms | integer | Yes | |
lifecycle_policy.observed_extension_ms | integer | Yes | |
lifecycle_policy.absolute_ms | integer | Yes | |
lifecycle_policy.absolute_scope | always "boot" | Yes | |
lifecycle_policy.uncertain_at_absolute_limit | always "delete" | Yes | |
lifecycle_policy.stopped_retention_ms | integer or null | No | Recorded maximum time to keep a stopped computer, in milliseconds. Zero means delete after the observed stop. Current operator/account limits can shorten this time; absent or null means unavailable. |
Errors
| Status | Meaning | Body |
|---|---|---|
| 400, 401, 403, 404, 409, 413, 422, 429, 503 | The requested computer result. | AppAccountError |
Example
curl -X POST 'https://api.openagents.com/v1/computers' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"size": "small"
}'
In the Rust SDK
Get computer capabilities
GET /v1/computers/capabilities · getComputerCapabilities
Account-owned cloud computers. Accepts live app sessions/sign-in keys or account-bound API keys with accounts scope. Cloud operations remain restricted to accounts with cloud access. Acceptance is not readiness or completion; poll the computer. Internal owner headers and service tokens are not public credentials.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Response
200 — The requested computer result.
Type: AppComputerCapabilities
| Field | Type | Required | Description |
|---|---|---|---|
schema | always "openagents.computers.capabilities.v1" | Yes | |
profiles | array of string | Yes | |
sizes | array of string | Yes | |
limits | object | Yes | |
limits.max_computers | always 20 | Yes | |
placements | array of AppPlacementCapabilities | No | |
placements[].placement | one of "our-cloud", "fast-sandbox" | Yes | |
placements[].offers | array of AppPlacementOffer | Yes | |
placements[].offers[].profiles | array of one of "core", "suspend", "snapshot", "fork" | Yes | |
placements[].offers[].sizes | array of string | Yes | |
placements[].offers[].shapes | object | Yes | |
placements[].offers[].memory_suspend | boolean | Yes | |
placements[].offers[].command_sessions | boolean | Yes | |
placements[].offers[].credential_proxy | boolean | No | |
placements[].offers[].egress_profile | string or null | No | |
placements[].offers[].workspace_file_bytes | integer or null | Yes | |
placements[].offers[].default_environment_available | boolean | Yes | |
default_placement | one of null, "our-cloud", "fast-sandbox" | No | |
files | object or null | No | Absent or null means protected file transfer is unsupported. Do not infer support from the backend name. |
files.max_bytes | integer | Yes | |
files.max_path_bytes | always 1024 | Yes | |
files.max_concurrent_transfers | always 2 | Yes | |
files.timeout_seconds | always 60 | Yes | |
files.requires_awake | always true | Yes |
Errors
| Status | Meaning | Body |
|---|---|---|
| 400, 401, 403, 404, 409, 413, 422, 429, 503 | The requested computer result. | AppAccountError |
Example
curl 'https://api.openagents.com/v1/computers/capabilities' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN"
In the Rust SDK
Remove computer named capabilities
DELETE /v1/computers/capabilities · removeComputerNamedCapabilities
Remove a computer named capabilities from your list. Its files and synced chats stay. Cloud access is not required.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Response
204 — The computer name was removed from your list.
Errors
| Status | Meaning | Body |
|---|---|---|
| 400, 401, 403, 404, 409, 413, 422, 429, 503 | The requested computer result. | AppAccountError |
Example
curl -X DELETE 'https://api.openagents.com/v1/computers/capabilities' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN"
Get computer
GET /v1/computers/{id} · getComputer
Account-owned cloud computers. Accepts live app sessions/sign-in keys or account-bound API keys with accounts scope. Cloud operations remain restricted to accounts with cloud access. Acceptance is not readiness or completion; poll the computer. Internal owner headers and service tokens are not public credentials.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes |
Response
200 — The requested computer result.
Type: AppComputer
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string | Yes | |
kind | always "cloud" | Yes | |
chat | string or null | No | |
size | string | Yes | |
state | string | Yes | |
desired | one of "running", "stopped", "deleted" | Yes | |
online | boolean | Yes | |
turns | integer | No | |
created_unix | integer | No | |
updated_unix | integer | No | |
seen_unix | null | No | |
sync | null | No | |
last_error | string or null | No | |
capabilities | AppComputerResourceCapabilities (object or null) | No | The bound computer's supported operations. Absent or null means unknown. A known object defaults omitted memory_suspend and command_sessions declarations to false; a Suspend profile alone does not promise memory preservation. |
capabilities.profiles | array of one of "core", "suspend", "snapshot", "fork" | Yes | |
capabilities.sizes | array of string | Yes | |
capabilities.shapes | object | Yes | |
capabilities.memory_suspend | boolean | Yes | |
capabilities.command_sessions | boolean | Yes | |
capabilities.workspace_file_bytes | integer or null | Yes | |
lifecycle_policy | AppComputerLifecyclePolicy (object or null) | No | The recorded service policy for this computer. Absent or null means unavailable; clients must not invent timing or memory guarantees. |
lifecycle_policy.turn_complete | one of "suspend", "delete" | Yes | |
lifecycle_policy.idle_ms | integer | Yes | |
lifecycle_policy.observed_extension_ms | integer | Yes | |
lifecycle_policy.absolute_ms | integer | Yes | |
lifecycle_policy.absolute_scope | always "boot" | Yes | |
lifecycle_policy.uncertain_at_absolute_limit | always "delete" | Yes | |
lifecycle_policy.stopped_retention_ms | integer or null | No | Recorded maximum time to keep a stopped computer, in milliseconds. Zero means delete after the observed stop. Current operator/account limits can shorten this time; absent or null means unavailable. |
Errors
| Status | Meaning | Body |
|---|---|---|
| 400, 401, 403, 404, 409, 413, 422, 429, 503 | The requested computer result. | AppAccountError |
Example
curl 'https://api.openagents.com/v1/computers/{id}' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN"
In the Rust SDK
Delete computer
DELETE /v1/computers/{id} · deleteComputer
Cloud IDs request deletion (202); names of your own computers are removed from your list (204). Read a cloud computer to check when deletion is finished.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | |
kind | query | one of "cloud" | No | Select cloud deletion explicitly, including when one of your own computers has the same name. Without this, an existing computer name is removed from your list. |
Response
200 — The requested computer result.
Type: AppComputer
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string | Yes | |
kind | always "cloud" | Yes | |
chat | string or null | No | |
size | string | Yes | |
state | string | Yes | |
desired | one of "running", "stopped", "deleted" | Yes | |
online | boolean | Yes | |
turns | integer | No | |
created_unix | integer | No | |
updated_unix | integer | No | |
seen_unix | null | No | |
sync | null | No | |
last_error | string or null | No | |
capabilities | AppComputerResourceCapabilities (object or null) | No | The bound computer's supported operations. Absent or null means unknown. A known object defaults omitted memory_suspend and command_sessions declarations to false; a Suspend profile alone does not promise memory preservation. |
capabilities.profiles | array of one of "core", "suspend", "snapshot", "fork" | Yes | |
capabilities.sizes | array of string | Yes | |
capabilities.shapes | object | Yes | |
capabilities.memory_suspend | boolean | Yes | |
capabilities.command_sessions | boolean | Yes | |
capabilities.workspace_file_bytes | integer or null | Yes | |
lifecycle_policy | AppComputerLifecyclePolicy (object or null) | No | The recorded service policy for this computer. Absent or null means unavailable; clients must not invent timing or memory guarantees. |
lifecycle_policy.turn_complete | one of "suspend", "delete" | Yes | |
lifecycle_policy.idle_ms | integer | Yes | |
lifecycle_policy.observed_extension_ms | integer | Yes | |
lifecycle_policy.absolute_ms | integer | Yes | |
lifecycle_policy.absolute_scope | always "boot" | Yes | |
lifecycle_policy.uncertain_at_absolute_limit | always "delete" | Yes | |
lifecycle_policy.stopped_retention_ms | integer or null | No | Recorded maximum time to keep a stopped computer, in milliseconds. Zero means delete after the observed stop. Current operator/account limits can shorten this time; absent or null means unavailable. |
202 — Accepted intent; poll the same resource until its observed state confirms completion. A response or polling timeout does not cancel work.
Type: AppComputer
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string | Yes | |
kind | always "cloud" | Yes | |
chat | string or null | No | |
size | string | Yes | |
state | string | Yes | |
desired | one of "running", "stopped", "deleted" | Yes | |
online | boolean | Yes | |
turns | integer | No | |
created_unix | integer | No | |
updated_unix | integer | No | |
seen_unix | null | No | |
sync | null | No | |
last_error | string or null | No | |
capabilities | AppComputerResourceCapabilities (object or null) | No | The bound computer's supported operations. Absent or null means unknown. A known object defaults omitted memory_suspend and command_sessions declarations to false; a Suspend profile alone does not promise memory preservation. |
capabilities.profiles | array of one of "core", "suspend", "snapshot", "fork" | Yes | |
capabilities.sizes | array of string | Yes | |
capabilities.shapes | object | Yes | |
capabilities.memory_suspend | boolean | Yes | |
capabilities.command_sessions | boolean | Yes | |
capabilities.workspace_file_bytes | integer or null | Yes | |
lifecycle_policy | AppComputerLifecyclePolicy (object or null) | No | The recorded service policy for this computer. Absent or null means unavailable; clients must not invent timing or memory guarantees. |
lifecycle_policy.turn_complete | one of "suspend", "delete" | Yes | |
lifecycle_policy.idle_ms | integer | Yes | |
lifecycle_policy.observed_extension_ms | integer | Yes | |
lifecycle_policy.absolute_ms | integer | Yes | |
lifecycle_policy.absolute_scope | always "boot" | Yes | |
lifecycle_policy.uncertain_at_absolute_limit | always "delete" | Yes | |
lifecycle_policy.stopped_retention_ms | integer or null | No | Recorded maximum time to keep a stopped computer, in milliseconds. Zero means delete after the observed stop. Current operator/account limits can shorten this time; absent or null means unavailable. |
204 — The computer name was removed from your list. Its files and synced chats stay.
Errors
| Status | Meaning | Body |
|---|---|---|
| 400, 401, 403, 404, 409, 413, 422, 429, 503 | The requested computer result. | AppAccountError |
Example
curl -X DELETE 'https://api.openagents.com/v1/computers/{id}' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN"
In the Rust SDK
Create computer command
POST /v1/computers/{id}/commands · createComputerCommand
Account-authenticated Boat commands. Creation queues execution with output capture already configured. Attach reads saved output and never starts or cancels work. Poll from the returned byte offsets; each request checks current authority. No URL tokens. Unknown execution is never replayed. Output expires seven days after creation; each stream retains its first 256 KiB and reports discarded bytes with gaps. Cancellation is intent until an observed exit. Origin, if supplied, must match this deployment.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | |
Idempotency-Key | header | string | No | Required in the header or body; when both are sent they must match. |
Request body
Content type: application/json
Type: AppCreateCommand
| Field | Type | Required | Description |
|---|---|---|---|
command | string | Yes | Shell command. Do not put credentials in command text. |
cwd | string | No | Existing directory relative to the computer workspace; traversal and symlink escape refuse. Default: |
timeout_seconds | integer | No | Default: |
env | object | No | Non-secret values only. Names: LANG, LC_ALL, TZ, CI, TERM, or OA_PARAM_*; credential fields refuse. |
idempotency_key | string | No | Required here or as Idempotency-Key. Reuse across retries. |
credential_ref | string | No | Optional reference prepared by the server for this account, computer, command, and request key. Credential values cannot be sent here. It expires after ten minutes. Credentials stay in memory; a restart can make a waiting command fail. |
Response
200 — The command or saved output.
Type: AppCommand
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
computer | string | Yes | |
state | one of "queued", "dispatching", "running", "succeeded", "failed", "cancelled", "timed_out", "unknown" | Yes | |
digest | string | Yes | |
exit_code | integer or null | Yes | |
cancel_requested | boolean | Yes | |
created_unix | integer | No | |
started_unix | integer or null | No | |
finished_unix | integer or null | No | |
output_expires_unix | integer | Yes | |
output_limit_bytes | always 262144 | Yes | |
stdout_truncated | boolean | Yes | |
stderr_truncated | boolean | Yes | |
stdout_bytes | integer | No | |
stderr_bytes | integer | No |
202 — Accepted intent; poll the same resource until its observed state confirms completion. A response or polling timeout does not cancel work.
Type: AppCommand
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
computer | string | Yes | |
state | one of "queued", "dispatching", "running", "succeeded", "failed", "cancelled", "timed_out", "unknown" | Yes | |
digest | string | Yes | |
exit_code | integer or null | Yes | |
cancel_requested | boolean | Yes | |
created_unix | integer | No | |
started_unix | integer or null | No | |
finished_unix | integer or null | No | |
output_expires_unix | integer | Yes | |
output_limit_bytes | always 262144 | Yes | |
stdout_truncated | boolean | Yes | |
stderr_truncated | boolean | Yes | |
stdout_bytes | integer | No | |
stderr_bytes | integer | No |
Errors
| Status | Meaning | Body |
|---|---|---|
| 400, 401, 403, 404, 409, 410, 413, 429, 503 | The command or saved output. | AppAccountError |
Example
curl -X POST 'https://api.openagents.com/v1/computers/{id}/commands' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"command": "sha256sum input.bin",
"timeout_seconds": 30
}'
In the Rust SDK
Get computer command
GET /v1/computers/{id}/commands/{command} · getComputerCommand
Account-authenticated Boat commands. Creation queues execution with output capture already configured. Attach reads saved output and never starts or cancels work. Poll from the returned byte offsets; each request checks current authority. No URL tokens. Unknown execution is never replayed. Output expires seven days after creation; each stream retains its first 256 KiB and reports discarded bytes with gaps. Cancellation is intent until an observed exit. Origin, if supplied, must match this deployment.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | |
command | path | string | Yes |
Response
200 — The command or saved output.
Type: AppCommand
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
computer | string | Yes | |
state | one of "queued", "dispatching", "running", "succeeded", "failed", "cancelled", "timed_out", "unknown" | Yes | |
digest | string | Yes | |
exit_code | integer or null | Yes | |
cancel_requested | boolean | Yes | |
created_unix | integer | No | |
started_unix | integer or null | No | |
finished_unix | integer or null | No | |
output_expires_unix | integer | Yes | |
output_limit_bytes | always 262144 | Yes | |
stdout_truncated | boolean | Yes | |
stderr_truncated | boolean | Yes | |
stdout_bytes | integer | No | |
stderr_bytes | integer | No |
Errors
| Status | Meaning | Body |
|---|---|---|
| 400, 401, 403, 404, 409, 410, 413, 429, 503 | The command or saved output. | AppAccountError |
Example
curl 'https://api.openagents.com/v1/computers/{id}/commands/{command}' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN"
In the Rust SDK
Cancel computer command
POST /v1/computers/{id}/commands/{command}/cancel · cancelComputerCommand
Account-authenticated Boat commands. Creation queues execution with output capture already configured. Attach reads saved output and never starts or cancels work. Poll from the returned byte offsets; each request checks current authority. No URL tokens. Unknown execution is never replayed. Output expires seven days after creation; each stream retains its first 256 KiB and reports discarded bytes with gaps. Cancellation is intent until an observed exit. Origin, if supplied, must match this deployment.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | |
command | path | string | Yes |
Response
200 — The command or saved output.
Type: AppCommand
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
computer | string | Yes | |
state | one of "queued", "dispatching", "running", "succeeded", "failed", "cancelled", "timed_out", "unknown" | Yes | |
digest | string | Yes | |
exit_code | integer or null | Yes | |
cancel_requested | boolean | Yes | |
created_unix | integer | No | |
started_unix | integer or null | No | |
finished_unix | integer or null | No | |
output_expires_unix | integer | Yes | |
output_limit_bytes | always 262144 | Yes | |
stdout_truncated | boolean | Yes | |
stderr_truncated | boolean | Yes | |
stdout_bytes | integer | No | |
stderr_bytes | integer | No |
202 — Accepted intent; poll the same resource until its observed state confirms completion. A response or polling timeout does not cancel work.
Type: AppCommand
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
computer | string | Yes | |
state | one of "queued", "dispatching", "running", "succeeded", "failed", "cancelled", "timed_out", "unknown" | Yes | |
digest | string | Yes | |
exit_code | integer or null | Yes | |
cancel_requested | boolean | Yes | |
created_unix | integer | No | |
started_unix | integer or null | No | |
finished_unix | integer or null | No | |
output_expires_unix | integer | Yes | |
output_limit_bytes | always 262144 | Yes | |
stdout_truncated | boolean | Yes | |
stderr_truncated | boolean | Yes | |
stdout_bytes | integer | No | |
stderr_bytes | integer | No |
Errors
| Status | Meaning | Body |
|---|---|---|
| 400, 401, 403, 404, 409, 410, 413, 429, 503 | The command or saved output. | AppAccountError |
Example
curl -X POST 'https://api.openagents.com/v1/computers/{id}/commands/{command}/cancel' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN"
In the Rust SDK
Attach computer command
GET /v1/computers/{id}/commands/{command}/output · attachComputerCommand
Account-authenticated Boat commands. Creation queues execution with output capture already configured. Attach reads saved output and never starts or cancels work. Poll from the returned byte offsets; each request checks current authority. No URL tokens. Unknown execution is never replayed. Output expires seven days after creation; each stream retains its first 256 KiB and reports discarded bytes with gaps. Cancellation is intent until an observed exit. Origin, if supplied, must match this deployment.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | |
command | path | string | Yes | |
stdout | query | integer | No | |
stderr | query | integer | No | |
max_bytes | query | integer | No | |
wait_ms | query | integer | No |
Response
200 — The command or saved output.
Type: AppCommandOutput
| Field | Type | Required | Description |
|---|---|---|---|
command | AppCommand | Yes | |
command.id | string | Yes | |
command.computer | string | Yes | |
command.state | one of "queued", "dispatching", "running", "succeeded", "failed", "cancelled", "timed_out", "unknown" | Yes | |
command.digest | string | Yes | |
command.exit_code | integer or null | Yes | |
command.cancel_requested | boolean | Yes | |
command.created_unix | integer | No | |
command.started_unix | integer or null | No | |
command.finished_unix | integer or null | No | |
command.output_expires_unix | integer | Yes | |
command.output_limit_bytes | always 262144 | Yes | |
command.stdout_truncated | boolean | Yes | |
command.stderr_truncated | boolean | Yes | |
command.stdout_bytes | integer | No | |
command.stderr_bytes | integer | No | |
encoding | always "base64" | Yes | |
stdout | string | Yes | |
stderr | string | Yes | |
next_cursor | object | Yes | |
next_cursor.stdout | integer | Yes | |
next_cursor.stderr | integer | Yes | |
gaps | object | Yes | |
gaps.stdout | boolean | Yes | |
gaps.stderr | boolean | Yes | |
terminal | boolean | Yes | |
has_more | boolean | Yes |
Errors
| Status | Meaning | Body |
|---|---|---|
| 400, 401, 403, 404, 409, 410, 413, 429, 503 | The command or saved output. | AppAccountError |
Example
curl 'https://api.openagents.com/v1/computers/{id}/commands/{command}/output' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN"
In the Rust SDK
Prepare computer credential reference
POST /v1/computers/{id}/credential-references · prepareComputerCredentialReference
Optional host-side credentials. Requires a supported network profile and an authorized source connection. Credential values and cloud paths never appear in this contract. Prepare all references before sending the command with command_key. Pass oa-ref:REFERENCE_UUID as the client API key or Git HTTPS password. The proxy replaces this non-secret marker only for an authorized matching request.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | |
Idempotency-Key | header | string | No | When supplied, must match idempotency_key in the body. |
Request body
Content type: application/json
Type: AppPrepareComputerCredentialReference
| Field | Type | Required | Description |
|---|---|---|---|
source | string (uuid) | Yes | A source connection authorized for this account or workspace. Cloud secret paths are not accepted. |
rule | string | Yes | One destination rule registered for that connection. |
command_key | string | Yes | The exact request key of the command that may use these credentials. |
idempotency_key | string | Yes | Save this key with these exact settings before sending. Retries do not extend the expiry. |
ttl_seconds | integer | Yes | Maximum lifetime. Stop, wake, revocation, command exit, and broker restart also end access. |
Response
201 — Done
Type: AppComputerCredentialReference
| Field | Type | Required | Description |
|---|---|---|---|
id | string (uuid) | Yes | |
computer | string | Yes | |
source | string (uuid) | Yes | |
rule | string | Yes | |
command_key | string | Yes | |
state | one of "prepared", "active", "revoked" | Yes | |
created_unix | integer | Yes | |
expires_unix | integer | Yes | |
egress_profile | string | Yes |
Errors
| Status | Meaning | Body |
|---|---|---|
| 400 | Invalid settings | |
| 401 | Sign in | |
| 403 | Not allowed | |
| 404 | Not found | |
| 413 | Request too large | |
| 422 | Unsupported | |
| 503 | Unavailable |
Example
curl -X POST 'https://api.openagents.com/v1/computers/{id}/credential-references' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"source": "00000000-0000-0000-0000-000000000001",
"rule": "messages",
"command_key": "command-example",
"idempotency_key": "credential-example",
"ttl_seconds": 300
}'
In the Rust SDK
Get computer credential reference
GET /v1/computers/{id}/credential-references/{reference} · getComputerCredentialReference
Optional host-side credentials. Requires a supported network profile and an authorized source connection. Credential values and cloud paths never appear in this contract. Prepare all references before sending the command with command_key. Pass oa-ref:REFERENCE_UUID as the client API key or Git HTTPS password. The proxy replaces this non-secret marker only for an authorized matching request.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | |
reference | path | string | Yes |
Response
200 — Done
Type: AppComputerCredentialReference
| Field | Type | Required | Description |
|---|---|---|---|
id | string (uuid) | Yes | |
computer | string | Yes | |
source | string (uuid) | Yes | |
rule | string | Yes | |
command_key | string | Yes | |
state | one of "prepared", "active", "revoked" | Yes | |
created_unix | integer | Yes | |
expires_unix | integer | Yes | |
egress_profile | string | Yes |
Errors
| Status | Meaning | Body |
|---|---|---|
| 400 | Invalid settings | |
| 401 | Sign in | |
| 403 | Not allowed | |
| 404 | Not found | |
| 413 | Request too large | |
| 422 | Unsupported | |
| 503 | Unavailable |
Example
curl 'https://api.openagents.com/v1/computers/{id}/credential-references/{reference}' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN"
In the Rust SDK
Revoke computer credential reference
DELETE /v1/computers/{id}/credential-references/{reference} · revokeComputerCredentialReference
Optional host-side credentials. Requires a supported network profile and an authorized source connection. Credential values and cloud paths never appear in this contract. Prepare all references before sending the command with command_key. Pass oa-ref:REFERENCE_UUID as the client API key or Git HTTPS password. The proxy replaces this non-secret marker only for an authorized matching request.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | |
reference | path | string | Yes |
Response
204 — Credential access has ended.
Errors
| Status | Meaning | Body |
|---|---|---|
| 400 | Invalid settings | |
| 401 | Sign in | |
| 403 | Not allowed | |
| 404 | Not found | |
| 413 | Request too large | |
| 422 | Unsupported | |
| 503 | Unavailable |
Example
curl -X DELETE 'https://api.openagents.com/v1/computers/{id}/credential-references/{reference}' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN"
In the Rust SDK
Read a workspace file
GET /v1/computers/{id}/files · readComputerFile
Requires an awake computer; never wakes or allocates. Returns a bounded complete read after taking a read lease and checking file size and modification metadata. Files open for writing return409; files that cannot take a lease are unsupported. Concurrent changes can return409. File mode is not altered.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | |
path | query | string | Yes | Relative UTF-8 path beneath the command workspace. No empty or dot components, controls, backslashes, colon, percent signs, symlinks, or mount crossings. Parents must already exist. |
Response
200 — Complete binary file; X-Content-SHA256 and ETag identify the returned bytes.
Content type: application/octet-stream
Type: string (binary)
Errors
| Status | Meaning | Body |
|---|---|---|
| 400 | Invalid path or query. | AppAccountError |
| 401 | Sign in again. | AppAccountError |
| 403 | Access or path refused. | AppAccountError |
| 404 | Computer, file, or parent directory missing. | AppAccountError |
| 409 | Computer is not awake, or the file changed during the read. | AppAccountError |
| 411 | Upload length required. | AppAccountError |
| 412 | Create-only upload conflicts with a different file. | AppAccountError |
| 413 | File exceeds 4 MiB. | AppAccountError |
| 415 | Choose a regular file. | AppAccountError |
| 422 | Upload length or checksum mismatch. | AppAccountError |
| 429 | Two transfers are in progress; retry after one second. | AppAccountError |
| 501 | Protected files are unsupported on this computer. | AppAccountError |
| 503 | Transfer unavailable; a write may have completed, so read and verify before retrying. | AppAccountError |
Example
curl 'https://api.openagents.com/v1/computers/{id}/files?path=...' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN"
In the Rust SDK
Upload a workspace file
PUT /v1/computers/{id}/files · writeComputerFile
Requires awake computer, Content-Length, and SHA256. Validates the full body before writing. Publishes a same-directory temporary file by atomic rename; partial or mismatched uploads leave the previous file intact. Missing parents return404. Maximum4MiB, two transfers per instance,60second upload and60second execution bounds. A lost response can leave the result uncertain: read and compare SHA256 before retrying. Files stay on this computer's disk and are not shared artifacts.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | |
path | query | string | Yes | Relative UTF-8 path beneath the command workspace. No empty or dot components, controls, backslashes, colon, percent signs, symlinks, or mount crossings. Parents must already exist. |
overwrite | query | boolean | No | False: existing identical bytes succeed; different bytes return412. True: atomically replace; concurrent writers use last completed publication. No content compare-and-swap or idempotency key is offered. |
X-Content-SHA256 | header | string | Yes | |
Content-Length | header | integer | Yes | Exact binary body length, including zero for an empty upload. |
Request body
Content type: application/octet-stream
Type: string (binary)
Response
200 — The complete upload was checked and atomically published with mode0600.
Type: AppComputerFileInfo
| Field | Type | Required | Description |
|---|---|---|---|
size | integer | Yes | |
sha256 | string | Yes |
Errors
| Status | Meaning | Body |
|---|---|---|
| 400 | Invalid path or query. | AppAccountError |
| 401 | Sign in again. | AppAccountError |
| 403 | Access or path refused. | AppAccountError |
| 404 | Computer, file, or parent directory missing. | AppAccountError |
| 409 | Computer is not awake, or the file changed during the read. | AppAccountError |
| 411 | Upload length required. | AppAccountError |
| 412 | Create-only upload conflicts with a different file. | AppAccountError |
| 413 | File exceeds 4 MiB. | AppAccountError |
| 415 | Choose a regular file. | AppAccountError |
| 422 | Upload length or checksum mismatch. | AppAccountError |
| 429 | Two transfers are in progress; retry after one second. | AppAccountError |
| 501 | Protected files are unsupported on this computer. | AppAccountError |
| 503 | Transfer unavailable; a write may have completed, so read and verify before retrying. | AppAccountError |
Example
curl -X PUT 'https://api.openagents.com/v1/computers/{id}/files?path=...' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN" \
-H 'X-Content-SHA256: ...' \
-H 'Content-Length: ...' \
-H 'Content-Type: application/octet-stream' \
--data-binary @file
In the Rust SDK
Stop computer
POST /v1/computers/{id}/stop · stopComputer
Account-owned cloud computers. Accepts live app sessions/sign-in keys or account-bound API keys with accounts scope. Cloud operations remain restricted to accounts with cloud access. Acceptance is not readiness or completion; poll the computer. Internal owner headers and service tokens are not public credentials.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes |
Response
200 — The requested computer result.
Type: AppComputer
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string | Yes | |
kind | always "cloud" | Yes | |
chat | string or null | No | |
size | string | Yes | |
state | string | Yes | |
desired | one of "running", "stopped", "deleted" | Yes | |
online | boolean | Yes | |
turns | integer | No | |
created_unix | integer | No | |
updated_unix | integer | No | |
seen_unix | null | No | |
sync | null | No | |
last_error | string or null | No | |
capabilities | AppComputerResourceCapabilities (object or null) | No | The bound computer's supported operations. Absent or null means unknown. A known object defaults omitted memory_suspend and command_sessions declarations to false; a Suspend profile alone does not promise memory preservation. |
capabilities.profiles | array of one of "core", "suspend", "snapshot", "fork" | Yes | |
capabilities.sizes | array of string | Yes | |
capabilities.shapes | object | Yes | |
capabilities.memory_suspend | boolean | Yes | |
capabilities.command_sessions | boolean | Yes | |
capabilities.workspace_file_bytes | integer or null | Yes | |
lifecycle_policy | AppComputerLifecyclePolicy (object or null) | No | The recorded service policy for this computer. Absent or null means unavailable; clients must not invent timing or memory guarantees. |
lifecycle_policy.turn_complete | one of "suspend", "delete" | Yes | |
lifecycle_policy.idle_ms | integer | Yes | |
lifecycle_policy.observed_extension_ms | integer | Yes | |
lifecycle_policy.absolute_ms | integer | Yes | |
lifecycle_policy.absolute_scope | always "boot" | Yes | |
lifecycle_policy.uncertain_at_absolute_limit | always "delete" | Yes | |
lifecycle_policy.stopped_retention_ms | integer or null | No | Recorded maximum time to keep a stopped computer, in milliseconds. Zero means delete after the observed stop. Current operator/account limits can shorten this time; absent or null means unavailable. |
202 — Accepted intent; poll the same resource until its observed state confirms completion. A response or polling timeout does not cancel work.
Type: AppComputer
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string | Yes | |
kind | always "cloud" | Yes | |
chat | string or null | No | |
size | string | Yes | |
state | string | Yes | |
desired | one of "running", "stopped", "deleted" | Yes | |
online | boolean | Yes | |
turns | integer | No | |
created_unix | integer | No | |
updated_unix | integer | No | |
seen_unix | null | No | |
sync | null | No | |
last_error | string or null | No | |
capabilities | AppComputerResourceCapabilities (object or null) | No | The bound computer's supported operations. Absent or null means unknown. A known object defaults omitted memory_suspend and command_sessions declarations to false; a Suspend profile alone does not promise memory preservation. |
capabilities.profiles | array of one of "core", "suspend", "snapshot", "fork" | Yes | |
capabilities.sizes | array of string | Yes | |
capabilities.shapes | object | Yes | |
capabilities.memory_suspend | boolean | Yes | |
capabilities.command_sessions | boolean | Yes | |
capabilities.workspace_file_bytes | integer or null | Yes | |
lifecycle_policy | AppComputerLifecyclePolicy (object or null) | No | The recorded service policy for this computer. Absent or null means unavailable; clients must not invent timing or memory guarantees. |
lifecycle_policy.turn_complete | one of "suspend", "delete" | Yes | |
lifecycle_policy.idle_ms | integer | Yes | |
lifecycle_policy.observed_extension_ms | integer | Yes | |
lifecycle_policy.absolute_ms | integer | Yes | |
lifecycle_policy.absolute_scope | always "boot" | Yes | |
lifecycle_policy.uncertain_at_absolute_limit | always "delete" | Yes | |
lifecycle_policy.stopped_retention_ms | integer or null | No | Recorded maximum time to keep a stopped computer, in milliseconds. Zero means delete after the observed stop. Current operator/account limits can shorten this time; absent or null means unavailable. |
Errors
| Status | Meaning | Body |
|---|---|---|
| 400, 401, 403, 404, 409, 413, 422, 429, 503 | The requested computer result. | AppAccountError |
Example
curl -X POST 'https://api.openagents.com/v1/computers/{id}/stop' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN"
In the Rust SDK
Wake computer
POST /v1/computers/{id}/wake · wakeComputer
Account-owned cloud computers. Accepts live app sessions/sign-in keys or account-bound API keys with accounts scope. Cloud operations remain restricted to accounts with cloud access. Acceptance is not readiness or completion; poll the computer. Internal owner headers and service tokens are not public credentials.
Sign-in: a bearer credential in the Authorization header.
appBearer: A live app sess_ session or oa_sk_ sign-in key. Account-bound oak_ keys are accepted only where the operation declares them and their scopes permit it. API cookies are ignored.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes |
Response
200 — The requested computer result.
Type: AppComputer
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string | Yes | |
kind | always "cloud" | Yes | |
chat | string or null | No | |
size | string | Yes | |
state | string | Yes | |
desired | one of "running", "stopped", "deleted" | Yes | |
online | boolean | Yes | |
turns | integer | No | |
created_unix | integer | No | |
updated_unix | integer | No | |
seen_unix | null | No | |
sync | null | No | |
last_error | string or null | No | |
capabilities | AppComputerResourceCapabilities (object or null) | No | The bound computer's supported operations. Absent or null means unknown. A known object defaults omitted memory_suspend and command_sessions declarations to false; a Suspend profile alone does not promise memory preservation. |
capabilities.profiles | array of one of "core", "suspend", "snapshot", "fork" | Yes | |
capabilities.sizes | array of string | Yes | |
capabilities.shapes | object | Yes | |
capabilities.memory_suspend | boolean | Yes | |
capabilities.command_sessions | boolean | Yes | |
capabilities.workspace_file_bytes | integer or null | Yes | |
lifecycle_policy | AppComputerLifecyclePolicy (object or null) | No | The recorded service policy for this computer. Absent or null means unavailable; clients must not invent timing or memory guarantees. |
lifecycle_policy.turn_complete | one of "suspend", "delete" | Yes | |
lifecycle_policy.idle_ms | integer | Yes | |
lifecycle_policy.observed_extension_ms | integer | Yes | |
lifecycle_policy.absolute_ms | integer | Yes | |
lifecycle_policy.absolute_scope | always "boot" | Yes | |
lifecycle_policy.uncertain_at_absolute_limit | always "delete" | Yes | |
lifecycle_policy.stopped_retention_ms | integer or null | No | Recorded maximum time to keep a stopped computer, in milliseconds. Zero means delete after the observed stop. Current operator/account limits can shorten this time; absent or null means unavailable. |
202 — Accepted intent; poll the same resource until its observed state confirms completion. A response or polling timeout does not cancel work.
Type: AppComputer
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | |
name | string | Yes | |
kind | always "cloud" | Yes | |
chat | string or null | No | |
size | string | Yes | |
state | string | Yes | |
desired | one of "running", "stopped", "deleted" | Yes | |
online | boolean | Yes | |
turns | integer | No | |
created_unix | integer | No | |
updated_unix | integer | No | |
seen_unix | null | No | |
sync | null | No | |
last_error | string or null | No | |
capabilities | AppComputerResourceCapabilities (object or null) | No | The bound computer's supported operations. Absent or null means unknown. A known object defaults omitted memory_suspend and command_sessions declarations to false; a Suspend profile alone does not promise memory preservation. |
capabilities.profiles | array of one of "core", "suspend", "snapshot", "fork" | Yes | |
capabilities.sizes | array of string | Yes | |
capabilities.shapes | object | Yes | |
capabilities.memory_suspend | boolean | Yes | |
capabilities.command_sessions | boolean | Yes | |
capabilities.workspace_file_bytes | integer or null | Yes | |
lifecycle_policy | AppComputerLifecyclePolicy (object or null) | No | The recorded service policy for this computer. Absent or null means unavailable; clients must not invent timing or memory guarantees. |
lifecycle_policy.turn_complete | one of "suspend", "delete" | Yes | |
lifecycle_policy.idle_ms | integer | Yes | |
lifecycle_policy.observed_extension_ms | integer | Yes | |
lifecycle_policy.absolute_ms | integer | Yes | |
lifecycle_policy.absolute_scope | always "boot" | Yes | |
lifecycle_policy.uncertain_at_absolute_limit | always "delete" | Yes | |
lifecycle_policy.stopped_retention_ms | integer or null | No | Recorded maximum time to keep a stopped computer, in milliseconds. Zero means delete after the observed stop. Current operator/account limits can shorten this time; absent or null means unavailable. |
Errors
| Status | Meaning | Body |
|---|---|---|
| 400, 401, 403, 404, 409, 413, 422, 429, 503 | The requested computer result. | AppAccountError |
Example
curl -X POST 'https://api.openagents.com/v1/computers/{id}/wake' \
-H "Authorization: Bearer $OPENAGENTS_TOKEN"