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.
| Method | Path | Scope | Summary |
|---|---|---|---|
GET | /studio/agents | review | List Studio Agents |
POST | /studio/agents | review | Create Agent |
GET | /studio/agents/{agent_id} | review | Get Studio Agent |
POST | /studio/agents/{agent_id}/deploy | review | Deploy Agent |
PATCH | /studio/agents/{agent_id}/status | review | Update Status |
POST | /studio/agents/suggest | review | Suggest 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"
]
}
| Field | Type | Required | Notes |
|---|---|---|---|
name | string | yes | |
description | string | null | no | |
domain | clinical, insurance, wellness, pharmacy, benefits | yes | |
risk_level | low, medium, high, restricted | no | |
persona | string | null | no | |
allowed_actions | array of string | null | no | |
forbidden_actions | array of string | null | no |
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.
| Parameter | In | Required | Type | Notes |
|---|---|---|---|---|
agent_id | path | yes | string |
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.
| Parameter | In | Required | Type | Notes |
|---|---|---|---|---|
agent_id | path | yes | string |
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.
| Parameter | In | Required | Type | Notes |
|---|---|---|---|---|
agent_id | path | yes | string | |
status | query | yes | any |
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"
}
| Field | Type | Required | Notes |
|---|---|---|---|
name | string | yes | |
domain | clinical, insurance, wellness, pharmacy, benefits | yes | |
risk_level | low, medium, high, restricted | no | |
context | string | null | no |
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.