Runway Image Animation API

Professional image animation with cinema-quality results

✓ Cinema quality

✓ 16:9/9:16

✓ Pro tools

✓ Motion control

Autenticación

Para acceder a Runway Image-to-Video API a través de la API de Doitong, usa tu clave de API de Doitong. Inclúyela en la mutación de GraphQL o en los encabezados de la API REST.

Importante: Mantén tu clave de API de Doitong en un lugar seguro y nunca la expongas en el código del lado del cliente. Realiza siempre las llamadas a la API desde tu servidor backend.
// GraphQL Header
{
  "Authorization": "Bearer YOUR_API_KEY"
}

// REST Header
"X-API-Key": "YOUR_API_KEY"

Inicio rápido

Comienza a usar Runway Image-to-Video API en solo unos minutos. Sigue estos sencillos pasos para generar tu primer image to video.

Paso 1: Obtén tu clave de API

Regístrate para obtener una cuenta de Doitong y dirígete a tu panel de control para generar una clave de API.

Paso 2: Realiza tu primera solicitud

Usa uno de los ejemplos de código a continuación para realizar tu primera llamada a la API.

curl -X POST https://api.doitong.com/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: unique-request-id-123" \
  -d '{
    "query": "mutation Generate($input: GenerateInput!) { generate(input: $input) { id status type provider url metadata creditCost } }",
    "variables": {
      "input": {
        "type": "VIDEO",
        "provider": "runway-i2v",
        "input": {
          "image": "https://example.com/your-image.jpg"
        },
        "options": {
          "duration": 5,
          "motionIntensity": "medium"
        }
      }
    }
  }'
const response = await fetch('https://api.doitong.com/graphql', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    query: `
      mutation AnimateImage($input: ImageAnimationInput!) {
        animateImage(input: $input) {
          id
          status
          url
        }
      }
    `,
    variables: {
      input: {
        service: 'runway-i2v',
        imageUrl: 'https://example.com/your-image.jpg',
        duration: 5,
        motionIntensity: 'medium'
      }
    }
  })
});

const data = await response.json();
console.log('Animated Video:', data.data.animateImage);
import requests
import json

url = "https://api.doitong.com/graphql"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_API_KEY"
}

query = """
mutation Generate($input: GenerateInput!) {
  generate(input: $input) {
    id
    status
    type
    provider
    url
    metadata
    creditCost
  }
}
"""

variables = {
    "input": {
        "type": "VIDEO",
        "provider": "runway-i2v",
        "input": {
            "imageUrl": "https://example.com/your-image.jpg"
        },
        "options": {
            "duration": 5,
            "motionIntensity": "medium"
        }
    }
}

response = requests.post(url, json={
    "query": query,
    "variables": variables
}, headers=headers)

data = response.json()
print("Result:", data["data"]["generate"])
mutation Generate($input: GenerateInput!) {
  generate(input: $input) {
    id
    status
    type
    provider
    url
    metadata
    creditCost
    createdAt
  }
}

# Variables
{
  "input": {
    "type": "VIDEO",
    "provider": "runway-i2v",
    "input": {
      "imageUrl": "https://example.com/your-image.jpg"
    },
    "options": {
      "duration": 5,
      "motionIntensity": "medium",
      "version": "gen-4"
    }
  }
}

Precios

Runway Image-to-Video API utiliza un modelo de precios basado en créditos. Los créditos se consumen según la complejidad y la duración del contenido generado.

Función Créditos Descripción
Uso básico 10-50 Créditos Calidad y duración estándar
Uso Premium 100-500 Créditos Alta calidad y funciones extendidas

Endpoints de la API

Runway Image-to-Video API está disponible a través de nuestro endpoint unificado de GraphQL.

Endpoint de GraphQL

POST https://api.doitong.com/graphql

Endpoint de REST

POST https://api.doitong.com/v1/image_to_video

Parámetros

Parámetros disponibles para las solicitudes de Runway Image-to-Video API:

Parámetro Tipo Obligatorio Descripción
service String Yes Identificador del servicio: "runway-i2v"
prompt String Yes Descripción en texto de lo que se desea generar
duration Entero No Duración del vídeo en segundos (por defecto: 5)
aspectRatio String No Relación de aspecto: "16:9", "9:16", "1:1" (por defecto: "16:9")
version String No Model version: "gen-2", "gen-3", "gen-4"
webhookUrl String No URL para recibir notificaciones de finalización

