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

# List an intern's connections

> Returns the Slack, GitHub, Google Workspace and MCP connections one visible intern can reach, and the shared ones switched off for it or disabled for the workspace. An OAuth grant needs `vault:read`, because the list names members' personal accounts; without it the route answers 403 `insufficient_scope`. The response is sent with `Cache-Control: no-store`. The API key selects the caller, workspace and visible interns. An intern's own API key sees only that intern: the collection and every other intern answer 404 to it. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required.



## OpenAPI

````yaml /openapi/openapi.yaml get /interns/{internId}/connections
openapi: 3.1.0
info:
  contact:
    email: support@openrouter.ai
    name: OpenRouter Support
    url: https://openrouter.ai/docs
  description: OpenAI-compatible API with additional OpenRouter features
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
  title: OpenRouter API
  version: 1.0.0
servers:
  - description: Production server
    url: https://openrouter.ai/api/v1
    x-speakeasy-server-id: production
security:
  - apiKey: []
tags:
  - description: API key management endpoints
    name: API Keys
  - description: Analytics and usage endpoints
    name: Analytics
  - description: Anthropic Messages endpoints
    name: Anthropic Messages
  - description: BYOK endpoints
    name: BYOK
  - description: >-
      Submit, list, poll, and delete asynchronous batches of inference requests.
      See https://openrouter.ai/docs/batch-quickstart.
    name: Batch
  - description: Benchmarks endpoints
    name: Benchmarks
  - description: Chat completion endpoints
    name: Chat
  - description: Task classification market-share endpoints
    name: Classifications
  - description: Containers endpoints
    name: Containers
  - description: Credit management endpoints
    name: Credits
  - description: >-
      Public OpenRouter usage datasets. Data returned by these endpoints is
      licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/):
      reuse and republish it, including commercially, with attribution to
      OpenRouter.
    name: Datasets
  - description: Text embedding endpoints
    name: Embeddings
  - description: Endpoint information
    name: Endpoints
  - description: External Users endpoints
    name: External Users
  - description: Files endpoints
    name: Files
  - description: Generation history endpoints
    name: Generations
  - description: Guardrails endpoints
    name: Guardrails
  - description: Images endpoints
    name: Images
  - description: >-
      Create, inspect, update, provision, suspend and delete OpenRouter interns
      through an API key, and talk to them: the chat route streams
      OpenAI-compatible completions from one intern, pausing as an
      `openrouter.provide_input` tool call when the intern needs your permission
      or an answer. Available to interns programme members; other callers
      receive 404. See https://openrouter.ai/docs/guides/ori/intern-chat.
    name: Interns
  - description: Model information endpoints
    name: Models
  - description: OAuth authentication endpoints
    name: OAuth
  - description: Observability endpoints
    name: Observability
  - description: Organization endpoints
    name: Organization
  - description: Presets endpoints
    name: Presets
  - description: Private Endpoints endpoints
    name: Private Endpoints
  - description: Provider information endpoints
    name: Providers
  - description: Rerank endpoints
    name: Rerank
  - description: OpenAI-compatible Responses API endpoints
    name: Responses
  - description: >-
      Management endpoints for SCIM group-to-workspace mappings, authenticated
      with a management key. These are not the SCIM 2.0 connector endpoints for
      your identity provider. In your identity provider, enter the SCIM endpoint
      URL shown when you enable provisioning under Settings > Members > SCIM
      Mappings. See
      https://openrouter.ai/docs/guides/features/scim-mappings#set-up-provisioning.
    name: SCIM
  - description: Speech-to-text endpoints
    name: STT
    x-displayName: Transcriptions
  - description: >-
      System One endpoints for models such as Jev, compatible with the TypeSafe
      SDKs. See https://openrouter.ai/docs/guides/community/typesafe-sdk.
    name: SystemOne
    x-displayName: System One
  - description: Text-to-speech endpoints
    name: TTS
    x-displayName: Speech
  - description: >-
      The catalog of server tools OpenRouter runs on behalf of a model: accepted
      `tools[].type` spellings per API format, engines and pricing, and which
      endpoints run each tool natively. See
      https://openrouter.ai/docs/guides/features/server-tools.
    name: Tools
  - description: >-
      Store host-bound secrets for a workspace or for one intern. Scope is
      selected by the API key. Responses return metadata only, never secret
      values. See https://openrouter.ai/docs/guides/ori/vault.
    name: Vault
  - description: Video Generation endpoints
    name: Video Generation
  - description: Workspaces endpoints
    name: Workspaces
  - description: Alpha feature endpoints for Decisions requests
    name: alpha.decisions
externalDocs:
  description: OpenRouter Documentation
  url: https://openrouter.ai/docs
