Create Connector Sync
Create a connector sync configuration.
Authorizations
Timbal API key. Obtain your API key from the Timbal platform settings. See Authentication for more information.
Body
Destination table inside the KB. Created by the first run when it
doesn't exist yet; when it does, existing_dest decides whether the
sync continues it or rebuilds it.
Seconds between run starts. The scheduler ticks every 30s, so smaller values effectively mean "every tick".
Target KB (numeric id, same as the /k2 routes).
The source half of a dispatch, tagged by kind. Each variant maps to a
SourceSpec and gates on the connector advertising the matching
source:<kind> capability. Request shape:
"source": { "kind": "sql_server", "connection_ref": "...", "table": "...", "cursor_column": "..." }.
- Option 1
- Option 2
- Option 3
How to treat a dest_table that already exists. Defaults to adopt.
Only meaningful for an incremental sync — a full-refresh one replaces the
destination on every run by definition.
adopt, replace Checkpoint to continue an existing dest_table from, overriding the one
read off the table itself. Only valid when the table exists and
existing_dest is adopt — for a table the sync still has to build,
use start_cursor. Same shape as start_cursor.
Ordered destination PRIMARY KEY columns. Omit for a keyless table. The
first run declares the key; later runs then merge on it (upsert) so an
upstream update — or a re-pulled boundary row from a non-unique cursor —
overwrites in place instead of duplicating. Key columns are auto-added to
a columns subset, so they only need to exist on the source table. Source
these from the browse columns' pk_position.
Operator label.
Optional lower bound for the first run when it builds the table:
only rows with cursor_column >= start_cursor are pulled (e.g. seed a
timestamp to backfill "from last month on" instead of the whole table).
Ignored on later runs — the advancing cursor takes over — and ignored
when the sync adopts an existing table. Shape matches the job cursor
(e.g. {"kind":"timestamp","value":"2026-06-01T00:00:00Z"}). Not valid
on a full-refresh sync (no cursor_column to bound).
Response
Sync created
true when the sync continues an existing destination table instead of
building it on the first run.
Primary-key columns the sync will merge on. Inherited from an adopted table's own key when the request didn't declare one.
The checkpoint the first run resumes from when the destination was
adopted; null otherwise (including an adopted table that was empty).