Skip to content

Bluesky API Setup

Bluesky uses app passwords rather than an OAuth app, so there are no developer-portal credentials to configure. Each end-user enters their own handle + app password from /app/channels.

The admin form at /admin/api-integration/bluesky exists only to override the default Bluesky service URL for self-hosted PDS deployments.

Overview

Form fieldOptions keyDefault
Service URLbluesky_service-urlhttps://bsky.social
Statusbluesky_integration_statusenabled

ENV fallback: BLUESKY_SERVICE_URL (default https://bsky.social).

When you need to change anything

In 99% of deployments leave Service URL empty — Sosyabot defaults to the public https://bsky.social Personal Data Server (PDS). Only override if your tenants connect to a self-hosted PDS or a forked AT-Protocol instance.

What end-users do

End-users:

  1. Create an app password at https://bsky.app/settings/app-passwords.
  2. Open /app/channels → Connect → Bluesky.
  3. Paste their handle (you.bsky.social) and the app password.

Sosyabot calls com.atproto.server.createSession against the Service URL configured here. There is no OAuth round-trip.

For the user-facing flow see Connections → Bluesky.

Pasting into Sosyabot admin panel

/admin/api-integration/bluesky:

  • Service URL: leave empty for the default; or paste your PDS origin (no trailing slash, e.g. https://pds.example.com).
  • Status: Enable.
  • Save.

There is no Test button — the connection is verified per-user when an app password is submitted.

Troubleshooting

SymptomCauseFix
All connects fail with Invalid identifier or passwordService URL points at a PDS that doesn't host the user's identityMost users live on the public PDS; reset Service URL to default.
App password connect succeeds but post failsApp password may be missing required scope (Bluesky's app passwords are limited)User regenerates the app password at bsky.app/settings/app-passwords.

ENV fallback

BLUESKY_SERVICE_URL=https://bsky.social

After editing .env run ./service.sh restart api.