---
title: "Connect account"
method: POST
path: "/v1/accounts/connect/{platform}"
---

# Connect account

`POST /v1/accounts/connect/{platform}`

## Request

- Base URL: `https://postonce.to/api/public`
- URL: `https://postonce.to/api/public/v1/accounts/connect/{platform}`
- Auth: HTTP bearer

Computes a five-minute browser authorization URL bound to the authenticated profile without connecting or changing an account. Open the returned URL in a separate browser step to authorize the provider; then list accounts to verify connection. Depending on platform, the browser uses provider OAuth or a PostOnce-hosted credential or signer flow. Never enter provider credentials in chat.

## Path parameters

- `platform` 'bluesky' | 'facebook' | 'farcaster' | 'nostr' | 'telegram' | 'instagram' | 'linkedin' | 'pinterest' | 'reddit' | 'snapchat' | 'threads' | 'tiktok' | 'twitter' | 'vimeo' | 'youtube', required

## Response `201`

Account connection URL created successfully.

- ConnectAccountResponse
  - `data` object
    - `hosted_url` string, nullable
    - `authorization_url` string, nullable: Five-minute browser connection URL bound to the API-key profile with signed state. OAuth platforms return a direct provider URL; Bluesky returns a PostOnce-hosted app-password form; Farcaster returns a PostOnce-hosted managed-signer approval flow; Nostr returns a PostOnce-hosted NIP-46 remote-signer flow; Telegram returns a PostOnce-hosted flow that adds @PostOnceBot as a channel admin.
    - `mode` 'credential_form_url' | 'managed_signer' | 'remote_signer' | 'oauth_authorization_url'
    - `platform` string

## Other responses

- `401`: Missing, invalid, revoked, or expired API key.
- `403`: Missing required scope.
- `404`: Unsupported platform.

---

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