Skip to main content

Studio (demo mode)

Mounted only when VIGIL_DEMO_MODE=1. Retires once Agent Studio covers it.

These routes exist only while VIGIL_DEMO_MODE=1 is set on the service. They are not part of the product surface and will be removed once Agent Studio covers them.

MethodPathScopeSummary
GET/studio/agentsreviewList Studio Agents
POST/studio/agentsreviewCreate Agent
GET/studio/agents/{agent_id}reviewGet Studio Agent
POST/studio/agents/{agent_id}/deployreviewDeploy Agent
PATCH/studio/agents/{agent_id}/statusreviewUpdate Status
POST/studio/agents/suggestreviewSuggest Agent

Try it

curl -sf -H "Authorization: Bearer $VIGIL_KEY" "$VIGIL_URL/studio/agents" # review key; demo mode only

Routes

GET /studio/agents

List Studio Agents. Scope: review.

Response 200:

[
{
"id": 0,
"agent_id": "string",
"name": "string",
"description": "string | null",
"domain": "string",
"risk_level": "string",
"status": "string",
"persona": "string | null",
"allowed_actions": [
"string"
],
"forbidden_actions": [
"string"
],
"deployed_at": "string | null",
"deploy_endpoint": "string | null",
"created_at": "string",
"is_seed": true
}
]

POST /studio/agents

Create Agent. Scope: review.

Request body:

{
"name": "string",
"description": "string | null",
"domain": "clinical | insurance | wellness | pharmacy | benefits",
"risk_level": "low | medium | high | restricted",
"persona": "string | null",
"allowed_actions": [
"string"
],
"forbidden_actions": [
"string"
]
}
FieldTypeRequiredNotes
namestringyes
descriptionstring | nullno
domainclinical, insurance, wellness, pharmacy, benefitsyes
risk_levellow, medium, high, restrictedno
personastring | nullno
allowed_actionsarray of string | nullno
forbidden_actionsarray of string | nullno

Response 201:

{
"id": 0,
"agent_id": "string",
"name": "string",
"description": "string | null",
"domain": "string",
"risk_level": "string",
"status": "string",
"persona": "string | null",
"allowed_actions": [
"string"
],
"forbidden_actions": [
"string"
],
"deployed_at": "string | null",
"deploy_endpoint": "string | null",
"created_at": "string",
"is_seed": true
}

GET /studio/agents/{agent_id}

Get Studio Agent. Scope: review.

ParameterInRequiredTypeNotes
agent_idpathyesstring

Response 200:

{
"id": 0,
"agent_id": "string",
"name": "string",
"description": "string | null",
"domain": "string",
"risk_level": "string",
"status": "string",
"persona": "string | null",
"allowed_actions": [
"string"
],
"forbidden_actions": [
"string"
],
"deployed_at": "string | null",
"deploy_endpoint": "string | null",
"created_at": "string",
"is_seed": true
}

POST /studio/agents/{agent_id}/deploy

Deploy Agent. Scope: review.

ParameterInRequiredTypeNotes
agent_idpathyesstring

Response 200:

{
"id": 0,
"agent_id": "string",
"name": "string",
"description": "string | null",
"domain": "string",
"risk_level": "string",
"status": "string",
"persona": "string | null",
"allowed_actions": [
"string"
],
"forbidden_actions": [
"string"
],
"deployed_at": "string | null",
"deploy_endpoint": "string | null",
"created_at": "string",
"is_seed": true
}

PATCH /studio/agents/{agent_id}/status

Update Status. Scope: review.

ParameterInRequiredTypeNotes
agent_idpathyesstring
statusqueryyesany

Response 200:

"any"

POST /studio/agents/suggest

Suggest Agent. Scope: review.

Use Claude to generate agent configuration based on name, domain, and context.

Request body:

{
"name": "string",
"domain": "clinical | insurance | wellness | pharmacy | benefits",
"risk_level": "low | medium | high | restricted",
"context": "string | null"
}
FieldTypeRequiredNotes
namestringyes
domainclinical, insurance, wellness, pharmacy, benefitsyes
risk_levellow, medium, high, restrictedno
contextstring | nullno

Response 200:

{
"description": "string",
"persona": "string",
"allowed_actions": [
"string"
],
"forbidden_actions": [
"string"
]
}

Generated from openapi.json (VIGIL 0.2.0). Scopes follow the router dependencies in VIGIL_SPEC.md section 4.2.