---
title: "Start OAuth for a social provider"
method: POST
path: "/api/v1/channels/connect/{provider}/start"
tags: ["channels"]
---

# Start OAuth for a social provider

`POST /api/v1/channels/connect/{provider}/start`

## Request

- Base URL: `https://api.cadencz.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.cadencz.com/api/v1/channels/connect/{provider}/start`
- Auth: HTTP bearer

Signs an OAuth state and returns the provider's authorization URL. Supported: x, linkedin, threads, facebook, discord.

## Path parameters

- `provider` string, required

## Request body

- OAuthStartRequest: Options that ride the OAuth round-trip in the signed state.
  - `learn_voice` boolean: After the account connects, read its ten most recent posts once and save them as writing samples on the Writing style page. X only — LinkedIn does not let an app read a member's posts.

## Response `200`

Successful Response

- OAuthStartResponse: Returned by any provider's OAuth start endpoint; the frontend redirects the browser to `authorization_url`.
  - `authorization_url` string, required: Provider OAuth approval URL.

## Other responses

- `401`: Missing or invalid Supabase bearer token.
- `422`: Validation Error
- `502`: The upstream provider rejected the request.

---

[API](https://skmtc.dev/cadencz/apis/cadencz-api.md) · [All operations](https://skmtc.dev/cadencz/apis/cadencz-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cadencz/apis/cadencz-api/revisions/3392fe5e93db?raw)
