curl --silent --show-error --fail-with-body --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 --silent --show-error --fail-with-body --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"
}
Confirm your deployment before running this request. This page describes an API contract;
a published reference does not establish hosted availability. Check the dated
host report and obtain your deployment URL and credentials.
Replace the example host if your provisioned service uses a different URL.
PATCH to flip is_active
rather than re-creating to preserve audit history.
Request body
CustomAgentRequest
string
required
Human-readable agent name (≤128 chars). Minimum length:
1. Maximum length: 128.string,null
Free-form description (≤4 KB). Surfaces in the dashboard list view. Maximum length:
4096.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. Maximum length:
16384.string
Tag for this agent’s runs; default ‘custom’. Free-form. Default:
'custom'. Maximum length: 64.string[]
Skill IDs or names to register on each run (≤100 entries). Maximum items:
100.string[]
Allow-list of tool names this agent may use; empty = full default tool set. Useful for sandboxing untrusted prompts. Maximum items:
100.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 |
Using this contract
Read the source OpenAPI document for declared schemas and alternatives. This page also includes documented corrections from the spec overlays. Example IDs and values are illustrative; replace them with records from your workspace.curl --silent --show-error --fail-with-body --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 September 21, 2026