Skip to content

Create a workspace and submit the initial task atomically

POST
/tasks
curl --request POST \
--url https://your-org.evershell.ai/v1/tasks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "role_id": "example", "role_name": "example", "description": "example", "environment": "example", "thinking_effort": "high", "max_continuations": 1, "max_context_tokens": 1 }'

Permissions: (workspace:write or workspace:write:own) and (tasks:write or tasks:write:own). The unscoped tasks:write is never granted to a default role; every default role holds the :own variants, which are trivially satisfied because the caller becomes the new workspace’s owner.

The task-first UX path. Provisions a workspace from the named role and queues the first task. Returns 202 with the new workspace + task ids; the workspace transitions through provisioning → idle → busy asynchronously.

Accepts JSON or multipart/form-data — multipart adds a repeatable file field for task uploads that ride into the workspace’s /data/uploads/<task_id>/ directory before the agent picks the task up.

object
role_id
string
role_name
string
description
required
string
environment
string
thinking_effort
string
Allowed values: high medium low off
max_continuations
integer
max_context_tokens
integer

Accepted

Media type application/json
object
task_id
required
string
workspace_id
required
string
status
required
string
Example
{
"task_id": "task_01HZ",
"workspace_id": "ws_01HZ",
"status": "submitted"
}

Validation failure

Media type application/json
object
error
required
object
code
required

Closed-enum slug (e.g. permission_denied, validation_error, workspace_not_found)

string
message
required

Human-readable summary

string
request_id
required

Server-generated request id for correlating logs

string
details

Optional structured context. Validation errors land at details.fields as a per-field map.

object
key
additional properties
any
Example
{
"error": {
"code": "permission_denied",
"message": "caller lacks required scope",
"request_id": "7f3a9c2e"
}
}

role_archived or provider_archived — unarchive before submitting, or task_already_running — workspace already has an active task.

Media type application/json
object
error
required
object
code
required

Closed-enum slug (e.g. permission_denied, validation_error, workspace_not_found)

string
message
required

Human-readable summary

string
request_id
required

Server-generated request id for correlating logs

string
details

Optional structured context. Validation errors land at details.fields as a per-field map.

object
key
additional properties
any
Example
{
"error": {
"code": "permission_denied",
"message": "caller lacks required scope",
"request_id": "7f3a9c2e"
}
}

invalid_capabilities — the role’s caps.yaml failed to compile.

Media type application/json
object
error
required
object
code
required

Closed-enum slug (e.g. permission_denied, validation_error, workspace_not_found)

string
message
required

Human-readable summary

string
request_id
required

Server-generated request id for correlating logs

string
details

Optional structured context. Validation errors land at details.fields as a per-field map.

object
key
additional properties
any
Example
{
"error": {
"code": "permission_denied",
"message": "caller lacks required scope",
"request_id": "7f3a9c2e"
}
}

Tenant is past_due, decommissioning, or trial-expired

Media type application/json
object
error
required
object
code
required

Closed-enum slug (e.g. permission_denied, validation_error, workspace_not_found)

string
message
required

Human-readable summary

string
request_id
required

Server-generated request id for correlating logs

string
details

Optional structured context. Validation errors land at details.fields as a per-field map.

object
key
additional properties
any
Example
{
"error": {
"code": "permission_denied",
"message": "caller lacks required scope",
"request_id": "7f3a9c2e"
}
}

Per-org rate limit exceeded

Media type application/json
object
error
required
object
code
required

Closed-enum slug (e.g. permission_denied, validation_error, workspace_not_found)

string
message
required

Human-readable summary

string
request_id
required

Server-generated request id for correlating logs

string
details

Optional structured context. Validation errors land at details.fields as a per-field map.

object
key
additional properties
any
Example
{
"error": {
"code": "permission_denied",
"message": "caller lacks required scope",
"request_id": "7f3a9c2e"
}
}
Retry-After
integer

Seconds until the bucket refills