DeepManim
API-Doku

Agenten-Skill

Kopieren Sie die folgenden Anweisungen und geben Sie sie Ihrem KI-Agenten (Claude, GPT, Cursor usw.), damit er die DeepManim-API in Ihrem Auftrag verwenden kann.

SKILL.md
# 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:

1. **Erstellen Sie** ein Video aus einem Text-Prompt über `POST /generate`
2. **Fragen Sie** den zurückgegebenen Job über `GET /jobs/{job_id}` ab, bis `status` `"completed"` ist
3. **Verbessern Sie** das Video mit Folgeanweisungen über `POST /improve` (optional und wiederholbar)
4. **Fügen Sie** über `POST /audio` eine Narration hinzu, sobald die visuellen Elemente passen
5. **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:
```json
{
  "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:
```json
{
  "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:
```json
{
  "session_id": "def-456",
  "message": "Verdunkle den Hintergrund und verlangsame die Animation",
  "preferred_locale": "de"
}
```

Antwort:
```json
{
  "job_id": "ghi-789",
  "session_id": "def-456",
  "status": "pending"
}
```

### POST /audio
Audio-Narration zu einem vorhandenen Video hinzufügen.

Anfragekörper:
```json
{
  "session_id": "def-456",
  "message_id": "msg-123",
  "high_quality": false,
  "preferred_locale": "de"
}
```

### POST /improve-narration
Vorhandene Narration eines Videos verbessern.

Anfragekörper:
```json
{
  "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:
```json
{
  "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ültig
- `402` — Nicht genügend Credits
- `404` — Ressource nicht gefunden
- `400` — 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

```python
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…
```
Agenten-Skill | DeepManim