> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.airweave.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.airweave.ai/_mcp/server.

# List Sources

GET https://api.airweave.ai/sources

Retrieve all available data source connectors.

Returns the complete catalog of source types that Airweave can connect to,
including their authentication methods, configuration requirements, and
supported features. Use this endpoint to discover which integrations are
available for your organization.

Each source includes:
- **Authentication methods**: How to connect (OAuth, API key, etc.)
- **Configuration schemas**: What settings are required or optional
- **Supported auth providers**: Pre-configured OAuth providers available

Reference: https://docs.airweave.ai/api-reference/sources/list-sources-get

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: API
  version: 1.0.0
paths:
  /sources:
    get:
      operationId: list-sources-get
      summary: List Sources
      description: >-
        Retrieve all available data source connectors.


        Returns the complete catalog of source types that Airweave can connect
        to,

        including their authentication methods, configuration requirements, and

        supported features. Use this endpoint to discover which integrations are

        available for your organization.


        Each source includes:

        - **Authentication methods**: How to connect (OAuth, API key, etc.)

        - **Configuration schemas**: What settings are required or optional

        - **Supported auth providers**: Pre-configured OAuth providers available
      tags:
        - sources
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Source'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Rate Limit Exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitErrorResponse'
servers:
  - url: https://api.airweave.ai
    description: Production
  - url: http://localhost:8001
    description: Local
components:
  schemas:
    ConfigField:
      type: object
      properties:
        name:
          type: string
        title:
          type: string
        description:
          type:
            - string
            - 'null'
        type:
          type: string
        required:
          type: boolean
          default: true
        items_type:
          type:
            - string
            - 'null'
        feature_flag:
          type:
            - string
            - 'null'
        is_secret:
          type: boolean
          default: false
        enum_values:
          type:
            - array
            - 'null'
          items:
            type: string
      required:
        - name
        - title
        - type
      description: Config field model.
      title: ConfigField
    Fields:
      type: object
      properties:
        fields:
          type: array
          items:
            $ref: '#/components/schemas/ConfigField'
      required:
        - fields
      description: Fields model.
      title: Fields
    Source:
      type: object
      properties:
        name:
          type: string
          description: >-
            Human-readable name of the data source connector (e.g., 'GitHub',
            'Stripe', 'PostgreSQL').
        description:
          type:
            - string
            - 'null'
          description: >-
            Detailed description explaining what data this source can extract
            and its typical use cases.
        auth_methods:
          type:
            - array
            - 'null'
          items:
            type: string
          description: >-
            List of supported authentication methods (e.g., 'direct',
            'oauth_browser').
        oauth_type:
          type:
            - string
            - 'null'
          description: >-
            OAuth token type for OAuth sources (e.g., 'access_only',
            'with_refresh').
        requires_byoc:
          type: boolean
          default: false
          description: Whether this OAuth source requires users to bring their own client.
        auth_config_class:
          type:
            - string
            - 'null'
          description: >-
            Python class name that defines the authentication configuration
            fields required for this source (only for DIRECT auth).
        config_class:
          type:
            - string
            - 'null'
          description: >-
            Python class name that defines the source-specific configuration
            options and parameters.
        short_name:
          type: string
          description: >-
            Technical identifier used internally to reference this source type.
            Must be unique across all sources.
        class_name:
          type: string
          description: >-
            Python class name of the source implementation that handles data
            extraction logic.
        output_entity_definitions:
          type: array
          items:
            type: string
          description: >-
            List of entity definition short names that this source can produce
            (e.g., ['asana_task_entity', 'asana_project_entity']).
        labels:
          type:
            - array
            - 'null'
          items:
            type: string
          description: >-
            Categorization tags to help users discover and filter sources by
            domain or use case.
        supports_continuous:
          type: boolean
          default: false
          description: >-
            Whether this source supports cursor-based continuous syncing for
            incremental data extraction.
        federated_search:
          type: boolean
          default: false
          description: >-
            Whether this source uses federated search instead of traditional
            syncing.
        supports_temporal_relevance:
          type: boolean
          default: true
          description: >-
            Whether this source's entities have timestamps that enable
            recency-based ranking.
        supports_access_control:
          type: boolean
          default: false
          description: Whether this source supports document-level access control.
        rate_limit_level:
          type:
            - string
            - 'null'
          description: >-
            Rate limiting level for this source: 'org' (organization-wide),
            'connection' (per-connection/per-user), or None (no rate limiting).
        feature_flag:
          type:
            - string
            - 'null'
          description: >-
            Feature flag required to access this source. If set, only
            organizations with this feature enabled can see/use this source.
        supports_browse_tree:
          type: boolean
          default: false
          description: >-
            Whether this source supports lazy-loaded browse tree for selective
            node syncing.
        auth_fields:
          oneOf:
            - $ref: '#/components/schemas/Fields'
            - type: 'null'
          description: >-
            Schema definition for authentication fields required to connect to
            this source.
        config_fields:
          $ref: '#/components/schemas/Fields'
          description: >-
            Schema definition for configuration fields required to customize
            this source.
        supported_auth_providers:
          type:
            - array
            - 'null'
          items:
            type: string
          description: List of auth provider short names that support this source.
      required:
        - name
        - short_name
        - class_name
        - config_fields
      description: >-
        Complete source representation with authentication and configuration
        schemas.


        Served from the in-memory SourceRegistry — no database row needed.
      title: Source
    ValidationErrorLocItems:
      oneOf:
        - type: string
        - type: integer
      title: ValidationErrorLocItems
    ValidationError:
      type: object
      properties:
        loc:
          type: array
          items:
            $ref: '#/components/schemas/ValidationErrorLocItems'
        msg:
          type: string
        type:
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
    HTTPValidationError:
      type: object
      properties:
        detail:
          type: array
          items:
            $ref: '#/components/schemas/ValidationError'
      title: HTTPValidationError
    RateLimitErrorResponse:
      type: object
      properties:
        detail:
          type: string
          description: Error message explaining the rate limit
      required:
        - detail
      description: >-
        Response returned when rate limit is exceeded (HTTP 429).


        The API enforces rate limits to ensure fair usage. When exceeded,

        wait for the duration specified in the Retry-After header before
        retrying.
      title: RateLimitErrorResponse
  securitySchemes:
    default:
      type: apiKey
      in: header
      name: x-api-key

