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

  1. Pick the Publish blog post template

    Clicking the template fills in name, description, method (POST), a working bodyTemplate, and parameter schema. You only need to fill in the URL.

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

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

  4. 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_post directly.

Schema

Every custom API has the following fields:

  • name — snake_case identifier, unique per deployment
  • description — plain-English description; drives the LLM's tool selection
  • method — GET / POST / PATCH / PUT / DELETE
  • url — target URL with optional {{param}} substitution
  • headers — static headers always sent
  • authType — none / bearer / api-key-header / basic / query-param
  • authValue — 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)
  • BearerAuthorization: Bearer <value>
  • API key in headerX-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

Iris also reads from this registry. If you register tools named 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.