Calimatic Connect|Documentation
PricingSign In

API Reference

Complete reference for the Connect API. Base URL: https://YOUR_DOMAIN/connect/v1

Interactive explorer

The spec below is auto-generated from the NestJS controllers and stays in sync with every release. Authorize once with your Bearer JWT to run requests directly against your workspace.

Loading interactive API explorer…

Prefer the full Swagger UI? Visit /api/docs on the API host.

Sign in to see your API key in the examples.

Authentication

All Connect API endpoints require authentication. You can authenticate using either method:

  • JWT Bearer token — pass your access token in the Authorization header
  • API key — pass your key in the x-api-key header
# Using JWT Bearer token
curl -H "Authorization: YOUR_JWT_TOKEN" \
https://YOUR_DOMAIN/connect/v1/providers
# Using API key
curl -H "x-api-key: YOUR_API_KEY" \
https://YOUR_DOMAIN/connect/v1/providers

List All Providers

Returns all 200+ supported providers with their metadata and capabilities.

GET /connect/v1/providers
# Example
curl -H "Authorization: YOUR_JWT_TOKEN" \
https://YOUR_DOMAIN/connect/v1/providers
# Response
[
{
"name": "meta_lead_ads",
"displayName": "Meta Lead Ads",
"category": "lead_generation",
"isAvailable": true,
"requiresOAuth": true,
"capabilities": ["oauth", "proxy", "webhook_receive", "lead_sync"]
}
]

Get Provider Details

Returns metadata for a single provider.

ParameterTypeDescription
:typepathProvider type string (e.g. meta_lead_ads)
GET /connect/v1/providers/:type
# Example
curl -H "Authorization: YOUR_JWT_TOKEN" \
https://YOUR_DOMAIN/connect/v1/providers/meta_lead_ads
# Response
{
"name": "meta_lead_ads",
"displayName": "Meta Lead Ads",
"category": "lead_generation",
"isAvailable": true,
"requiresOAuth": true,
"capabilities": ["oauth", "proxy", "webhook_receive", "lead_sync"]
}

Check Connection Status

Returns the current connection status for a provider.

ParameterTypeDescription
:typepathProvider type string
GET /connect/v1/providers/:type/status
# Example
curl -H "Authorization: YOUR_JWT_TOKEN" \
https://YOUR_DOMAIN/connect/v1/providers/meta_lead_ads/status
# Response
{
"status": "connected",
"connectedAt": "2026-01-15T10:30:00Z",
"metadata": { "pageName": "My Business Page" }
}

Connect Provider (API Key)

Connect an API-key-based provider by sending credentials directly. For OAuth providers, use the OAuth login flow instead.

ParameterTypeDescription
:typepathProvider type string
credentialsbodyObject with apiKey and optional apiSecret
POST /connect/v1/providers/:type/connect
# Example
curl -X POST -H "Authorization: YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"credentials": {"apiKey": "your-api-key", "apiSecret": "your-api-secret"}}' \
https://YOUR_DOMAIN/connect/v1/providers/sendgrid/connect
# Response
{
"success": true,
"connectionId": "conn_abc123"
}

Disconnect Provider

Disconnects a provider and revokes stored credentials.

ParameterTypeDescription
:typepathProvider type string
DELETE /connect/v1/providers/:type/disconnect
# Example
curl -X DELETE -H "Authorization: YOUR_JWT_TOKEN" \
https://YOUR_DOMAIN/connect/v1/providers/sendgrid/disconnect
# Response
{
"success": true
}

Create Webhook Subscription

Subscribe to webhook events from a provider.

ParameterTypeDescription
:typepathProvider type string
urlbodyYour webhook endpoint URL
eventsbody (optional)Array of event types to subscribe to
POST /connect/v1/webhooks/:type/subscribe
# Example
curl -X POST -H "Authorization: YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/webhook", "events": ["lead.created"]}' \
https://YOUR_DOMAIN/connect/v1/webhooks/meta_lead_ads/subscribe
# Response
{
"subscriptionId": "sub_xyz789",
"url": "https://example.com/webhook",
"createdAt": "2026-03-20T12:00:00Z"
}

Delete Webhook Subscription

Remove a webhook subscription.

ParameterTypeDescription
:typepathProvider type string
:idpathSubscription ID
DELETE /connect/v1/webhooks/:type/subscribe/:id
# Example
curl -X DELETE -H "Authorization: YOUR_JWT_TOKEN" \
https://YOUR_DOMAIN/connect/v1/webhooks/meta_lead_ads/subscribe/sub_xyz789
# Response
{
"success": true
}

List Webhook Subscriptions

Returns all active webhook subscriptions for a provider.

