Public API · Beta

A-Roll automatisieren

Die API ist ein zusätzlicher Eingang in dieselbe Verarbeitung, dieselbe Creditabrechnung und dieselbe Warteschlange wie das Studio. Sie ist für serverseitige Automationen gedacht.

01 · Schnellstart

Vom Key zum laufenden Auftrag

Erstelle unter „Konto“ einen benannten Key. Das vollständige Geheimnis wird genau einmal angezeigt. Speichere es als Server-Secret und sende es als Bearer-Token. Halte keine minutenlange Verbindung offen; poll den Status stattdessen mit exponentiellem Backoff.

# 1. Nur prüfen – noch kein Auftrag und keine Abbuchung
curl -X POST https://aroll-studio.de/v1/jobs/validate \
  -H "Authorization: Bearer $AROLL_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @job.json

# 2. Idempotenten Uploadentwurf erstellen
curl -X POST https://aroll-studio.de/v1/jobs \
  -H "Authorization: Bearer $AROLL_API_KEY" \
  -H "Idempotency-Key: agentur-projekt-42-v1" \
  -H "Content-Type: application/json" \
  --data-binary @job.json

# 3. Jede zurückgegebene Uploadanweisung unverändert ausführen
curl -X PUT "<uploads[i].url>" \
  -H "content-type: <uploads[i].headers.content-type>" \
  -H "cache-control: max-age=3600" \
  -H "x-upsert: false" \
  --data-binary @moderation.wav

# 4. Finalisieren – Uploads prüfen, Credits buchen, normal einreihen
curl -X POST https://aroll-studio.de/v1/jobs/<job_id>/finalize \
  -H "Authorization: Bearer $AROLL_API_KEY"

# 5. Status mit Backoff pollen
curl https://aroll-studio.de/v1/jobs/<job_id> \
  -H "Authorization: Bearer $AROLL_API_KEY"

Ein stabiler Idempotency-Key gehört dauerhaft zu genau einem unveränderten Auftragsplan. Wiederholungen liefern denselben Auftrag und buchen nicht doppelt ab.

02 · Auftragsplan

Quellen und gewünschte Pakete festlegen

audio_onlyEine eigenständige Audioaufnahme.
video_embedded_audioLokales Originalvideo plus daraus extrahierter Ton.
video_external_audioLokales Video, extrahierter Kamerareferenzton und externe Aufnahme.

Für script_guided sind mindestens zwei Quellen und script_texterforderlich. Standardmäßig ist Studio Standard ausgewählt und verhält sich wie der bisherige A-Roll-Weg, mit etwas sanfterem Debreath. Mitdeliverables kannst du Final Cut, DaVinci, Premiere oder Enhanced Audio einzeln bestellen.

{
  "schema": "a_roll_public_job_v2",
  "title": "Moderation Folge 42",
  "language": "de",
  "deliverables": ["premiere"],
  "include_enhanced_audio": true,
  "composition": { "mode": "source_order" },
  "settings": {},
  "sources": [{
    "mode": "audio_only",
    "display_name": "Moderation",
    "audio_processing": {
      "schema": "a_roll_source_audio_policy_v1",
      "mode": "enhanced",
      "profile": { "kind": "builtin", "key": "studio_standard", "name": "Studio Standard", "revision": 1 },
      "settings": {
        "schema": "a_roll_audio_processing_settings_v1",
        "denoise_method": "speech_isolation",
        "noise_reduction_db": 12,
        "reverb_reduction_db": 12,
        "breath_reduction_db": 18,
        "leveler_strength": 50,
        "auto_eq": true
      }
    },
    "audio": {
      "file_name": "moderation.wav",
      "size_bytes": 4800044,
      "sha256": "<64 hex>",
      "duration_seconds": 50,
      "mime_type": "audio/wav",
      "browser_metadata": {
        "duration_source": "browser_metadata",
        "file_size_bytes": 4800044,
        "user_confirmed": false
      }
    }
  }]
}

03 · Video und Timecode

Originalvideo bleibt lokal

Das Originalvideo wird nicht hochgeladen. Dein System muss deshalb die echte Dateiidentität und den vollständigen technischen Sidecar liefern. Framerates dürfen nicht gerundet und Timecodes nicht erfunden werden. Lade bei integriertem Ton die tatsächlich aus diesem Video extrahierte Audiospur hoch; bei externer Audio zusätzlich den Kamerareferenzton.

