External Data
For instructions on how to authenticate to use this endpoint, see API overview.
Endpoints
POST | |
GET | |
GET | |
POST | |
POST | |
POST | |
POST | |
GET | |
GET | |
GET | |
POST | |
GET | |
PATCH | |
DELETE | |
PATCH | |
GET | |
POST | |
POST | |
POST |
Create environments external data sources check cdc prerequisites
Also available via the PostHog MCP server:
external-data-sources-check-cdc-prerequisites-create— Check Postgres CDC prerequisites
Validate CDC prerequisites against a live Postgres connection.
Used by the source wizard to surface ✅/❌ checks before source creation, and by the self-managed setup popup to verify user-created publications.
Required API key scopes
external_data_source:writeExample request
POST /api /environments /:environment_id /external_data_sources /check_cdc_prerequisitesExample response
Status 200 Whether the Postgres database satisfies CDC prerequisites.
Status 400 Invalid config, disallowed host, or connection failure.
Retrieve environments external data sources connect link
Return a secure browser link for connecting a data warehouse source.
The link opens a minimal connect page rendering the source's full connection form — OAuth options included — with no table selection and no source creation. The user authenticates in their browser, secrets never pass through the agent, and the agent finishes setup afterwards by passing the stored credential id to data-warehouse-source-setup.
Required API key scopes
external_data_source:readQuery parameters
- source_typestring
Response
Example request
GET /api /environments /:environment_id /external_data_sources /connect_linkExample response
Status 200
List all environments external data sources connections
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 /environments /:environment_id /external_data_sources /connectionsExample response
Status 200
Create environments external data sources database schema
Create, Read, Update and Delete External data Sources.
Required API key scopes
external_data_source:writeRequest parameters
- source_type
Example request
POST /api /environments /:environment_id /external_data_sources /database_schemaExample response
Status 200 No response body
Create environments external data sources setup
One-shot data warehouse source setup.
Validate credentials, discover available tables, enable them all with sensible sync defaults
(incremental where supported, else append, else full refresh), and create the source in a single
call — the caller never has to assemble a schemas array. For sources that support webhooks
(e.g. Stripe), a webhook is auto-registered after creation: on success webhook-capable tables
switch to real-time webhook sync (unlocking webhook-only tables); on failure the polling
defaults stay in place. For fine-grained table/sync control, use the lower-level
database_schema + create flow instead.
Required API key scopes
external_data_source:writeRequest parameters
- source_type
- payloadobject
- prefixstringnull
- descriptionstringnull
- direct_query_enabledbooleanDefault:
true
Response
Example request
POST /api /environments /:environment_id /external_data_sources /setupExample response
Status 201
Create environments external data sources source prefix
Create, Read, Update and Delete External data Sources.
Required API key scopes
external_data_source:writeRequest parameters
- created_via
- client_secretstring
- account_idstring
- prefixstringnull
- descriptionstringnull
- direct_query_enabledboolean
- job_inputs
Example request
POST /api /environments /:environment_id /external_data_sources /source_prefixExample response
Status 200 No response body
Create environments external data sources store credentials
Validate and store credentials for a data warehouse source without creating the source.
Backs the source connect page: the user enters credentials directly in PostHog, they are
checked against a live connection, then stashed encrypted in a temporary store. The returned
credential id can be passed to setup as {'credential_id': <id>} to create the source — so
secrets never travel through an agent conversation. The stash is single-use: it is deleted
as soon as setup consumes it, and expires after 24 hours if never consumed.
Required API key scopes
external_data_source:writeRequest parameters
- source_type
- payloadobject
Response
Example request
POST /api /environments /:environment_id /external_data_sources /store_credentialsExample response
Status 201
List all environments external data sources stored credentials
List credentials stored via the source connect page that haven't been consumed yet.
Returns metadata only (id, source type, timestamps) — never the secrets themselves. Stored
credentials are temporary: they disappear once consumed by setup or when they expire.
Newest first, so after a user confirms they've finished the connect page, the first entry
for the source type is the one to pass to setup.
Required API key scopes
external_data_source:readQuery parameters
- searchstring
- source_typestring
Example request
GET /api /environments /:environment_id /external_data_sources /stored_credentialsExample response
Status 200
Retrieve environments external data sources wizard
Create, Read, Update and Delete External data Sources.
Required API key scopes
external_data_source:readExample request
GET /api /environments /:environment_id /external_data_sources /wizardExample response
Status 200 No response body
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
- prefixstringnull
- descriptionstringnull
- access_methodDefault:
warehouse - created_viaDefault:
api - direct_query_enabledbooleanDefault:
true
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
- prefixstringnull
- descriptionstringnull
- direct_query_enabledboolean
- 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.
Path parameters
- idstring
Query parameters
- limitinteger
- offsetinteger
- searchstring
Request parameters
- schemasarray
Response
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
Example request
GET /api /projects /:project_id /external_data_sources /:id /cdc_statusExample response
Status 200 No response body
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
- prefixstringnull
- descriptionstringnull
- direct_query_enabledboolean
- 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
- prefixstringnull
- descriptionstringnull
- direct_query_enabledboolean
- job_inputs
Example request
POST /api /projects /:project_id /external_data_sources /:id /create_webhookExample response
Status 200 No response body
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
- prefixstringnull
- descriptionstringnull
- direct_query_enabledboolean
- job_inputs
Example request
POST /api /projects /:project_id /external_data_sources /:id /delete_webhook