Integrations

Integration

Sync data from Directus collections into a warehouse or database using the Directus Airbyte source connector.

Copy data from your Directus instance into a warehouse or database (BigQuery, Snowflake, Postgres, and more) using the Directus Airbyte source connector.

Quick Start
  1. Import the connector: Add Airbyte.yaml as a new source in Airbyte
  2. Configure the source: Enter your API key, base URL, and collection name
  3. Test the connection: Airbyte hits the /files endpoint to verify credentials
  4. Create a connection: Pick your destination and enable only the streams you need

Before You Start

You'll need:

  • A Directus project with the collections you want to sync
  • An API token with read access to those collections (go to Settings > Access Tokens)
  • An Airbyte account and access to add a new source connector

Available Streams

The connector exposes five streams. Enable only the ones your pipeline needs.

StreamEndpointTypical use
collection_items/items/{collection}Posts, products, pages, custom collections
files/filesFile library assets
users/usersUser directory (contains PII - only enable if needed)
activity/activityAudit log
collections_meta/collectionsCollection schema metadata

Connection tests use the files stream.

Setup in Airbyte

  1. Import the connector manifest (Airbyte.yaml) as a new source in Airbyte.
  2. Enter the required settings (see below).
  3. Click Test connection to verify your credentials.
  4. Create a connection, choose a destination, and enable only the streams you need.
  5. Set the sync mode per stream. Full refresh is typical for CMS snapshots. Airbyte incremental sync is separate from Directus filters.

Required Settings

FieldExampleNotes
API Keyyour-tokenSettings > Access Tokens. Needs read access on every stream you enable.
Base URLhttps://your-project.directus.appNo trailing slash.
Collection NamepostsRequired even if you only sync files. Use any collection slug your token can read.

Collection Name feeds the collection_items stream. If you don't want to sync collection items, disable that stream on the Airbyte connection after setup.

Optional Query Controls

These map directly to Directus query parameters and apply to every stream. Use them to filter, sort, and limit what gets synced.

FieldQuery paramExample
Fieldsfieldsid,title,status (or * for all fields, the default)
Filterfilter{"status":{"_eq":"published"}}
Sortsort-date_created or title,-date_updated
SearchsearchFree-text search string

Filter Examples

Published items only:

{"status":{"_eq":"published"}}

Activity creates only:

{"action":{"_eq":"create"}}

Items updated after a specific date:

{"date_updated":{"_gte":"2024-01-01T00:00:00.000Z"}}

Enter filter values as a JSON string in the source config.

Fields Example

id,title,status,date_updated

Relational fields use dot notation: id,title,author.name

Start Date

When set, the connector adds a filter[field][_gte] parameter to limit results to data after the given date.

StreamField filtered
collection_itemsdate_updated
filesuploaded_on
activitytimestamp

Use YYYY-MM-DD format (e.g. 2026-06-01) or a full ISO datetime. The connector normalizes date-only values to UTC midnight.

Start Date does not apply to users or collections_meta. Use Filter for those.

The Directus admin UI may display a different date field for files than what the API filters on. The API uses uploaded_on. To filter on a different field, use the Filter option instead: {"modified_on":{"_gte":"2026-06-01T00:00:00.000Z"}}.

Permissions

Each stream requires read access on the corresponding Directus resource.

StreamRequired permission
collection_itemsRead on your collection
filesRead files
usersRead users
activityRead activity (often requires admin)
collections_metaRead collections

If a stream returns a 403 error, fix the token's role permissions or disable that stream on the connection.

Syncing Multiple Collections

The connector syncs one collection per source. To sync multiple collections, create one Airbyte source per collection with the same base URL and API key, but a different Collection Name.

Learn More

Get once-a-month release notes & real‑world code tips...no fluff. 🐰