
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
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
authConfigentirely → 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
authConfigwith 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.
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
- 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
verifiedbelow. - Updates the connector’s
statusto"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
authConfigfrom the response (credentials never leave the server) - On a verified success, stamps
lastSyncAtwith the probe timestamp (lastSyncRowCountis 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 runsparseConnectorYaml 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