API v1 Stabil

Videobeschreibungs-API Dokumentation

Generieren Sie KI-gestützte Titel, Beschreibungen und Tags für jedes Video. Asynchrone Verarbeitung mit Webhook-Zustellung, kostenlose Sandbox zum Testen. Bevorzugen Sie eine Benutzeroberfläche? Verwenden Sie das Descrideo-Webportal zum Hochladen von Videos und Verwalten von Aufgaben.

Bevorzugen Sie eine Benutzeroberfläche? Verwenden Sie unseren Video-Generator zum Hochladen von Videos und Erhalten von Ergebnissen ohne Code zu schreiben.

Schnellstart

Beginnen Sie mit der Descrideo-API in 3 einfachen Schritten. Generieren Sie Ihre erste Videobeschreibung in unter 5 Minuten.

1

Holen Sie sich Ihren API-Schlüssel

Erstellen Sie ein Konto und erhalten Sie Ihren API-Schlüssel vom Dashboard. Jeder Schlüssel hat das Präfix nxt_.

Konto erstellen →
2

Erstellen Sie eine Beschreibungsaufgabe

Senden Sie eine Video-URL und geben Sie Ihren Webhook-Endpunkt an, um Ergebnisse zu erhalten.

Request POST
curl -X POST https://api.descrideo.com/v1/video-descriptions \
  -H "X-API-Key: nxt_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "source": {
      "type": "direct_url",
      "url": "https://example.com/video.mp4"
    },
    "frames": 20,
    "generation_mode": "vision",
    "webhook": {
      "url": "https://your-app.com/webhooks/video"
    },
    "client_context": {
      "lang": "en",
      "output_fields": ["title", "description", "tags"]
    }
  }'
3

Empfangen Sie Webhook mit Ergebnissen

Nach Abschluss der Verarbeitung senden wir die Ergebnisse an Ihre Webhook-URL mit HMAC-Signatur.

Webhook Payload
{
  "job_id": "01HXYZ123ABC",
  "status": "succeeded",
  "result": {
    "title": "Mountain Hiking Adventure in Swiss Alps",
    "description": "A breathtaking journey through...",
    "tags": ["hiking", "mountains", "switzerland", "nature"]
  },
  "billing": {
    "token_cost": 1.23,
    "base_cost": 1.0,
    "transcription_cost": 0.23,
    "franchise_cost": 0.0
  },
  "meta": {
    "generation_mode": "vision_audio",
    "transcription": {
      "enabled": true,
      "status": "completed",
      "seconds": 45.5
    }
  },
  "timing_ms": {
    "probe": 500,
    "audio": 3200,
    "frames": 2100,
    "ai": 8100,
    "webhook": 120
  }
}

Authentifizierung

Alle API-Anfragen erfordern Authentifizierung über Bearer-Token im Authorization-Header.

Authorization: Bearer nxt_your_api_key_here

Sicherheit: Geben Sie Ihren API-Schlüssel niemals in clientseitigem Code preis. Führen Sie API-Aufrufe immer von Ihrem Backend-Server aus.

Sandbox-Tests

Testen Sie Ihre Webhook-Integration kostenlos mit unserer Sandbox-Umgebung. Sandbox-Aufgaben simulieren den vollständigen Workflow ohne tatsächliche Videoverarbeitung.

Sandbox-Vorteile

  • Kostenloses Tageskontingent - keine Tokens erforderlich
  • Echte Webhook-Zustellungen mit HMAC-Signaturen
  • Keine Video-URL erforderlich
  • Webhook-Wiedergabe zum Debuggen
Sandbox Request POST
POST /v1/sandbox/video-descriptions

{
  "frames": 10,
  "webhook": {
    "url": "https://your-app.com/webhooks/video"
  },
  "client_context": {
    "lang": "en",
    "output_fields": ["title", "description", "tags"],
    "custom_instructions": "Focus on technical details"
  }
}

Demo-API (Gateway)

Die Demo-API ermöglicht die Integration mit einem echten asynchronen Workflow mit Webhook-Zustellung vor der Produktion. Verwenden Sie sie zur Validierung des direkten Video-URL-Zugriffs und Webhook-Empfängers.

Limits: 1 Aufgabe/Tag pro Demo-API-Schlüssel, nur frames=10, nur lang=en (andere Sprachen geben 422 zurück). Benutzerdefinierte Anweisungen sind erlaubt.

Endpunkte

  • POST /api/demo/v1/video-descriptions — Demo-Aufgabe erstellen (nur direkte URL)
  • GET /api/demo/v1/video-descriptions/{job_id} — Status/Ergebnis abrufen
  • POST /api/demo/v1/video-descriptions/{job_id}/replay-webhook — weitergeleiteten Webhook an Ihren Empfänger wiedergeben
  • GET /api/demo/v1/webhook-secret — Webhook-Secret zur Signaturüberprüfung abrufen

Demo-Aufgabe erstellen (Beispiel)

Request POST
curl -X POST https://your-portal.com/api/demo/v1/video-descriptions \
  -H "X-API-Key: demo_your_demo_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "source": {
      "type": "direct_url",
      "url": "https://example.com/video.mp4"
    },
    "frames": 10,
    "webhook": {
      "url": "https://your-app.com/webhooks/demo"
    },
    "client_context": {
      "lang": "en",
      "output_fields": ["title", "description", "tags"],
      "custom_instructions": "Make the description more detailed"
    }
  }'

