Custom APIs
Register your own HTTP endpoints — every agent on the deployment can call them by name.
Custom APIs let you wire your internal systems (CMS, CRM, billing, inventory, helpdesk, anything) into Delegated without writing extension code. Once registered, every agent can invoke the endpoint by name. Open Tools → Custom APIs in HQ.
Example: publish a post to your CMS
Pick the Publish blog post template
Clicking the template fills in
name,description,method(POST), a workingbodyTemplate, and parameter schema. You only need to fill in the URL.Paste your CMS API URL
E.g.
https://your-cms.com/api/posts. Configure auth (bearer / API key header / basic / query-param / none) and paste the credential.Test endpoint
Click Test endpoint. We POST a sample payload from our server (no browser CORS issues) and show you the status + first 2KB of the response inline.
Save and use
On save, the connector pushes the new tool to your VM within seconds. From the next conversation, ask any agent (e.g. Sage or Blaze) to publish — they'll call
publish_blog_postdirectly.
Schema
Every custom API has the following fields:
name— snake_case identifier, unique per deploymentdescription— plain-English description; drives the LLM's tool selectionmethod— GET / POST / PATCH / PUT / DELETEurl— target URL with optional{{param}}substitutionheaders— static headers always sentauthType— none / bearer / api-key-header / basic / query-paramauthValue— credential (stored server-side, never round-tripped to browser)bodyTemplate— JSON template for POST/PATCH/PUT (supports param substitution)parameters— parameter definitions for the LLM
Auth options
- None — for public/unsecured endpoints (use a hard-to-guess URL)
- Bearer —
Authorization: Bearer <value> - API key in header —
X-API-Key: <value>by default; customize the header name - Basic — store as
user:pass, sent as Base64 - Query param —
?api_key=<value>by default; customize the param name
How the agent invokes it
Internally the agent uses one tool — CUSTOM_API_CALL — and passes the registered endpoint name + args:
CUSTOM_API_CALL({
endpoint: "publish_blog_post",
params: { title: "...", content: "...", tags: "..." }
})Your endpoint sees the request with the configured method/headers/auth/body — agent code is identical for any registered endpoint.
The receptionist booking override
check_availability and book_meeting, Iris uses your endpoints instead of the built-in calendar. The Bookings sub-tab switches to "managed externally" — your CRM stays the source of truth.