---
title: "Connect a Bluesky account"
method: POST
path: "/v1/social-accounts/bluesky"
tags: ["Social Accounts"]
---

# Connect a Bluesky account

`POST /v1/social-accounts/bluesky`

## Request

- Base URL: `https://api.outstand.so`
- URL: `https://api.outstand.so/v1/social-accounts/bluesky`
- Auth: none declared

Connect a Bluesky account using handle and app password authentication. Bluesky uses app passwords instead of OAuth, so credentials are provided directly.

**Prerequisites:**
1. Configure Bluesky in your social networks: `POST /v1/social-networks` with `network: "bluesky"`
2. Create an app password at https://bsky.app/settings/app-passwords

**Reconnecting:** if the handle is already connected for the same `tenantId`, the existing account is replaced (credentials and profile refreshed) instead of duplicated. Connecting the same handle under a different `tenantId` creates a separate account.

**Security Note:** App passwords are scoped credentials that don't grant access to your main password. They can be revoked at any time from Bluesky settings.

## Request body

- object: Request body for creating a Bluesky social account
  - `handle` string, required: Bluesky handle (e.g., user.bsky.social)
  - `appPassword` string, required: Bluesky app password (from bsky.app/settings/app-passwords)
  - `tenantId` string: Optional tenant ID to associate with this account

## Response `201`

Bluesky account connected successfully

- object: Successful Bluesky account creation response
  - `success` boolean, required
  - `data` object, required: Social account information
    - `id` string, required: Unique identifier for the social account
    - `orgId` string, required: Organization ID that owns this social account
    - `tenant_id` string, nullable, required: Your own tenant identifier for this account, as supplied when it was connected. Null when the account was connected without one - such an account is not matched by the `tenantId` filter.
    - `nickname` string, required: User-friendly nickname for the social account
    - `network` string, required: Social network platform (e.g., 'x', 'linkedin', 'instagram')
    - `username` string, required: Username or handle for the social account
    - `profile_picture_url` string, nullable, required: URL to the profile picture for the social account
    - `network_unique_id` string, required: Unique identifier for the account on the social network platform
    - `network_webhook_reference_id` string, nullable: The id this network uses to identify the account in webhook payloads, when it differs from network_unique_id. Null when the platform uses the same id for both. Used by: Instagram.
    - `customer_social_network_id` number, required: ID of the customer social network configuration used to connect this account
    - `accountType` string, required: Type of account: 'personal', 'organization', or 'page'
    - `isActive` number, nullable, required: Whether the account is active (1) or inactive (0)
    - `createdAt` string, nullable, required: ISO 8601 timestamp when the account was connected
    - `tokens` object: Sensitive OAuth tokens. Only included when includeTokens=true is passed.
      - `access_token` string, nullable, required: OAuth access token for the account. Only present when the request included includeTokens=true.

## Other responses

- `400`: Invalid credentials or missing fields
- `409`: Account already connected
- `500`: Internal server error

---

[API](https://skmtc.dev/outstand/apis/outstand-social-accounts-api-v1.md) · [All operations](https://skmtc.dev/outstand/apis/outstand-social-accounts-api-v1/llms.txt) · [OpenAPI document](https://skmtc.dev/outstand/apis/outstand-social-accounts-api-v1/revisions/181fad55d031?raw)
