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

# List sources

> List the [Company Brain](/core-concepts/brain) sources the authenticated user can see: personal sources, plus team and organization sources shared with them. Every source type is listed, including ones connected in the app such as Notion or Google Drive.




## OpenAPI

````yaml get /brain/sources
openapi: 3.0.0
info:
  title: Public API
  version: 1.0.0
servers:
  - url: https://api.gumloop.com/api/v1
security: []
paths:
  /brain/sources:
    get:
      tags:
        - Brain
      summary: List sources
      description: >
        List the [Company Brain](/core-concepts/brain) sources the authenticated
        user can see: personal sources, plus team and organization sources
        shared with them. Every source type is listed, including ones connected
        in the app such as Notion or Google Drive.
      operationId: listBrainSources
      parameters:
        - name: scope
          in: query
          required: false
          schema:
            type: string
            enum:
              - personal
              - team
              - organization
          description: Only sources in this scope.
        - name: source_type
          in: query
          required: false
          schema:
            type: string
          description: >-
            Only sources of this type, for example `direct_file_uploads` or
            `notion`.
        - name: team_id
          in: query
          required: false
          schema:
            type: string
          description: Only team sources belonging to this team.
        - name: page_size
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
          description: Maximum number of sources to return.
        - in: query
          name: cursor
          required: false
          schema:
            type: string
          description: Opaque cursor from a previous response's `next_cursor`.
      responses:
        '200':
          description: One page of sources.
          content:
            application/json:
              schema:
                type: object
                required:
                  - sources
                properties:
                  sources:
                    type: array
                    items:
                      $ref: '#/components/schemas/BrainSource'
                  next_cursor:
                    type: string
                    nullable: true
                    description: Cursor for the next page, or `null` on the last page.
              example:
                sources:
                  - id: PFqdAMir8PA2Xc6qcszSN9
                    name: Engineering docs
                    source_type: direct_file_uploads
                    status: active
                    scope: personal
                    team_id: null
                    created_by_user_id: f6ceNxi7XIMzKJvHFajQaBtnv5h2
                    created_at: '2026-09-25T23:52:11.046883+00:00'
                next_cursor: null
        '400':
          description: Invalid `scope`, `source_type`, or `page_size`.
        '401':
          description: Unauthorized — missing or invalid Gumloop API credentials.
        '403':
          description: >-
            Forbidden — the caller lacks access to Brain (Pro or Enterprise plan
            required).
      security:
        - bearerAuth: []
      x-codeSamples:
        - lang: bash
          label: cURL
          source: >
            curl
            'https://api.gumloop.com/api/v1/brain/sources?scope=personal&source_type=direct_file_uploads'
            \
              -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
        - lang: python
          label: Python
          source: >
            from gumloop import Gumloop


            client = Gumloop(access_token="YOUR_ACCESS_TOKEN")


            page = client.brain.list_sources(scope="personal",
            source_type="direct_file_uploads")

            for source in page.sources:
                print(source.id, source.name, source.status)
components:
  schemas:
    BrainSource:
      type: object
      required:
        - id
        - name
        - source_type
        - status
        - scope
      properties:
        id:
          type: string
          example: PFqdAMir8PA2Xc6qcszSN9
        name:
          type: string
          example: Engineering docs
        source_type:
          type: string
          description: >-
            `direct_file_uploads` for sources created through the API; connected
            sources report their type, for example `notion`.
          example: direct_file_uploads
        status:
          type: string
          enum:
            - draft
            - active
            - paused
          description: '`draft` sources only estimate credits until approved.'
        scope:
          type: string
          enum:
            - personal
            - team
            - organization
        team_id:
          type: string
          nullable: true
          description: Set for `team` scope only.
        created_by_user_id:
          type: string
          nullable: true
        created_at:
          type: string
          format: date-time
          nullable: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        A personal API key or an [OAuth 2.0](/api-reference/oauth) access token.
        Personal API keys also require the `x-auth-key` header with your user
        ID.

````