Skip to main content

Source Templates

Not availableCoreNot availableStandardNot availableProNot availableEnterprise FlexNot availableSelf-Managed EnterpriseAvailableEmbedded Compare

A source template controls which connectors appear in the Embedded widget and how their config screens look. When a customer opens the widget, only the sources backed by a template are selectable—so you can pre-set sensible defaults or restrict advanced settings.

The Airbyte platform comes with ready-to-use templates. You can also create templates specific to your organization if you need access to more integrations or if you want different default values.

Creating source templates

Here is an example request to create a new template using only default values:

curl https://api.airbyte.ai/api/v1/integrations/templates/sources \

-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
--data-raw '{

"organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6",
"actor_definition_id": "45b7d7e6-d7d5-4f31-8c1a-9fd96ce6ee35",
"partial_default_config": {}
}'

You can find the actor definition ID from the Connector Registry.

The partial_default_config is a JSON object representing keys from the connector spec for which you want to set default values so your users don't need to set them up themselves.

Optional: add tags during creation

You can also add tags to organize and filter templates:

curl https://api.airbyte.ai/api/v1/integrations/templates/sources \

-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
--data-raw '{

"organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6",
"actor_definition_id": "45b7d7e6-d7d5-4f31-8c1a-9fd96ce6ee35",
"partial_default_config": {},
"tags": ["crm", "pro-tier"]
}'

See Template Tags for more information on organizing templates with tags.

Updating source templates

You can update an existing source template using the PATCH endpoint:

curl -X PATCH https://api.airbyte.ai/api/v1/integrations/templates/sources/{id} \

-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
--data-raw '{

"partial_default_config": {
"api_key": "new_default_value"
}
}'

When a source template is updated, all existing sources created from it will also be updated.

Listing templates

The List Source Templates endpoint lists both the templates you created, as well as standard templates that are available to everyone using the platform.

Filter by tags

You can filter source templates by tags:

curl 'https://api.airbyte.ai/api/v1/integrations/templates/sources?tags=crm&tags=sales&tags_mode=any' \

-H 'Authorization: Bearer <token>'

Tag Selection Modes:

  • any - Template must have at least one of the specified tags
  • all - Template must have all of the specified tags

Deleting templates

You can delete source templates by submitting a DELETE request to the API:

curl -X DELETE 'https://api.airbyte.ai/api/v1/integrations/templates/sources/{id}' \

-H 'Authorization: Bearer <token>'

Sources created from a deleted source template will stop showing up in the widget.

Managing template tags

Add tag to source template

curl -X POST https://api.airbyte.ai/api/v1/integrations/templates/sources/{id}/tags \

-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{

"tag": "pro-tier"
}'

Remove tag from source template

curl -X DELETE https://api.airbyte.ai/api/v1/integrations/templates/sources/{id}/tags/{tag_name} \

-H 'Authorization: Bearer <token>'

For complete tag management documentation, see Template Tags.

Advanced: stream management

After creating a source from a template, you can manage individual streams (tables/collections) within that source.

Discover source catalog

Discover all available streams for a source:

curl https://api.airbyte.ai/api/v1/integrations/sources/{id}/discover \

-H 'Authorization: Bearer <token>'

This returns the complete catalog of streams available from the source connector.

Query catalog with jmespath

For advanced filtering of the catalog, you can use JMESPath queries:

curl -X POST https://api.airbyte.ai/api/v1/integrations/sources/{id}/catalog/query \

-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{

"jmes_query": "streams[?name==`users`]"
}'

JMESPath allows you to filter and transform the catalog before processing. See JMESPath specification for query syntax.

Add stream to source

Add a specific stream to an existing source:

curl -X POST https://api.airbyte.ai/api/v1/integrations/sources/{id}/streams \

-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{

"stream_name": "users",
"sync_mode": "full_refresh"
}'

Update stream configuration

Update stream settings using JSON Patch (RFC 6902):

curl -X PATCH https://api.airbyte.ai/api/v1/integrations/sources/{id}/streams/{stream_name} \

-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '[

{
"op": "replace",
"path": "/sync_mode",
"value": "incremental"
}
]'

The request body is a JSON Patch array following RFC 6902.

Remove stream from source

curl -X DELETE https://api.airbyte.ai/api/v1/integrations/sources/{id}/streams/{stream_name} \

-H 'Authorization: Bearer <token>'

Advanced: source definition catalogs

For advanced use cases, you can define custom catalogs at the source definition level. This allows you to pre-configure catalogs that apply to all sources of a given type.

Create definition-level catalog

curl -X POST https://api.airbyte.ai/api/v1/integrations/definitions/sources/{source_definition_id}/catalog \

-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{

"catalog": {
"streams": [...]
}
}'

Get definition-level catalog

curl https://api.airbyte.ai/api/v1/integrations/definitions/sources/{source_definition_id}/catalog \

-H 'Authorization: Bearer <token>'

Delete definition-level catalog

curl -X DELETE https://api.airbyte.ai/api/v1/integrations/definitions/sources/{source_definition_id}/catalog \

-H 'Authorization: Bearer <token>'

Manage streams in definition catalog

Add stream to definition:

curl -X POST https://api.airbyte.ai/api/v1/integrations/definitions/sources/{source_definition_id}/streams \

-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{

"stream_name": "default_table",
"sync_mode": "full_refresh"
}'

Update stream in definition:

curl -X PATCH https://api.airbyte.ai/api/v1/integrations/definitions/sources/{source_definition_id}/streams/{stream_name} \

-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '[

{
"op": "replace",
"path": "/sync_mode",
"value": "incremental"
}
]'

Delete stream from definition:

curl -X DELETE https://api.airbyte.ai/api/v1/integrations/definitions/sources/{source_definition_id}/streams/{stream_name} \

-H 'Authorization: Bearer <token>'

Use cases for definition-level catalogs

  • Standardized configurations: Apply the same catalog to all sources of a given type
  • Compliance requirements: Enforce specific stream selections for regulatory compliance
  • Performance optimization: Pre-configure optimal stream settings across your organization
  • Onboarding simplification: New sources automatically inherit sensible defaults