Dateien hochladen

Anleitung · aktualisiert 2026-08-19

Es gibt zwei Wege: eine einzelne Multipart-Anfrage für alles unter 500 MB und eine fortsetzbare Sitzung für größere Dateien oder wacklige Verbindungen. Beide enden mit demselben Dateiobjekt.

Einzelne Anfrage

curl -X POST https://api.media-host.online/v1/files \
  -H "Authorization: Bearer $MH_TOKEN" \
  -F "file=@folge-048-final.mp3" \
  -F "collection=wochenshow" \
  -F "title=048 — Die stille Saison" \
  -F "published_at=2026-08-21T06:00:00Z"

Die Antwort kommt, sobald die Bytes gespeichert sind. Dauer, Bitrate und Lautheit trägt der Verarbeitungs-Worker einige Sekunden später nach; bis dahin steht state auf processing.

{
  "id": "f_7Q2kd9Lm",
  "collection": "wochenshow",
  "filename": "folge-048-final.mp3",
  "bytes": 58213904,
  "content_type": "audio/mpeg",
  "state": "processing",
  "url": "https://cdn.media-host.online/wochenshow/folge-048-final.mp3",
  "created_at": "2026-08-19T14:02:11Z"
}

Fortsetzbarer Upload

Sitzung anlegen, dann Chunks mit Content-Range schicken. Chunks dürfen ab 5 MB beliebig groß sein; die CLI nimmt 32 MB. Schlägt ein Chunk fehl, einfach erneut senden. Geht die Sitzungs-ID verloren, listet GET /v1/uploads die offenen Sitzungen der letzten 48 Stunden.

# 1. Sitzung öffnen
curl -X POST https://api.media-host.online/v1/uploads \
  -H "Authorization: Bearer $MH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"collection":"vorlesungen","filename":"woche-07.mp4","bytes":2147483648}'

# → { "upload_id": "up_K3m9...", "chunk_size_hint": 33554432 }

# 2. Chunks senden (wiederholen; Reihenfolge egal)
curl -X PUT https://api.media-host.online/v1/uploads/up_K3m9.../chunk \
  -H "Authorization: Bearer $MH_TOKEN" \
  -H "Content-Range: bytes 0-33554431/2147483648" \
  --data-binary @teil-000

# 3. abschließen
curl -X POST https://api.media-host.online/v1/uploads/up_K3m9.../complete \
  -H "Authorization: Bearer $MH_TOKEN"

Oder die CLI machen lassen. Sie teilt, wiederholt und setzt selbst fort:

mh put vorlesungen ./woche-07.mp4 --title "Woche 7: Signale und Rauschen"

Metadatenfelder

FeldTypHinweise
titlestringErscheint in erzeugten Feeds. Standard: Dateiname ohne Endung.
descriptionstringReiner Text oder eingeschränktes HTML (p, a, b, i, br).
published_atRFC 3339Ein Datum in der Zukunft hält die Folge bis dahin aus dem Feed.
episode, seasonintegerWerden auf iTunes-Tags abgebildet.
privatebooleanNur über signierte URLs ausliefern. Standard folgt der Sammlung.

Verarbeitungszustände

Normalerweise processing → ready. failed heißt, wir konnten den Container nicht lesen; die Datei wird trotzdem gespeichert und ausgeliefert, aber die Dauer ist unbekannt und Feeds lassen itunes:duration weg. Abonnieren Sie den Webhook file.ready, statt zu pollen.

Akzeptierte Typen: MP3, M4A/AAC, FLAC, WAV, OGG/Opus, MP4 (H.264/H.265), WebM, MOV. Alles andere wird als application/octet-stream gespeichert und als Download ausgeliefert.