Skip to main content
POST
Connect a source

Authorizations

Authorization
string
header
required

A scoped Integration key, prefixed cint_. Send as Authorization: Bearer cint_... on every request. Server-side only. Legacy personal cmem_... keys remain accepted during migration; team/org-scoped cmem_... keys are not valid on this API.

Path Parameters

type
string
required

Data-source type id. Any source-capable type in the connector catalog (~200 sources — Gmail, Slack, HubSpot, Notion, Linear, Salesforce, warehouses, …); enumerate them via GET /api/v1/connectors/catalog.

Pattern: ^[a-z0-9][a-z0-9_-]{0,63}$
Example:

"hubspot"

Body

application/json
endUserId
string
required

Your stable internal user ID. No colon allowed.

Required string length: 1 - 128
Pattern: ^[A-Za-z0-9@._-]{1,128}$
Example:

"u_123"

baseUrl
string<uri>
required

The end user's instance URL (e.g. their self-hosted Twenty CRM).

apiKey
string
required

The end user's API key for that instance. Validated live against the source before being stored; never echoed back.

objects
string[]

Restrict the sync to these object ids (the id values from GET /api/v1/connectors/{type}/collections). Omit to sync every object the API key can read. The scope persists: later scheduled and manual syncs honor it until changed via POST /api/v1/connectors/sync. An id the instance does not expose fails with 400 unknown_twenty_objects, listing what exists.

Required array length: 1 - 100 elements

Response

Source connected; initial import started in the background.

success
boolean
required
type
string
required

Data-source type id. Any source-capable type in the connector catalog (~200 sources — Gmail, Slack, HubSpot, Notion, Linear, Salesforce, warehouses, …); enumerate them via GET /api/v1/connectors/catalog.

Pattern: ^[a-z0-9][a-z0-9_-]{0,63}$
Example:

"hubspot"

objects
integer
required

Number of syncable objects discovered on the instance.

objectNames
string[]
required

Every syncable object id discovered on the instance — the vocabulary for the objects scope, so a partner can render a pick-list without a second call.