Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.outlit.ai/llms.txt

Use this file to discover all available pages before exploring further.

Every integration request requires an Outlit API key:
Authorization: Bearer ok_...

Provider IDs

Use the currently enabled public provider IDs below when calling integration routes.
Provider IDNameCategoryDirect config support
hubspotHubSpotCRMBrowser session
attioAttioCRMBrowser session
slackSlackCommunicationBrowser session
firefliesFireflies.aiCallsapiKey
granolaGranolaCallsapiKey
google-calendarGoogle CalendarCalendarBrowser session
google-mailGmailCommunicationBrowser session
posthogPostHogAnalyticsapiKey, region, projectId
stripeStripeBillingapiKey
supabaseSupabase AuthAnalyticsprojectUrl, serviceRoleKey
clerkClerkAnalyticssecretKey
pylonPylonSupportapiToken
Use google-mail for direct API requests. The CLI also accepts gmail as a convenience alias.

List Integrations

GET https://app.outlit.ai/api/integrations
connectedOnly
boolean
default:"false"
When true, only returns currently connected integrations.

Example

curl https://app.outlit.ai/api/integrations?connectedOnly=true \
  -H "Authorization: Bearer ok_your_api_key"

Response

{
  "items": [
    {
      "id": "stripe",
      "name": "Stripe",
      "category": "billing",
      "status": "connected",
      "connectionId": "stripe-org_123",
      "lastDataReceivedAt": "2026-04-10T18:22:11.000Z",
      "syncStatus": "SUCCESS",
      "errorMessage": null
    }
  ]
}

Get Setup Capabilities

GET https://app.outlit.ai/api/integrations/capabilities
provider
string
Optional public provider ID or CLI alias. When omitted, returns all provider capabilities.
Capabilities tell agents which setup mode to use, which credential fields are required, and which post-connect steps still need follow-up.

Response

{
  "provider": {
    "cliName": "pylon",
    "providerId": "pylon",
    "setupMode": "direct_api_key",
    "credentialType": "api_token",
    "requiredFields": [{ "key": "apiToken", "label": "API Token", "secret": true }],
    "commands": ["outlit integrations setup pylon"],
    "postConnectSteps": [
      {
        "id": "webhook-setup",
        "required": true,
        "supported": true,
        "command": "outlit integrations setup pylon webhooks"
      }
    ]
  }
}

Run Provider Setup Step

POST https://app.outlit.ai/api/integrations/setup-step
Use this after a provider is connected when postConnectSteps reports a supported follow-up such as CRM mappings or webhooks.

Request Body

{
  "provider": "hubspot",
  "step": "mappings",
  "config": {
    "mappings": []
  }
}
provider
string
required
Public provider ID from setup capabilities.
step
string
required
Follow-up step token, such as mappings or webhooks.
config
object
Optional step-specific config. CRM mappings use { "mappings": [...] }; Stripe webhooks can use { "webhookSecret": "whsec_..." }; Fireflies webhooks can use { "webhookSecret": "..." }.
When config is omitted, CRM mapping setup returns available pipelines and a config_required response. Webhook setup returns the URL, headers/secrets, required events, and status needed for manual provider setup without creating a browser session.

Connect Integration

POST https://app.outlit.ai/api/integrations/connect

Request Body

{
  "provider": "posthog",
  "config": {
    "apiKey": "phx_...",
    "region": "us",
    "projectId": "12345"
  }
}
provider
string
required
Public provider ID from the provider table.
config
object
Required for direct credential connections. Omit this field to create a browser-auth connection session.

Direct Credential Response

{
  "connected": true,
  "connectionId": "posthog-org_123",
  "alreadyConnected": false
}

Browser Session Response

{
  "sessionId": "0f6d0f76-1dc7-4c5c-bba5-6685f74a5e3a",
  "connectUrl": "https://app.outlit.ai/integrations",
  "alreadyConnected": false
}
Open connectUrl in a browser where the user can complete the provider connection, then poll the connect status route with sessionId. Direct credential setup, such as Pylon API-token setup, returns the direct credential response and does not create a session ID.

Errors

Invalid providers or malformed JSON return 400. Connection-limit failures return 403:
{
  "error": "Your plan has reached its integration connection limit.",
  "code": "plan_connection_limit_exceeded",
  "feature": "integration_connections",
  "plan": "free",
  "currentConnections": 3,
  "limit": 3
}

Poll Connection Status

GET https://app.outlit.ai/api/integrations/connect/status
sessionId
string
required
Session ID returned by POST /api/integrations/connect.

Response

{
  "status": "pending",
  "provider": "slack"
}
status is one of pending, connected, failed, or expired. Failed responses may include error.

Get Sync Status

GET https://app.outlit.ai/api/integrations/sync-status
provider
string
required
Public provider ID from the provider table.

Response

{
  "provider": "stripe",
  "name": "Stripe",
  "category": "billing",
  "status": "connected",
  "syncs": [
    {
      "model": "StripeCustomer",
      "status": "SUCCESS",
      "lastSyncedAt": "2026-04-10T18:22:11.000Z",
      "errorMessage": null
    }
  ]
}
When the provider is valid but not connected, the route returns:
{
  "provider": "stripe",
  "name": "Stripe",
  "category": "billing",
  "status": "not_connected",
  "syncs": []
}