---
title: "Complete OAuth account selection and save the selected account"
method: POST
path: "/accounts/selections/{connection_id}/complete"
tags: ["Accounts"]
---

# Complete OAuth account selection and save the selected account

`POST /accounts/selections/{connection_id}/complete`

## Request

- Base URL: `https://app.openpo.st/api/v1`
- URL: `https://app.openpo.st/api/v1/accounts/selections/{connection_id}/complete`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `openpost_session`

## Path parameters

- `connection_id` string, required: Pending OAuth account-selection ID

## Request body

- CompleteAccountSelectionInputBody
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `selection_id` string: Selected account, page, or channel ID. Retained for single-selection clients.
  - `selection_ids` string[], nullable: Selected account, Page, or organization IDs. LinkedIn supports connecting several identities from one grant.

## Response `200`

OK

- AccountSelectionCompletionResponse
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `account_avatar_url` string, required: Account avatar URL
  - `account_id` string, required: Platform-specific account ID
  - `account_ids` string[], nullable, required: OpenPost destination account IDs created by this selection
  - `account_kind` string: Normalized identity kind, such as person, organization, creator, or business
  - `account_username` string, required: Account username
  - `alias` string: Internal account label. Does not change the provider identity.
  - `capability_checked_at` string, date-time: When account-specific publishing limits were last verified
  - `fediverse_software` string: Detected Fediverse server software (mastodon, pixelfed, peertube, lemmy, piefed, or a compatible implementation)
  - `grant_destination_count` integer, required: Number of active destinations using this provider authorization
  - `id` string, required: Account ID
  - `instance_url` string, required: Instance URL (Mastodon/Bluesky)
  - `is_active` boolean, required: Whether the account is active
  - `limit_profile` 'standard' | 'x-premium': Account-specific publishing limit profile
  - `messages_enabled` boolean, required: Deprecated compatibility shim. Use GET /account-features for messaging enabled state.
  - `messaging_supported` boolean, required: Deprecated compatibility shim. Use GET /account-features for messaging availability and enabled state.
  - `open_fresh_composer` boolean, required: Whether these are the Workspace's first connected destinations
  - `platform` string, required: Platform name
  - `provider_installation_id` string: Operator connector installation used by this account
  - `shared_grant` boolean, required: Whether revoking this authorization disconnects other destinations
  - `slug` string, required: User-editable account slug for CLI selectors
  - `thread_replies_supported` boolean, required: Whether this account supports thread replies in current server config
  - `workspace_id` string, required: Workspace receiving the connected destinations

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Entity
- `500`: Internal Server Error

---

[API](https://skmtc.dev/openpo/apis/openpost-api.md) · [All operations](https://skmtc.dev/openpo/apis/openpost-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openpo/apis/openpost-api/revisions/67d3964458a7?raw)
