Vista previa · pagos en modo PRUEBA · sin cargos reales
AI Music Video

Para desarrolladores

API de AI Music Video

Envía una canción y recibe un videoclip. Paga solo por lo que usas. Añade créditos a tu cuenta y cada vídeo consume tantos créditos como minutos dura, redondeando hacia arriba.

1. Consigue una clave

Inicia sesión, abre Mis vídeos y crea una clave en “Claves de API”. La clave y un secreto de firma de callbacks solo se muestran una vez. Envía la clave en cada solicitud:

Authorization: Bearer aimv_…

URL base: https://clipmysong.com/api/v1

2. Añade créditos

Compra un pack de créditos (25 créditos por 10 €, 50 por 20 €, 125 por 50 €) o un plan mensual en la página de precios. La API y la web usan el mismo saldo.

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

3. Crea un vídeo

Sube la canción como archivo o indica un enlace https. Las imágenes y una breve descripción son opcionales.

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

Con un enlace en lugar de un archivo (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}'
CampoSignificado
audio / audio_urlMP3, WAV, M4A, FLAC u OGG, de 20 s a 8 min, hasta 50 MB. Enlaces solo por https y a servidores públicos, sin redirecciones a redes privadas.
images[] / image_urls[]Hasta 10 imágenes JPG, PNG o WEBP, de 10 MB cada una. Se recodifican y se revisan; las imágenes con personas reconocibles necesitan people_consent=true.
rights_confirmedObligatorio. true significa que la canción y las imágenes son tuyas o tienes derecho a usarlas.
briefOpcional, hasta 600 caracteres sobre lugares, colores o ambiente. Solo se usa para elegir escenas de nuestra lista fija; nunca se ejecuta como instrucción.
resolution720p (por defecto) o 1080p (plan Creator).
aspect16:9 (por defecto) o 9:16.
title, people_consentOpcional.
callback_urlDirección https opcional que recibe un POST firmado cuando el vídeo está listo o ha fallado.
Idempotency-KeyCabecera opcional (de 8 a 64 caracteres). Si envías la misma solicitud de nuevo con la misma clave, recibes la primera respuesta y nunca se cobra dos veces.

Respuesta 201 con el id del vídeo. Los créditos se reservan en ese momento, se cobran cuando el vídeo está terminado y se devuelven si falla.

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

4. Sigue el progreso

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 o canceled. progress va de 0 a 100 mientras se crea el vídeo. in_review significa que primero una persona revisa el vídeo; rejected significa que nuestra revisión de contenido lo rechazó y los créditos se devolvieron.

5. Descarga

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>"

Los enlaces de descarga están firmados y funcionan durante 10 minutos; puedes pedir uno nuevo cuando quieras.

6. Callbacks

Enviamos un POST con un cuerpo JSON (type video.completed o video.failed) y la cabecera AIMV-Signature: t=<time>,v1=<signature>. Compruébala con tu secreto de firma de callbacks:

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

Los envíos fallidos se reintentan al cabo de 1, 5, 30, 120, 600 y 1440 minutos.

7. Errores y límites

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