POST /2/media/upload
endpoints verwendet, um ein Video hochzuladen. Dies erfordert einen anderen Ablauf als das Hochladen einzelner Bilder.
Für Video- oder gestückelte Uploads müssen Sie:
- Den Upload mit dem Befehl
INIT
initialisieren - Jeden Daten-Chunk mit dem Befehl
APPEND
hochladen - Den Upload mit dem Befehl
FINALIZE
abschließen
Hinweis: Siehe diesen Beispielcode für ein in Python geschriebenes Beispiel.
Authentifizierung
CONSUMER_KEY
, CONSUMER_SECRET
, ACCESS_KEY
, ACCESS_TOKEN
in der App innerhalb Ihres Project im Dashboard des Entwicklerportals.
Schritt 1: POST media/upload (INIT)
INIT
-Anforderung wird verwendet, um eine Upload-Sitzung für eine Datei zu starten. Sie gibt eine media_id
zurück, die für alle nachfolgenden Anforderungen verwendet werden sollte. Der nächste Schritt nach einer erfolgreichen Antwort auf den INIT
-Befehl ist der APPEND
-Befehl.
Siehe Best Practices für Einschränkungen und Anforderungen an Mediendateien.
Beispielanforderung
Hinweis: Bei direkten HTTP-Anfragen muss die Anfrage als POST mit dem Format
multipart/form-data
oder application/x-www-form-urlencoded
gesendet werden.id
(String) und media_key
(String). Die gesamte Datei muss innerhalb von expires_after_secs
Sekunden hochgeladen werden.
Schritt 2 : POST media/upload (APPEND)
APPEND
wird verwendet, um einen Chunk (aufeinanderfolgender Bytebereich) der Mediendatei hochzuladen. Beispielsweise kann eine 3‑MB‑Datei in drei Chunks zu je 1 MB aufgeteilt und mit drei APPEND
‑Anfragen hochgeladen werden. Nachdem die gesamte Datei hochgeladen wurde, wird im nächsten Schritt der Befehl FINALIZE
aufgerufen.
Das Hochladen einer Mediendatei in kleinen Chunks bietet mehrere Vorteile:
- Höhere Zuverlässigkeit und Erfolgsraten bei geringer Bandbreite
- Uploads können pausiert und fortgesetzt werden
- Datei‑Chunks können einzeln erneut übertragen werden
- Möglichkeit, die Chunk‑Größen an wechselnde Netzwerkbedingungen anzupassen, z. B. bei Mobilfunkverbindungen
segment_index
ist ein geordneter Index eines Dateifragmentes. Er muss im Bereich 0–999 (einschließlich) liegen. Das erste Segment hat den Index 0, das zweite den Index 1, und so weiter. Laden Sie die Dateifragmente weiter hoch, bis alle Fragmente hochgeladen wurden.
Hinweis: Bei rohen HTTP-Anfragen sollte die Anfrage im Format
multipart/form-data
mit der Methode POST erfolgen.Hinweis: Bei erfolgreichem Upload wird ein HTTP-Status 2XX mit leerem Antworttext zurückgegeben.
Schritt 3: POST media/upload (FINALIZE)
FINALIZE
sollte aufgerufen werden, nachdem die gesamte Mediendatei mithilfe von APPEND
-Befehlen hochgeladen wurde. Wenn und nur wenn die Antwort des FINALIZE
-Befehls ein Feld processing_info
enthält, kann es außerdem notwendig sein, einen STATUS
-Befehl zu verwenden und zu warten, bis dieser „success“ zurückgibt, bevor mit der Erstellung des Post fortgefahren wird.
Beispielanforderung
Hinweis: Bei rohen HTTP-Anfragen muss die Anfrage als POST im Format
multipart/form-data
oder application/x-www-form-urlencoded
gesendet werden.media_id
(64‑Bit‑Integer) und media_id_string
(String). Verwenden Sie die in der API-Antwort bereitgestellte media_id_string
in JavaScript und anderen Sprachen, die lange Ganzzahlen nicht exakt darstellen können.
Die zurückgegebene media_id
ist nur für expires_after_secs
Sekunden gültig. Jeder Versuch, media_id
nach diesem Zeitraum in anderen API-Aufrufen zu verwenden, führt zu einer Bad-Request-Antwort (HTTP 4xx).
Wenn die Antwort ein processing_info
-Feld enthält, verwenden Sie den Befehl STATUS
, um den Status des FINALIZE
-Vorgangs abzufragen. Der asynchrone Finalize-Ansatz wird in Fällen verwendet, in denen die Medienverarbeitung mehr Zeit benötigt. Künftig wird die Verarbeitung von Videos und animierten GIFs nur noch über asynchrones Finalize unterstützt. Dieses Verhalten ist aktiviert, wenn eine Upload-Sitzung mit einem media_category
-Parameter initialisiert wurde und der Medientyp entweder Video oder animiertes GIF ist.
Hinweis:
Wenn in der Antwort kein
processing_info
-Feld enthalten ist, ist media_id
für die Verwendung in anderen API-endpoints bereit.Schritt 4 : GET media/upload (STATUS)
STATUS
wird verwendet, um periodisch den Fortschritt der Medienverarbeitung abzufragen. Sobald die Antwort auf den STATUS
-Befehl succeeded
zurückgibt, können Sie zum nächsten Schritt übergehen, der in der Regel darin besteht, einen Post mit der media_id
zu erstellen.
Hinweis:
Der Befehl
STATUS
sollte nur verwendet werden, wenn die Antwort des Befehls FINALIZE
oder eines vorherigen STATUS
-Befehls ein Feld processing_info
enthalten hat.Beispielanfrage
Beispiel-Antwort
processing_info
, das Informationen über den aktuellen Stand der Medienverarbeitung bereitstellt. Es enthält ein Feld state
mit folgendem Übergangsablauf: pending
-> in_progress
-> [failed
| succeeded
]. Sie können die media_id
nicht verwenden, um einen Post oder andere Objekte zu erstellen, bevor das Feld state
auf succeeded
gesetzt ist.
Schritt 5: Tweet mit Medien posten
POST /2/tweets
endpoint und gibt dabei die media_id
im Namen eines authentifizierten Nutzers an.
Beispielanfrage