MediaCopilot
Integrations

API

Programmatischer Zugang zur Videoverarbeitung.

Die MediaCopilot API bietet eine umfangreiche Sammlung von Endpunkten zur Verwaltung und Verarbeitung von Medien-Assets und ermöglicht die nahtlose Integration in Ihre Workflows.

Die vollständige interaktive API-Referenz ist unter api.mediacopilot.cires21.ai/docs verfügbar. Kontaktieren Sie hello@mediacopilot.io für API-Zugang.

Authentifizierung

Alle API-Anfragen erfordern einen Bearer-Token im Authorization-Header.

Authorization: Bearer <YOUR_API_KEY>

API-Schlüssel werden mit Ihrem MediaCopilot-Konto bereitgestellt.

Basis-URL

https://api.mediacopilot.cires21.ai

Alle Endpunkte haben das Präfix /v1.

Häufige Muster

Upload-Ablauf

Das Hochladen einer Mediendatei erfolgt in einem 3-Schritt-Prozess:

  1. Asset erstellenPOST /v1/assets gibt eine asset_id zurück.
  2. Presigned URLs abrufenPOST /v1/assets/{asset_id}/start_upload gibt presigned Upload-URLs zurück (eine pro Teil).
  3. Direkt hochladen — Dateiparts zu den presigned URLs hochladen (clientseitig).
  4. Upload bestätigenPOST /v1/assets/{asset_id}/finish_upload mit ETags von jedem Part.

Async-Job-Muster

Lang laufende Operationen (Übersetzung, Voice-Over, Retranslation, Video-Clip-Export) folgen einem Create-then-Poll-Muster:

  1. POST zum Erstellen des Jobs — gibt eine job_id zurück.
  2. GET mit der job_id, um den Status bis zur Fertigstellung abzufragen.

Export in externen Speicher

Alle Export-Endpunkte erfordern einen Body mit external_storage_id, der auf ein zuvor konfiguriertes Speicherziel verweist.

Verarbeitungsmodi

Assets können über den Parameter mc_model in zwei Modi verarbeitet werden:

ModusBeschreibung
normalStandard-Verarbeitungspipeline
turboSchnellere Verarbeitung mit optimierter Pipeline

Assets

Medien-Assets in Ihrem Tenant verwalten.

Asset erstellen

POST /v1/assets
FeldTypErforderlichBeschreibung
filenamestringJaName der Datei
template_iduuidNeinAnzuwendende Vorlage
collection_iduuidNeinZuzuweisende Sammlung
language_iduuidNeinOriginalsprache
external_idstringNeinIhre benutzerdefinierte ID (eindeutig pro Tenant)
mc_modelenumNeinnormal oder turbo (Standard: normal)

Assets auflisten

GET /v1/assets
ParameterTypErforderlichBeschreibung
pageintNeinSeitennummer (Standard: 1)
itemsintNeinEinträge pro Seite (Standard: 16)
collection_iduuidNeinNach Sammlung filtern
entitiesstringNeinNach Entitäten filtern (kommagetrennt)
sentimentstringNeinNach Stimmung filtern: Negative, Neutral, Positive
classificationstringNeinNach EBU-Klassifizierung filtern
speakersstringNeinNach Sprechern filtern
language_iduuidNeinNach Sprache filtern

Asset abrufen / löschen

GET    /v1/assets/{asset_id}
DELETE /v1/assets/{asset_id}

Asset über externe ID abrufen

GET /v1/external/assets/{external_id}

Upload

Upload starten

POST /v1/assets/{asset_id}/start_upload
FeldTypErforderlichBeschreibung
partsintNeinAnzahl der Dateiparts (Standard: 1)

Gibt presigned URLs für jeden Part zurück.

Upload abschließen

POST /v1/assets/{asset_id}/finish_upload
FeldTypErforderlichBeschreibung
etagsstringJaETags von jedem Part-Upload zurückgegeben

Übersetzungsjobs

Übersetzung starten

POST /v1/assets/{asset_id}/translation_jobs
FeldTypErforderlichBeschreibung
language_idsuuidJaZielsprachen-IDs

Übersetzungsjob abrufen

GET /v1/assets/{asset_id}/translation_jobs/{job_id}