Formato de respuesta

Todas las respuestas de la API siguen un formato consistente:

Respuesta exitosa

{
  "data": {
    "imagevideo": {
      "id": "abc123xyz",
      "status": "processing",
      "url": null,
      "webhookUrl": "https://your-webhook.com/callback",
      "createdAt": "2024-01-01T00:00:00Z"
    }
  }
}

Respuesta completada

{
  "data": {
    "imagevideo": {
      "id": "abc123xyz",
      "status": "completed",
      "url": "https://cdn.doitong.com/outputs/abc123xyz.mp4",
      "duration": 5,
      "createdAt": "2024-01-01T00:00:00Z"
    }
  }
}

Gestión de errores

La API utiliza códigos de estado HTTP estándar y devuelve mensajes de error detallados.

Códigos de error comunes

Código de estado Tipo de error Descripción
400 Bad Request Invalid parameters or malformed request
401 Unauthorized Missing or invalid API key
402 Payment Required Insufficient credits
429 Too Many Requests Rate limit exceeded
500 Internal Server Error Server error, please retry

Formato de respuesta de error

{
  "errors": [
    {
      "message": "Insufficient credits for this operation",
      "extensions": {
        "code": "INSUFFICIENT_CREDITS",
        "creditsRequired": 100,
        "creditsAvailable": 50
      }
    }
  ]
}

Webhooks

Recibe notificaciones en tiempo real cuando se complete la generación de tu image to video.

Configuración de webhooks

Include a <code>webhookUrl</code> parameter in your request to receive a POST notification when processing is complete.

Payload del webhook

{
  "id": "abc123xyz",
  "status": "completed",
  "url": "https://cdn.doitong.com/outputs/abc123xyz.mp4",
  "service": "runway-i2v",
  "createdAt": "2024-01-01T00:00:00Z",
  "completedAt": "2024-01-01T00:01:00Z",
  "metadata": {
    "duration": 5,
    "width": 1920,
    "height": 1080
  }
}

Seguridad del webhook

Todas las solicitudes de webhook incluyen un encabezado de firma para su verificación:

X-Doitong-Signature: sha256=abc123...

Límites de tasa

Para garantizar un uso justo y la estabilidad del sistema, se aplican los siguientes límites de tasa:

Plan Solicitudes/minuto Tareas simultáneas Límite diario
Gratis 10 1 100
Starter 30 3 1,000
Pro 60 10 10,000
Enterprise Personalizado Personalizado Ilimitado
Encabezados de límite de tasa: Consulta los encabezados de respuesta para conocer el estado actual de los límites:
  • X-RateLimit-Limit: Maximum requests per window
  • X-RateLimit-Remaining: Requests remaining
  • X-RateLimit-Reset: Window reset timestamp

Mejores prácticas

1. Optimiza tus prompts

Escribe prompts claros y descriptivos para obtener los mejores resultados:

  • Be specific about visual elements, style, and mood
  • Include details about lighting, camera angles, and composition
  • Avoid contradictory or impossible requests

2. Gestiona el procesamiento asíncrono

La generación es asíncrona. Implementa un sistema de sondeo (polling) o webhooks adecuado:

// Polling example
async function pollStatus(jobId) {
  let status = 'processing';
  while (status === 'processing') {
    await sleep(2000); // Wait 2 seconds
    const result = await checkJobStatus(jobId);
    status = result.status;
  }
  return result;
}

3. Recuperación de errores

Implementa una lógica de reintento con retroceso exponencial (exponential backoff):

async function retryWithBackoff(fn, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn();
    } catch (error) {
      if (i === maxRetries - 1) throw error;
      await sleep(Math.pow(2, i) * 1000);
    }
  }
}

4. Supervisa el uso de créditos

Realiza un seguimiento de tu consumo de créditos para evitar interrupciones:

  • Check credit balance before large batch operations
  • Set up alerts for low credit thresholds
  • Implement credit-aware request queuing

¿Todo listo para empezar?

Únete a miles de desarrolladores que usan Runway Image-to-Video API para crear contenido increíble

Obtener clave de API Ver precios