Vorschau · Zahlungen im TEST-Modus · keine echten Abbuchungen
AI Music Video

Für Entwickler

AI Music Video API

Song schicken, Musikvideo bekommen. Du zahlst nur, was du nutzt. Lade Credits auf dein Konto, und jedes Video verbraucht einen Credit pro angefangene Minute.

1. Schlüssel erstellen

Melde dich an, öffne Meine Videos und erstelle unter „API-Schlüssel“ einen Schlüssel. Der Schlüssel und ein Signatur-Secret für Callbacks werden nur einmal angezeigt. Sende den Schlüssel bei jeder Anfrage mit:

Authorization: Bearer aimv_…

Basis-URL: https://clipmysong.com/api/v1

2. Credits aufladen

Kaufe ein Credit-Paket (25 Credits für 10 €, 50 für 20 €, 125 für 50 €) oder ein Monatsabo auf der Preisseite. API und Website nutzen dasselbe Guthaben.

curl -s https://clipmysong.com/api/v1/balance -H "Authorization: Bearer $AIMV_KEY"

3. Video erstellen

Lade den Song als Datei hoch oder gib einen https-Link dazu an. Bilder und eine kurze Beschreibung sind optional.

curl -s https://clipmysong.com/api/v1/videos \
  -H "Authorization: Bearer $AIMV_KEY" \
  -H "Idempotency-Key: my-order-1042" \
  -F audio=@song.mp3 \
  -F images[]=@cover.jpg \
  -F rights_confirmed=true \
  -F brief="a road trip at sunset, warm colours, the sea at the end" \
  -F resolution=720p -F aspect=16:9 \
  -F callback_url=https://example.com/hooks/aimv

Mit Link statt Datei (JSON):

curl -s https://clipmysong.com/api/v1/videos \
  -H "Authorization: Bearer $AIMV_KEY" \
  -H "Content-Type: application/json" \
  -d '{"audio_url":"https://example.com/song.mp3","image_urls":["https://example.com/cover.jpg"],"rights_confirmed":true}'
FeldBedeutung
audio / audio_urlMP3, WAV, M4A, FLAC oder OGG, 20 s bis 8 Min., bis 50 MB. Links nur über https und nur auf öffentliche Server, keine Weiterleitungen in private Netze.
images[] / image_urls[]Bis zu 10 Bilder als JPG, PNG oder WEBP, je 10 MB. Sie werden neu kodiert und geprüft; Bilder mit erkennbaren Personen brauchen people_consent=true.
rights_confirmedPflichtfeld. true bedeutet, dass dir Song und Bilder gehören oder du die Rechte hast, sie zu nutzen.
briefOptional, bis zu 600 Zeichen zu Orten, Farben, Stimmung. Wird nur genutzt, um Szenen aus unserer festen Liste auszuwählen, und nie als Anweisung ausgeführt.
resolution720p (Standard) oder 1080p (Creator-Abo).
aspect16:9 (Standard) oder 9:16.
title, people_consentOptional.
callback_urlOptionale https-Adresse, die einen signierten POST erhält, wenn das Video fertig oder fehlgeschlagen ist.
Idempotency-KeyOptionaler Header (8 bis 64 Zeichen). Wird dieselbe Anfrage mit demselben Schlüssel erneut gesendet, kommt die erste Antwort zurück und es wird nie doppelt abgebucht.

Antwort 201 mit der Video-ID. Die Credits werden sofort reserviert, abgebucht, wenn das Video fertig ist, und zurückgebucht, falls es fehlschlägt.

{
  "id": "3f2a9c0d1e4b5a67", "object": "video", "status": "queued",
  "credits": 4, "credits_state": "reserved", "quality": "720p", "aspect": "16:9",
  "duration_seconds": 200.1, "balance": 21
}

4. Fortschritt verfolgen

curl -s https://clipmysong.com/api/v1/videos/3f2a9c0d1e4b5a67 -H "Authorization: Bearer $AIMV_KEY"

status: checking, in_review, queued, rendering, assembling, complete, failed, refused, rejected oder canceled. progress liegt zwischen 0 und 100, solange das Video entsteht. in_review bedeutet, dass zuerst ein Mensch das Video prüft; rejected bedeutet, dass unsere Inhaltsprüfung es abgelehnt hat und die Credits zurückgebucht wurden.

5. Herunterladen

curl -s https://clipmysong.com/api/v1/videos/3f2a9c0d1e4b5a67/download -H "Authorization: Bearer $AIMV_KEY"
# -> {"video_url": "https://clipmysong.com/api/v1/files/…", "expires_at": "…"}
curl -L -o video.mp4 "<video_url>"

Download-Links sind signiert und 10 Minuten gültig; du kannst jederzeit einen neuen anfordern.

6. Callbacks

Wir senden einen POST mit JSON-Body (type video.completed oder video.failed) und dem Header AIMV-Signature: t=<time>,v1=<signature>. Prüfe ihn mit deinem Signatur-Secret für Callbacks:

expected = HMAC_SHA256(callback_secret, t + "." + raw_body)   # hex
valid    = expected == v1 and abs(now - t) < 300

Fehlgeschlagene Zustellungen werden nach 1, 5, 30, 120, 600 und 1440 Minuten wiederholt.

7. Fehler und Limits

{"error": {"code": "insufficient_credits", "message": "…", "needed": 4, "balance": 1}}