Voice-Over-Jobs

Voice-Over starten

POST /v1/assets/{asset_id}/process_voice_over_jobs
FeldTypErforderlichBeschreibung
language_idsstringNeinZielsprachen (leer für alle Spuren in der Vorlage)

Voice-Over-Jobs auflisten

GET /v1/assets/{asset_id}/process_voice_over_jobs

Voice-Over-Job abrufen

GET /v1/assets/{asset_id}/process_voice_over_jobs/{job_id}

Partielle Retranslationsjobs

Retranslationsjob erstellen

POST /v1/assets/{asset_id}/partial_retranslation_jobs

Retranslationsjob-Status abrufen

GET /v1/assets/{asset_id}/partial_retranslation_jobs/{job_id}

Transkriptionen

Transkriptionen auflisten

GET /v1/assets/{asset_id}/transcriptions

Transkription abrufen

GET /v1/assets/{asset_id}/transcriptions/{transcription_id}

Untertitel

Untertitel abrufen (Inline)

GET /v1/assets/{asset_id}/transcriptions/{transcription_id}/vtt
GET /v1/assets/{asset_id}/transcriptions/{transcription_id}/srt
GET /v1/assets/{asset_id}/transcriptions/{transcription_id}/stl

VTT unterstützt zusätzliche Abfrageparameter:

ParameterTypStandardBeschreibung
flavorenumstandardstandard oder simplified
include_sound_descriptionsbooltrueKlangbeschreibungen einbeziehen

Untertitel exportieren (in externen Speicher)

POST /v1/assets/{asset_id}/transcriptions/{transcription_id}/vtt/export
POST /v1/assets/{asset_id}/transcriptions/{transcription_id}/srt/export
POST /v1/assets/{asset_id}/transcriptions/{transcription_id}/stl/export
POST /v1/assets/{asset_id}/transcriptions/{transcription_id}/json/export

Alle Export-Endpunkte erfordern:

FeldTypErforderlichBeschreibung
external_storage_iduuidJaZiel-Speicherziel

Segmente

Segmente hinzufügen

POST /v1/assets/{asset_id}/transcriptions/{transcription_id}/segments
FeldTypErforderlichBeschreibung
segmentsarrayJaArray von Segmentobjekten

Jedes Segmentobjekt:

FeldTypErforderlichBeschreibung
textstringJaSegmenttextinhalt
start_msintJaStartzeit in Millisekunden
end_msintJaEndzeit in Millisekunden
speakerstringJaSprecherkennung
original_segment_iduuidNeinUrsprüngliche Segment-ID (für Übersetzungen)

Mehrere Segmente aktualisieren

PATCH /v1/assets/{asset_id}/transcriptions/{transcription_id}/segments

Einzelnes Segment aktualisieren

PATCH /v1/assets/{asset_id}/transcriptions/{transcription_id}/segments/{segment_id}
FeldTypErforderlichBeschreibung
speaker_iduuidNeinSprecherreferenz
textstringNeinAktualisierter Text
start_msintNeinAktualisierte Startzeit
end_msintNeinAktualisierte Endzeit

Metadaten

Alle Metadaten abrufen

GET /v1/assets/{asset_id}/metadata

Spezifische Metadaten abrufen

GET /v1/assets/{asset_id}/metadata/{metadata_id}

Metadaten exportieren

POST /v1/assets/{asset_id}/metadata/{metadata_id}/json/export
FeldTypErforderlichBeschreibung
external_storage_iduuidJaZiel-Speicherziel

Natürlichsprachliche Suche

POST /v1/nl_search
FeldTypErforderlichBeschreibung
querystringJaSuchanfrage
asset_iduuidNeinSuche auf ein einzelnes Asset einschränken
max_resultsintNeinMaximale Ergebnisse (Standard: 10)

Sammlungen

CRUD-Operationen

POST   /v1/collections                          # Sammlung erstellen
GET    /v1/collections                           # Sammlungen auflisten
GET    /v1/collections/{collection_id}           # Sammlung abrufen
PATCH  /v1/collections/{collection_id}           # Sammlung aktualisieren
DELETE /v1/collections/{collection_id}           # Sammlung löschen

