Docs

Lebenszyklus eines Posts

Die Status, die ein Post und jedes seiner Konten durchlaufen, und was du in jedem Status mit einem Post tun kannst.

Ein Post geht an ein oder mehrere Konten. Jedes Konto bekommt ein Target mit eigenem Status, und der Status des Posts fasst seine Targets zusammen. Diese Seite zeigt, wie sich beide ändern und welche Aufrufe wann erlaubt sind.

Status des Posts

Ein Entwurf wird geplant, und ein geplanter Post kann zurück zum Entwurf abgebrochen werden. Ist seine Zeit da, ist er publishing und endet als published, partially_failed oder failed. Ein erneuter Versuch sendet die fehlgeschlagenen Konten noch einmal, und der Post ist wieder publishing.planenabbrechenZeit ist daerneut versuchen (nur fehlgeschlagene Konten)draftscheduledpublishingpublishedpartially_failedfailed
StatusBedeutung
draftOhne Zeit gespeichert. Nichts passiert, bis du ihn planst oder veröffentlichst
scheduledWartet auf seine Zeit. publishNow und POST /posts/{id}/publish antworten ebenfalls mit scheduled und fangen sofort an zu senden
publishingMindestens ein Konto wird gerade gesendet oder wartet auf eine automatische Wiederholung
publishedJedes Konto ist veröffentlicht
partially_failedJedes Konto ist fertig; einige veröffentlicht, einige fehlgeschlagen
failedJedes Konto ist fertig, und keins wurde veröffentlicht

Geplante Posts werden einmal pro Minute abgeholt, ein Post geht also etwa innerhalb einer Minute nach seiner Zeit raus.

Status der Targets

Jeder Eintrag in targets[] hat seinen eigenen Status: draft, scheduled, publishing, published oder failed. Ein fehlgeschlagenes Target hat einen error mit code, category und source, die sagt, wer den Fehler beheben kann, siehe Publishing errors. Ein veröffentlichtes Target hat platformPostId und platformUrl.

Wenn eine Plattform drosselt oder ausfällt, zeigt das Target failed mit seinem Fehler, während FeedHorizon auf den nächsten Versuch wartet (insgesamt 3 Versuche, nach 2 und nach 10 Minuten). Der Post bleibt in dieser Zeit publishing. Erst wenn der letzte Versuch fehlschlägt oder der Fehler nicht wiederholt wird, gilt das Target endgültig als fehlgeschlagen, und post.target.failed wird gesendet.

Was du in welchem Status tun kannst

Aufrufdraftscheduledpublishingpublishedpartially_failedfailed
PATCH /posts/{id} (bearbeiten)JaJaNeinNeinNeinJa
POST /posts/{id}/publishJaJaNeinNeinNeinJa
POST /posts/{id}/cancelNeinJaNeinNeinNeinNein
POST /posts/{id}/retryNeinNeinNur fehlgeschlagene TargetsNeinJaJa
POST /posts/{id}/duplicateJaJaJaJaJaJa
DELETE /posts/{id}JaJaNeinJaJaJa
  • Bearbeiten wird mit 409 post_not_editable abgelehnt, sobald ein Konto gerade veröffentlicht oder veröffentlicht ist. Um den Text eines Posts zu ändern, der teilweise live ist, kopierst du ihn.
  • Erneut versuchen sendet nur die fehlgeschlagenen Konten noch einmal; veröffentlichte bleiben, wie sie sind. Ist kein Konto fehlgeschlagen, kommt 409 post_not_failed.
  • Abbrechen nimmt einen geplanten Post aus der Planung und behält ihn als Entwurf. Bei jedem anderen Status kommt 409 post_not_scheduled.
  • Löschen entfernt den Post aus FeedHorizon. Posts, die schon live sind, bleiben auf den Plattformen. Während ein Konto gesendet wird, antwortet Löschen mit 409 post_publishing; versuch es ein paar Sekunden später noch einmal.

Live-Post per Kopie ändern

Ein Post, der teilweise oder ganz live ist, lässt sich nicht bearbeiten, weil der live geschaltete Teil sonst nicht mehr zu ihm passen würde. Um eine korrigierte Fassung zu posten, zum Beispiel nach platform_rejected auf einem Konto:

  1. POST /posts/{id}/duplicate legt einen Entwurf mit demselben Text, denselben Medien, Konten und eigenen Texten an.
  2. Ändere die Kopie per PATCH: Behalte in targets nur die fehlgeschlagenen Konten und korrigiere den Text.
  3. Plane oder veröffentliche die Kopie.

Webhooks unterwegs

WannEvent
Ein Post bekommt eine Zeit (geplant angelegt, oder ein Entwurf wird geplant)post.scheduled
Text, Zeit, Konten oder Status ändern sichpost.updated
Ein Konto wurde veröffentlichtpost.target.published
Ein Konto ist endgültig fehlgeschlagenpost.target.failed
Alle Konten sind fertigpost.published, post.partial oder post.failed
Der Post wurde gelöschtpost.deleted

Den Payload jedes Events findest du unter Webhook events.