BestPost für Entwickler

Mit der Schnittstelle arbeiten deine Programme und KI-Assistenten in deinem BestPost-Konto: Medien hochladen, Beiträge vorbereiten, Texte und Untertitel erstellen lassen, einplanen. Was dort entsteht, siehst du sofort im Planer und im Kalender.

Die Schnittstelle gibt es in den Tarifen Pro und Business.

1. Schlüssel anlegen

In BestPost unter Einstellungen, Konto, „API und MCP". Ein Schlüssel darf entweder nur vorbereiten oder vorbereiten und einplanen. Er beginnt mit bp_ und wird nur einmal angezeigt. Je Konto gehen 5 Schlüssel. Mit einem Schlüssel lässt sich weder anmelden noch ein Kanal verbinden oder die Abrechnung ändern.

curl https://bestpost.app/api/open/v1/me \
  -H "Authorization: Bearer $BESTPOST_API_KEY"

Die Antwort zeigt, was der Schlüssel darf, wie viel von deinem Tarif verbraucht ist und welche Regeln für dein Konto gelten.

2. Mit Claude und anderen Assistenten (MCP)

Ein Assistent mit MCP kann BestPost als Werkzeug benutzen. Du sagst dann zum Beispiel: „Lade den Ordner Herbst als Karussell für Instagram hoch und plane ihn für morgen 18 Uhr."

Ohne Installation

Die Adresse des MCP-Dienstes ist https://bestpost.app/api/mcp. Trage sie in deinem Assistenten als MCP-Dienst ein (in der Claude-App heißt das Connector). Beim Verbinden meldest du dich bei BestPost an und bestätigst, was der Assistent darf. Einen Schlüssel brauchst du dafür nicht.

Verbundene Assistenten siehst und trennst du in BestPost unter Einstellungen, Konto, „API und MCP".

Wer lieber einen Schlüssel benutzt, gibt ihn als Kopfzeile mit. In Claude Code zum Beispiel:

claude mcp add --transport http bestpost https://bestpost.app/api/mcp \
  --header "Authorization: Bearer $BESTPOST_API_KEY"

Dieser Weg kennt keine Dateien auf deinem Gerät. Er arbeitet mit Medien, die schon in BestPost liegen, oder mit öffentlichen Adressen.

Auf dem eigenen Rechner, mit Zugriff auf Ordner

Lade den Dienst als eine Datei herunter. Er braucht Node ab Version 20.

curl -o bestpost-mcp.mjs https://bestpost.app/api/open/v1/mcp/bestpost-mcp.mjs

Trage ihn dann in dein Programm ein, zum Beispiel in Claude Desktop oder Claude Code:

{
  "mcpServers": {
    "bestpost": {
      "command": "node",
      "args": ["/pfad/zu/bestpost-mcp.mjs"],
      "env": { "BESTPOST_API_KEY": "bp_live_..." }
    }
  }
}

Der Dienst liest nur Bilder und Videos, nichts anderes von deinem Rechner.

3. Mit eigenen Programmen (API)

Alle Adressen beginnen mit https://bestpost.app/api/open/v1. Der Schlüssel steht in der Kopfzeile Authorization: Bearer …. Zeiten immer mit Zeitzone.

Beitrag aus einer Datei

Ein Video, ein Bild oder 2 bis 35 Bilder als Karussell. Der Beitrag entsteht als Entwurf. Mit Idempotency-Key legt eine wiederholte Anfrage nichts doppelt an. Texte folgen den festen Einstellungen der Marke: Gedankenstriche ersetzt BestPost, Hashtags und Emojis fallen weg, wenn die Marke auf „keine" steht.

curl -X POST https://bestpost.app/api/open/v1/posts \
  -H "Authorization: Bearer $BESTPOST_API_KEY" \
  -H "Idempotency-Key: reel-2026-10-12" \
  -F "media=@video.mp4" \
  -F 'data={
    "platforms": {
      "instagram": { "text": "Neu im Shop #neu", "firstComment": "Link in der Bio" },
      "facebook":  { "text": "Neu im Shop" }
    },
    "scheduledAt": "2026-10-12T18:00:00+02:00"
  }'

Beitrag aus Adressen, gleich eingeplant

Statt Dateien gehen öffentliche https-Adressen. BestPost holt die Medien selbst ab. Mit schedule wird der Beitrag im selben Aufruf eingeplant, wenn alle seine Plattformen das erlauben.

curl -X POST https://bestpost.app/api/open/v1/posts \
  -H "Authorization: Bearer $BESTPOST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "mediaUrls": ["https://example.com/bild-1.jpg", "https://example.com/bild-2.jpg"],
    "platforms": { "instagram": { "text": "Zwei Bilder, ein Karussell" } },
    "scheduledAt": "2026-10-12T18:00:00+02:00",
    "schedule": true
  }'

