> ## Documentation Index
> Fetch the complete documentation index at: https://docs.evolink.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Integración Rápida

> Usa EvoLink para llamar rápidamente modelos de imagen, video y texto

# Integración Rápida

Esta guía te ayuda a completar tu primera solicitud de EvoLink en pocos minutos. Las cargas multimodales usan tareas asíncronas; los modelos de texto usan una API de mensajes síncrona para chat y herramientas de programación.

<CardGroup cols={3}>
  <Card title="Generación de imágenes" icon="image" href="/es/api-manual/image-series/gpt-image-2/gpt-image-2-image-generation">
    Crea una tarea de generación de imagen con GPT Image 2 y consulta el resultado mediante la API de tareas.
  </Card>

  <Card title="Generación de video" icon="video" href="/es/api-manual/video-series/seedance2.0/seedance-2.0-overview">
    Crea tareas de texto a video, imagen a video y referencia a video con Seedance 2.0.
  </Card>

  <Card title="Generación de texto" icon="comments" href="/es/api-manual/language-series/claude/claude-messages-api">
    Usa la API Claude Messages para recibir respuestas de texto síncronas.
  </Card>
</CardGroup>

## Requisitos previos

<Steps>
  <Step title="Crear una API Key">
    Abre el [panel de EvoLink](https://evolink.ai/dashboard/keys), crea una API Key y guárdala de forma segura.
  </Step>

  <Step title="Elegir una Base URL">
    Usa `https://api.evolink.ai` para tareas de imagen, video, audio y otras tareas multimodales. Usa `https://direct.evolink.ai` para modelos de texto.
  </Step>

  <Step title="Enviar una solicitud">
    Las APIs multimodales devuelven primero un ID de tarea. Las APIs de texto devuelven directamente la respuesta del modelo.
  </Step>
</Steps>

<Warning>
  Las API Keys pueden invocar recursos de tu cuenta. Guárdalas solo en el servidor o en variables de entorno seguras. No pongas claves en código frontend, repositorios públicos ni paquetes cliente.
</Warning>

## Flujo de solicitud

Las tareas multimodales siguen el mismo flujo:

<CardGroup cols={3}>
  <Card title="1. Enviar tarea" icon="paper-plane">
    Llama a un endpoint de imagen, video o audio y recibe el ID de tarea en el campo `id` de la respuesta.
  </Card>

  <Card title="2. Consultar estado" icon="chart-line">
    Usa `GET /v1/tasks/{task_id}` para consultar `pending`, `processing`, `completed` o `failed`.
  </Card>

  <Card title="3. Obtener resultados" icon="download">
    Cuando la tarea se complete, lee la URL del archivo generado desde el campo `results`.
  </Card>
</CardGroup>

<Note>
  Las URLs de imágenes y videos generados suelen expirar. En producción, descarga y guarda los resultados completados en tu propio almacenamiento lo antes posible.
</Note>

## Generación de imágenes

Crea una tarea de generación de imagen con GPT Image 2:

```bash theme={null}
curl -X POST https://api.evolink.ai/v1/images/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "Un plano gran angular cinematográfico de una ciudad futurista al atardecer",
    "size": "16:9",
    "resolution": "4K",
    "quality": "high",
    "n": 1
  }'
```

La respuesta devuelve un objeto de tarea:

```json theme={null}
{
  "id": "task-unified-1757156493-imcg5zqt",
  "object": "image.generation.task",
  "model": "gpt-image-2",
  "status": "pending",
  "progress": 0,
  "task_info": {
    "can_cancel": true,
    "estimated_time": 100
  }
}
```

Consulta el estado de la tarea:

```bash theme={null}
curl https://api.evolink.ai/v1/tasks/task-unified-1757156493-imcg5zqt \
  -H "Authorization: Bearer YOUR_API_KEY"
```

Cuando la tarea se completa, los resultados aparecen en el arreglo `results`:

```json theme={null}
{
  "id": "task-unified-1757156493-imcg5zqt",
  "object": "image.generation.task",
  "model": "gpt-image-2",
  "status": "completed",
  "progress": 100,
  "results": [
    "https://example.com/generated-image.png"
  ]
}
```

## Generación de video

Crea una tarea de texto a video con Seedance 2.0:

```bash theme={null}
curl -X POST https://api.evolink.ai/v1/videos/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0-text-to-video",
    "prompt": "Un plano macro enfoca una rana de cristal verde sobre una hoja y luego cambia a su abdomen transparente, donde un corazón rojo late de forma rítmica.",
    "duration": 8,
    "quality": "720p",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }'
```

Las tareas de video se consultan con la misma API de tareas:

```bash theme={null}
curl https://api.evolink.ai/v1/tasks/YOUR_VIDEO_TASK_ID \
  -H "Authorization: Bearer YOUR_API_KEY"
```

<Tip>
  Para imagen a video o generación de video con múltiples referencias, empieza desde la [guía completa de parámetros de Seedance 2.0](/es/api-manual/video-series/seedance2.0/seedance-2.0-overview).
</Tip>

## Generación de texto

Los modelos de texto Claude deben usar `https://direct.evolink.ai` con el endpoint `/v1/messages`:

```bash theme={null}
curl -X POST https://direct.evolink.ai/v1/messages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-5-20250929",
    "max_tokens": 1024,
    "messages": [
      {
        "role": "user",
        "content": "Presenta EvoLink en tres frases"
      }
    ]
  }'
```

La API de texto devuelve un objeto de mensaje de forma síncrona:

```json theme={null}
{
  "id": "msg_xxx",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-4-5-20250929",
  "content": [
    {
      "type": "text",
      "text": "EvoLink proporciona una pasarela unificada de servicios de IA..."
    }
  ],
  "stop_reason": "end_turn"
}
```

## Ejemplo en Python

Este ejemplo envía una tarea de imagen, consulta el estado y lee el resultado final:

```python theme={null}
import os
import time
import requests

API_KEY = os.environ["EVOLINK_API_KEY"]
BASE_URL = "https://api.evolink.ai"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}


def create_image_task(prompt: str) -> str:
    response = requests.post(
        f"{BASE_URL}/v1/images/generations",
        headers=headers,
        json={
            "model": "gpt-image-2",
            "prompt": prompt,
            "size": "1:1",
            "quality": "high",
        },
        timeout=30,
    )
    response.raise_for_status()
    return response.json()["id"]


def wait_for_task(task_id: str, timeout_seconds: int = 300):
    started_at = time.time()

    while time.time() - started_at < timeout_seconds:
        response = requests.get(
            f"{BASE_URL}/v1/tasks/{task_id}",
            headers={"Authorization": f"Bearer {API_KEY}"},
            timeout=30,
        )
        response.raise_for_status()
        task = response.json()

        if task["status"] == "completed":
            return task["results"]
        if task["status"] == "failed":
            raise RuntimeError(task.get("error", "Task failed"))

        time.sleep(5)

    raise TimeoutError("Task timed out")


task_id = create_image_task("Un póster de producto limpio, fondo blanco, iluminación suave de estudio")
results = wait_for_task(task_id)
print(results[0])
```

## Límites de frecuencia de solicitudes

Los límites de frecuencia de solicitudes de EvoLink se configuran por modelo.

Los límites de RPM, concurrencia y envío de tareas pueden variar según el modelo. Los límites reales dependen del tipo de modelo, la capacidad del servicio ascendente, el nivel de la cuenta y la disponibilidad en tiempo real. Los modelos de texto ligeros suelen admitir tasas de solicitud más altas, mientras que los modelos de generación de imágenes y videos pueden tener límites más bajos porque las tareas tardan más y consumen más recursos ascendentes.

Para modelos de generación asíncrona, una respuesta exitosa de la API solo significa que la tarea fue aceptada o creada; no significa que la tarea haya terminado. Para cargas de alta concurrencia, implementa una cola del lado del servidor y recupera los resultados finales mediante la API de consulta de tareas o callbacks.

Si recibes errores HTTP 429 de forma continua, o tu negocio necesita límites más altos de RPM o concurrencia, contacta a [support@evolink.ai](mailto:support@evolink.ai). Evaluaremos la solicitud según el caso de uso real y la capacidad ascendente disponible.

## Recomendaciones de producción

<CardGroup cols={2}>
  <Card title="Gestión de claves" icon="shield">
    Guarda las API Keys en variables de entorno o en un gestor de secretos, y usa claves separadas para cada entorno.
  </Card>

  <Card title="Consulta de tareas" icon="clock">
    Ajusta los intervalos de consulta según el tipo de tarea. Las tareas de imagen pueden consultarse con mayor frecuencia; las de video normalmente deben consultarse con menor frecuencia.
  </Card>

  <Card title="Manejo de errores" icon="server">
    Maneja estados `failed` y errores HTTP, incluidos límites de frecuencia, saldo insuficiente y errores de parámetros.
  </Card>

  <Card title="Almacenamiento de resultados" icon="download">
    Las URLs de resultados expiran. En producción, descarga y guarda los archivos completados en tu propio sistema de almacenamiento.
  </Card>
</CardGroup>

## Siguientes pasos

<CardGroup cols={3}>
  <Card title="API de imagen" icon="image" href="/es/api-manual/image-series/gpt-image-2/gpt-image-2-image-generation">
    Consulta parámetros, ejemplos y estructura de respuesta de GPT Image 2.
  </Card>

  <Card title="API de video" icon="video" href="/es/api-manual/video-series/seedance2.0/seedance-2.0-overview">
    Consulta las capacidades de texto a video, imagen a video y referencia a video de Seedance 2.0.
  </Card>

  <Card title="Gestión de tareas" icon="list-check" href="/es/api-manual/task-management/get-task-detail">
    Consulta estados de tareas, campos de resultados y estructura de errores.
  </Card>
</CardGroup>
