When a tool isn't in the catalogue, build your own. A custom integration is a user-defined HTTP connector: you set a base URL and an auth method, then describe one or more actions the AI and your workflows can call — each with its own method, path, body template, and response mapping.
Open Integrations from the navigation rail and switch to the Custom Actions tab. Admins manage custom integrations there with a full action-contract editor; once saved, they behave like any other connected tool.
Every custom integration starts with a base URL (e.g. https://api.acme.com/v1) and a connection method. Secrets are stored encrypted, scoped to your organization, and never returned in plain text after you save them.
| Auth method | How it's sent |
|---|---|
Bearer tokenbearer | Sends an Authorization: Bearer <token> header. |
API keyapi_key | Sends the key in a header you name (e.g. X-Api-Key). |
Basic authbasic | Base64-encodes a username and password / secret. |
Service accountservice_account | A service-account credential for server-to-server access. |
Nonenone | No authentication — for public or pre-authorised endpoints. |
Each action is one HTTP call described declaratively. The action-contract editor captures everything the executor needs to call the API and shape its response:
| Part of an action | What it's for |
|---|---|
| Method | GET, POST, PUT, PATCH, or DELETE. |
| Path | Appended to the base URL. Supports {{placeholders}} from the action inputs. |
| Body template | A request body with {{placeholders}} substituted from the action inputs (for write methods). |
| Response mapping | Maps fields out of the JSON response into a clean, predictable output shape. |
| Read / write | Marks the action as read-only or as a write (create/update/delete). |
| Requires confirmation | When on, the AI pauses for your approval before running the action in chat. |
Give it a clear name and description so the AI knows when to use it.
Choose GET / POST / PUT / PATCH / DELETE and the path, using {{placeholders}} for inputs.
For write methods, write a body template with {{placeholders}} the executor fills from the inputs.
Pull the fields you care about out of the JSON response into a clean output shape.
Mark create/update/delete actions as writes and decide whether they need confirmation in chat.
To protect both your APIs and the platform, custom actions are rate limited to 10 calls per minute, per action (a sliding one-minute window). Calls beyond that are rejected with a rate-limit error until the window clears.
Mark an action that creates, updates, or deletes data as a write and turn on requires confirmation so the AI pauses for your approval before running it in chat — the same safety gate the standard write actions use.
Once defined, a custom integration is reachable everywhere a tool can be:
# or invoking it as a tool.Custom integrations are how you connect an internal service, a niche SaaS, or a partner API. Define the action and its contract once, then reuse it across chat and workflows. For the one-click providers, see Standard integrations.