Beiträge und Planung

API-Schlüssel erhalten

Ein Beitrag gehört zu einem Betrieb und geht an ein oder mehrere Netzwerke, seine Ziele (targets). Jedes Ziel hat seinen eigenen Text, seine Medien, sein Format und seinen eigenen Status.

Der Body eines Beitrags

FeldBedeutung
establishmentIdDer Betrieb, der veröffentlicht (GET /v1/establishments)
targets[]Ein Eintrag pro Netzwerk: platform, text, optional media, format und accountId
targets[].media[]Ein Medium der Mediathek per id oder eine öffentliche https-url mit ihrem type (image oder video)
targets[].accountIdDas zu verwendende Konto, wenn der Betrieb mehrere in diesem Netzwerk hat
scheduledAtEin zukünftiger ISO-8601-Zeitpunkt; fehlt er, geht der Beitrag sofort raus
statusdraft, um einen Entwurf zu speichern, der nicht rausgeht (dann ohne scheduledAt)

Status

StatusBedeutung
draftGespeichert, geht nicht raus
scheduledGeht zu scheduledAt raus
publishingWird an das Netzwerk gesendet
publishedOnline, mit seinem permalink
failedDas Netzwerk hat ihn abgelehnt; error nennt den Grund
sent_to_inboxAn die App des Netzwerks gesendet, wo der Inhaber ihn fertigstellt (TikTok)

Der status des Beitrags fasst seine Ziele zusammen. Er ist partial, wenn ein Netzwerk veröffentlicht hat und ein anderes fehlgeschlagen ist.

Vor dem Versand bearbeiten

PATCH /v1/posts/{id} schreibt die Ziele neu, verschiebt scheduledAt oder ändert status: draft nimmt den Zeitpunkt weg und behält den Inhalt, scheduled plant ihn erneut. Sobald ein Netzwerk den Beitrag gesendet hat, antwortet die API mit 409 post_not_editable.

bash
curl -X PATCH https://api.sofia-post.com/api/v1/posts/$POST_ID \
  -H "Authorization: Bearer $SOFIA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"status":"scheduled","scheduledAt":"2026-11-20T09:00:00Z"}'

Löschen

DELETE /v1/posts/{id} antwortet mit 204. Solange ein Netzwerk den Beitrag sendet, antwortet die API mit 409 post_in_flight: Versuchen Sie es einen Moment später erneut.

Beiträge auflisten

GET /v1/posts listet alle Beiträge auf, die das Token erreichen kann, neueste zuerst, gefiltert nach establishmentId, status, from, to und createdBy (me oder app). Ein Beitrag passt zu status, wenn mindestens eines seiner Netzwerke in diesem Status ist. Siehe Paginierung.