Create an environment
Creates the environment and its version 1. The spec is validated (harness, model endpoint, egress hosts, env, secrets, MCP servers, skills, permissions) and stored normalized.
curl --request POST \
--url https://api.veri.studio/v1/environments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"harness": "<string>",
"model": {
"deployment_id": "<string>",
"base_url": "<string>",
"secret": "<string>"
},
"size": "<string>",
"egress": "<string>",
"allowed_hosts": [
"<string>"
],
"env": {},
"secrets": [
"<string>"
],
"mcp_servers": [
{
"name": "<string>",
"url": "<string>",
"secret": "<string>"
}
],
"skills": [
"<string>"
],
"permissions": {
"default": "<string>",
"rules": [
{
"tool": "<string>",
"action": "<string>"
}
]
},
"idle_timeout_s": 123,
"description": "<string>"
}
'import requests
url = "https://api.veri.studio/v1/environments"
payload = {
"name": "<string>",
"harness": "<string>",
"model": {
"deployment_id": "<string>",
"base_url": "<string>",
"secret": "<string>"
},
"size": "<string>",
"egress": "<string>",
"allowed_hosts": ["<string>"],
"env": {},
"secrets": ["<string>"],
"mcp_servers": [
{
"name": "<string>",
"url": "<string>",
"secret": "<string>"
}
],
"skills": ["<string>"],
"permissions": {
"default": "<string>",
"rules": [
{
"tool": "<string>",
"action": "<string>"
}
]
},
"idle_timeout_s": 123,
"description": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
harness: '<string>',
model: {deployment_id: '<string>', base_url: '<string>', secret: '<string>'},
size: '<string>',
egress: '<string>',
allowed_hosts: ['<string>'],
env: {},
secrets: ['<string>'],
mcp_servers: [{name: '<string>', url: '<string>', secret: '<string>'}],
skills: ['<string>'],
permissions: {default: '<string>', rules: [{tool: '<string>', action: '<string>'}]},
idle_timeout_s: 123,
description: '<string>'
})
};
fetch('https://api.veri.studio/v1/environments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"object": "<string>",
"id": "<string>",
"name": "<string>",
"latest_version": 123,
"created_by": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"version": {
"object": "<string>",
"environment_id": "<string>",
"version": 123,
"spec": {
"harness": "<string>",
"model": {
"deployment_id": "<string>",
"base_url": "<string>",
"secret": "<string>"
},
"size": "<string>",
"egress": "<string>",
"allowed_hosts": [
"<string>"
],
"env": {},
"secrets": [
"<string>"
],
"mcp_servers": [
{
"name": "<string>",
"url": "<string>",
"secret": "<string>"
}
],
"skills": [
{
"name": "<string>",
"version": 123
}
],
"permissions": {
"default": "<string>",
"rules": [
{
"tool": "<string>",
"action": "<string>"
}
]
},
"idle_timeout_s": 123
},
"created_by": "<string>",
"created_at": "2023-11-07T05:31:56Z"
},
"description": "<string>"
}Authorizations
API key with the vk_ prefix. Create one from the dashboard.
Body
The environment spec as submitted. Also the body of
POST /v1/environments/{id}/versions.
[a-z0-9][a-z0-9_-]{0,63}, unique per workspace.
claude-code (the only harness today).
Where the harness sends model calls.
Show child attributes
Show child attributes
small | standard (default) | large.
restricted (default) | unrestricted.
Extra hostnames a restricted session may reach.
Plain environment variables for the harness.
Show child attributes
Show child attributes
Secret names injected as environment variables named after them (or attached per host when the secret has a scope_host).
Show child attributes
Show child attributes
Skill names, optionally pinned: name (latest) or name@3.
Show child attributes
Show child attributes
Seconds without input before the session snapshots and pauses (60 .. 21600, default 900).
Response
The environment with version 1
The latest version unless ?version= asked for another.
Show child attributes
Show child attributes
curl --request POST \
--url https://api.veri.studio/v1/environments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"harness": "<string>",
"model": {
"deployment_id": "<string>",
"base_url": "<string>",
"secret": "<string>"
},
"size": "<string>",
"egress": "<string>",
"allowed_hosts": [
"<string>"
],
"env": {},
"secrets": [
"<string>"
],
"mcp_servers": [
{
"name": "<string>",
"url": "<string>",
"secret": "<string>"
}
],
"skills": [
"<string>"
],
"permissions": {
"default": "<string>",
"rules": [
{
"tool": "<string>",
"action": "<string>"
}
]
},
"idle_timeout_s": 123,
"description": "<string>"
}
'import requests
url = "https://api.veri.studio/v1/environments"
payload = {
"name": "<string>",
"harness": "<string>",
"model": {
"deployment_id": "<string>",
"base_url": "<string>",
"secret": "<string>"
},
"size": "<string>",
"egress": "<string>",
"allowed_hosts": ["<string>"],
"env": {},
"secrets": ["<string>"],
"mcp_servers": [
{
"name": "<string>",
"url": "<string>",
"secret": "<string>"
}
],
"skills": ["<string>"],
"permissions": {
"default": "<string>",
"rules": [
{
"tool": "<string>",
"action": "<string>"
}
]
},
"idle_timeout_s": 123,
"description": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
harness: '<string>',
model: {deployment_id: '<string>', base_url: '<string>', secret: '<string>'},
size: '<string>',
egress: '<string>',
allowed_hosts: ['<string>'],
env: {},
secrets: ['<string>'],
mcp_servers: [{name: '<string>', url: '<string>', secret: '<string>'}],
skills: ['<string>'],
permissions: {default: '<string>', rules: [{tool: '<string>', action: '<string>'}]},
idle_timeout_s: 123,
description: '<string>'
})
};
fetch('https://api.veri.studio/v1/environments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"object": "<string>",
"id": "<string>",
"name": "<string>",
"latest_version": 123,
"created_by": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"version": {
"object": "<string>",
"environment_id": "<string>",
"version": 123,
"spec": {
"harness": "<string>",
"model": {
"deployment_id": "<string>",
"base_url": "<string>",
"secret": "<string>"
},
"size": "<string>",
"egress": "<string>",
"allowed_hosts": [
"<string>"
],
"env": {},
"secrets": [
"<string>"
],
"mcp_servers": [
{
"name": "<string>",
"url": "<string>",
"secret": "<string>"
}
],
"skills": [
{
"name": "<string>",
"version": 123
}
],
"permissions": {
"default": "<string>",
"rules": [
{
"tool": "<string>",
"action": "<string>"
}
]
},
"idle_timeout_s": 123
},
"created_by": "<string>",
"created_at": "2023-11-07T05:31:56Z"
},
"description": "<string>"
}
