Die TikTok Content Posting API veröffentlicht Video- und Fotoinhalte im Namen eines Erstellers, über einen Init-Aufruf, einen Upload oder URL-Abruf sowie eine Statusabfrage. Die wichtigste Tatsache, bevor Sie beginnen: Bis Ihr Client TikToks Audit besteht, ist alles, was Sie posten, auf private Sichtbarkeit beschränkt. Sie können die gesamte Integration bauen und testen und trotzdem keinen einzigen öffentlichen Beitrag veröffentlichen.
Was kann die Content Posting API veröffentlichen, und was ist blockiert?
Die API deckt das direkte Posten von Video- und Fotoinhalten ab, plus einen Entwurfspfad, der Inhalte an den Posteingang des Erstellers sendet, damit dieser sie fertigstellt. Die Endpunkte sind POST /v2/post/publish/video/init/ für Video, POST /v2/post/publish/content/init/ für Fotos und POST /v2/post/publish/status/fetch/ zur Ergebnisprüfung. Es gibt außerdem POST /v2/post/publish/creator_info/query/, den Sie vorab aufrufen sollen, um zu erfahren, was das Konto des Erstellers erlaubt.
Der Blocker ist das Audit. TikToks eigener Wortlaut: “All content posted by unaudited clients will be restricted to private viewing mode.” Die Dokumentation ist auf der Referenzseite für Direct Post ebenso deutlich: Ungeprüfte Clients “können nur auf ein privates Konto posten”, der Versuch wird bei /publish/video/init/ blockiert.
| Aspekt | Was die Dokumentation sagt |
|---|---|
| Erforderlicher Scope | video.publish, für Ihre App genehmigt und vom Nutzer autorisiert |
| Ungeprüfte Apps | Inhalte auf private Sichtbarkeit beschränkt |
| Datenschutzstufen | PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY |
| Medienquelle | FILE_UPLOAD oder PULL_FROM_URL |
| URL-Abruf | Erfordert Eigentumsnachweis für das URL-Präfix oder die Domain |
SELF_ONLY ist der Wert, mit dem Sie während der Entwicklung leben werden. Erwähnenswert ist auch, dass die Menge der Datenschutzstufen, die ein bestimmter Ersteller nutzen kann, nicht fest ist: Sie fragen creator_info ab und verwenden, was zurückkommt, statt PUBLIC_TO_EVERYONE hart zu kodieren und zu hoffen.
Hinweis: Die Zahlen hier wurden gegen TikToks Content-Posting-API-Dokumentation mit Stand September 2026 geprüft. Plattformen ändern diese Angaben ohne Vorankündigung.
Wie funktioniert die Authentifizierung, und wie lange dauert das Audit?
Standard-OAuth zum Erhalt eines Nutzerzugriffstokens mit dem Scope video.publish. Zwei Freigaben bauen aufeinander auf: Ihrer App muss der Scope gewährt werden, und der einzelne Ersteller muss ihn beim Verbinden autorisieren. Keine der beiden allein genügt.
Das Audit ist ein separater Schritt. Es erfolgt, nachdem Sie eine funktionierende Integration haben, denn TikTok erwartet, dass Sie den Ablauf getestet haben, bevor Sie es beantragen. TikTok nennt in der Content-Posting-API-Dokumentation keine Prüfdauer, behandeln Sie den Zeitrahmen also als unveröffentlicht und unbekannt. Planen Sie Ihren Launch-Termin um eine Freigabe herum, die Sie nicht kontrollieren.
Wie sieht die Aufrufreihenfolge für die Veröffentlichung aus?
POST /v2/post/publish/creator_info/query/, um die erlaubten Datenschutzstufen und Interaktionseinstellungen des Erstellers zu prüfen.POST /v2/post/publish/video/init/mitpost_info(Titel,privacy_level, den Deaktivierungs-Flags,video_cover_timestamp_ms, den Umschaltern für kommerzielle Inhalte) undsource_info.- Wenn
sourcegleichFILE_UPLOADist, laden Sie die Bytes perPUTan die von Init zurückgegebeneupload_url, in Blöcken passend zuchunk_sizeundtotal_chunk_count, die Sie deklariert haben. WennsourcegleichPULL_FROM_URList, holt TikTok die Datei stattdessen von Ihrer verifizierten Domain. POST /v2/post/publish/status/fetch/mit derpublish_idaus Init, und abfragen.- Behandeln Sie
PUBLISH_COMPLETEals Erfolg undFAILEDals endgültig. Alles davor ist kein veröffentlichter Beitrag.
# 1. init a direct post
curl -X POST "https://open.tiktokapis.com/v2/post/publish/video/init/" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{
"post_info": { "title": "Ship it.", "privacy_level": "SELF_ONLY" },
"source_info": { "source": "PULL_FROM_URL",
"video_url": "https://verified.example.com/clip.mp4" }
}'
# -> { "data": { "publish_id": "v_pub_url~..." } }
# 2. poll
curl -X POST "https://open.tiktokapis.com/v2/post/publish/status/fetch/" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{ "publish_id": "v_pub_url~..." }'
Die dokumentierten Statuswerte sind PROCESSING_UPLOAD (Datei-Upload-Pfad), PROCESSING_DOWNLOAD (URL-Abruf-Pfad), SEND_TO_USER_INBOX (Entwurf an den Ersteller übergeben), PUBLISH_COMPLETE und FAILED.
Wie sehen die Ratenlimits aus?
Zwei Zahlen sind in der Referenzdokumentation klar angegeben, beide pro Nutzerzugriffstoken:
- Direct-Post-Init: 6 Requests pro Minute.
- Status-Abfrage: 30 Requests pro Minute.
Sechs Inits pro Minute pro Nutzer sind großzügig für einen Scheduler und knapp für einen Massenimport. Dreißig Statusabfragen pro Minute klingen nach viel, bis Sie Hunderte laufende Beiträge haben, die sich einen Poller teilen, dann brauchen Sie Backoff pro Token statt einer globalen Schleife.
Wir konnten aus den gelesenen Content-Posting-API-Seiten kein dokumentiertes tägliches Posting-Kontingent pro Nutzer, keine maximale Videodateigröße und keine maximale Dauer bestätigen. Die Antwort von creator_info ist die vorgesehene Quelle für die Obergrenze der Videodauer pro Konto, lesen Sie sie also aus, statt eine Zahl hart zu kodieren.
Hinweis: Die Zahlen hier wurden gegen TikToks Content-Posting-API-Dokumentation mit Stand September 2026 geprüft. Plattformen ändern diese Angaben ohne Vorankündigung.
Was wird Sie tatsächlich drei Wochen kosten?
Das Audit. Das ist der große Posten, und er unterscheidet sich auf eine bestimmte Weise vom Instagram- oder LinkedIn-Review: Sie können Code ausliefern, Konten verbinden und veröffentlichen, und trotzdem ist jeder Beitrag unsichtbar. Nichts in Ihren Logs wird falsch aussehen. Lassen Sie keinen Stakeholder ein erfolgreiches PUBLISH_COMPLETE im Staging sehen und daraus schließen, das Feature sei fertig.
Domain-Verifizierung für PULL_FROM_URL. TikTok Ihre Medien abrufen zu lassen, ist viel einfacher als Chunked Uploads, erfordert aber den Nachweis, dass Sie das URL-Präfix besitzen. Wenn Ihre Medien auf einem Bucket mit generiertem Hostnamen liegen, müssen Sie erst eine eigene Domain zu Ihrem Speicher hinzufügen, bevor Sie den einfachen Pfad nutzen können.
Token-Erneuerung. TikTok-Zugriffstoken werden mit einem Refresh-Token erneuert, und eine abgelaufene Verbindung bedeutet, dass der Ersteller sich erneut verbinden muss. Wie bei jeder Plattform ist nicht der Erneuerungsaufruf die Arbeit, sondern die Zustandslogik und die Benachrichtigung, wenn die Erneuerung fehlschlägt.
Asynchrone Fehlerbehandlung. Ein Init, das eine publish_id zurückgibt, ist keine Veröffentlichung. Ein erfolgreicher Upload auch nicht. Nur PUBLISH_COMPLETE ist es, und FAILED kann Minuten später eintreffen, etwa wegen nicht unterstützter Kodierung. Speichern Sie die publish_id, halten Sie einen processing-Status vor und gleichen Sie ab. Unser Leitfaden zur Social-Media-Scheduling-API behandelt das dafür nötige Zustandsmodell.
Wenn Sie auch die Bildunterschriften schreiben, sagt Ihnen der TikTok-Zeichenzähler, wo der Titel abgeschnitten wird.
Die Kurzfassung
- Init, Upload oder Abruf, dann Status abfragen.
PUBLISH_COMPLETEist der einzige Erfolg. - Ungeprüfte Clients können nur privat posten. Ein Audit ist für öffentliche Beiträge erforderlich.
- Der Scope
video.publishbraucht Genehmigung für Ihre App und Zustimmung des Erstellers. - 6 Init-Requests pro Minute und 30 Statusabfragen pro Minute, pro Nutzertoken.
- Review- und Audit-Dauern werden von TikTok nicht veröffentlicht.
Auf TikTok veröffentlichen, ohne selbst das Audit zu durchlaufen
Ein Weg, die Einrichtungskosten zu umgehen, ist die Veröffentlichung über eine API, die das Audit bereits durchlaufen hat. BulkPublish deckt TikTok neben 14 weiteren Plattformen über eine REST-API ab, sodass Init, Upload, Polling und Retry auf unserer Seite liegen und Ihr Aufruf ein einzelner Create-Post-Request mit einer Kanal-ID ist. Derselbe Aufruf zielt auf Instagram Reels und YouTube Shorts, wenn Sie cross-posten. Endpunkte sind unter /developers/ dokumentiert, und der Überblick zur REST-Integration steht unter /integrations/rest-api/.