HydraCore
API by router

Recipes

List Recipes

GET
/v1/recipes
AuthorizationBearer <token>

In: header

Header Parameters

X-Api-Key?X-Api-Key

Response Body

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

POST
/v1/recipes
AuthorizationBearer <token>

In: header

Header Parameters

X-Api-Key?X-Api-Key
approval_rules?Approval Rules
channel_config?Channel Config
channel_types?Channel Types
Default[]
compliance_config?Compliance Config
connection_requirements?Connection Requirements
Default[]
data_access?Data Access
description?Description
hosting_mode?Hosting Mode
Default"dedicated"
Match^(dedicated|shared)$
manifest_id?Manifest Id

Custom manifest ID (e.g., leslie-agent)

mcp_servers?Mcp Servers
Default[]
model_policy?Model Policy
module_config?Module Config
nameName
Lengthlength <= 200
onboarding_flow_id?Onboarding Flow Id
rules_template_id?Rules Template Id
shared_node_capacity?Shared Node Capacity
Default50
sidecars?Sidecars

Sidecar declarations [{name, port, path, health, runtime}]

skills?Skills
Default[]
system_prompt?System Prompt
trigger_templates?Trigger Templates
voice_config?Voice Config
workflow_slugs?Workflow Slugs
Default[]

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.

POST
/v1/recipes/ai-assist
AuthorizationBearer <token>

In: header

Header Parameters

X-Api-Key?X-Api-Key
descriptionDescription
Length10 <= length <= 2000

Response 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).

POST
/v1/recipes/compose
AuthorizationBearer <token>

In: header

Header Parameters

X-Api-Key?X-Api-Key
instance_overrides?Instance Overrides
recipe_idRecipe Id
Formatuuid

Response 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.

POST
/v1/recipes/deploy
AuthorizationBearer <token>

In: header

Header Parameters

X-Api-Key?X-Api-Key
customer_idCustomer Id
Formatuuid
hosting_mode?Hosting Mode
Default"dedicated"
Match^(dedicated|shared)$
hostnameHostname
Lengthlength <= 100
idempotency_key?Idempotency Key
instance_overrides?Instance Overrides
manifest_id?Manifest Id
recipe_idRecipe Id
Formatuuid
region_idRegion Id
Lengthlength <= 50
shared_node_capacity?Shared Node Capacity
Default50
Range10 <= value <= 200
tier_idTier Id
Formatuuid

Response 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.

POST
/v1/recipes/deploy-check
AuthorizationBearer <token>

In: header

Header Parameters

X-Api-Key?X-Api-Key
customer_idCustomer Id
Formatuuid
hostnameHostname
Lengthlength <= 100
instance_overrides?Instance Overrides
recipe_idRecipe Id
Formatuuid

Response 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.

POST
/v1/recipes/save-from-instance/{instance_id}
AuthorizationBearer <token>

In: header

Path Parameters

instance_idInstance Id
Formatuuid

Header Parameters

X-Api-Key?X-Api-Key
description?Description
nameName
Lengthlength <= 200

Response 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

GET
/v1/recipes/{template_id}
AuthorizationBearer <token>

In: header

Path Parameters

template_idTemplate Id
Formatuuid

Header Parameters

X-Api-Key?X-Api-Key

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

DELETE
/v1/recipes/{template_id}
AuthorizationBearer <token>

In: header

Path Parameters

template_idTemplate Id
Formatuuid

Header Parameters

X-Api-Key?X-Api-Key

Response Body

curl -X DELETE "https://loading/v1/recipes/497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "X-Api-Key: string"
Empty
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Update Recipe

PUT
/v1/recipes/{template_id}
AuthorizationBearer <token>

In: header

Path Parameters

template_idTemplate Id
Formatuuid

Header Parameters

X-Api-Key?X-Api-Key
approval_rules?Approval Rules
channel_config?Channel Config
channel_types?Channel Types
compliance_config?Compliance Config
connection_requirements?Connection Requirements
data_access?Data Access
description?Description
hosting_mode?Hosting Mode
is_active?Is Active
manifest_id?Manifest Id
mcp_servers?Mcp Servers
model_policy?Model Policy
module_config?Module Config
name?Name
onboarding_flow_id?Onboarding Flow Id
rules_template_id?Rules Template Id
shared_node_capacity?Shared Node Capacity
sidecars?Sidecars
skills?Skills
system_prompt?System Prompt
trigger_templates?Trigger Templates
voice_config?Voice Config
workflow_slugs?Workflow Slugs

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"
    }
  ]
}