Webhook-Signaturen

Die Demo-API leitet Webhooks an Ihre URL weiter und verwendet die gleichen Signatur-Header wie die Haupt-API: X-Nxt-Timestamp und X-Nxt-Signature. Verwenden Sie GET /api/demo/v1/webhook-secret, um das zur Überprüfung verwendete Secret abzurufen.

Beschreibungsaufgabe erstellen

POST /v1/video-descriptions

Anforderungstext

Parameter Type Required Description
source object Yes Videoquellen-Konfiguration
type string * direct_url oder source_provider
url string * Direkte URL zur Videodatei (wenn type=direct_url)
provider object * Source-Provider-Endpunkt-Konfiguration (wenn type=source_provider)
webhook.url string Yes URL zum Empfangen von Ergebnissen
client_context.output_fields array No Zu generierende Felder: Titel, Beschreibung, Tags
client_context.lang string No Ausgabesprache (ISO 639-1), Standard: en
frames integer Yes Anzahl der zu extrahierenden Frames: 10, 20 oder 30. Erforderlich für Modi vision und vision_audio. Nicht verwendet im Modus audio.
generation_mode string No vision (Standard), vision_audio oder audio. Bestimmt den Analysemodus.
transcription object No Audio-Transkriptionseinstellungen. Erforderliche Felder hängen von generation_mode ab.
enabled boolean * Audio-Transkription aktivieren. Auto-aktiviert für Modi vision_audio/audio.
segments integer * Anzahl der zu sampelnden Audio-Segmente: 10, 20 oder 30
segment_sec number * Dauer jedes Segments in Sekunden (5–60)
client_context.custom_instructions string No Benutzerdefinierte KI-Anweisungen für Ausgabestil

Antwort

Gibt 202 Accepted mit Aufgaben-ID zurück.

{
  "job_id": "01HXYZ123ABC",
  "status": "queued"
}

Aufgabenstatus abrufen

GET /v1/video-descriptions/{job_id}

Aufgabenstatus abfragen. Nützlich zur Überwachung des Fortschritts, wenn Webhooks nicht geeignet sind.

Aufgabenstatus

queued

Aufgabe wartet auf Verarbeitung

resolving_source

Videozugriff wird aufgelöst

probing

Video-Metadaten werden analysiert

extracting_audio

Audio-Segmente werden extrahiert

transcribing_audio

Audio wird in Text transkribiert

extracting_frames

Video-Frames werden extrahiert

ai_request

KI generiert Beschreibungen

succeeded

Verarbeitung abgeschlossen

failed

Verarbeitung fehlgeschlagen

Webhook-Sicherheit

Alle Webhooks sind mit HMAC-SHA256 signiert. Überprüfen Sie Signaturen, um Authentizität sicherzustellen.

Signatur-Header

X-Nxt-Timestamp: 1707400000
X-Nxt-Signature: sha256=abc123def456...

Überprüfungsbeispiel (Python)

import hmac
import hashlib

def verify_webhook(raw_body: bytes, timestamp: str, signature_header: str, secret: str) -> bool:
    # Signature header format: "sha256="
    expected_sig = signature_header.removeprefix("sha256=")
    message = raw_body + timestamp.encode()
    computed = hmac.new(secret.encode(), message, hashlib.sha256).hexdigest()
    return hmac.compare_digest(computed, expected_sig)

Tipp: Holen Sie sich Ihr Webhook-Secret von GET /v1/webhook-secret

Source-Provider-Muster

Verwenden Sie für private Videos das Source-Provider-Muster. Ihr Endpunkt fungiert als Zugriffsvermittler und gibt vorsignierte URLs zurück, wenn unsere API das Video abrufen muss.

Ablauf

  1. 1 Sie senden eine Aufgabe mit source.provider-Konfiguration
  2. 2 Unsere API ruft Ihren Endpunkt mit signierter Anfrage auf
  3. 3 Sie überprüfen die Signatur und geben die vorsignierte URL zurück
  4. 4 Unsere API ruft das Video von der vorsignierten URL ab

Sicherheit: Ihre Videos bleiben privat. Wir greifen nur über temporäre vorsignierte URLs darauf zu, die Sie kontrollieren.

Fehlerbehandlung

Die API gibt Standard-HTTP-Statuscodes mit detaillierten Fehlermeldungen zurück.

Status Meaning
400 Fehlerhafte Anfrage - Ungültige Parameter
401 Nicht autorisiert - Ungültiger API-Schlüssel
402 Zahlung erforderlich - Unzureichende Tokens
404 Nicht gefunden - Ressource existiert nicht
429 Ratenbeschränkung - Zu viele Anfragen
500 Interner Fehler - Serverproblem

Abrechnung & Tokens

Die Basiskosten pro erfolgreicher Aufgabe betragen 1 Token. Audio-Transkription ist ein Add-on, das pro 10 Sekunden gesampletem Audio abgerechnet wird. Die endgültigen Kosten werden im Webhook-Feld billing.token_cost gemeldet.

Prepaid-Modus

Kaufen Sie Token-Bundles im Voraus. Tokens werden bei Aufgabenerstellung reserviert und bei Erfolg erfasst.

Postpaid-Modus

Zahlen Sie am Ende des Abrechnungszyklus. Legen Sie optional monatliche Limits fest, um Ausgaben zu kontrollieren.