paths:
  /interns/{internId}/connections:
    get:
      tags:
        - Interns
      summary: List an intern's connections
      description: >-
        Returns the Slack, GitHub, Google Workspace and MCP connections one
        visible intern can reach, and the shared ones switched off for it or
        disabled for the workspace. An OAuth grant needs `vault:read`, because
        the list names members' personal accounts; without it the route answers
        403 `insufficient_scope`. The response is sent with `Cache-Control:
        no-store`. The API key selects the caller, workspace and visible
        interns. An intern's own API key sees only that intern: the collection
        and every other intern answer 404 to it. There is no default workspace
        fallback. Requests on regional hostnames such as `eu.openrouter.ai` are
        refused. [API key](/docs/api-reference/authentication) required.
      operationId: getInternConnections
      parameters:
        - description: ID of an intern visible to the authenticated API key.
          in: path
          name: internId
          required: true
          schema:
            description: ID of an intern visible to the authenticated API key.
            example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
            minLength: 1
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - account:
                      acts_as: null
                      is_your_account_linked: null
                      note: null
                      scope: workspace
                    id: github
                    is_enabled: true
                    is_intern_only: false
                    kind: github
                    mcp_server_name: null
                    name: GitHub
                    off_reason: null
                    server: null
                    status:
                      reason: null
                      state: connected
                    tool_count: null
              schema:
                $ref: '#/components/schemas/InternConnectionList'
          description: The intern connections.
        '401':
          content:
            application/json:
              example:
                error:
                  code: 401
                  message: Invalid or missing API key
              schema:
                $ref: '#/components/schemas/InternLifecycleError'
          description: Missing, unknown or provisioning API key.
        '403':
          content:
            application/json:
              example:
                error:
                  code: 403
                  message: Forbidden
              schema:
                $ref: '#/components/schemas/InternLifecycleError'
          description: >-
            The key owner no longer has access, or the request used a regional
            hostname.
        '404':
          content:
            application/json:
              example:
                error:
                  code: 404
                  message: Intern not found
                  metadata:
                    reason: not_found
                    retryable: false
              schema:
                $ref: '#/components/schemas/InternLifecycleError'
          description: >-
            The caller is outside the Intern API programme, the intern is
            hidden, or lifecycle writes are disabled.
        '408':
          content:
            application/json:
              example:
                error:
                  code: 408
                  message: Operation timed out after 10s. Please try again later.
                  metadata:
                    reason: timeout
                    retryable: true
              schema:
                $ref: '#/components/schemas/InternLifecycleError'
          description: >-
            The request exceeded its route deadline. The deadline quoted in the
            message is the route's own, so it differs between operations.
        '500':
          content:
            application/json:
              example:
                error:
                  code: 500
                  message: The request could not be completed
                  metadata:
                    reason: internal_error
                    retryable: true
              schema:
                $ref: '#/components/schemas/InternLifecycleError'
          description: >-
            The request could not be completed. `metadata.reason` says whether
            to try again: `internal_error` is a transient failure and carries
            `metadata.retryable: true`, so the same request may be sent again,
            while `configuration_error` carries `retryable: false` because the
            next attempt reads the same missing binding or unusable stored
            credential.
      security:
        - apiKey: []
components:
  schemas:
    InternConnectionList:
      properties:
        data:
          items:
            $ref: '#/components/schemas/InternConnection'
          type: array
      required:
        - data
      type: object
    InternLifecycleError:
      additionalProperties: false
      description: Intern lifecycle request failure.
      example:
        error:
          code: 404
          message: Intern not found
          metadata:
            reason: not_found
            retryable: false
      properties:
        error:
          additionalProperties: false
          properties:
            code:
              anyOf:
                - type: string
                - type: integer
            message:
              type: string
            metadata:
              additionalProperties: false
              properties:
                reason:
                  type: string
                retryable:
                  type: boolean
              required:
                - reason
                - retryable
              type: object
          required:
            - code
            - message
          type: object
      required:
        - error
      type: object
    InternConnection:
      properties:
        account:
          properties:
            acts_as:
              description: Whose account it acts as, when known.
              type:
                - string
                - 'null'
            is_your_account_linked:
              type:
                - boolean
                - 'null'
            note:
              type:
                - string
                - 'null'
            scope:
              description: >-
                `workspace` for a shared connection, `yours` for the key user's
                personal account, `shared` for a teammate's.
              enum:
                - workspace
                - yours
                - shared
              type: string
          required:
            - acts_as
            - is_your_account_linked
            - note
            - scope
          type: object
        id:
          description: >-
            Stable id: the credential id of an MCP server, else the kind
            (`slack`, `github`, `google`).
          type: string
        is_enabled:
          description: Whether the intern reaches it now.
          type: boolean
        is_intern_only:
          description: Scoped to this intern rather than shared by the workspace.
          type: boolean
        kind:
          enum:
            - slack
            - github
            - google
            - mcp
          type: string
        mcp_server_name:
          description: >-
            The name the intern's MCP config keys the server by; null when it is
            not an MCP server or is off.
          type:
            - string
            - 'null'
        name:
          description: Display name.
          type: string
        off_reason:
          description: >-
            `switched_off` for this intern, `disabled` for the whole workspace;
            null while on.
          enum:
            - switched_off
            - disabled
            - null
          type:
            - string
            - 'null'
        server:
          properties:
            host:
              type:
                - string
                - 'null'
            surface:
              type: string
            transport:
              type: string
            url:
              type:
                - string
                - 'null'
          required:
            - host
            - surface
            - transport
            - url
          type:
            - object
            - 'null'
        status:
          properties:
            reason:
              type:
                - string
                - 'null'
            state:
              enum:
                - connected
                - needs_reconnect
                - not_tested
                - error
              type: string
          required:
            - state
            - reason
          type: object
        tool_count:
          description: Tools found by the last successful test.
          type:
            - integer
            - 'null'
      required:
        - id
        - kind
        - name
        - is_enabled
        - is_intern_only
        - off_reason
        - mcp_server_name
        - server
        - status
        - tool_count
        - account
      type: object
  securitySchemes:
    apiKey:
      description: API key as bearer token in Authorization header
      scheme: bearer
      type: http

````