Erstellen erfordert:

FeldTypErforderlichBeschreibung
namestringJaSammlungsname
template_iduuidNeinStandardvorlage

Sammlungs-Assets verwalten

POST   /v1/collections/{collection_id}/assets    # Assets hinzufügen
DELETE /v1/collections/{collection_id}/assets    # Assets entfernen

Beide erfordern:

FeldTypErforderlichBeschreibung
asset_idsuuidJaHinzuzufügende/entfernende Asset-IDs

Sprecher

POST   /v1/assets/{asset_id}/speakers                  # Sprecher erstellen
PATCH  /v1/assets/{asset_id}/speakers/{speaker_id}      # Sprecher aktualisieren
DELETE /v1/assets/{asset_id}/speakers/{speaker_id}      # Sprecher löschen

Erstellen erfordert:

FeldTypErforderlichBeschreibung
namestringJaSprechername

Audiospuren

GET /v1/assets/{asset_id}/audio_tracks                              # Audiospuren auflisten
GET /v1/assets/{asset_id}/audio_tracks/{audio_track_id}             # Audiospur abrufen
GET /v1/assets/{asset_id}/audio_tracks/{audio_track_id}/download_url # Download-URL abrufen

Klangbeschreibungen

GET    /v1/assets/{asset_id}/sound_descriptions                        # Beschreibungen auflisten
GET    /v1/assets/{asset_id}/sound_descriptions/{description_id}       # Beschreibung abrufen
DELETE /v1/assets/{asset_id}/sound_descriptions/{description_id}       # Beschreibung löschen

Videoanalyse

GET /v1/assets/{asset_id}/camera_shoots    # Kameraaufnahmen abrufen
GET /v1/assets/{asset_id}/faces            # Gesichtserkennung abrufen
GET /v1/assets/{asset_id}/autocenter       # Autocenter-Daten abrufen

Video-Clips

Video-Clips erstellen

POST /v1/assets/{asset_id}/video_clips
FeldTypErforderlichBeschreibung
video_clipsarrayJaArray von Clip-Objekten

Jedes Clip-Objekt:

FeldTypBeschreibung
start_msintClip-Startzeit in Millisekunden
end_msintClip-Endzeit in Millisekunden
start_frameintClip-Startframe-Nummer
end_frameintClip-Endframe-Nummer
aspect_ratio_xintz.B. 16
aspect_ratio_yintz.B. 9
autoframingboolAuto-Framing aktivieren
branding_iduuidAnzuwendendes Branding
subtitles_language_iduuidSprache für eingebrannte Untertitel
with_sound_descriptionsboolKlangbeschreibungen einbeziehen

Clips auflisten / abrufen

GET /v1/assets/{asset_id}/video_clips                  # Clips auflisten
GET /v1/assets/{asset_id}/video_clips/{video_id}       # Clip abrufen

Clips herunterladen

POST /v1/assets/{asset_id}/video_clips/download              # Synchroner Download
POST /v1/assets/{asset_id}/video_clips/download_async         # Asynchroner Download-Job
GET  /v1/assets/{asset_id}/video_clips/download_async/{job_id} # Download-Status prüfen

Clips exportieren

POST /v1/assets/{asset_id}/video_clips/{video_clip_id}/export        # In Speicher exportieren
POST /v1/assets/{asset_id}/video_clips/{video_clip_id}/async_export  # Asynchroner Export
GET  /v1/assets/{asset_id}/video_clips/{video_clip_id}/async_export/{job_id} # Status prüfen

Externer Speicher

CRUD-Operationen

POST   /v1/external_storages                           # Speicher hinzufügen
GET    /v1/external_storages                           # Speicher auflisten
GET    /v1/external_storages/{external_storage_id}     # Speicher abrufen
PATCH  /v1/external_storages/{external_storage_id}     # Speicher aktualisieren
DELETE /v1/external_storages/{external_storage_id}     # Speicher löschen

Erstellen erfordert:

FeldTypErforderlichBeschreibung
namestringJaSpeichername
typeenumJaaws_s3, azure, gcp_storage oder dummy
destinationobjectNeinBucket-/Container-Details (je nach Typ)
export_pathstringNeinPfadvorlage mit Variablen: {asset_id}, {asset_external_id}, {video_clip_id}
authentication_dataobjectNeinAnmeldedaten (je nach Typ)

