External Data
For instructions on how to authenticate to use this endpoint, see API overview.
Endpoints
GET | |
POST | |
GET | |
PATCH | |
DELETE | |
PATCH | |
GET | |
POST | |
POST | |
POST | |
GET | |
PATCH | |
POST | |
POST | |
GET | |
POST | |
POST | |
POST | |
POST |
List all external data sources
Also available via the PostHog MCP server:
external-data-sources-list— List data warehouse sources
Create, Read, Update and Delete External data Sources.
Required API key scopes
external_data_source:readQuery parameters
- limitinteger
- offsetinteger
- searchstring
Response
Example request
GET /api /projects /:project_id /external_data_sourcesExample response
Status 200
Create external data sources
Also available via the PostHog MCP server:
external-data-sources-create— Create data warehouse source (advanced; prefer source setup)
Create, Read, Update and Delete External data Sources.
Required API key scopes
external_data_source:writeRequest parameters
- source_type
- payloadobject
- prefixstring | null
- descriptionstring | null
- access_methodDefault:
warehouse - created_viaDefault:
api - direct_query_enabledbooleanDefault:
false - destination_idsarray
Response
Example request
POST /api /projects /:project_id /external_data_sourcesExample response
Status 201
Retrieve external data sources
Also available via the PostHog MCP server:
external-data-sources-retrieve— Get data warehouse source
Create, Read, Update and Delete External data Sources.
Required API key scopes
external_data_source:readPath parameters
- idstring
Response
Example request
GET /api /projects /:project_id /external_data_sources /:idExample response
Status 200
Update external data sources
Also available via the PostHog MCP server:
external-data-sources-partial-update— Update data warehouse source
Create, Read, Update and Delete External data Sources.
Required API key scopes
external_data_source:writePath parameters
- idstring
Request parameters
- created_via
- client_secretstring
- account_idstring
- prefixstring | null
- descriptionstring | null
- direct_query_enabledboolean
- auto_sync_new_schemasboolean
- auto_sync_schema_patternsarray | null
- job_inputs
Response
Example request
PATCH /api /projects /:project_id /external_data_sources /:idExample response
Status 200
Delete external data sources
Also available via the PostHog MCP server:
external-data-sources-destroy— Delete data warehouse source
Create, Read, Update and Delete External data Sources.
Required API key scopes
external_data_source:writePath parameters
- idstring
Example request
DELETE /api /projects /:project_id /external_data_sources /:idExample response
Status 204 No response body
Update external data sources bulk update schemas
Create, Read, Update and Delete External data Sources.
Required API key scopes
external_data_source:writePath parameters
- idstring
Request parameters
- schemasarray
Example request
PATCH /api /projects /:project_id /external_data_sources /:id /bulk_update_schemasExample response
Status 200
Retrieve external data sources cdc status
Live CDC health for an existing source: slot/publication existence and WAL lag.
Reads from the source DB via the engine adapter. Returns {"enabled": false}
when CDC is off, or the stored config plus live slot_exists /
publication_exists / lag_bytes when on. 400s if the source DB is
unreachable so the UI can show a degraded/unreachable state.
Required API key scopes
external_data_source:readPath parameters
- idstring
Response
Example request
GET /api /projects /:project_id /external_data_sources /:id /cdc_statusExample response
Status 200
Create external data sources check cdc prerequisites for source
Validate CDC prerequisites for an existing source using its stored credentials.
The detail=False check_cdc_prerequisites action is for the creation wizard,
where the client still holds the raw connection config (incl. password) in the
form. On the Configuration page the source already exists and secret fields are
stripped from API responses — so the client can't supply them. This reads the
stored (encrypted) credentials from the DB via the adapter instead.
Body params: cdc_management_mode ("posthog" | "self_managed"),
cdc_slot_name (optional), cdc_publication_name (optional).
Required API key scopes
external_data_source:writePath parameters
- idstring
Request parameters
- created_via
- client_secretstring
- account_idstring
- prefixstring | null
- descriptionstring | null
- direct_query_enabledboolean
- auto_sync_new_schemasboolean
- auto_sync_schema_patternsarray | null
- job_inputs
Example request
POST /api /projects /:project_id /external_data_sources /:id /check_cdc_prerequisites_for_sourceExample response
Status 200 No response body
Create external data sources create webhook
Also available via the PostHog MCP server:
external-data-sources-create-webhook-create— Create and register a webhook for a source
Create, Read, Update and Delete External data Sources.
Required API key scopes
external_data_source:writePath parameters
- idstring
Request parameters
- created_via
- client_secretstring
- account_idstring
- prefixstring | null
- descriptionstring | null
- direct_query_enabledboolean
- auto_sync_new_schemasboolean
- auto_sync_schema_patternsarray | null
- job_inputs
Response
Example request
POST /api /projects /:project_id /external_data_sources /:id /create_webhookExample response
Status 200
Create external data sources delete webhook
Also available via the PostHog MCP server:
external-data-sources-delete-webhook-create— Delete a source's webhook
Create, Read, Update and Delete External data Sources.
Required API key scopes
external_data_source:writePath parameters
- idstring
Request parameters
- created_via
- client_secretstring
- account_idstring
- prefixstring | null
- descriptionstring | null
- direct_query_enabledboolean
- auto_sync_new_schemasboolean
- auto_sync_schema_patternsarray | null
- job_inputs
Response
Example request
POST /api /projects /:project_id /external_data_sources /:id /delete_webhookExample response
Status 200
Retrieve external data sources destinations
Read or replace the destinations every table on this source syncs to.
A table with its own override ignores this set until the override is cleared.
Required API key scopes
external_data_source:writePath parameters
- idstring
Response
Example request
GET /api /projects /:project_id /external_data_sources /:id /destinationsExample response
Status 200
Update external data sources destinations
Read or replace the destinations every table on this source syncs to.
A table with its own override ignores this set until the override is cleared.
Required API key scopes
external_data_source:writePath parameters
- idstring
Request parameters
- destination_idsarray | null
Response
Example request
PATCH /api /projects /:project_id /external_data_sources /:id /destinationsExample response
Status 200
Create external data sources disable cdc
Disable CDC on an existing source.
Cancels any running CDC extraction workflow, deletes the extraction schedule,
delegates engine-side teardown to the source's adapter (drops slot/publication
for Postgres; equivalent for other engines), clears cdc_* keys from
job_inputs, soft-deletes companion CDC tables, and sets all CDC schemas to
sync_type=None, should_sync=False so the user must pick a new sync
strategy before they resume.
Required API key scopes
external_data_source:writePath parameters
- idstring
Request parameters
- created_via
- client_secretstring
- account_idstring
- prefixstring | null
- descriptionstring | null
- direct_query_enabledboolean
- auto_sync_new_schemasboolean
- auto_sync_schema_patternsarray | null
- job_inputs
Example request
POST /api /projects /:project_id /external_data_sources /:id /disable_cdcExample response
Status 200 No response body
Create external data sources enable cdc
Enable CDC on an existing source.
Provisions engine-side CDC resources via the source's adapter, writes the CDC
config into source.job_inputs, and ensures the CDC extraction schedule
exists. Re-runs prereq checks server-side so we never trust a stale
client-side check.
Body params: cdc_management_mode ("posthog" | "self_managed"),
plus engine-specific identifier hints (e.g. cdc_slot_name,
cdc_publication_name for Postgres). Universal tuning fields:
cdc_auto_drop_slot (optional bool), cdc_lag_warning_threshold_mb
(optional int), cdc_lag_critical_threshold_mb (optional int).
Required API key scopes
external_data_source:writePath parameters
- idstring
Request parameters
- created_via
- client_secretstring
- account_idstring
- prefixstring | null
- descriptionstring | null
- direct_query_enabledboolean
- auto_sync_new_schemasboolean
- auto_sync_schema_patternsarray | null
- job_inputs
Response
Example request
POST /api /projects /:project_id /external_data_sources /:id /enable_cdcExample response
Status 200
List all external data sources jobs
Create, Read, Update and Delete External data Sources.
Required API key scopes
external_data_source:readPath parameters
- idstring
Query parameters
- afterstring
- beforestring
- schemasarray
- searchstring
Example request
GET /api /projects /:project_id /external_data_sources /:id /jobsExample response
Status 200
Create external data sources refresh schemas
Fetch current schema/table list from the source and create any new ExternalDataSchema rows (no data sync).
Required API key scopes
external_data_source:writePath parameters
- idstring
Request parameters
- created_via
- client_secretstring
- account_idstring
- prefixstring | null
- descriptionstring | null
- direct_query_enabledboolean
- auto_sync_new_schemasboolean
- auto_sync_schema_patternsarray | null
- job_inputs
Example request
POST /api /projects /:project_id /external_data_sources /:id /refresh_schemasExample response
Status 200 No response body
Create external data sources reload
Create, Read, Update and Delete External data Sources.
Required API key scopes
external_data_source:writePath parameters
- idstring
Request parameters
- created_via
- client_secretstring
- account_idstring
- prefixstring | null
- descriptionstring | null
- direct_query_enabledboolean
- auto_sync_new_schemasboolean
- auto_sync_schema_patternsarray | null
- job_inputs
Example request
POST /api /projects /:project_id /external_data_sources /:id /reloadExample response
Status 200 No response body
Create external data sources repair cdc
Repair CDC on a source whose replication resources were lost.
Only proceeds on evidence of breakage (a persisted broken marker, or a live probe showing the slot/publication missing) — repairing a healthy source would drop its slot and force a full re-sync. Cancels running CDC jobs, recreates the engine-side slot/publication against the stored CDC config, resets every active CDC schema to snapshot mode for a full re-sync (changes since the old slot died are unrecoverable), clears the broken markers, and resumes the paused schedules. Idempotent: safe to retry after a partial failure. Concurrent repairs of the same source are rejected with a 409.
Required API key scopes
external_data_source:writePath parameters
- idstring
Example request
POST /api /projects /:project_id /external_data_sources /:id /repair_cdcExample response
Status 200 CDC repaired; schemas_reset CDC schemas will fully re-sync.
Status 400 CDC not enabled, no active CDC schemas, source looks healthy, or engine-side recreation failed.
Status 409 A repair is already running for this source.
Create external data sources resume cdc
Resume a CDC source whose extraction schedule was paused by a non-retryable failure that left the replication slot intact (bad credentials, SSL/host errors).
Once the user has fixed the root cause, this re-probes the source DB — confirming
the connection now succeeds and the slot/publication still exist — then unpauses the
extraction schedule so streaming resumes from where it left off. No re-snapshot, so
it's the cheap counterpart to Repair CDC. If the slot/publication are actually gone
(cdc_broken, or a live probe showing them missing), resume is refused — only
Repair CDC can recreate them, at the cost of a full re-sync.
Path parameters
- idstring
Example request
POST /api /projects /:project_id /external_data_sources /:id /resume_cdc










