> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List integrations

> <Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Retrieves a list of the [integrations](/Integrations/Using-integrations) in a [workspace](/documentation/account-and-billing/about-workspaces).

Use this method to view:

- Services an app connects to, and how many app users linked their own accounts.
- [Connectors](/Enterprise/workspace-connectors) set up for the whole workspace.
- [Custom integrations](/documentation/integrations/using-custom-integrations) built for the workspace.
- [Model Context Protocol](/documentation/account-and-billing/setting-up-a-custom-mcp) (MCP) servers connected to an app.
- Integrations that members set up for their own builder sessions.

To call this method, your API key must include the `compliance:inventory:read` [scope](/developers/references/compliance-api/get-started/authentication#scopes).



## OpenAPI

````yaml /developers/references/compliance-api/compliance-openapi.json get /{workspace_id}/integrations
openapi: 3.1.0
info:
  title: Base44 Compliance API
  description: >

    Read-only API for security partners to review the security configuration of
    a Base44 workspace.


    The API reports what exists in a workspace and how it's configured. It
    doesn't report activity. To review activity, use the Audit Logs API.


    The Compliance API is available for Enterprise workspaces only. To get
    started, see the
    [overview](/developers/references/compliance-api/get-started/overview).
  version: 1.0.0
servers:
  - url: https://app.base44.com/api/v1/compliance
    description: Compliance API
security:
  - ApiKeyAuth: []
    PartnerTokenAuth: []
tags:
  - name: compliance
    description: Read workspace configuration, inventory, and security posture.
paths:
  /{workspace_id}/integrations:
    get:
      tags:
        - compliance
      summary: List integrations
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Retrieves a list of the [integrations](/Integrations/Using-integrations)
        in a [workspace](/documentation/account-and-billing/about-workspaces).


        Use this method to view:


        - Services an app connects to, and how many app users linked their own
        accounts.

        - [Connectors](/Enterprise/workspace-connectors) set up for the whole
        workspace.

        - [Custom
        integrations](/documentation/integrations/using-custom-integrations)
        built for the workspace.

        - [Model Context
        Protocol](/documentation/account-and-billing/setting-up-a-custom-mcp)
        (MCP) servers connected to an app.

        - Integrations that members set up for their own builder sessions.


        To call this method, your API key must include the
        `compliance:inventory:read`
        [scope](/developers/references/compliance-api/get-started/authentication#scopes).
      operationId: list_integrations__workspace_id__integrations_get
      parameters:
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            description: >-
              Workspace ID. Learn more about how to [retrieve your workspace
              ID](/developers/references/compliance-api/get-started/authentication#workspace-id).
            title: Workspace Id
          description: >-
            Workspace ID. Learn more about how to [retrieve your workspace
            ID](/developers/references/compliance-api/get-started/authentication#workspace-id).
          example: 67f2c8e01a3b5d004e92d7a1
        - name: cursor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Cursor for the next page. Pass the `next_cursor` value from the
              previous response back unchanged. Don't send `limit` with it,
              because the cursor already carries the limit. Cursors are valid
              for 24 hours, and a cursor from a different workspace isn't valid.
              Sending `limit` with a cursor, or an invalid cursor, returns a
              `400` error.
            title: Cursor
          description: >-
            Cursor for the next page. Pass the `next_cursor` value from the
            previous response back unchanged. Don't send `limit` with it,
            because the cursor already carries the limit. Cursors are valid for
            24 hours, and a cursor from a different workspace isn't valid.
            Sending `limit` with a cursor, or an invalid cursor, returns a `400`
            error.
          example: gAAAAABn7vJ...
        - name: limit
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 1000
                minimum: 1
              - type: 'null'
            description: >-
              Number of items per page. The maximum is 1000. Don't send it with
              `cursor`, because the cursor already carries the limit.


              Default: 100.
            title: Limit
          description: >-
            Number of items per page. The maximum is 1000. Don't send it with
            `cursor`, because the cursor already carries the limit.


            Default: 100.
          example: 100
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/CompliancePage_Annotated_Union_ComplianceAppConnection__ComplianceWorkspaceConnector__ComplianceCustomIntegration__ComplianceMcpConnection__ComplianceMemberMcpConnection__ComplianceUserWorkspaceConnection___FieldInfo_annotation_NoneType__required_True__discriminator__kind____
        '400':
          description: >-
            The request is invalid, for example a parameter is malformed or the
            `cursor` is invalid or expired. The error `type` is
            `invalid_request_error`. See [error
            codes](/developers/references/compliance-api/get-started/error-codes).
          content:
            application/json:
              examples:
                invalid_request_error:
                  summary: invalid_request_error
                  value:
                    error:
                      type: invalid_request_error
                      message: The request is invalid.
              schema:
                $ref: '#/components/schemas/ComplianceErrorResponse'
        '401':
          description: >-
            A credential failed. The workspace API key is missing, unknown, or
            disabled, or your signed token is missing or Base44 can't verify it
            (`partner_key_required`). Check the `code` to see which credential
            to fix. Don't ask the workspace admin to create a new key for
            `partner_key_required`. The error `type` is `authentication_error`.
            See [error
            codes](/developers/references/compliance-api/get-started/error-codes).
          content:
            application/json:
              examples:
                authentication_error:
                  summary: authentication_error
                  value:
                    error:
                      type: authentication_error
                      message: Invalid workspace API key.
                partner_key_required:
                  summary: partner_key_required
                  value:
                    error:
                      type: authentication_error
                      message: >-
                        Missing or invalid compliance partner assertion in the
                        Authorization header. The workspace API key is sent
                        separately and is not the credential at fault here.
                      code: partner_key_required
              schema:
                $ref: '#/components/schemas/ComplianceErrorResponse'
        '402':
          description: >-
            The workspace's plan doesn't include the Compliance API, or its
            subscription has lapsed (`plan_not_included`). The error `type` is
            `permission_error`. See [error
            codes](/developers/references/compliance-api/get-started/error-codes).
          content:
            application/json:
              examples:
                plan_not_included:
                  summary: plan_not_included
                  value:
                    error:
                      type: permission_error
                      message: This API key is not permitted to perform that request.
                      code: plan_not_included
              schema:
                $ref: '#/components/schemas/ComplianceErrorResponse'
        '403':
          description: >-
            The key doesn't have the scope the method needs (`missing_scope`),
            the key belongs to a different workspace (`workspace_mismatch`), the
            Compliance API isn't enabled for the workspace
            (`feature_not_enabled`), or Base44 suspended your partner
            registration (`partner_not_approved`). The error `type` is
            `permission_error`. See [error
            codes](/developers/references/compliance-api/get-started/error-codes).
          content:
            application/json:
              examples:
                missing_scope:
                  summary: missing_scope
                  value:
                    error:
                      type: permission_error
                      message: >-
                        This API key is not permitted to perform that request.
                        Needed: [compliance:members:read]
                      code: missing_scope
                      required_scope: compliance:members:read
                workspace_mismatch:
                  summary: workspace_mismatch
                  value:
                    error:
                      type: permission_error
                      message: API key does not belong to this workspace
                      code: workspace_mismatch
                feature_not_enabled:
                  summary: feature_not_enabled
                  value:
                    error:
                      type: permission_error
                      message: The Compliance API is not enabled for this workspace.
                      code: feature_not_enabled
                partner_not_approved:
                  summary: partner_not_approved
                  value:
                    error:
                      type: permission_error
                      message: >-
                        This compliance partner is not approved to call the
                        Compliance API. Contact Base44; the customer cannot
                        grant this.
                      code: partner_not_approved
              schema:
                $ref: '#/components/schemas/ComplianceErrorResponse'
        '404':
          description: >-
            The workspace doesn't exist. The error `type` is `not_found_error`.
            See [error
            codes](/developers/references/compliance-api/get-started/error-codes).
          content:
            application/json:
              examples:
                not_found_error:
                  summary: not_found_error
                  value:
                    error:
                      type: not_found_error
                      message: Not found.
              schema:
                $ref: '#/components/schemas/ComplianceErrorResponse'
        '429':
          description: >-
            The workspace sent too many requests. Wait the number of seconds in
            the `retry-after` header, then retry with a newly signed
            authentication token. The error `type` is `rate_limit_error`. See
            [rate
            limits](/developers/references/compliance-api/get-started/rate-limits).
          content:
            application/json:
              examples:
                rate_limit_error:
                  summary: rate_limit_error
                  value:
                    error:
                      type: rate_limit_error
                      message: >-
                        Rate limit exceeded. Retry after the interval in the
                        retry-after header.
              schema:
                $ref: '#/components/schemas/ComplianceErrorResponse'
        '500':
          description: >-
            Something went wrong on Base44's side. Retry with exponential
            backoff and a newly signed authentication token. If the code is
            `inventory_too_large`, the workspace has more items than the API can
            return, and retrying doesn't help. Ask your Base44 partner contact
            for help. See [error
            codes](/developers/references/compliance-api/get-started/error-codes).
          content:
            application/json:
              examples:
                api_error:
                  summary: api_error
                  value:
                    error:
                      type: api_error
                      message: >-
                        An internal error occurred. Retry with exponential
                        backoff.
                inventory_too_large:
                  summary: inventory_too_large
                  value:
                    error:
                      type: api_error
                      message: >-
                        This workspace holds more rows than a single compliance
                        read supports (9999). Returning a partial inventory
                        would misreport it, so the request failed instead. Not
                        retryable without a change on our side.
                      code: inventory_too_large
              schema:
                $ref: '#/components/schemas/ComplianceErrorResponse'
components:
  schemas:
    CompliancePage_Annotated_Union_ComplianceAppConnection__ComplianceWorkspaceConnector__ComplianceCustomIntegration__ComplianceMcpConnection__ComplianceMemberMcpConnection__ComplianceUserWorkspaceConnection___FieldInfo_annotation_NoneType__required_True__discriminator__kind____:
      properties:
        data:
          items:
            oneOf:
              - $ref: '#/components/schemas/ComplianceAppConnection'
              - $ref: '#/components/schemas/ComplianceWorkspaceConnector'
              - $ref: '#/components/schemas/ComplianceCustomIntegration'
              - $ref: '#/components/schemas/ComplianceMcpConnection'
              - $ref: '#/components/schemas/ComplianceMemberMcpConnection'
              - $ref: '#/components/schemas/ComplianceUserWorkspaceConnection'
            discriminator:
              propertyName: kind
              mapping:
                app_connection: '#/components/schemas/ComplianceAppConnection'
                custom_integration: '#/components/schemas/ComplianceCustomIntegration'
                mcp_connection: '#/components/schemas/ComplianceMcpConnection'
                member_mcp_connection: '#/components/schemas/ComplianceMemberMcpConnection'
                user_workspace_connection: '#/components/schemas/ComplianceUserWorkspaceConnection'
                workspace_connector: '#/components/schemas/ComplianceWorkspaceConnector'
          type: array
          title: Data
          description: Items on this page.
        pagination:
          $ref: '#/components/schemas/PublicPaginationInfo'
          description: Pagination details for this page.
      type: object
      required:
        - data
        - pagination
      title: >-
        CompliancePage[Annotated[Union[ComplianceAppConnection,
        ComplianceWorkspaceConnector, ComplianceCustomIntegration,
        ComplianceMcpConnection, ComplianceMemberMcpConnection,
        ComplianceUserWorkspaceConnection], FieldInfo(annotation=NoneType,
        required=True, discriminator='kind')]]
      description: One page of results from a list endpoint.
    ComplianceErrorResponse:
      properties:
        error:
          $ref: '#/components/schemas/ComplianceErrorBody'
      type: object
      required:
        - error
      title: ComplianceErrorResponse
    ComplianceAppConnection:
      properties:
        kind:
          type: string
          const: app_connection
          title: Kind
          description: >-
            Type of integration. Always `"app_connection"` for a connection
            between an app and a service.
          default: app_connection
          example: app_connection
        id:
          type: string
          title: Id
          description: Unique ID of the connection.
          example: 68d6f9a3b4c5e1008f53c7d9
        app_id:
          anyOf:
            - type: string
            - type: 'null'
          title: App Id
          description: >-
            Unique ID of the app that owns the connection. A `null` value
            indicates a connection shared by the whole workspace.
          example: 68a1f3c2b7d9e4005c20e8f6
        integration_type:
          type: string
          title: Integration Type
          description: Service the connection is for.
          example: slack
        connection_ownership:
          anyOf:
            - type: string
              enum:
                - app
                - workspace
            - type: 'null'
          title: Connection Ownership
          description: >-
            Whose account credentials the connection uses. Possible values are
            `"app"` and `"workspace"`. A `null` value indicates only app users
            connected to this service.
          example: workspace
        scopes:
          items:
            type: string
          type: array
          title: Scopes
          description: >-
            Permissions the service granted to the connection. If no permissions
            were granted, the list shows the permissions requested instead.
          example:
            - chat:write
        status:
          anyOf:
            - type: string
            - type: 'null'
          title: Status
          description: >-
            Status of the connection. Possible values are `"INITIALIZING"`,
            `"INITIATED"`, `"ACTIVE"`, `"FAILED"`, `"EXPIRED"`, and
            `"INACTIVE"`. A `null` value indicates the app has no connection.
          example: ACTIVE
        connected_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Connected At
          description: >-
            When the connection was created. Formatted as a UTC timestamp in ISO
            8601 format. A `null` value indicates no connection time is
            recorded.
          example: '2026-06-21T07:10:00Z'
        per_user_connection_count:
          type: integer
          title: Per User Connection Count
          description: >-
            Number of app users with an active connection. Base44 counts each
            app user once.
          default: 0
          example: 12
      type: object
      required:
        - id
        - integration_type
      title: ComplianceAppConnection
    ComplianceWorkspaceConnector:
      properties:
        kind:
          type: string
          const: workspace_connector
          title: Kind
          description: Type of integration. Always `"workspace_connector"`.
          default: workspace_connector
          example: workspace_connector
        id:
          type: string
          title: Id
          description: Unique ID of the connector.
          example: 68e7a0b4c5d6f2009a64d8e0
        integration_type:
          type: string
          title: Integration Type
          description: Service the connector is for.
          example: github
        name:
          type: string
          title: Name
          description: Name of the connector.
          example: Acme GitHub
        scopes:
          items:
            type: string
          type: array
          title: Scopes
          description: Permissions the connector requests.
          example:
            - repo
      type: object
      required:
        - id
        - integration_type
        - name
      title: ComplianceWorkspaceConnector
    ComplianceCustomIntegration:
      properties:
        kind:
          type: string
          const: custom_integration
          title: Kind
          description: Type of integration. Always `"custom_integration"`.
          default: custom_integration
          example: custom_integration
        id:
          type: string
          title: Id
          description: Unique ID of the custom integration.
          example: 68f8b1c5d6e7a3000b75e9f1
        slug:
          type: string
          title: Slug
          description: Short name used to identify the integration.
          example: acme-billing
        name:
          type: string
          title: Name
          description: Name of the integration.
          example: Acme Billing
        base_url:
          type: string
          title: Base Url
          description: >-
            Address the integration sends requests to. Base44 doesn't return the
            path, which can contain access tokens.
          example: https://billing.acme.com
        endpoint_count:
          type: integer
          title: Endpoint Count
          description: Number of operations of the service that the integration uses.
          example: 4
      type: object
      required:
        - id
        - slug
        - name
        - base_url
        - endpoint_count
      title: ComplianceCustomIntegration
    ComplianceMcpConnection:
      properties:
        kind:
          type: string
          const: mcp_connection
          title: Kind
          description: Type of integration. Always `"mcp_connection"`.
          default: mcp_connection
          example: mcp_connection
        id:
          type: string
          title: Id
          description: Unique ID of the server connection.
          example: 6909c2d6e7f8b4001c86f0a2
        app_id:
          type: string
          title: App Id
          description: Unique ID of the app the server is connected to.
          example: 68a1f3c2b7d9e4005c20e8f6
        name:
          type: string
          title: Name
          description: Name of the server.
          example: Jira
        url:
          type: string
          title: Url
          description: >-
            Address of the server. Base44 doesn't return the path, which can
            contain access tokens.
          example: https://mcp.atlassian.com
        enabled:
          type: boolean
          title: Enabled
          description: Whether the server is enabled.
          example: true
      type: object
      required:
        - id
        - app_id
        - name
        - url
        - enabled
      title: ComplianceMcpConnection
    ComplianceMemberMcpConnection:
      properties:
        kind:
          type: string
          const: member_mcp_connection
          title: Kind
          description: Type of integration. Always `"member_mcp_connection"`.
          default: member_mcp_connection
          example: member_mcp_connection
        id:
          type: string
          title: Id
          description: Unique ID of the server connection.
          example: 6909c2d6e7f8b4001c86f0b3
        connected_by_member_id:
          type: string
          title: Connected By Member Id
          description: >-
            Unique ID of the member's Base44 account. To identify the member,
            find the matching `user_id` in the [List workspace
            members](/api-reference/compliance/list-workspace-members) method,
            which needs the `compliance:members:read` scope.
          example: 6791b5d2c4e8a3007f61a9c3
        name:
          type: string
          title: Name
          description: Name of the server.
          example: Notion
        url:
          type: string
          title: Url
          description: >-
            Address of the server. Base44 doesn't return the path, which can
            contain access tokens.
          example: https://mcp.notion.com
        enabled:
          type: boolean
          title: Enabled
          description: Whether the server is enabled.
          example: true
      type: object
      required:
        - id
        - connected_by_member_id
        - name
        - url
        - enabled
      title: ComplianceMemberMcpConnection
      description: An MCP server a member connected for their own builder sessions.
    ComplianceUserWorkspaceConnection:
      properties:
        kind:
          type: string
          const: user_workspace_connection
          title: Kind
          description: Type of integration. Always `"user_workspace_connection"`.
          default: user_workspace_connection
          example: user_workspace_connection
        id:
          type: string
          title: Id
          description: >-
            Unique ID of the item, in the format
            `user_workspace_connection:{integration_type}`.
          example: user_workspace_connection:github
        integration_type:
          type: string
          title: Integration Type
          description: Service members connected to.
          example: github
        connected_member_count:
          type: integer
          title: Connected Member Count
          description: >-
            Number of members with an active connection. Base44 counts each
            member once, however many connection records they have.
          example: 7
        member_count_by_status:
          additionalProperties:
            type: integer
          type: object
          title: Member Count By Status
          description: >-
            Number of members for each connection status. Possible statuses are
            `"active"`, `"disconnected"`, and `"pending"`. Members with several
            tools can appear in more than one status, so the counts can exceed
            the number of members.
          example:
            active: 7
            disconnected: 3
      type: object
      required:
        - id
        - integration_type
        - connected_member_count
        - member_count_by_status
      title: ComplianceUserWorkspaceConnection
      description: >-
        Tools members connected with their own accounts, for use in the builder.
        Only counts are

        returned, not member details.
    PublicPaginationInfo:
      properties:
        total:
          type: integer
          title: Total
          description: Total number of matching items.
          example: 347
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: >-
            Cursor for fetching the next page. The value is `null` if there are
            no more pages.
          example: gAAAAABn7vJ...
        has_more:
          type: boolean
          title: Has More
          description: Whether there are more items to fetch.
          example: true
      type: object
      required:
        - total
        - has_more
      title: PublicPaginationInfo
      description: Pagination metadata for a cursor-paginated page.
    ComplianceErrorBody:
      properties:
        type:
          type: string
          title: Type
          description: >-
            Category of the error. See [error
            types](/developers/references/compliance-api/get-started/error-codes#error-types).
          example: permission_error
        message:
          type: string
          title: Message
          description: Explanation of the error for people to read.
          example: >-
            This API key is not permitted to perform that request. Needed:
            [compliance:members:read]
        code:
          anyOf:
            - type: string
            - type: 'null'
          title: Code
          description: >-
            Specific cause of the error, such as `missing_scope`,
            `workspace_mismatch`, `plan_not_included`, `feature_not_enabled`,
            `partner_key_required`, `partner_not_approved`, or
            `inventory_too_large`. Omitted when `type` is enough. See
            [Compliance API
            codes](/developers/references/compliance-api/get-started/error-codes#compliance-api-codes).
          example: missing_scope
        required_scope:
          anyOf:
            - type: string
            - type: 'null'
          title: Required Scope
          description: >-
            Scope the method needs. Included only when `code` is
            `missing_scope`.
          example: compliance:members:read
      type: object
      required:
        - type
        - message
      title: ComplianceErrorBody
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: >-
        Identifies the workspace you can read and limits your access to the
        key's scopes. A workspace owner or admin creates the key and shares it
        with you. See [Workspace API
        key](/developers/references/compliance-api/get-started/authentication#workspace-api-key)
        for more details.
    PartnerTokenAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        The signed authentication token that identifies you as the security
        partner. Sign a new token for each request with your signing key, using
        `RS256` or `ES256`, and send it as a bearer token in the `Authorization`
        header. See [Sign an authentication
        token](/developers/references/compliance-api/get-started/authentication#sign-an-authentication-token)
        for more details.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.