Ziel nach Typ:

TypFelder
AWS S3bucket_name, region
Azureblob_url
GCP Storagebucket_name

Authentifizierung nach Typ:

TypFelder
AWS S3iam_role_arn
Azuresas_token
GCP Storagecredentials (JSON Service Account)

Admin-Endpunkte

GET /v1/admin/external_storages                        # Alle auflisten (Admin)
GET /v1/admin/external_storages/{external_storage_id}  # Abrufen (Admin)

Vorlagen

POST   /v1/templates                    # Vorlage erstellen
GET    /v1/templates                    # Vorlagen auflisten
GET    /v1/templates/{template_id}      # Vorlage abrufen
PATCH  /v1/templates/{template_id}      # Vorlage aktualisieren
DELETE /v1/templates/{template_id}      # Vorlage löschen

Erstellen/Aktualisieren-Felder:

FeldTypErforderlichBeschreibung
namestringJaVorlagenname
domain_dictionary_idsuuidNeinZugehörige Wörterbücher
blacklist_idsuuidNeinZugehörige Blacklists
whitelist_idsuuidNeinZugehörige Whitelists
translation_language_idsuuidNeinAutomatische Übersetzungssprachen
voice_over_language_idsuuidNeinAutomatische Voice-Over-Sprachen
enabled_ocrboolNeinOCR aktivieren (Standard: false)
voice_over_configobjectNeinclone_voice (bool), mute_original_voice (bool)

Brandings

Kern-Brandings

POST   /v1/brandings                    # Branding erstellen
GET    /v1/brandings                    # Brandings auflisten
GET    /v1/brandings/{branding_id}      # Branding abrufen
PATCH  /v1/brandings/{branding_id}      # Branding aktualisieren
DELETE /v1/brandings/{branding_id}      # Branding löschen

Branding-Varianten

Jedes Branding kann Varianten für verschiedene Seitenverhältnisse haben.

POST   /v1/brandings/{branding_id}/variants                  # Variante hinzufügen
GET    /v1/brandings/{branding_id}/variants                  # Varianten auflisten
GET    /v1/brandings/{branding_id}/variants/{variant_id}     # Variante abrufen
PATCH  /v1/brandings/{branding_id}/variants/{variant_id}     # Variante aktualisieren
DELETE /v1/brandings/{branding_id}/variants/{variant_id}     # Variante löschen
FeldTypErforderlichBeschreibung
aspect_ratioenumJa9:16, 1:1, 4:5, 16:9, 4:3 oder 3:4
overlay_iduuidNeinAnzuwendendes Overlay
intro_iduuidNeinIntro-Clip
outro_iduuidNeinOutro-Clip

Branding-Overlays

POST   /v1/branding_overlays                              # Overlay erstellen
GET    /v1/branding_overlays                              # Overlays auflisten
GET    /v1/branding_overlays/{overlay_id}                 # Overlay abrufen
PATCH  /v1/branding_overlays/{overlay_id}                 # Overlay aktualisieren
DELETE /v1/branding_overlays/{overlay_id}                 # Overlay löschen
POST   /v1/branding_overlays/{overlay_id}/start_upload    # Upload starten
POST   /v1/branding_overlays/{overlay_id}/finish_upload   # Upload abschließen
GET    /v1/branding_overlays/{overlay_id}/upload_jobs/{job_id} # Upload-Status prüfen

Branding-Clips

POST   /v1/branding_clips                              # Clip erstellen
GET    /v1/branding_clips                              # Clips auflisten
GET    /v1/branding_clips/{clip_id}                    # Clip abrufen
PATCH  /v1/branding_clips/{clip_id}                    # Clip aktualisieren
DELETE /v1/branding_clips/{clip_id}                    # Clip löschen
POST   /v1/branding_clips/{clip_id}/start_upload       # Upload starten
POST   /v1/branding_clips/{clip_id}/finish_upload      # Upload abschließen
GET    /v1/branding_clips/{clip_id}/upload_jobs/{job_id} # Upload-Status prüfen

Branding-Untertitelstile