```

## Examples



**Response**

```json
[
  {
    "name": "GitHub",
    "short_name": "github",
    "class_name": "GitHubSource",
    "config_fields": {
      "fields": [
        {
          "name": "string",
          "title": "string",
          "type": "string"
        }
      ]
    },
    "description": "Connect to GitHub repositories for code, issues, pull requests, and documentation",
    "auth_config_class": "GitHubAuthConfig",
    "config_class": "GitHubConfig",
    "labels": [
      "code"
    ],
    "auth_fields": {
      "fields": [
        {
          "name": "personal_access_token",
          "title": "Personal Access Token",
          "type": "string",
          "description": "GitHub Personal Access Token with repository read permissions",
          "secret": true
        },
        {
          "name": "repo_name",
          "title": "Repository Name",
          "type": "string",
          "description": "Full repository name in format 'owner/repo'"
        }
      ]
    },
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "auth_type": "config_class",
    "output_entity_definition_ids": [
      "def12345-6789-abcd-ef01-234567890abc",
      "def67890-abcd-ef01-2345-67890abcdef1"
    ],
    "created_at": "2024-01-01T00:00:00Z",
    "modified_at": "2024-01-01T00:00:00Z"
  }
]
```

**SDK Code**

```python
import requests

url = "https://api.airweave.ai/sources"

headers = {"x-api-key": "<apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```typescript
import { AirweaveSDKClient } from "@airweave/sdk";

const client = new AirweaveSDKClient({ apiKey: "YOUR_API_KEY" });
await client.sources.list();

```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.airweave.ai/sources"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("x-api-key", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.airweave.ai/sources")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.airweave.ai/sources")
  .header("x-api-key", "<apiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.airweave.ai/sources', [
  'headers' => [
    'x-api-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.airweave.ai/sources");
var request = new RestRequest(Method.GET);
request.AddHeader("x-api-key", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["x-api-key": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.airweave.ai/sources")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```