Skip to main content
Connectors list view in the Data module

The Connectors page in the Data module.

Connector status: 80 connector types are registered, but only four — aws_s3, gcs, azure_blob, sftp — can move data in a pipeline or a campaign delivery. The New Connector picker shows every other type as Coming soon and does not allow it to be created. Two — amazon_kinesis and braze — ship as coming-soon: they expose create/edit forms (and a working Test Connection probe for Amazon Kinesis), but pipeline runs that source from them no-op (the executor logs a message and returns zero rows). The 26 W16 expansion entries documented on Connectors Expanded are also coming-soon. Every other registered type is production-ready.

GET /api/v1/connectors

List all connectors for the current tenant. Supports cursor-based pagination.

Query Parameters

Response

The authConfig field is never returned in list or detail responses to prevent secret leakage. The list endpoint also omits lastSyncRowCount and lastSyncAt (its select returns only id, name, type, description, config, authMethod, status, lastTestedAt, lastError, createdAt, updatedAt); those two sync fields are returned by the test-connection response and the pipeline-run flow.

POST /api/v1/connectors

Create a new connector.

Request Body

The config field contains type-specific settings like bucket, region, prefix for S3 or account, warehouse, database for Snowflake. You can also send connectionConfig as an alias — the API accepts both names and merges them.

Supported Connector Types

Kafka is batch polling, not true streaming. Each pipeline run opens a consumer, reads up to maxMessages records (default 1000) with a configurable wait timeout (default 15 seconds), commits offsets, and closes. True long-lived streaming requires a persistent worker that is not yet implemented.
Snowflake and BigQuery row limits. Both connectors accept a sourceTable (required) and rowLimit (optional). The executor issues SELECT * FROM <sourceTable> LIMIT <rowLimit>. The default rowLimit is 100,000 rows (demo-safe). Set to 0 to remove the cap — only do this once you have sized the target database and pipeline run budget to handle full-table reads.

Example

Response: 201 Created with the connector object (excluding authConfig).

PUT /api/v1/connectors

Update an existing connector. Only fields explicitly included in the body are changed — omitted fields preserve their existing values.

Request Body

Response: 200 OK with the updated connector (authConfig returned masked).

Credential preservation contract

authConfig is special. The endpoint follows these rules:
  • Omit authConfig entirely → existing credentials are preserved unchanged. This is the path used by the UI’s Edit form, which leaves credential fields blank by default with a “Leave blank to keep existing” placeholder.
  • Send authConfig with non-empty values → new credentials are encrypted and stored, replacing the old ones.
  • Send authConfig: {} → existing credentials are wiped. Avoid unless you intentionally want to clear them.
Clients implementing connector edit forms should follow the UI pattern: only serialize authConfig into the PUT body when the user actually entered new credential values.

DELETE /api/v1/connectors

Delete a connector by ID.

Query Parameters

Response: 204 No Content

POST /api/v1/connectors/test

Test a connector’s connection by performing a real probe (TCP, HTTP, or SDK-specific check). Rate limited to 100 requests per 60 seconds.

Request Body

Response

The test endpoint:
  • Validates required configuration fields for the connector type
  • Performs a real connection probe where one exists (TCP for databases, HTTP HEAD for REST/webhook, bucket checks for cloud storage, SDK-specific probes for Databricks and Amazon Kinesis). Not every type has one — see verified below.
  • Updates the connector’s status to "active" (verified success), "unverified" (config valid but no real probe ran), or "error" (failure)
  • Uses a circuit breaker to prevent hammering failed connectors
  • Includes SSRF protection (blocks private IPs, validates DNS resolution)
  • Omits authConfig from the response (credentials never leave the server)
  • On a verified success, stamps lastSyncAt with the probe timestamp (lastSyncRowCount is populated separately by the pipeline runtime when the connector is used as a source — the test probe itself does not read rows)

Response Fields

A-02 fix (2026-07-15): connector types with no real probe (BigQuery when no host/account is configured, Salesforce, HubSpot, and any other type that falls through to config-only validation) used to report "Connection test succeeded" and flip status to "active" without ever making a network call. The endpoint now reports verified: false and leaves status at "unverified" for these — dashboards and pipeline gating that key off status === "active" no longer count an unverified connector as confirmed working.
Earlier versions of this endpoint wrote warning text into lastError even when the test succeeded, which caused UI surfaces to render a persistent “Last Error” card despite a green success toast. The endpoint now keeps lastError reserved for real failures; soft signals travel in the transient warning field instead. UI clients should suppress red error styling when status === "active".
Connection testing for the coming-soon braze connector reports a generic failure until a dedicated probe is wired. Amazon Kinesis has a working test probe today.

Error Responses


POST /api/v1/connectors/yaml

Register a YAML connector spec. The server runs parseConnectorYaml and, on success, registers the spec in the in-process connector registry.
The YAML registry is in-memory / process-local — registered specs are not persisted to the database and are re-derived on each server start. This endpoint powers custom-connector authoring surfaces, not durable connector storage.

Request Body

Response

201 Created:

Error Responses


GET /api/v1/connectors/yaml

List all registered YAML connectors. Returns a bare array (no pagination envelope).

Response

200 OK:

Roles

See also: Data Platform