For data that lives in an outside account: Gmail and Microsoft 365 mailboxes and calendars, LinkedIn, Google Drive and OneDrive / SharePoint, Microsoft Copilot, and the social surfaces. Connecting one is a consent step that happens in the provider's own browser flow; everything after it is API-reachable, and synced content becomes ordinary corpus. The routes at the top are the same for every provider; the sections below them are what only a file store or Copilot can do here. What a channel SENDS lives in the Execution leg's Outbound lane, where the approval gate is the story.
GET/v1/user/channelsSession
List connected channels
Read which channels are connected, their health, and when each last synced.
A channel that has fallen out of authorization reports it here rather than failing silently on the next sync — check this before concluding a sync returned nothing because there was nothing.
Start a channel connection and receive the consent link to send the account holder to.
Connection cannot be completed by API, by design: the account holder authorizes it in their own provider's browser flow. This route returns the link; the connection lands when they finish it.
A connection needing a second factor pauses at a checkpoint, which the same lane resolves once the holder supplies it.
Body
Field
Type
Required
Description
action
string
required
`connect-link` for the hosted flow, `reconnect-link` to re-authorize an existing channel.
kind
string
required
The channel kind to connect: `email`, `calendar`, `professional-network`, `store`, `social`.
provider
string
optional
Which account within the kind: `gmail`, `microsoft-365`, `linkedin`, `google-drive`, `onedrive`, `meta`, `tiktok`. Defaults to the only provider serving that kind.
The body is not JSON, or exceeds the 1 MB request-body cap.
401
invalid API key
The `Authorization` header is missing, malformed, or names a revoked key.
400
name the target project via the X-Project-Id header or projectId query
No project was named and the key is not bound to one.
429
rate limit exceeded
You passed 60 requests/minute on this key. `Retry-After` carries the seconds to wait.
500
internal error
The relay failed to serve the request. Retry with backoff; the cause is logged server-side against your request.
POST/v1/channel-sync/{channelId}API key
Sync a channel
Pull the channel's history into the project's corpus, where retrieval reaches it.
Incremental after the first run: a sync resumes from its own watermark, so calling it repeatedly is cheap and calling it twice is not a duplicate.
Synced content becomes ordinary corpus. A question about what a customer said in an email is answered by the same retrieval that answers a question about a file.