Airweave source-connections API
The source-connections API from Airweave — 5 operation(s) for source-connections.
The source-connections API from Airweave — 5 operation(s) for source-connections.
openapi: 3.1.0
info:
title: API Reference collections source-connections API
version: 1.0.0
servers:
- url: https://api.airweave.ai
description: Production
- url: http://localhost:8001
description: Local
tags:
- name: source-connections
paths:
/source-connections:
get:
operationId: list-source-connections-get
summary: List Source Connections
description: 'Retrieve all source connections for your organization.
Returns a lightweight list of source connections with essential fields for
display and navigation. Use the collection filter to see connections within
a specific collection.
For full connection details including sync history, use the GET /{id} endpoint.'
tags:
- source-connections
parameters:
- name: collection
in: query
description: Filter by collection readable ID
required: false
schema:
type:
- string
- 'null'
- name: skip
in: query
description: Number of connections to skip for pagination
required: false
schema:
type: integer
default: 0
- name: limit
in: query
description: Maximum number of connections to return (1-1000)
required: false
schema:
type: integer
default: 100
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: List of source connections
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SourceConnectionListItem'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationErrorResponse'
'429':
description: Rate Limit Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitErrorResponse'
post:
operationId: create-source-connections-post
summary: Create Source Connection
description: 'Create a new source connection to sync data from an external source.
The authentication method determines the creation flow:
- **Direct**: Provide credentials (API key, token) directly. Connection is created immediately.
- **OAuth Browser**: Returns a connection with an `auth_url` to redirect users for authentication.
- **OAuth Token**: Provide an existing OAuth token. Connection is created immediately.
- **Auth Provider**: Use a pre-configured auth provider (e.g., Composio, Pipedream).
After successful authentication, data sync can begin automatically or on-demand.'
tags:
- source-connections
parameters:
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: Created source connection
content:
application/json:
schema:
$ref: '#/components/schemas/SourceConnection'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationErrorResponse'
'429':
description: Rate Limit Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitErrorResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SourceConnectionCreate'
/source-connections/{source_connection_id}:
get:
operationId: get-source-connections-source-connection-id-get
summary: Get Source Connection
description: 'Retrieve details of a specific source connection.
Returns complete information about the connection including:
- Configuration settings
- Authentication status
- Sync schedule and history
- Entity statistics'
tags:
- source-connections
parameters:
- name: source_connection_id
in: path
description: Unique identifier of the source connection (UUID)
required: true
schema:
type: string
format: uuid
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: Source connection details
content:
application/json:
schema:
$ref: '#/components/schemas/SourceConnection'
'404':
description: Source Connection Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorResponse'
'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'
patch:
operationId: update-source-connections-source-connection-id-patch
summary: Update Source Connection
description: 'Update an existing source connection''s configuration.
You can modify:
- **Name and description**: Display information
- **Configuration**: Source-specific settings (e.g., repository name, filters)
- **Schedule**: Cron expression for automatic syncs
- **Authentication**: Update credentials (direct auth only)
Only include the fields you want to change; omitted fields retain their current values.'
tags:
- source-connections
parameters:
- name: source_connection_id
in: path
description: Unique identifier of the source connection to update (UUID)
required: true
schema:
type: string
format: uuid
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: Updated source connection
content:
application/json:
schema:
$ref: '#/components/schemas/SourceConnection'
'404':
description: Source Connection Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationErrorResponse'
'429':
description: Rate Limit Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitErrorResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SourceConnectionUpdate'
delete:
operationId: delete-source-connections-source-connection-id-delete
summary: Delete Source Connection
description: "Permanently delete a source connection and all its synced data.\n\n**What happens when you delete:**\n\n1. Any running sync is cancelled and the API waits (up to 15 s) for the\n worker to stop writing.\n2. The source connection, sync configuration, job history, and entity\n metadata are cascade-deleted from the database.\n3. A background cleanup workflow is scheduled to remove data from the\n vector database (Vespa) and raw data storage (ARF). This may take\n several minutes for large datasets but does **not** block the response.\n\nThe API returns immediately after step 2. Vector database cleanup happens\nasynchronously -- the data becomes unsearchable as soon as the database\nrecords are deleted.\n\n**Warning**: This action cannot be undone."
tags:
- source-connections
parameters:
- name: source_connection_id
in: path
description: Unique identifier of the source connection to delete (UUID)
required: true
schema:
type: string
format: uuid
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: Deleted source connection
content:
application/json:
schema:
$ref: '#/components/schemas/SourceConnection'
'404':
description: Source Connection Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorResponse'
'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'
/source-connections/{source_connection_id}/jobs:
get:
operationId: get-source-connection-jobs-source-connections-source-connection-id-jobs-get
summary: List Sync Jobs
description: "Retrieve the sync job history for a source connection.\n\nReturns a list of sync jobs ordered by creation time (newest first). Each job\nincludes status, timing information, and entity counts.\n\nJob statuses:\n- **PENDING**: Job is queued, waiting for the worker to pick it up\n- **RUNNING**: Sync is actively pulling and processing data\n- **COMPLETED**: Sync finished successfully\n- **FAILED**: Sync encountered an unrecoverable error\n- **CANCELLING**: Cancellation has been requested. The worker is\n gracefully stopping the pipeline and cleaning up destination data.\n- **CANCELLED**: Sync was cancelled. The worker has fully stopped\n and destination data cleanup has been scheduled."
tags:
- source-connections
parameters:
- name: source_connection_id
in: path
description: Unique identifier of the source connection (UUID)
required: true
schema:
type: string
format: uuid
- name: limit
in: query
description: Maximum number of jobs to return (1-1000)
required: false
schema:
type: integer
default: 100
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: List of sync jobs
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SourceConnectionJob'
'404':
description: Source Connection Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorResponse'
'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'
/source-connections/{source_connection_id}/run:
post:
operationId: run-source-connections-source-connection-id-run-post
summary: Run Sync
description: 'Trigger a data synchronization job for a source connection.
Starts an asynchronous sync job that pulls the latest data from the connected
source. The job runs in the background and you can monitor its progress using
the jobs endpoint.
For continuous sync connections, this performs an incremental sync by default.
Use `force_full_sync=true` to perform a complete re-sync of all data.'
tags:
- source-connections
parameters:
- name: source_connection_id
in: path
description: Unique identifier of the source connection to sync (UUID)
required: true
schema:
type: string
format: uuid
- name: force_full_sync
in: query
description: Force a full sync ignoring cursor data. Only applies to continuous sync connections. Non-continuous connections always perform full syncs.
required: false
schema:
type: boolean
default: false
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: Created sync job
content:
application/json:
schema:
$ref: '#/components/schemas/SourceConnectionJob'
'404':
description: Source Connection Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorResponse'
'409':
description: Sync Already Running
content:
application/json:
schema:
$ref: '#/components/schemas/ConflictErrorResponse'
'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'
/source-connections/{source_connection_id}/jobs/{job_id}/cancel:
post:
operationId: cancel-job-source-connections-source-connection-id-jobs-job-id-cancel-post
summary: Cancel Sync Job
description: "Request cancellation of a running sync job.\n\n**State lifecycle**: `PENDING` / `RUNNING` → `CANCELLING` → `CANCELLED`\n\n1. The API immediately marks the job as **CANCELLING** in the database.\n2. A cancellation signal is sent to the Temporal workflow.\n3. The worker receives the signal, gracefully stops the sync pipeline\n (cancels worker pool, source stream), and marks the job as **CANCELLED**.\n\nAlready-processed entities are retained in the vector database.\nIf the worker is unresponsive, a background cleanup job will force the\ntransition to CANCELLED after 3 minutes.\n\n**Note**: Only jobs in `PENDING` or `RUNNING` state can be cancelled.\nAttempting to cancel a `COMPLETED`, `FAILED`, or `CANCELLED` job returns 400."
tags:
- source-connections
parameters:
- name: source_connection_id
in: path
description: Unique identifier of the source connection (UUID)
required: true
schema:
type: string
format: uuid
- name: job_id
in: path
description: Unique identifier of the sync job to cancel (UUID)
required: true
schema:
type: string
format: uuid
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: Job with cancellation status
content:
application/json:
schema:
$ref: '#/components/schemas/SourceConnectionJob'
'404':
description: Job Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorResponse'
'409':
description: Job Cannot Be Cancelled
content:
application/json:
schema:
$ref: '#/components/schemas/ConflictErrorResponse'
'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'
components:
schemas:
OAuthTokenAuthentication:
type: object
properties:
access_token:
type: string
description: OAuth access token
refresh_token:
type:
- string
- 'null'
description: OAuth refresh token
expires_at:
type:
- string
- 'null'
format: date-time
description: Token expiry time
required:
- access_token
description: OAuth authentication with pre-obtained token.
title: OAuthTokenAuthentication
ScheduleConfig:
type: object
properties:
cron:
type:
- string
- 'null'
description: Cron expression for scheduled syncs
continuous:
type: boolean
default: false
description: Enable continuous sync mode
cursor_field:
type:
- string
- 'null'
description: Field for incremental sync
description: Schedule configuration for syncs.
title: ScheduleConfig
SourceConnectionUpdate:
type: object
properties:
name:
type:
- string
- 'null'
description: Updated display name for the connection
description:
type:
- string
- 'null'
description: Updated description
config:
type:
- object
- 'null'
additionalProperties:
description: Any type
description: Updated source-specific configuration
schedule:
oneOf:
- $ref: '#/components/schemas/ScheduleConfig'
- type: 'null'
description: Updated sync schedule configuration
authentication:
oneOf:
- $ref: '#/components/schemas/SourceConnectionUpdateAuthentication'
- type: 'null'
description: Updated authentication credentials (direct auth only)
description: 'Update an existing source connection''s configuration.
All fields are optional. Only include fields you want to change;
omitted fields retain their current values.'
title: SourceConnectionUpdate
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
SourceConnectionErrorCategory:
type: string
enum:
- oauth_credentials_expired
- api_key_invalid
- auth_provider_account_gone
- auth_provider_credentials_invalid
- usage_limit_exceeded
- rate_limited
description: Error categories for credential/auth failures on source connections.
title: SourceConnectionErrorCategory
SyncDetails:
type: object
properties:
total_runs:
type: integer
default: 0
successful_runs:
type: integer
default: 0
failed_runs:
type: integer
default: 0
last_job:
oneOf:
- $ref: '#/components/schemas/SyncJobDetails'
- type: 'null'
description: Sync execution details.
title: SyncDetails
AuthProviderAuthentication:
type: object
properties:
provider_readable_id:
type: string
description: Auth provider readable ID
provider_config:
type:
- object
- 'null'
additionalProperties:
description: Any type
description: Provider-specific configuration
required:
- provider_readable_id
description: Authentication via external provider.
title: AuthProviderAuthentication
ValidationErrorLocItems:
oneOf:
- type: string
- type: integer
title: ValidationErrorLocItems
ConflictErrorResponse:
type: object
properties:
detail:
type: string
description: Error message describing the conflict
required:
- detail
description: 'Response returned when a resource conflict occurs (HTTP 409).
This typically occurs when attempting to create a resource that already exists,
or when an operation cannot be completed due to the current state of a resource.'
title: ConflictErrorResponse
SourceConnection:
type: object
properties:
id:
type: string
format: uuid
description: Unique identifier of the source connection
organization_id:
type: string
format: uuid
description: Organization this connection belongs to
name:
type: string
description: Display name of the connection
description:
type:
- string
- 'null'
description: Optional description of the connection's purpose
short_name:
type: string
description: Source type identifier
readable_collection_id:
type: string
description: Collection this connection belongs to
status:
$ref: '#/components/schemas/SourceConnectionStatus'
description: Current operational status of the connection
created_at:
type: string
format: date-time
description: When the connection was created (ISO 8601)
modified_at:
type: string
format: date-time
description: When the connection was last modified (ISO 8601)
auth:
$ref: '#/components/schemas/AuthenticationDetails'
description: Authentication status and details
config:
type:
- object
- 'null'
additionalProperties:
description: Any type
description: Source-specific configuration values
schedule:
oneOf:
- $ref: '#/components/schemas/ScheduleDetails'
- type: 'null'
description: Sync schedule configuration
sync:
oneOf:
- $ref: '#/components/schemas/SyncDetails'
- type: 'null'
description: Sync execution history and statistics
sync_id:
type:
- string
- 'null'
format: uuid
description: ID of the associated sync (internal use)
entities:
oneOf:
- $ref: '#/components/schemas/EntitySummary'
- type: 'null'
description: Summary of synced entities by type
error_category:
oneOf:
- $ref: '#/components/schemas/SourceConnectionErrorCategory'
- type: 'null'
description: Error category when status is needs_reauth (e.g. oauth_credentials_expired)
error_message:
type:
- string
- 'null'
description: Human-readable error message when status is needs_reauth
provider_settings_url:
type:
- string
- 'null'
description: URL to the auth provider's settings dashboard (for auth_provider errors)
provider_short_name:
type:
- string
- 'null'
description: Auth provider short_name (e.g. 'composio', 'pipedream') for display
federated_search:
type: boolean
default: false
description: Whether this source uses federated (real-time) search instead of syncing
required:
- id
- organization_id
- name
- short_name
- readable_collection_id
- status
- created_at
- modified_at
- auth
description: 'Complete source connection details including auth, config, sync status, and entities.
This schema provides full information about a source connection, suitable for
detail views and monitoring sync progress.'
title: SourceConnection
EntityTypeStats:
type: object
properties:
count:
type: integer
last_updated:
type:
- string
- 'null'
format: date-time
required:
- count
description: Statistics for a specific entity type.
title: EntityTypeStats
ScheduleDetails:
type: object
properties:
cron:
type:
- string
- 'null'
next_run:
type:
- string
- 'null'
format: date-time
continuous:
type: boolean
default: false
cursor_field:
type:
- string
- 'null'
description: Schedule information.
title: ScheduleDetails
AuthenticationMethod:
type: string
enum:
- direct
- oauth_browser
- oauth_token
- oauth_byoc
- auth_provider
description: Authentication methods for source connections.
title: AuthenticationMethod
SourceConnectionUpdateAuthentication:
oneOf:
- $ref: '#/components/schemas/DirectAuthentication'
- $ref: '#/components/schemas/OAuthTokenAuthentication'
- $ref: '#/components/schemas/OAuthBrowserAuthentication'
- $ref: '#/components/schemas/AuthProviderAuthentication'
description: Updated authentication credentials (direct auth only)
title: SourceConnectionUpdateAuthentication
SourceConnectionListItem:
type: object
properties:
id:
type: string
format: uuid
description: Unique identifier of the source connection
name:
type: string
description: Display name of the connection
short_name:
type: string
description: Source type identifier
readable_collection_id:
type: string
description: Collection this connection belongs to
created_at:
type: string
format: date-time
description: When the connection was created (ISO 8601)
modified_at:
type: string
format: date-time
description: When the connection was last modified (ISO 8601)
is_authenticated:
type: boolean
description: Whether the connection has valid credentials
entity_count:
type: integer
default: 0
description: Total number of entities synced from this connection
federated_search:
type: boolean
default: false
description: Whether this source uses federated (real-time) search instead of syncing
auth_method:
$ref: '#/components/schemas/AuthenticationMethod'
description: Get authentication method from database value.
status:
$ref: '#/components/schemas/SourceConnectionStatus'
description: Compute connection status from current state.
required:
- id
- name
- short_name
- readable_collection_id
- created_at
- modified_at
- is_authenticated
- auth_method
- status
description: 'Lightweight source connection representation for list views.
Contains essential fields for display and navigation. For full details
including sync history and configuration, use the GET /{id} endpoint.'
title: SourceConnectionListItem
SyncJobStatus:
type: string
enum:
- created
- pending
- running
- completed
- failed
- cancelling
- cancelled
description: Sync job status enum.
title: SyncJobStatus
ValidationErrorResponse:
type: object
properties:
detail:
type: array
items:
$ref: '#/components/schemas/ValidationErrorDetail'
description: List of validation errors
required:
- detail
description: 'Response returned when request validation fails (HTTP 422).
This occurs when the request body contains invalid data, such as
malformed URLs, invalid event types, or missing required fields.'
title: ValidationErrorResponse
EntitySummary:
type: object
properties:
total_entities:
type: integer
default: 0
by_type:
type: object
additionalProperties:
$ref: '#/components/schemas/EntityTypeStats'
entity_id:
type: string
name:
type: string
entity_type:
type: string
source_name:
type: string
relevance_score:
type:
- number
- 'null'
format: double
description: Entity state summary.
title: EntitySummary
DirectAuthentication:
type: object
properties:
credentials:
type: object
additionalProperties:
description: Any type
description: Authentication credentials
required:
- credentials
description: Direct authentication with API keys or passwords.
title: DirectAuthentication
AuthenticationDetails:
type: object
properties:
method:
$ref: '#/components/schemas/AuthenticationMethod'
authenticated:
type: boolean
authenticated_at:
type:
- string
- 'null'
format: date-time
expires_at:
type:
- string
- 'null'
format: date-time
auth_url:
type:
- string
- 'null'
description: For pending OAuth flows
auth_url_expires:
type:
- string
- 'null'
format: date-time
redirect_url:
type:
- string
- 'null'
claim_token:
type:
- string
- 'null'
description: One-time token to verify OAuth flow ownership. Only returned when creating an OAuth browser connection.
provider_readable_id:
type:
- string
- 'null'
provider_id:
type:
- string
- 'null'
required:
- method
- authenticated
description: Authentication information.
title: AuthenticationDetails
SourceConnectionStatus:
type: string
enum:
- active
- pending_auth
- syncing
- error
- needs_reauth
- inactive
- pending_sync
description: Source connection status enum - represents overall connection state.
title: SourceConnectionStatus
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
ValidationErrorDetail:
type: object
properties:
loc:
type: array
items:
type: string
description: Location of the error (e.g., ['body', 'url'])
msg:
type: string
description: Human-readable error message
type:
type: string
description: Error type identifier
required:
- loc
- msg
- type
description: Details about a validation error for a specific field.
title: ValidationErrorDetail
SourceConnectionCreateAuthentication:
oneOf:
- $ref: '#/components/schemas/DirectAuthentication'
- $ref: '#/components/schemas/OAuthTokenAuthentication'
- $ref: '#/components/schemas/OAuthBrowserAuthentication'
- $ref: '#/componen
# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/airweave/refs/heads/main/openapi/airweave-source-connections-api-openapi.yml