Dory is in development. The invite-only beta has not opened yet; prices and limits are planned and may change.

Errors

Errors use application/problem+json with a fixed code, detail, status and retryability. Preserve request and resource IDs for support, but redact credentials and secret URLs. A network failure is not evidence that a mutation did not run.

Choose a recovery path

Retry only where the error and operation contract permit it, honoring Retry-After. For an accepted operation, poll its retained ID; for keyed process replay, attach to the original process. A local WaitTimeout does not cancel remote work. Scope, restriction, legal-hold and invalid-state refusals need a changed authorized condition, not repeated identical requests.

409 invalid_state with retryable false is used when destructive customer actions would destroy held data. Refusal leaves the existing billing state unchanged. Non-destructive pause/stop remain available only where the lifecycle permits and held bytes can be preserved. Failures to preserve held data stay failures, with no invented successful deletion.

Code reference

The codes below come from the Problem.code enumeration in the API reference.

Code Status Meaning
invalid_request 400 Malformed JSON, bad query, header or path input, or a missing required body.
unauthenticated 401 Missing, expired or revoked credential. The data API refuses API keys.
token_expired 401 The access token or connect token has expired. Mint a new one.
token_revoked 401 The credential was revoked. Obtain new authority.
insufficient_balance 402 Your balance does not cover the action (for example a start or resume).
spend_limit_reached 402 Your monthly spend limit has been reached.
forbidden_scope 403 The key lacks the scope, or the change would weaken a spend policy without fresh console verification.
key_restricted 403 A key restriction (computers, labels, source network, key hierarchy) forbids the action.
key_cost_limit 403 The key's hourly cost limit would be exceeded.
tier_limit 403 Your trust tier does not allow this size, or a tier cap was reached.
account_suspended 403 The account is suspended.
email_unverified 403 Verify your email address first.
verification_required 403 Additional verification is required.
region_blocked 403 Not available from this region.
permission_denied 403 The guest refused a file or command because of Unix permissions; errno, path and user describe it.
not_found 404 No such resource, or it belongs to another account.
invalid_state 409 The current state or a legal hold forbids the action. See current_state and allowed_actions.
not_supported 409 The capability is not supported (see capability).
idempotency_mismatch 409 The same idempotency key was reused with a different request.
idempotency_in_progress 409 The first request with this key is still running. Wait for Retry-After.
confirmation_required 409 A confirmation header (for example CE-Confirm-Delete) is required.
desktop_disabled 409 The computer is headless and has no desktop.
agent_outdated 409 The in-guest agent is older than the supported versions (see min_agent_version).
human_in_control 409 A person holds exclusive desktop control. Do not use force to bypass it.
output_gap 409 Requested output offsets precede the retained output; see the earliest offsets in the problem.
gone 410 The computer was deleted within the last 30 days.
output_expired 410 Retained process output has expired.
payload_too_large 413 The body is over the limit.
unprocessable 422 Valid JSON that breaks a rule.
topup_limit 422 A top-up rule (minimum, maximum, headroom) was broken.
rate_limited 429 A request budget was exceeded. Wait for Retry-After.
internal 500 An internal error.
agent_unreachable 502 The in-guest agent did not answer. Not safe to retry blindly.
capacity_unavailable 503 No capacity is available right now. Wait for Retry-After.
host_busy 503 The platform is limiting new work. Wait for Retry-After.
frozen 503 Temporarily unavailable. Wait for Retry-After.
maintenance 503 Temporarily unavailable. Wait for Retry-After.
guest_timeout 504 The guest did not finish in time. Not safe to retry blindly.
secret_already_returned - Not an error status: an idempotent replay returns metadata with the secret field null and secret_already_returned: true. Mint, create or rotate a new one.

Dory is in development; these pages describe the planned service and may change. Questions: support@computeengines.com.