Recipes
curl -X GET "https://loading/v1/recipes" \ -H "X-Api-Key: string"[
{
"approval_rules": {},
"channel_config": {},
"channel_types": [],
"compliance_config": {},
"connection_requirements": [],
"created_at": "2019-08-24T14:15:22Z",
"data_access": {},
"description": "string",
"hosting_mode": "dedicated",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"is_active": true,
"is_platform_template": false,
"manifest_id": "string",
"mcp_servers": [],
"model_policy": {},
"module_config": {},
"name": "string",
"onboarding_flow_id": "5678512d-5385-4d91-b175-d714095019d8",
"rules_template_id": "2f58bba2-6f2c-4b37-bef9-a3182f3427ec",
"shared_node_capacity": 50,
"sidecars": [
null
],
"skills": [
null
],
"source_instance_id": "5f29be29-2815-47a9-b288-7f260493a004",
"system_prompt": "string",
"tenant_id": "34f5c98e-f430-457b-a812-92637d0c6fd0",
"trigger_templates": [],
"updated_at": "2019-08-24T14:15:22Z",
"voice_config": {},
"workflow_slugs": [
null
]
}
]{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}Create Recipe
In: header
Header Parameters
[][]"dedicated"^(dedicated|shared)$Custom manifest ID (e.g., leslie-agent)
[]length <= 20050Sidecar declarations [{name, port, path, health, runtime}]
[][]Response Body
curl -X POST "https://loading/v1/recipes" \ -H "X-Api-Key: string" \ -H "Content-Type: application/json" \ -d '{ "name": "string" }'{
"approval_rules": {},
"channel_config": {},
"channel_types": [],
"compliance_config": {},
"connection_requirements": [],
"created_at": "2019-08-24T14:15:22Z",
"data_access": {},
"description": "string",
"hosting_mode": "dedicated",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"is_active": true,
"is_platform_template": false,
"manifest_id": "string",
"mcp_servers": [],
"model_policy": {},
"module_config": {},
"name": "string",
"onboarding_flow_id": "5678512d-5385-4d91-b175-d714095019d8",
"rules_template_id": "2f58bba2-6f2c-4b37-bef9-a3182f3427ec",
"shared_node_capacity": 50,
"sidecars": [
null
],
"skills": [
null
],
"source_instance_id": "5f29be29-2815-47a9-b288-7f260493a004",
"system_prompt": "string",
"tenant_id": "34f5c98e-f430-457b-a812-92637d0c6fd0",
"trigger_templates": [],
"updated_at": "2019-08-24T14:15:22Z",
"voice_config": {},
"workflow_slugs": [
null
]
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}Ai Assist Recipe
Generate a draft recipe configuration from a natural-language description.
Calls a configured LLM to convert the user's description into structured recipe fields (name, system_prompt, skills, channels, integrations). The response is validated against the allowed skill/channel/integration catalogs — unknown slugs are filtered out.
In: header
Header Parameters
10 <= length <= 2000Response Body
curl -X POST "https://loading/v1/recipes/ai-assist" \ -H "X-Api-Key: string" \ -H "Content-Type: application/json" \ -d '{ "description": "stringstri" }'{
"channel_types": [],
"connection_requirements": [],
"description": "string",
"model_policy": {},
"name": "string",
"skills": [],
"system_prompt": "string"
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}Compose Agent Config Endpoint
Resolve a recipe + overrides into a full agent config.
Validates against tenant's approved primitives registry. Returns the resolved config and any validation violations (non-blocking warnings).
In: header
Header Parameters
uuidResponse Body
curl -X POST "https://loading/v1/recipes/compose" \ -H "X-Api-Key: string" \ -H "Content-Type: application/json" \ -d '{ "recipe_id": "fa7d15d4-7670-4586-a94b-5079ed028135" }'{
"resolved_config": {},
"template_name": "string",
"violations": []
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}Deploy From Recipe
Deploy a new instance from a recipe.
Runs preflight (composition + validation + connection check). If ready: enqueues provisioning with resolved recipe_config. Auto-wire side effects (channels, grants, rules, onboarding) happen inside the provisioning worker after Instance row creation.
Idempotent on idempotency_key: returns existing instance if already deployed.
In: header
Header Parameters
uuid"dedicated"^(dedicated|shared)$length <= 100uuidlength <= 505010 <= value <= 200uuidResponse Body
curl -X POST "https://loading/v1/recipes/deploy" \ -H "X-Api-Key: string" \ -H "Content-Type: application/json" \ -d '{ "customer_id": "160c0c4b-9966-4dc1-a916-8407eb10d74e", "hostname": "string", "recipe_id": "fa7d15d4-7670-4586-a94b-5079ed028135", "region_id": "string", "tier_id": "b1cd8bf0-c8eb-4fce-9cae-ebe5317fe7f6" }'{
"idempotency_key": "string",
"instance_id": "06587974-2dbe-4e10-8bf9-38cce0f5a366",
"missing_connections": [],
"ready": true,
"task_id": "string",
"template_name": "string",
"violations": []
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}Deploy Check
Pre-flight check before deploying from recipe.
Resolves the template + overrides, checks connection requirements against the customer's existing connections, validates against approved primitives. Returns whether the deployment is ready or what's missing.
In: header
Header Parameters
uuidlength <= 100uuidResponse Body
curl -X POST "https://loading/v1/recipes/deploy-check" \ -H "X-Api-Key: string" \ -H "Content-Type: application/json" \ -d '{ "customer_id": "160c0c4b-9966-4dc1-a916-8407eb10d74e", "hostname": "string", "recipe_id": "fa7d15d4-7670-4586-a94b-5079ed028135" }'{
"missing_connections": [],
"ready": true,
"resolved_config": {},
"template_name": "string",
"violations": []
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}Save Instance As Recipe
Capture a configured instance as a reusable recipe.
Extracts: system prompt, skills, voice config, channel types, workflow refs, data_access, model policy, MCP servers, compliance config, connection requirements.
Strips: customer_id, API keys, phone numbers, connection credentials, instance-specific IDs.
In: header
Path Parameters
uuidHeader Parameters
length <= 200Response Body
curl -X POST "https://loading/v1/recipes/save-from-instance/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "X-Api-Key: string" \ -H "Content-Type: application/json" \ -d '{ "name": "string" }'{
"approval_rules": {},
"channel_config": {},
"channel_types": [],
"compliance_config": {},
"connection_requirements": [],
"created_at": "2019-08-24T14:15:22Z",
"data_access": {},
"description": "string",
"hosting_mode": "dedicated",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"is_active": true,
"is_platform_template": false,
"manifest_id": "string",
"mcp_servers": [],
"model_policy": {},
"module_config": {},
"name": "string",
"onboarding_flow_id": "5678512d-5385-4d91-b175-d714095019d8",
"rules_template_id": "2f58bba2-6f2c-4b37-bef9-a3182f3427ec",
"shared_node_capacity": 50,
"sidecars": [
null
],
"skills": [
null
],
"source_instance_id": "5f29be29-2815-47a9-b288-7f260493a004",
"system_prompt": "string",
"tenant_id": "34f5c98e-f430-457b-a812-92637d0c6fd0",
"trigger_templates": [],
"updated_at": "2019-08-24T14:15:22Z",
"voice_config": {},
"workflow_slugs": [
null
]
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}Get Recipe
In: header
Path Parameters
uuidHeader Parameters
Response Body
curl -X GET "https://loading/v1/recipes/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "X-Api-Key: string"{
"approval_rules": {},
"channel_config": {},
"channel_types": [],
"compliance_config": {},
"connection_requirements": [],
"created_at": "2019-08-24T14:15:22Z",
"data_access": {},
"description": "string",
"hosting_mode": "dedicated",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"is_active": true,
"is_platform_template": false,
"manifest_id": "string",
"mcp_servers": [],
"model_policy": {},
"module_config": {},
"name": "string",
"onboarding_flow_id": "5678512d-5385-4d91-b175-d714095019d8",
"rules_template_id": "2f58bba2-6f2c-4b37-bef9-a3182f3427ec",
"shared_node_capacity": 50,
"sidecars": [
null
],
"skills": [
null
],
"source_instance_id": "5f29be29-2815-47a9-b288-7f260493a004",
"system_prompt": "string",
"tenant_id": "34f5c98e-f430-457b-a812-92637d0c6fd0",
"trigger_templates": [],
"updated_at": "2019-08-24T14:15:22Z",
"voice_config": {},
"workflow_slugs": [
null
]
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}Delete Recipe
In: header
Path Parameters
uuidHeader Parameters
Response Body
curl -X DELETE "https://loading/v1/recipes/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "X-Api-Key: string"{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}Update Recipe
In: header
Path Parameters
uuidHeader Parameters
Response Body
curl -X PUT "https://loading/v1/recipes/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "X-Api-Key: string" \ -H "Content-Type: application/json" \ -d '{}'{
"approval_rules": {},
"channel_config": {},
"channel_types": [],
"compliance_config": {},
"connection_requirements": [],
"created_at": "2019-08-24T14:15:22Z",
"data_access": {},
"description": "string",
"hosting_mode": "dedicated",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"is_active": true,
"is_platform_template": false,
"manifest_id": "string",
"mcp_servers": [],
"model_policy": {},
"module_config": {},
"name": "string",
"onboarding_flow_id": "5678512d-5385-4d91-b175-d714095019d8",
"rules_template_id": "2f58bba2-6f2c-4b37-bef9-a3182f3427ec",
"shared_node_capacity": 50,
"sidecars": [
null
],
"skills": [
null
],
"source_instance_id": "5f29be29-2815-47a9-b288-7f260493a004",
"system_prompt": "string",
"tenant_id": "34f5c98e-f430-457b-a812-92637d0c6fd0",
"trigger_templates": [],
"updated_at": "2019-08-24T14:15:22Z",
"voice_config": {},
"workflow_slugs": [
null
]
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}