{
  "file_name": "kamera-100fps.mp4",
  "file_size_bytes": 4000000,
  "sha256": "<64 hex>",
  "last_modified_unix_ms": 1785326400000,
  "expected_relative_path": "MEDIEN_HIER_ABLEGEN/kamera-100fps.mp4",
  "video_spec": {
    "frame_rate": "100",
    "duration_frames": 3000,
    "duration_seconds": 30,
    "width": 3840,
    "height": 2160,
    "start_timecode": "00:00:00:00",
    "timecode_detection_status": "absent",
    "timecode_needs_manual_review": false,
    "duration_source": "browser_metadata",
    "duration_frame_source": "cfr_duration_rounding",
    "dimensions_source": "browser_metadata",
    "file_name": "kamera-100fps.mp4",
    "file_size_bytes": 4000000,
    "fingerprint": "<derselbe Video-SHA-256>",
    "user_confirmed": false
  }
}

Das Beispiel zeigt die Mindestform, nicht einen Ersatz für echte Medienanalyse. Verwende die gemessenen Werte deiner Datei einschließlich Trackauswahl, Drop-Frame-Status, Dauerprovenienz und Timecode-Provenienz. /validate lehnt widersprüchliche Angaben ab.

04 · Downloads

Erst nach succeeded abrufen

Rufe danach GET /v1/jobs/<job_id>/deliverables auf. Intern werden drei Editorpakete und – sobald mindestens eine Quelle verbessert wird – zusätzlich ein Audio-Paket gemeinsam unter derselben delivery_set_id geprüft; ausgegeben wird nur deine Auswahl. Downloadanweisungen können eine URL, geordnete Chunks oderclient_composite_zip_v1 enthalten.

Der vorgeschlagene ZIP-Name beginnt mit dem bereinigten Namen der ersten primären Projektdatei. Das ist ausschließlich eine Downloaddarstellung; Paketbytes, Prüfsumme, XMLs und Referenzen auf MEDIEN_HIER_ABLEGEN/ bleiben unverändert.

Bei client_composite_zip_v1 beide Unterpakete vollständig laden, Größe und SHA-256 prüfen und ausschließlich die extern versiegelten V3-WAVs unterMEDIEN_HIER_ABLEGEN/ in eine neue ZIP einsetzen. XML-Dateien nie verändern.

Die Ergebnisse stehen normalerweise 72 Stunden zum Download bereit.

05 · Fehler und Support

Fehler sind maschinenlesbar

400/422Plan oder JSON ist ungültig. Erst /validate verwenden und issues korrigieren.
401/403Key, Scope oder Kontozugang ist ungültig. Key prüfen oder im Konto neu erstellen.
402Nicht genügend Credits. Credits im selben A-Roll-Konto aufladen.
409Upload, Idempotenz oder Auftragszustand passt noch nicht. Fehlercode beachten.
429Rate Limit oder zehn offene Uploadentwürfe. Retry-After respektieren beziehungsweise Entwurf abschließen.
500/503Technischer Fehler. Mit request_id und Auftrags-ID den Support kontaktieren.

Jede Antwort enthält eine request_id. Gib sie bei technischen Fehlern zusammen mit der Auftrags-ID über die Kontaktseite an. Ein einzelner Beta-Fehler stoppt andere API- oder Website-Aufträge nicht.

06 · Sicherheit und Grenzen

Keys gehören niemals in Browser oder Apps

  • Maximal drei aktive Keys pro Konto; jeden Key separat benennen und widerrufen.
  • 60 Schreib-, 300 Lese- und 300 Downloadanfragen pro Key und Minute.
  • Maximal zehn offene Uploadentwürfe pro Konto.
  • Uploadrechte sind pfadgebunden, zwei Stunden gültig und erneuerbar.
  • API-Aufträge verwenden dieselben Credits und bis zu sechs gemeinsame Worker-Slots.
  • Key, signierte URLs und vollständige Metadatenpläne niemals protokollieren.
Wenn ein Key offengelegt wurde: sofort im Konto widerrufen und einen neuen erstellen.