curl --request POST \
--url 'https://api.computer.stateset.app/api/v1/custom-agents' \
--header "X-API-Key: $STATESET_COMPUTER_USE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"name": "Two-Person Tent",
"description": "Two-person tent, green — replacement for damaged pole set.",
"system_prompt_extension": "string",
"agent_type": "custom",
"skills": [
"string"
],
"tool_permissions": [
"string"
],
"default_params": {},
"trigger_config": {}
}'
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Two-Person Tent",
"description": "Two-person tent, green — replacement for damaged pole set.",
"system_prompt_extension": "string",
"agent_type": "string",
"skills": [
"string"
],
"tool_permissions": [
"string"
],
"default_params": {},
"trigger_config": {},
"is_active": true,
"is_sandbox": true,
"created_at": "2026-08-31T14:22:05Z",
"updated_at": "2026-08-31T14:22:05Z"
}
Create Custom Agent V1
Create a custom agent. Configurations stick until deleted. Use PATCH to flip is_active rather than re-creating to preserve audit history.
POST
/
api
/
v1
/
custom-agents
curl --request POST \
--url 'https://api.computer.stateset.app/api/v1/custom-agents' \
--header "X-API-Key: $STATESET_COMPUTER_USE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"name": "Two-Person Tent",
"description": "Two-person tent, green — replacement for damaged pole set.",
"system_prompt_extension": "string",
"agent_type": "custom",
"skills": [
"string"
],
"tool_permissions": [
"string"
],
"default_params": {},
"trigger_config": {}
}'
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Two-Person Tent",
"description": "Two-person tent, green — replacement for damaged pole set.",
"system_prompt_extension": "string",
"agent_type": "string",
"skills": [
"string"
],
"tool_permissions": [
"string"
],
"default_params": {},
"trigger_config": {},
"is_active": true,
"is_sandbox": true,
"created_at": "2026-08-31T14:22:05Z",
"updated_at": "2026-08-31T14:22:05Z"
}
Create a custom agent.
Configurations stick until deleted. Use
PATCH to flip is_active
rather than re-creating to preserve audit history.
Request body
CustomAgentRequest
string
required
Human-readable agent name (≤128 chars).
string,null
Free-form description (≤4 KB). Surfaces in the dashboard list view.
string,null
Text appended to the platform’s default system prompt for this agent’s runs (≤16 KB). Use to give the agent persistent persona or domain-specific instructions.
string
Tag for this agent’s runs; default ‘custom’. Free-form.
string[]
Skill IDs or names to register on each run (≤100 entries).
string[]
Allow-list of tool names this agent may use; empty = full default tool set. Useful for sandboxing untrusted prompts.
object
Params merged into every
/trigger call invoking this agent.object
Optional trigger metadata — e.g.
{type: 'scheduled', cron: '0 9 * * *'}. Free-form; the worker reads documented keys.Response
CustomAgentSummary
string
required
string
required
string,null
required
string,null
required
string
required
string[]
required
string[]
required
object
required
object
required
boolean
required
boolean
required
string
required
string
required
Status codes
| Code | Meaning |
|---|---|
201 | Successful Response |
422 | Validation Error |
curl --request POST \
--url 'https://api.computer.stateset.app/api/v1/custom-agents' \
--header "X-API-Key: $STATESET_COMPUTER_USE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"name": "Two-Person Tent",
"description": "Two-person tent, green — replacement for damaged pole set.",
"system_prompt_extension": "string",
"agent_type": "custom",
"skills": [
"string"
],
"tool_permissions": [
"string"
],
"default_params": {},
"trigger_config": {}
}'
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Two-Person Tent",
"description": "Two-person tent, green — replacement for damaged pole set.",
"system_prompt_extension": "string",
"agent_type": "string",
"skills": [
"string"
],
"tool_permissions": [
"string"
],
"default_params": {},
"trigger_config": {},
"is_active": true,
"is_sandbox": true,
"created_at": "2026-08-31T14:22:05Z",
"updated_at": "2026-08-31T14:22:05Z"
}
Last modified on August 31, 2026