Error codes

API error responses, with hints for what to do next.

The orchestrator returns errors as JSON:

{
  "code": "<machine-readable>",
  "message": "<human-readable>"
}

The CLI surfaces both, and adds a one-line hint when applicable.

Authentication

CodeHTTPWhat it meansAction
unauthorized401Missing / invalid bearer tokenRe-run artifacts login; check the JWT hasn't expired.
forbidden403Token valid but lacks permissionThe user (or service token) doesn't own the workspace. Check artifacts workspace list.

Workspaces

CodeHTTPWhat it meansAction
workspace_not_found404Identifier doesn't match an existing workspaceConfirm the workspace name is right; artifacts workspace list shows what you own. The CLI accepts the short form <name> (resolves to your own handle), <handle>/<name>, or the full artifacts://<handle>/<name>.
workspace_exists409A workspace with that name already exists for this userPick a different name, or artifacts workspace delete <name> first. The 409 body includes an existing field with the live state, which artifacts workspace create uses to resume pending_format automatically.
workspace_not_active409Tried to mount or format-completed against a workspace that's not activeIf pending_format, re-run artifacts workspace create <name> to resume. If deleting / deleted, recreate.
workspace_not_completable409/format-completed called on something other than pending_formatAlmost always means the workspace is already active, in which case the orchestrator returns 200 idempotently via the active short-circuit. If you're seeing this 409, it's likely a stale CLI binary; reinstall.
invalid_request422/format-completed called with no setting key under the workspace prefix in the metadata servicePhase 2 didn't actually run, or it ran against a different bucket. The message tells you to re-run juicefs format; in practice re-run artifacts workspace create.

Platform tenants

CodeHTTPWhat it meansAction
tenant_exists409A tenant with that slug already exists for this userReuse the existing tenant slug in subsequent calls, pick a different slug, or delete the tenant before recreating it.

Mount sessions

CodeHTTPWhat it meansAction
metadata_acl_provisioning_failed500The orchestrator couldn't reach the metadata service to set up your mount-session permissionsTransient. Retry in a few seconds. If it persists past 60 s, contact us; there's an alert on our side too.

Validation

CodeHTTPWhat it meansAction
invalid_request422Request body / params don't satisfy the schemaThe message field has the specific complaint, e.g. storage.bucket is required or ttl_seconds must be between 60 and ....

Internal

CodeHTTPWhat it meansAction
internal_error500Unexpected server-side failureRetry once. If it repeats, contact us with the timestamp + your workspace identifier.

Client-side errors

These never have an HTTP code; the CLI surfaces them before the request hits the orchestrator.

SymptomHint
path /mnt/work is already a mount pointartifacts unmount /mnt/work first. The CLI reads /proc/self/mountinfo to detect this.
BYO mode requires ARTIFACTS_S3_ACCESS_KEY_ID and ARTIFACTS_S3_SECRET_ACCESS_KEYExport them in your shell or run artifacts storage set --access-key-id ... --secret-access-key ....
byo_env requires ARTIFACTS_S3_ACCESS_KEY_ID and ARTIFACTS_S3_SECRET_ACCESS_KEY (set them in the environment or run \artifacts storage set`)`Same as above; the cache is also empty.

Bucket / S3 errors during workspace create Phase 2

These come straight from the storage backend; the message includes the underlying S3 error code.

For BYO workspaces:

What you'll seeLikely cause
Object storage test failed: ... AccessDeniedBucket policy doesn't grant your AK list/get/put.
Object storage test failed: ... NoSuchBucketBucket name typo or wrong endpoint.
Object storage test failed: ... InvalidAccessKeyIdAK/SK pair is wrong or expired.
Object storage test failed: ... SignatureDoesNotMatchRegion mismatch (Tigris uses auto; AWS regions are us-west-1 etc.).

Reproduce locally with aws s3 ls s3://<bucket>/ --endpoint-url <endpoint> to confirm before re-running workspace create.

For managed workspaces:

What you'll seeLikely cause
Object storage test failed: ... InvalidAccessKeyId on a fresh workspace createAWS IAM eventual consistency. The orchestrator just minted credentials and they haven't propagated globally yet (~5–10s). Re-run artifacts workspace create <name> after a short wait, it resumes the pending_format workspace and reuses the same creds, which by then are valid.
internal_error with managed_provisioning_failed: ...The orchestrator couldn't talk to AWS IAM (transient AWS issue, or an orchestrator-side IAM permissions regression). Retry; if it persists, contact ops.
internal_error with managed_storage is malformed; delete + recreateThe workspace's managed_storage jsonb is missing required fields (rw / ro / prefix). Should never happen organically; usually means a hand-edit or a partial migration. artifacts workspace delete --yes <name> (cron will retry the IAM teardown) and recreate.