Skip to main content
GET
/
integrations
List all integrations
curl --request GET \
  --url https://api.getmembrane.com/integrations \
  --header 'Authorization: Bearer <token>'
{
  "items": [
    {
      "name": "<string>",
      "id": "<string>",
      "uuid": "<string>",
      "key": "<string>",
      "description": "<string>",
      "meta": {},
      "state": "BUILDING",
      "errors": [
        {
          "message": "<string>",
          "type": "bad_request",
          "key": "<string>",
          "data": {},
          "stack": {},
          "causedByError": "<unknown>",
          "logs": [
            {}
          ]
        }
      ],
      "revision": "<string>",
      "createdAt": "<string>",
      "updatedAt": "<string>",
      "archivedAt": "<string>",
      "isDeactivated": true,
      "isReadOnly": true,
      "logoUri": "<string>",
      "connectorId": "<string>",
      "connectorVersion": "<string>",
      "oAuthCallbackUri": "<string>",
      "parameters": {},
      "hasMissingParameters": true,
      "hasDocumentation": true,
      "hasOperations": true,
      "operationsCount": 123,
      "hasData": true,
      "dataCollectionsCount": 123,
      "hasEvents": true,
      "eventsCount": 123,
      "hasGlobalWebhooks": true,
      "hasUdm": true,
      "isTest": true,
      "externalAppId": "<string>",
      "authType": "integration-app-token",
      "optionsConfig": {},
      "connection": {
        "id": "<string>",
        "name": "<string>",
        "userId": "<string>",
        "createdAt": "<string>",
        "updatedAt": "<string>",
        "tenantId": "<string>",
        "key": "<string>",
        "isTest": true,
        "connected": true,
        "disconnected": true,
        "isDefunct": true,
        "state": "BUILDING",
        "errors": [
          {
            "message": "<string>",
            "type": "bad_request",
            "key": "<string>",
            "data": {},
            "stack": {},
            "causedByError": "<unknown>",
            "logs": [
              {}
            ]
          }
        ],
        "requestError": {
          "message": "<string>",
          "type": "bad_request",
          "key": "<string>",
          "data": {},
          "stack": {},
          "causedByError": "<unknown>",
          "logs": [
            {}
          ]
        },
        "error": {
          "message": "<string>",
          "type": "bad_request",
          "key": "<string>",
          "data": {},
          "stack": {},
          "causedByError": "<unknown>",
          "logs": [
            {}
          ]
        },
        "integrationId": "<string>",
        "connectorId": "<string>",
        "externalAppId": "<string>",
        "connectorVersion": "<string>",
        "authOptionKey": "<string>",
        "lastActiveAt": "<string>",
        "nextCredentialsRefreshAt": "<string>",
        "nextRetryTimestamp": "<string>",
        "retryAttempts": 123,
        "canTest": true,
        "canRefreshCredentials": true,
        "archivedAt": "<string>",
        "isDeactivated": true,
        "meta": {},
        "buildingAgentSessionId": "<string>",
        "clientAction": {
          "type": "connect",
          "description": "<string>",
          "uiUrl": "<string>",
          "agentInstructions": "<string>"
        }
      },
      "spec": {},
      "appUri": "<string>",
      "isConnected": true
    }
  ],
  "cursor": "<string>"
}
GET /integrations returns the workspace’s integration catalog. Beyond the user’s own integrations, the response can include auto-generated entries discovered from connectors, external apps, and the public web — what we call “infinite integrations”.

Sources

SourceWhen it’s included
Workspace integrationsAlways.
ConnectorsWorkspace setting autoGenerateIntegrationsFromConnectors, or connectors=1, or all=1.
External appsWorkspace setting autoGenerateIntegrationsFromExternalApps, or externalApps=1, or all=1.
Web searchWorkspace setting autoGenerateIntegrationsFromWebSearch, or websearch=1, or all=1. Requires a non-empty search.
all=1 force-enables every source. Auto-generated items have isReadOnly: true and a synthetic key (e.g. ~connector.membrane, ~app.membrane, ~search.membrane--getmembrane_com) that you can pass to any endpoint accepting an integration selector.

Deduplication

The same canonical app can surface from more than one source — a connector for Membrane, an external app at https://getmembrane.com, and a web-search hit for the same brand all referring to the same product. The endpoint collapses these into a single row.
Pages may be smaller than limit. Dedup runs after pagination, so a request for limit=20 can return fewer items when duplicates are dropped. The cursor is unaffected; keep paginating until the response has no cursor.
Set the search query parameter to filter the catalog. When the web-search source is enabled, search dispatches a single web-search call per request and caches results for 24h at the org level.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

limit
integer

Maximum number of items to return (1-1000)

Required range: 1 <= x <= 1000
cursor
string

Pagination cursor from a previous response

Text search query to filter results

connectorId
string
includeArchived
boolean
appUuid
string
connectors
number
externalApps
number
websearch
number
all
number

Response

200 - application/json
items
object[]
required
cursor
string