A valid request URL is required to generate request examples{
"success": true,
"data": {
"id": "obs_5c1a9e3d7b204f6a",
"organizationId": "org_2Yh1kQ",
"listId": "obl_7a3f21c9e5b04d68",
"sourceKind": "google_sheets",
"connectionId": "intg_9d41ee7720ab",
"sourceConfig": {
"spreadsheetId": "1AbCdEfGhIjKlMnOpQrStUvWxYz012345",
"sheet": "Leads"
},
"columnMapping": {
"phone": "Phone",
"name": "First Name",
"appointment_time": "Visit"
},
"syncMode": "snapshot",
"schedule": {
"intervalMinutes": 60
},
"autoEnroll": false,
"consentBasis": "ebr",
"enabled": true,
"lastSyncedAt": null,
"lastStatus": "",
"createdAt": "2026-07-13T15:04:00.000Z",
"updatedAt": "2026-07-13T15:04:00.000Z"
}
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}Add a sync source to a contact list
Bind a connected integration that can list records (Google Sheets, or a connector) to a contact list so the platform syncs it on a schedule — the POLL complement to outbound triggers. Each synced record runs through the SAME normalize / validate / dedupe / scrub pipeline as a CSV import. sourceKind is google_sheets or ; columnMapping maps canonical fields (phone required) to the source’s fields exactly like an import; syncMode is snapshot (re-read every run, e.g. Sheets) or incremental (updatedAfter, e.g. GraphQL). A synced list is a reusable SEGMENT by default; set autoEnroll true with a targetCampaignId to also enroll newly-synced valid contacts into that RUNNING campaign. consentBasis is stamped on every synced contact. Use this for a scheduled POLL of a data source. For an event-PUSH automation (a provider fires the moment something happens), use createOutboundTrigger instead.
A valid request URL is required to generate request examples{
"success": true,
"data": {
"id": "obs_5c1a9e3d7b204f6a",
"organizationId": "org_2Yh1kQ",
"listId": "obl_7a3f21c9e5b04d68",
"sourceKind": "google_sheets",
"connectionId": "intg_9d41ee7720ab",
"sourceConfig": {
"spreadsheetId": "1AbCdEfGhIjKlMnOpQrStUvWxYz012345",
"sheet": "Leads"
},
"columnMapping": {
"phone": "Phone",
"name": "First Name",
"appointment_time": "Visit"
},
"syncMode": "snapshot",
"schedule": {
"intervalMinutes": 60
},
"autoEnroll": false,
"consentBasis": "ebr",
"enabled": true,
"lastSyncedAt": null,
"lastStatus": "",
"createdAt": "2026-07-13T15:04:00.000Z",
"updatedAt": "2026-07-13T15:04:00.000Z"
}
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}Authorizations
Flowyte secret API key (Authorization: Bearer flowyte_sk_live_…). Scope-gated; is scoped to your organization — a key can never reach another tenant. The listed scopes in each operation's apiKey requirement are the scopes that key must hold. The tokenUrl is nominal: keys are minted in the dashboard.
- Token URL
- /api/v1/api-keys
Path Parameters
The contact-list id the sync source feeds into.
Body
google_sheets, native_graphql Canonical field → source field; columnMapping.phone is required.
Show child attributes
Show child attributes
The integrations connection id (where the provider needs one).
Source-specific config. For google_sheets: spreadsheetId and sheet (tab name or gid). For : the bulk read plan (objectType and any filter/query the connector accepts).
snapshot, incremental Sync cadence. Key: intervalMinutes (how often the source polls).
Required when autoEnroll is true; must dial this list.
pewc, express, ebr, none Response
The created sync source.
A configured SYNC SOURCE bound to a contact list (the poll complement to outbound triggers): a connected integration that can list records → scheduled incremental sync → the list. A synced list with autoEnroll false is a reusable segment a campaign dials on launch; autoEnroll true also enrolls newly-synced valid contacts into a running targetCampaignId. The sync cursor is internal and not surfaced.
Show child attributes
Show child attributes
Show child attributes
Show child attributes