· 3 min leestijd
Posten op Bluesky via een API (en inplannen) in 10 regels
Publiceer en plan Bluesky-berichten vanuit je app met één REST-call. Geen developer-app om te registreren. Inclusief cURL, JavaScript en Python.
Bluesky is een van de makkelijkste sociale netwerken om te automatiseren. Je hoeft geen developer-app te registreren en er is geen reviewwachtrij. Maar "makkelijk" betekent nog steeds dat je sessies, recordformaten, facets voor links en vermeldingen en image-blobs zelf moet afhandelen. En Bluesky heeft helemaal geen ingebouwde planning.
In deze handleiding publiceer en plan je Bluesky-berichten met één REST-call via Hapi. Dezelfde request kan tegelijk ook naar X en LinkedIn.
Stap 1: Maak een app-wachtwoord aan op Bluesky
Ga in Bluesky naar Settings → Privacy and security → App passwords → Add app password. Geef het een naam als hapi en kopieer het.
Met een app-wachtwoord kun je het wachtwoord van je account niet wijzigen en je account niet verwijderen. Dat is dus het juiste credential om aan een integratie te geven.
Stap 2: Koppel het account in Hapi
Maak een gratis Hapi-account, open Accounts → Connect → Bluesky en plak je handle en app-wachtwoord. Hapi versleutelt het credential in rust (AES-256-GCM) en stuurt het nooit terug naar de browser.
Maak daarna een API-key aan onder API keys. Die wordt één keer getoond, dus zet hem in je omgeving:
export HAPI_API_KEY="hapi_live_..."Stap 3: Publiceer een bericht
cURL
curl -X POST https://hapi.tools/v1/posts \
-H "Authorization: Bearer $HAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Hallo Bluesky, gepost via een API 🦋",
"platforms": ["bluesky"]
}'JavaScript
const res = await fetch("https://hapi.tools/v1/posts", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.HAPI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
content: "Hallo Bluesky, gepost via een API 🦋",
platforms: ["bluesky"],
}),
});
console.log(await res.json());Python
import os, requests
res = requests.post(
"https://hapi.tools/v1/posts",
headers={"Authorization": f"Bearer {os.environ['HAPI_API_KEY']}"},
json={"content": "Hallo Bluesky, gepost via een API 🦋", "platforms": ["bluesky"]},
)
print(res.json())Dat is alles. Je krijgt een 201 terug met het bericht en de status per account.
Stap 4: Plan het voor later in
Bluesky ondersteunt geen geplande berichten. Normaal zou je daar zelf een job-runner voor bouwen. Bij Hapi voeg je scheduledAt toe:
{
"content": "Dit gaat maandagochtend de deur uit",
"platforms": ["bluesky"],
"scheduledAt": "2026-11-16T09:00:00-03:00"
}De scheduler van Hapi publiceert op tijd en stuurt een ondertekende post.published- of post.failed-webhook, zodat je app weet hoe het is afgelopen.
Stap 5: Post tegelijk naar Bluesky, X en LinkedIn
Dezelfde request, meer platforms:
{
"content": "We hebben net v2 gelanceerd 🚀",
"platforms": ["bluesky", "x", "linkedin"],
"platformOptions": {
"bluesky": { "content": "We hebben net v2 gelanceerd 🚀 (Bluesky krijgt de korte versie)" }
}
}Met platformOptions pas je de tekst per netwerk aan. Handig, want Bluesky kapt berichten af op 300 tekens.
Geen dubbele posts bij retries
Netwerkstoringen gebeuren. Stuur een Idempotency-Key-header mee en Hapi geeft het oorspronkelijke bericht terug in plaats van een duplicaat aan te maken:
-H "Idempotency-Key: release-v2-announcement"Dat telt extra zwaar als een AI-agent de API aanroept.
Wat je overslaat door het niet zelf te bouwen
- Sessies aanmaken en vernieuwen tegen het AT Protocol
- Facets voor links en vermeldingen met de hand bouwen
- Image-blobs uploaden en aan records hangen
- Een scheduler, retries en meldingen bij fouten
Start je proefperiode van 15 dagen → De proefperiode van $5 omvat 5 gekoppelde accounts en 300 berichten in 15 dagen.