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 field | Options key | Default |
|---|---|---|
| Service URL | bluesky_service-url | https://bsky.social |
| Status | bluesky_integration_status | enabled |
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:
- Create an app password at https://bsky.app/settings/app-passwords.
- Open
/app/channels→ Connect → Bluesky. - 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
| Symptom | Cause | Fix |
|---|---|---|
All connects fail with Invalid identifier or password | Service URL points at a PDS that doesn't host the user's identity | Most users live on the public PDS; reset Service URL to default. |
| App password connect succeeds but post fails | App 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.socialAfter editing .env run ./service.sh restart api.