POST   /v1/branding_subtitle_styles                    # Stil erstellen
GET    /v1/branding_subtitle_styles                    # Stile auflisten
GET    /v1/branding_subtitle_styles/{style_id}         # Stil abrufen
PATCH  /v1/branding_subtitle_styles/{style_id}         # Stil aktualisieren
DELETE /v1/branding_subtitle_styles/{style_id}         # Stil löschen
FeldTypStandardBeschreibung
namestringStilname (erforderlich)
font_familystringSchriftfamilie (erforderlich)
text_colorhexTextfarbe z.B. #050B07 (erforderlich)
font_size_pxint26Schriftgröße in Pixeln
font_weightint600Schriftstärke
line_heightfloat1.2Zeilenhöhe
vertical_position_pctfloat0.1Vertikale Position (% der Videohöhe)
shadow_blurfloat0.0Schattenunschärfe-Radius
shadow_colorhexSchattenfarbe
shadow_opacity_pctfloat1Schattendeckkraft
shadow_offset_x_pxint1Schatten X-Versatz
shadow_offset_y_pxint1Schatten Y-Versatz
background_colorhexHintergrundfarbe
background_opacityfloat0.0Hintergrunddeckkraft
stroke_colorhex#000000Konturfarbe
stroke_thickness_pxint0Konturstärke

Wortlisten

Blacklists

Aus Transkriptionen zu filternde Wörter.

POST   /v1/blacklists                      # Blacklist erstellen
GET    /v1/blacklists                      # Blacklists auflisten
GET    /v1/blacklists/{blacklist_id}       # Blacklist abrufen
PATCH  /v1/blacklists/{blacklist_id}       # Blacklist aktualisieren
DELETE /v1/blacklists/{blacklist_id}       # Blacklist löschen
FeldTypErforderlichBeschreibung
namestringJaBlacklist-Name
wordsstringJaZu filternde Wörter
language_iduuidJaSprachreferenz
template_iduuidNeinZugehörige Vorlage

Whitelists

In Transkriptionen beizubehaltende Wörter.

POST   /v1/whitelists                      # Whitelist erstellen
GET    /v1/whitelists                      # Whitelists auflisten
GET    /v1/whitelists/{whitelist_id}       # Whitelist abrufen
PATCH  /v1/whitelists/{whitelist_id}       # Whitelist aktualisieren
DELETE /v1/whitelists/{whitelist_id}       # Whitelist löschen
FeldTypErforderlichBeschreibung
namestringJaWhitelist-Name
wordsstringJaBeizubehaltende Wörter
template_iduuidNeinZugehörige Vorlage

Wörterbücher

Begriffsexpansions-Maps für Transkriptionsgenauigkeit.

POST   /v1/dictionaries                      # Wörterbuch erstellen
GET    /v1/dictionaries                      # Wörterbücher auflisten
GET    /v1/dictionaries/{dictionary_id}      # Wörterbuch abrufen
PATCH  /v1/dictionaries/{dictionary_id}      # Wörterbuch aktualisieren
DELETE /v1/dictionaries/{dictionary_id}      # Wörterbuch löschen
FeldTypErforderlichBeschreibung
namestringJaWörterbuchname
dictionaryobjectJaKey-Value-Map, z.B. {"KI": ["Künstliche Intelligenz"]}
template_iduuidNeinZugehörige Vorlage

Sprachen

GET /v1/languages                  # Alle Sprachen auflisten
GET /v1/languages/{language_id}    # Sprachdetails abrufen

Filter-Ansichten

POST   /v1/views                    # Ansicht erstellen
GET    /v1/views                    # Ansichten auflisten
GET    /v1/views/{view_id}          # Ansicht abrufen
PATCH  /v1/views/{view_id}          # Ansicht aktualisieren
DELETE /v1/views/{view_id}          # Ansicht löschen
FeldTypErforderlichBeschreibung
namestringJaAnsichtsname
filter_paramsarrayJaArray von Filterbedingungen (min. 1)

Nutzung & Abrechnung

GET /v1/usages/current_month    # Nutzung des aktuellen Monats
GET /v1/usages/historical       # Historische Nutzungsdaten
Copyright © 2026