spec must follow.
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /v1/integrations | List integrations |
POST | /v1/integrations | Create an integration |
GET | /v1/integrations/{integration_id} | Retrieve an integration |
PATCH | /v1/integrations/{integration_id} | Update an integration |
DELETE | /v1/integrations/{integration_id} | Delete an integration |
POST | /v1/integrations/{integration_id}/transfer | Copy / move to another org |
GET | /v1/integrations/{integration_id}/versions | List prior configuration revisions |
POST | /v1/integrations/test-request | Probe an integration endpoint from a sandbox |
Integration object
| Field | Type | Description |
|---|---|---|
id | UUID | Integration id |
display_name | string | 1–255 chars |
spec | object | OpenAI-style function tool schema (see Function Tools) |
endpoint_url | string | Outbound HTTP URL the tool calls. Empty string when the integration is still being configured |
endpoint_method | string | GET, POST, PUT, PATCH, or DELETE. Defaults to POST |
headers | array | List of {key, value} pairs sent with every tool invocation |
wizard_input | string | Free-form text from the “describe this integration” wizard; kept for audit only |
validation_status | string | untested, validated, error — updated by test-request |
created_at, updated_at | timestamp | ISO 8601 UTC |
List integrations
Create an integration
Request fields
| Field | Type | Required | Description |
|---|---|---|---|
display_name | string | yes | 1–255 chars |
spec | object | yes | Function-tool JSON schema. spec.type must be "function" |
endpoint_url | string | no | HTTPS URL; defaults to empty string if omitted |
endpoint_method | string | no | GET, POST (default), PUT, PATCH, DELETE |
headers | array | no | [{key, value}] pairs |
wizard_input | string | no | Free-form notes |
201 Created with the new Integration object in
validation_status="untested".
Retrieve / update / delete
GET, PATCH, and DELETE behave conventionally. PATCH accepts any
subset of the create fields. Deleting an integration removes it from
every agent it was linked to.
Transfer an integration
| Field | Type | Required | Description |
|---|---|---|---|
target_org_id | integer | yes | |
mode | string | yes | copy or move |
name | string | no | Override the copy’s display name |
201 Created for copy / 200 OK for move:
Version history
{count, results[]} with each result containing id, revision,
created_by, snapshot, and changed_fields.
Test integration request
Execute a one-off HTTP request against the integration endpoint (from ThunderPhone’s servers) to validate connectivity before linking the integration to an agent. The sandbox enforces SSRF guards — no requests to localhost or private IP ranges.| Field | Type | Required | Description |
|---|---|---|---|
url | string | yes | HTTPS; http:// is only allowed for localhost during local dev |
method | string | yes | GET, POST, PUT, PATCH, DELETE |
headers | object | no | Header-name → value map |
body | string | object | no | For POST/PUT/PATCH; JSON body or raw string |
timeout_seconds | integer | no | 1–20 (default 10) |
Response
400 with code="url_not_allowed".
Related
Agents
Attach integrations to agents via
integration_ids.Function Tools
The JSON schema shape for
spec.