Skip to Content
APIIntegrations

Integrations API

Manage integrations for notifications and external services.

Supported Integration Types

TypeDescription
discordDiscord webhook notifications
slackSlack workspace integration
telegramTelegram bot messaging
sendgridEmail via SendGrid
resendEmail via Resend
safeSafe multisig API integration
webhookCustom HTTP webhooks
web3Web3 wallet connections
ai-gatewayAI service integrations

List Integrations

GET /api/integrations

Query Parameters

ParameterTypeDescription
typestringFilter by integration type

Response

{ "data": [ { "id": "int_123", "name": "My Discord", "type": "discord", "isManaged": false, "address": null, "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z" } ] }

Note: Integration config is excluded from list responses for security.

address is the canonical EIP-55 checksummed wallet address for web3 integrations, and null for every other type. API consumers must prefer it over name when the value is destined for an on-chain call such as onBehalfOf.

Get Integration

GET /api/integrations/{integrationId}

Returns the integration’s details and its non-credential configuration. Credential values, such as an API key, a bot token or a database password, are never returned by any endpoint. Reference an integration by its id and the platform supplies the credential when a workflow runs.

Create Integration

POST /api/integrations

Request Body

{ "name": "My Slack Integration", "type": "slack", "config": { "webhookUrl": "https://hooks.slack.com/..." } }

Update Integration

PUT /api/integrations/{integrationId}

Request Body

{ "name": "Updated Name", "config": { "webhookUrl": "https://new-webhook-url..." } }

Omit a credential field, or send it empty, to keep the stored value. Send a value to replace it.

Delete Integration

DELETE /api/integrations/{integrationId}

Test Integration

POST /api/integrations/{integrationId}/test

Tests the integration credentials and connectivity.

Request Body (Optional)

{ "configOverrides": { "webhookUrl": "https://test-webhook-url..." } }

The configOverrides field allows testing with temporary configuration values without modifying the saved integration.

Response

{ "status": "success", "message": "Integration test successful" }