DeepManim
Dokumentasi API

Keahlian agen

Salin instruksi di bawah dan berikan kepada agen AI Anda (Claude, GPT, Cursor, dan sebagainya) agar agen tersebut tahu cara menggunakan API DeepManim atas nama Anda.

SKILL.md
# Keahlian API DeepManim

Anda dapat menggunakan API DeepManim untuk membuat, memperbaiki, dan memberi narasi pada video penjelasan animasi dari prompt teks.

## URL dasar

```
https://api.deepmanim.com/api/v1
```

## Autentikasi

Semua permintaan memerlukan kunci API di header Authorization:

```
Authorization: Bearer dm_k_YOUR_API_KEY
```

## Alur kerja

Alur kerja umumnya adalah:

1. **Buat** video dari prompt teks melalui `POST /generate`
2. **Periksa** job yang dikembalikan melalui `GET /jobs/{job_id}` sampai `status` menjadi `"completed"`
3. **Perbaiki** video dengan instruksi lanjutan melalui `POST /improve` (opsional dan dapat diulang)
4. **Tambahkan** narasi melalui `POST /audio` setelah visualnya sesuai
5. **Perbaiki narasi** melalui `POST /improve-narration` bila diperlukan

Panggilan untuk membuat dan memperbaiki dimulai dari 1,5 kredit dan bervariasi menurut preset. Panggilan audio dan improve-narration berharga 1 kredit. Membaca data gratis.

## Endpoint

### POST /generate
Buat video baru dari prompt teks. Narasi audio disertakan secara bawaan.

Isi permintaan:
```json
{
  "message": "Jelaskan gravitasi",
  "session_id": null,
  "preferred_locale": "id"
}
```
- `message` (required): Prompt yang menjelaskan apa yang harus dianimasikan.
- `session_id` (optional): Kirim ID session yang sudah ada untuk melanjutkan percakapan.

Respons:
```json
{
  "job_id": "abc-123",
  "session_id": "def-456",
  "status": "pending"
}
```

### POST /improve
Perbaiki atau ubah video yang sudah ada. TIDAK menyertakan audio—tambahkan secara terpisah melalui /audio setelah semua perubahan selesai.

Isi permintaan:
```json
{
  "session_id": "def-456",
  "message": "Tambahkan lebih banyak warna dan perlambat animasinya",
  "preferred_locale": "id"
}
```

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

### POST /audio
Tambahkan narasi audio ke video yang sudah ada.

Isi permintaan:
```json
{
  "session_id": "def-456",
  "message_id": "msg-123",
  "high_quality": false,
  "preferred_locale": "id"
}
```

### POST /improve-narration
Perbaiki narasi yang sudah ada pada video.

Isi permintaan:
```json
{
  "session_id": "def-456",
  "message_id": "msg-123",
  "high_quality": true,
  "mode": "better_narration",
  "instruction": "Buat penjelasannya lebih intuitif bagi pemula.",
  "preferred_locale": "id"
}
```

### GET /jobs/{job_id}
Periksa status job. Kolom `phase` menunjukkan kemajuan: `brainstorming` → `crafting_vision` → `assembling_pieces` → `polishing` → `done`

Respons saat selesai:

Respons saat selesai:
```json
{
  "job_id": "abc-123",
  "status": "completed",
  "phase": "done",
  "estimated_time_remaining_seconds": 0,
  "result": {
    "video_url": "https://...",
    "description": "Jelaskan gravitasi",
    "session_id": "def-456",
    "message_id": "msg-789",
    "duration_seconds": 24.6,
    "has_audio": true,
    "follow_up": "Buat penjelasannya lebih intuitif bagi pemula."
  }
}
```

Nilai `status` yang mungkin: `pending`, `running`, `completed`, `failed`.

### POST /jobs/{job_id}/cancel — Batalkan job yang sedang berjalan atau masih menunggu.

### GET /sessions — Daftar semua session Anda.

### GET /sessions/{session_id} — Dapatkan session dengan seluruh riwayat pesan.

### DELETE /sessions/{session_id} — Hapus session dan semua pesannya.

### GET /sessions/{session_id}/jobs
Daftar job untuk sebuah session. Parameter query opsional: `?status=completed`

### GET /messages/{message_id} — Dapatkan satu pesan berdasarkan ID.

### GET /credits
Dapatkan saldo kredit: `balance`, `total_used`, `total_purchased`, `plan`.

### GET /me
Dapatkan informasi pengguna saat ini: `id`, `email`, `display_name`.

## Kode kesalahan

- `401` — Kunci API tidak ada atau tidak valid
- `402` — Kredit tidak mencukupi
- `404` — Sumber daya tidak ditemukan
- `400` — Permintaan tidak valid

## Strategi pemantauan

Job biasanya memerlukan waktu 60–120 detik. Pantau `GET /jobs/{job_id}` setiap 3–5 detik. Gunakan kolom `estimated_time_remaining_seconds` untuk menyesuaikan frekuensi. Hentikan pemantauan saat `status` menjadi `completed` atau `failed`.

## Contoh: alur kerja lengkap

```python
import requests, time

API_KEY = "dm_k_YOUR_KEY"
BASE = "https://api.deepmanim.com/api/v1"
headers = {"Authorization": f"Bearer {API_KEY}"}

# 1. Buat
r = requests.post(f"{BASE}/generate", headers=headers, json={
    "message": "Jelaskan gravitasi",
    "preferred_locale": "id"
})
job_id = r.json()["job_id"]
session_id = r.json()["session_id"]

# 2. Pantau sampai selesai
while True:
    job = requests.get(f"{BASE}/jobs/{job_id}", headers=headers).json()
    if job["status"] in ("completed", "failed"):
        break
    time.sleep(4)

# 3. Dapatkan hasil
video_url = job["result"]["video_url"]
message_id = job["result"]["message_id"]

# 4. Perbaiki bila perlu
r = requests.post(f"{BASE}/improve", headers=headers, json={
    "session_id": session_id,
    "message": "Tambahkan lebih banyak warna dan perlambat animasinya",
    "preferred_locale": "id"
})
# Pantau job_id baru dengan cara yang sama…

# 5. Tambahkan audio setelah perbaikan
r = requests.post(f"{BASE}/audio", headers=headers, json={
    "session_id": session_id,
    "message_id": message_id,
    "high_quality": False,
    "preferred_locale": "id"
})
# Pantau job_id baru…

# 6. Perbaiki pedagogi narasi bila perlu
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": "Buat penjelasannya lebih intuitif bagi pemula.",
  "preferred_locale": "id"
})
# Pantau job_id baru…
```
Keahlian agen | DeepManim