Texte von BestPost

BestPost hört und sieht sich das Medium an und schreibt je Plattform einen Text, dazu den Titel für YouTube und einen ersten Kommentar. Das zählt wie in der App als ein Text in deinem Tarif. Die Texte sind Vorschläge: Lies sie, bevor du einplanst.

# 1. anfordern
curl -X POST https://bestpost.app/api/open/v1/posts/POST_ID/texts -H "Authorization: Bearer $BESTPOST_API_KEY"
# 2. abholen, bis "status" nicht mehr "running" ist
curl https://bestpost.app/api/open/v1/posts/POST_ID/texts -H "Authorization: Bearer $BESTPOST_API_KEY"
# 3. in den Entwurf schreiben (nur leere Felder)
curl -X POST https://bestpost.app/api/open/v1/posts/POST_ID/texts/apply -H "Authorization: Bearer $BESTPOST_API_KEY"

Untertitel

Erst erstellen und lesen, dann fest einfügen. Das Einfügen lässt sich nicht zurücknehmen und geht je Video einmal. Ohne style gilt der Stil, den du in BestPost als Standard gespeichert hast.

# 1. erstellen: die Antwort trägt die Untertitel als SRT
curl -X POST https://bestpost.app/api/open/v1/posts/POST_ID/subtitles -H "Authorization: Bearer $BESTPOST_API_KEY"
# 2. fest ins Video einfügen, hier mit hervorgehobenem Wort
curl -X POST https://bestpost.app/api/open/v1/posts/POST_ID/subtitles/burn \
  -H "Authorization: Bearer $BESTPOST_API_KEY" -H "Content-Type: application/json" \
  -d '{ "style": { "preset": "karaoke" } }'
# 3. Stand abfragen, bis "status" gleich "burned" ist
curl https://bestpost.app/api/open/v1/posts/POST_ID/subtitles -H "Authorization: Bearer $BESTPOST_API_KEY"

Einplanen

curl -X POST https://bestpost.app/api/open/v1/posts/POST_ID/schedule \
  -H "Authorization: Bearer $BESTPOST_API_KEY" -H "Content-Type: application/json" \
  -d '{ "scheduledAt": "2026-10-12T18:00:00+02:00" }'

Alle Adressen

GET/meKonto, Rechte des Schlüssels, Verbrauch im Tarif, Regeln
GET/channelsMarken und verbundene Kanäle
GET/channels/{id}Was die Plattform für diesen Kanal gerade erlaubt
GET/postsBeiträge auflisten
POST/postsBeitrag aus Dateien oder Adressen anlegen
GET/posts/{id}Einen Beitrag lesen
PATCH/posts/{id}Texte, Termin, Name, Plattformen ändern
DELETE/posts/{id}Beitrag löschen
POST/posts/{id}/scheduleEntwurf einplanen
POST/posts/{id}/unscheduleEingeplanten Beitrag zurückholen
POST/posts/{id}/textsTexte von BestPost anfordern
GET/posts/{id}/textsStand und Vorschläge
POST/posts/{id}/texts/applyVorschläge in den Entwurf schreiben
POST/posts/{id}/subtitlesUntertitel erstellen
GET/posts/{id}/subtitlesStand, Text, Fortschritt
PUT/posts/{id}/subtitlesKorrigierte Untertitel speichern
DELETE/posts/{id}/subtitlesUntertitel verwerfen
POST/posts/{id}/subtitles/burnUntertitel fest ins Video einfügen

Die vollständige Beschreibung mit allen Feldern gibt es als OpenAPI: https://bestpost.app/api/open/v1/openapi.json

4. Regeln

  • Nie sofort. Der früheste Termin liegt 10 Minuten in der Zukunft. So lässt sich ein Fehler noch zurückholen.
  • TikTok und YouTube. Beide verlangen vor jedem Beitrag Angaben von dir. Ein Beitrag mit einer dieser Plattformen bleibt deshalb ein Entwurf (confirmInApp), bis du ihn im Planer mit einem Klick bestätigst. Was für dein Konto gilt, steht unter rules in der Antwort von /me.
  • Dein Tarif gilt auch hier. Texte, Untertitel, Entwürfe und Speicher zählen wie in der App. Den Stand liefert /me unter usage.
  • Grenze je Kanal und Tag. Ein Programm plant je Kanal nur eine begrenzte Zahl von Beiträgen am Tag ein. Die Zahlen stehen unter rules.maxPerChannelPerDay.
  • Fehler erklären sich. Jede Ablehnung trägt einen Satz und einen festen Code:
{ "error": "X: „text" ist 301 Zeichen lang, erlaubt sind 280.", "code": "TEXT_ZU_LANG" }

Es gelten die Bedingungen der Schnittstelle. Fragen beantworten wir unter info@bestpost.app.