X’s Entwicklerplattform bepreist die API jetzt pro Anfrage statt über einen Abonnementtarif. Die Beitragserstellung wird pro Aufruf berechnet, und POST /2/tweets ist auf 100 Anfragen pro Nutzer pro 15 Minuten und 10.000 pro App pro 24 Stunden begrenzt. Wenn Sie entscheiden, ob Sie direkt dagegen entwickeln, legen diese zwei Tatsachen den Großteil Ihrer Architektur fest.
Was kostet die X API tatsächlich?
Die offizielle Preisseite beschreibt ein Credit-Modell, keine benannten Tarife. Sie kaufen Credits, legen ein Ausgabenlimit fest, und jeder Aufruf zieht vom Guthaben ab.
| Vorgang | Angegebener Preis |
|---|---|
| Beitragserstellung | $0.015 pro Anfrage |
| Beitrag mit URL | $0.200 pro Anfrage |
| Beitrag (summoned) | $0.010 pro Anfrage |
| DM- und Nutzerinteraktionen | $0.015 pro Anfrage |
| Interaktionen löschen | $0.010 pro Anfrage |
| Lesen: Beiträge | $0.005 pro Ressource |
| Lesen: Nutzer, DMs, Folgt/Follower | $0.010 pro Ressource |
| Lesen: Likes, Stummschaltungen, Blockierungen | $0.001 pro Ressource |
| Eigene Lesevorgänge (eigene Daten) | $0.001 pro Ressource |
Zwei Details zählen mehr als die Einzelpreise. Ein Beitrag mit URL kostet über das 13-Fache eines einfachen Beitrags, was ein spürbarer Posten ist, wenn Sie beruflich Links veröffentlichen. Und Pay-per-Usage-Tarife sind auf 3 Millionen gelesene Beiträge pro monatlichem Abrechnungszyklus begrenzt, sodass lesehungrige Produkte an eine Obergrenze stoßen, die kein noch so großer Credit-Einkauf aufhebt.
Ressourcen werden innerhalb eines 24-Stunden-UTC-Fensters dedupliziert, das zweimalige Anfragen derselben Ressource an einem Tag also nur einmal berechnet wird.
Hinweis: Die hier genannten Zahlen wurden anhand von docs.x.com/x-api/getting-started/pricing überprüft, Stand September 2026. Plattformen ändern solche Angaben ohne Vorankündigung.
Was wir nicht überprüfen konnten. Ältere Free-, Basic- und Pro-Tarife mit monatlichen Beitragslimits werden im Netz vielfach zitiert. Wir konnten keine offizielle Seite laden, die sie auflistet: Die aktuellen Preis- und Einführungsseiten beschreiben Pay-per-Usage ohne benannte Tarife, und die Tarif-URL liefert 404. Wir wiederholen keine Zahlen von Dritten. Prüfen Sie die Developer Console für die Raten, die für Ihr Konto gelten.
Was kann die X API veröffentlichen, und was nicht?
POST /2/tweets nimmt text, optional media.media_ids, reply, poll, geo, reply_settings sowie einige Flags wie made_with_ai und paid_partnership entgegen.
Medien sind nicht Teil dieses Aufrufs. Sie laden sie separat über die Chunked-Upload-Endpunkte hoch und übergeben die resultierende media_id. Ein Beitrag akzeptiert bis zu 4 Fotos, 1 animiertes GIF oder 1 Video.
Die Lücken, die es wert sind, benannt zu werden, bevor Sie sich festlegen:
quote_tweet_idist nur Enterprise. Zitat-Beiträge sind über den allgemeinen Endpunkt nicht verfügbar.- Video-Obergrenzen hängen vom postenden Konto ab, nicht von Ihrer App. Standardkonten sind auf 20 Minuten und 8 GB begrenzt, X Premium und verifizierte Konten auf 125 Minuten und 16 GB. Ihr Uploader muss beides handhaben, denn das Limit gehört zu dem Nutzer, in dessen Namen Sie posten.
- Umfragen sind eingeschränkt. 2 bis 4 Optionen, Dauer zwischen 5 und 10.080 Minuten.
- Die Erstellungsreferenz nennt kein Zeichenlimit. Wir konnten dazu auf dieser Seite nichts verifizieren. Siehe den Beitrag zum X-Zeichenlimit für das, was das Produkt tatsächlich durchsetzt.
Hinweis: Die hier genannten Zahlen wurden anhand von docs.x.com/x-api/posts/creation-of-a-post überprüft, Stand September 2026. Plattformen ändern solche Angaben ohne Vorankündigung.
Wie sieht das Auth-Modell in einfachen Worten aus?
Zwei Modi, und Posten funktioniert nur in einem davon.
App-only Bearer-Token. Ein einzelnes Credential, das Ihre Anwendung repräsentiert. Es liest öffentliche Daten. Es kann nicht posten, da kein Nutzer vorhanden ist, in dessen Namen gepostet werden könnte.
OAuth 2.0 Authorization Code mit PKCE, Nutzerkontext. Der Nutzer wird zum Autorisierungsdialog von X geschickt, kommt mit einem Code zurück, und Sie tauschen ihn gegen ein Access-Token ein. Posten erfordert den Scope tweet.write, zusammen mit tweet.read und users.read. Wenn Sie nach Ablauf des Access-Tokens weiter posten möchten, müssen Sie bei der Autorisierung offline.access anfordern, was dazu führt, dass ein Refresh-Token ausgestellt wird.
Dieser letzte Punkt ist der, der Leuten zum Verhängnis wird. offline.access ist pro Autorisierung opt-in. Lassen Sie es weg, muss sich jeder Nutzer interaktiv erneut autorisieren, was für einen Planer, der um 3 Uhr nachts veröffentlicht, fatal ist. Die Dokumentation gibt die Lebensdauer des Access-Tokens nicht an, behandeln Sie sie also als kurz und erneuern Sie proaktiv.
Wie sehen die Ratenlimits beim Posten aus?
| Endpunkt | Pro Nutzer | Pro App |
|---|---|---|
POST /2/tweets | 100 pro 15 Minuten | 10.000 pro 24 Stunden |
Jede Antwort trägt x-rate-limit-limit, x-rate-limit-remaining und x-rate-limit-reset (ein Unix-Zeitstempel). Lesen Sie diese, statt Ihre eigenen Aufrufe zu zählen, denn Ihr Zähler und der von X driften auseinander, sobald ein Wiederholungsversuch passiert.
Die Dokumentation stellt ausdrücklich klar, dass Ratenlimits und Abrechnung getrennte Angelegenheiten sind. Unter dem Ratenlimit zu bleiben, deckelt nicht Ihre Ausgaben, und ein Ausgabenlimit zu setzen, verhindert keine 429-Fehler. Sie brauchen beide Kontrollen.
Hinweis: Die hier genannten Zahlen wurden anhand von docs.x.com/x-api/fundamentals/rate-limits überprüft, Stand September 2026. Plattformen ändern solche Angaben ohne Vorankündigung.
Was Sie tatsächlich drei Wochen kosten wird
Nicht der Publish-Aufruf. Der Publish-Aufruf ist ein Nachmittag.
Token-Erneuerung. offline.access anfordern, Refresh-Tokens verschlüsselt speichern, Rotation handhaben, und ein Wiederverbindungspfad für Nutzer, deren Erneuerung fehlschlägt. Das ist ein Hintergrundprozess mit eigenen Fehlermodi, keine einfache Funktion.
Chunked Media-Upload. INIT, APPEND, FINALIZE, dann den Verarbeitungsstatus abfragen, bevor die Medien-ID in einem Beitrag nutzbar ist. Videos scheitern bei der Transkodierung, und zwar nachdem Ihr Upload bereits 200 zurückgegeben hat.
Video-Obergrenzen pro Konto. 20 Minuten versus 125 Minuten ist eine Laufzeitverzweigung, die davon abhängt, für wessen Konto Sie posten, und Sie können das allein aus Ihren App-Credentials nicht wissen.
Kostenverbuchung. Ein Preis pro Anfrage bedeutet, dass jemand Ausgaben Kunden zuordnen muss, sonst entdecken Sie den URL-Aufschlag erst auf einer Rechnung.
429-Behandlung, die kein bloßes Warten ist. Das Fenster pro Nutzer beträgt 15 Minuten. Eine naive Wiederholungsschleife macht aus einem ratenlimitierten Beitrag einen blockierten Worker.
Kurz zusammengefasst
- Die Preise sind Pay-per-Usage-Credits. Beitragserstellung kostet $0.015 pro Anfrage; ein Beitrag mit URL $0.200.
- Lesevorgänge bei Pay-per-Usage sind auf 3 Millionen Beiträge pro monatlichem Abrechnungszyklus begrenzt.
POST /2/tweetserlaubt 100 pro Nutzer pro 15 Minuten, 10.000 pro App pro 24 Stunden.- Posten erfordert OAuth 2.0 PKCE Nutzerkontext mit
tweet.write, plusoffline.access, wenn Sie Refresh-Tokens wollen. - Medien werden separat hochgeladen: 4 Fotos, 1 GIF oder 1 Video. Zitat-Beiträge sind nur Enterprise.
- Benannte Free-/Basic-/Pro-Tarife konnten im September 2026 nicht anhand einer offiziellen Seite verifiziert werden.
Das einmal statt pro Plattform erledigen
Die Arbeit oben ist real, und sie ist X-spezifisch. LinkedIn braucht zwei separate Apps mit unterschiedlichen Scopes. TikTok verlangt, ein Content-Posting-API-Audit zu bestehen. Threads verwendet eine Container-dann-Veröffentlichen-Sequenz mit einem 60-Tage-Token-Erneuerungszyklus. Nichts davon überträgt sich.
BulkPublish bietet eine REST-API über 15 Plattformen: Facebook, Instagram, TikTok, YouTube, X, Bluesky, Threads, Pinterest, LinkedIn, Google Business Profile, Mastodon, Discord, Telegram, Tumblr und Snapchat. Ein Auth-Modell, eine Medien-Pipeline, ein Beitrags-Objekt, und die Token-Erneuerung und asynchrones Status-Polling pro Plattform dahinter erledigt. Die Entwicklerdokumentation und die REST-API-Referenz decken die Endpunkte ab.