DeepManim-API-Skill
Mit der DeepManim-API können Sie animierte Erklärvideos aus Text-Prompts erstellen, verbessern und vertonen.
Basis-URL
https://api.deepmanim.com/api/v1
Authentifizierung
Alle Anfragen benötigen einen API-Schlüssel im Authorization-Header:
Authorization: Bearer dm_k_YOUR_API_KEY
Ablauf
Der typische Ablauf ist:
- Erstellen Sie ein Video aus einem Text-Prompt über
POST /generate - Fragen Sie den zurückgegebenen Job über
GET /jobs/{job_id}ab, bisstatus"completed"ist - Verbessern Sie das Video mit Folgeanweisungen über
POST /improve(optional und wiederholbar) - Fügen Sie über
POST /audioeine Narration hinzu, sobald die visuellen Elemente passen - Verbessern Sie die Narration bei Bedarf über
POST /improve-narration
Aufrufe zum Erstellen und Verbessern beginnen bei 1,5 Credits und variieren je nach Preset. Audio- und improve-narration-Aufrufe kosten 1 Credit. Das Lesen von Daten ist kostenlos.
Endpunkte
POST /generate
Neues Video aus einem Text-Prompt erstellen. Audio-Narration ist standardmäßig enthalten.
Anfragekörper:
{
"message": "Erkläre den Satz des Pythagoras",
"session_id": null,
"preferred_locale": "de"
}
message(required): Der Prompt beschreibt, was animiert werden soll.session_id(optional): Übergeben Sie eine bestehende Sitzungs-ID, um eine Unterhaltung fortzusetzen.
Antwort:
{
"job_id": "abc-123",
"session_id": "def-456",
"status": "pending"
}
POST /improve
Vorhandenes Video verbessern oder ändern. Enthält KEIN Audio – fügen Sie es nach allen Änderungen über /audio hinzu.
Anfragekörper:
{
"session_id": "def-456",
"message": "Verdunkle den Hintergrund und verlangsame die Animation",
"preferred_locale": "de"
}
Antwort:
{
"job_id": "ghi-789",
"session_id": "def-456",
"status": "pending"
}
POST /audio
Audio-Narration zu einem vorhandenen Video hinzufügen.
Anfragekörper:
{
"session_id": "def-456",
"message_id": "msg-123",
"high_quality": false,
"preferred_locale": "de"
}
POST /improve-narration
Vorhandene Narration eines Videos verbessern.
Anfragekörper:
{
"session_id": "def-456",
"message_id": "msg-123",
"high_quality": true,
"mode": "better_narration",
"instruction": "Mache die Erklärung für Anfänger intuitiver.",
"preferred_locale": "de"
}
GET /jobs/{job_id}
Jobstatus abfragen. Das Feld phase zeigt den Fortschritt: brainstorming → crafting_vision → assembling_pieces → polishing → done
Antwort nach Abschluss:
Antwort nach Abschluss:
{
"job_id": "abc-123",
"status": "completed",
"phase": "done",
"estimated_time_remaining_seconds": 0,
"result": {
"video_url": "https://...",
"description": "Eine Animation zum Satz des Pythagoras...",
"session_id": "def-456",
"message_id": "msg-789",
"duration_seconds": 24.6,
"has_audio": true,
"follow_up": "Welche Anwendungen gibt es in der Praxis?"
}
}
Mögliche status-Werte: pending, running, completed, failed.
POST /jobs/{job_id}/cancel — Laufenden oder ausstehenden Job abbrechen.
GET /sessions — Alle Sitzungen auflisten.
GET /sessions/{session_id} — Sitzung mit vollständigem Nachrichtenverlauf abrufen.
DELETE /sessions/{session_id} — Sitzung und alle Nachrichten löschen.
GET /sessions/{session_id}/jobs
Jobs einer Sitzung auflisten. Optionaler Filter: ?status=completed
GET /messages/{message_id} — Eine Nachricht per ID abrufen.
GET /credits
Credit-Guthaben abrufen: balance, total_used, total_purchased, plan.
GET /me
Aktuelle Benutzerinformationen abrufen: id, email, display_name.
Fehlercodes
401— API-Schlüssel fehlt oder ist ungültig402— Nicht genügend Credits404— Ressource nicht gefunden400— Ungültige Anfrage
Abfragestrategie
Jobs dauern normalerweise 60–120 Sekunden. Fragen Sie GET /jobs/{job_id} alle 3–5 Sekunden ab. Verwenden Sie estimated_time_remaining_seconds, um die Frequenz anzupassen. Beenden Sie die Abfrage, wenn status completed oder failed ist.
Beispiel: vollständiger Ablauf
import requests, time
API_KEY = "dm_k_YOUR_KEY"
BASE = "https://api.deepmanim.com/api/v1"
headers = {"Authorization": f"Bearer {API_KEY}"}
# 1. Erstellen
r = requests.post(f"{BASE}/generate", headers=headers, json={
"message": "Erkläre die Schwerkraft",
"preferred_locale": "de"
})
job_id = r.json()["job_id"]
session_id = r.json()["session_id"]
# 2. Bis zum Abschluss abfragen
while True:
job = requests.get(f"{BASE}/jobs/{job_id}", headers=headers).json()
if job["status"] in ("completed", "failed"):
break
time.sleep(4)
# 3. Ergebnis abrufen
video_url = job["result"]["video_url"]
message_id = job["result"]["message_id"]
# 4. Optional verbessern
r = requests.post(f"{BASE}/improve", headers=headers, json={
"session_id": session_id,
"message": "Füge mehr Farbe hinzu und mache es langsamer",
"preferred_locale": "de"
})
# Den neuen job_id genauso abfragen…
# 5. Nach den Verbesserungen Audio hinzufügen
r = requests.post(f"{BASE}/audio", headers=headers, json={
"session_id": session_id,
"message_id": message_id,
"high_quality": False,
"preferred_locale": "de"
})
# Den neuen job_id abfragen…
# 6. Narrationspädagogik optional verbessern
r = requests.post(f"{BASE}/improve-narration", headers=headers, json={
"session_id": session_id,
"message_id": message_id,
"high_quality": True,
"mode": "better_narration",
"instruction": "Mache die Erklärung für Anfänger intuitiver.",
"preferred_locale": "de"
})
# Den neuen job_id abfragen…