ParameterTypeDescription
:typepathProvider type string
GET /connect/v1/webhooks/:type/subscriptions
# Example
curl -H "Authorization: YOUR_JWT_TOKEN" \
https://YOUR_DOMAIN/connect/v1/webhooks/meta_lead_ads/subscriptions
# Response
[
{
"subscriptionId": "sub_xyz789",
"url": "https://example.com/webhook",
"events": ["lead.created"],
"createdAt": "2026-03-20T12:00:00Z"
}
]

Proxy API Call

Make an API call through Calimatic Connect to a connected provider. The proxy handles authentication, rate limiting, and audit logging automatically.

ParameterTypeDescription
:providerTypepathProvider type string
methodbodyHTTP method (GET, POST, PUT, DELETE)
pathbodyProvider API path
bodybody (optional)Request body to forward
headersbody (optional)Additional headers to forward
POST /connect/v1/proxy/:providerType
# Example
curl -X POST -H "Authorization: YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"method": "GET", "path": "/v21.0/me/adaccounts"}' \
https://YOUR_DOMAIN/connect/v1/proxy/meta_lead_ads
# Response (proxied from provider)
{
"data": [...]
}

Error Responses

All endpoints return consistent error shapes:

401 Unauthorized

{
"statusCode": 401,
"message": "Unauthorized"
}

403 Forbidden

{
"statusCode": 403,
"message": "Plan limit exceeded for providers"
}

404 Provider Not Found

{
"statusCode": 404,
"message": "Provider not found: unknown_provider"
}

429 Rate Limited

{
"statusCode": 429,
"message": "ThrottlerException: Too Many Requests"
}

Automation APIs

The endpoints below power the Zapier-style automation surface. All require a Bearer JWT and enforce Connect-local permission keys (see each section for the required key). Responses are JSON.

Flow templates

GET  /connect/v1/flow-templates                 # templates.view
GET  /connect/v1/flow-templates/:slug           # templates.view
POST /connect/v1/flow-templates/:slug/clone     # templates.write
     { "triggerConnectionId": "...", "name": "..." }

See Templates guide for clone semantics and plan limits.

Provider actions

GET  /providers/:providerType/actions                 # actions.view
POST /providers/:providerType/actions/:actionName     # actions.execute
     { ...inputs per action schema }

See Actions guide for the action contract and input schemas.

Flow triggers

GET    /connect/v1/flows/:flowId/triggers                     # triggers.view
POST   /connect/v1/flows/:flowId/triggers                     # triggers.write
       { "providerType", "triggerName", "kind", "connectionId", "config" }
DELETE /connect/v1/flows/:flowId/triggers/:subscriptionId     # triggers.write

See Triggers guide for webhook vs poll and cursor dedup.

Flow execution control

GET  /connect/v1/flows/:id/executions                              # flows.view
GET  /connect/v1/flows/:id/executions/:executionId/steps           # task_history.view
POST /connect/v1/flows/:id/executions/:executionId/replay          # flows.write
POST /connect/v1/flows/:id/test                                    # flows.write
     { ...triggerData }

Cross-flow task history

GET /connect/v1/task-history                                       # task_history.view
    ?page=1&status=failed&flowId=<uuid>

See Task History guide for filters and replay workflow.

Records

GET    /connect/v1/records                           # records.view
    ?resourceType=<type>&providerType=<provider>&search=<text>&page=<n>
GET    /connect/v1/records/summary                   # records.view
GET    /connect/v1/records/:id                       # records.view
DELETE /connect/v1/records/:id                       # records.write
POST   /connect/v1/records/:id/replay                # records.write
POST   /connect/v1/records/import                    # records.write

See Records guide for ingestion sources, replay semantics, and the record.to_table crosslink step.

Tables

GET    /connect/v1/tables                             # tables.view
POST   /connect/v1/tables                             # tables.write
GET    /connect/v1/tables/:slug                       # tables.view
PATCH  /connect/v1/tables/:slug                       # tables.write
DELETE /connect/v1/tables/:slug                       # tables.write
GET    /connect/v1/tables/:slug/rows                  # tables.view
POST   /connect/v1/tables/:slug/rows                  # tables.write
POST   /connect/v1/tables/:slug/rows/upsert           # tables.write
GET    /connect/v1/tables/:slug/rows/lookup           # tables.view
PATCH  /connect/v1/tables/:slug/rows/:rowId           # tables.write
DELETE /connect/v1/tables/:slug/rows/:rowId           # tables.write
POST   /connect/v1/tables/:slug/import                # tables.write
GET    /connect/v1/tables/:slug/export                # tables.view

See Tables guide for flow step kinds, templating into row data, and plan limits.