Skip to content

Create an agent role

POST
/agent-roles
curl --request POST \
--url https://your-org.evershell.ai/v1/agent-roles \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "id": "example", "org_id": "example", "name": "example", "display_name": "example", "description": "example", "provider_id": "example", "model": "example", "capabilities": "example", "environment": "development", "environment_description": "example", "task_timeout_seconds": 1, "idle_timeout_seconds": 1, "thinking_effort": "high", "max_continuations": 1, "max_context_tokens": 1, "pool_policy": "", "pool_size": 1, "pool_max_size": 1, "pack_ids": [ "example" ], "created_at": "2026-04-15T12:00:00Z", "updated_at": "2026-04-15T12:00:00Z", "archived_at": "2026-04-15T12:00:00Z" }'

Permissions: caps:write.

Media type application/json
object
id
required
string
org_id
string
name
required
string
display_name
string
description
string
provider_id
required
string
model

Optional override for provider’s default_model

string
capabilities
string
environment
string
default: development
Allowed values: development staging production
environment_description

Free-text description of what the environment is — surfaced to the agent at task time so it knows what it’s running against.

string
task_timeout_seconds
integer
idle_timeout_seconds
integer
thinking_effort
string
Allowed values: high medium low off
max_continuations
integer
max_context_tokens
integer
pool_policy
string
Allowed values: "" static dynamic
pool_size
integer
pool_max_size
integer
pack_ids
Array<string>
created_at
string format: date-time
updated_at
string format: date-time
archived_at
string format: date-time

Created

Media type application/json
object
id
required
string
org_id
string
name
required
string
display_name
string
description
string
provider_id
required
string
model

Optional override for provider’s default_model

string
capabilities
string
environment
string
default: development
Allowed values: development staging production
environment_description

Free-text description of what the environment is — surfaced to the agent at task time so it knows what it’s running against.

string
task_timeout_seconds
integer
idle_timeout_seconds
integer
thinking_effort
string
Allowed values: high medium low off
max_continuations
integer
max_context_tokens
integer
pool_policy
string
Allowed values: "" static dynamic
pool_size
integer
pool_max_size
integer
pack_ids
Array<string>
created_at
string format: date-time
updated_at
string format: date-time
archived_at
string format: date-time
Example
{
"environment": "development",
"thinking_effort": "high",
"pool_policy": ""
}

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"
}
}

Provider is archived (provider_archived) — unarchive it before creating roles that reference it.

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"
}
}