Saltar al contenido

API · Referencia

Resultado de la generación

GET /v1/requests/{request_id} — obtenga el resultado terminado con enlaces a la imagen, el vídeo o el audio; mientras el trabajo sigue en curso, la API devuelve 202.

Obtenga la generación terminada con enlaces a sus medios. Mientras el trabajo está en cola o en ejecución, la llamada devuelve 202: vuelva a intentarlo más tarde.

Playground

GET
/v1/requests/{request_id}
Authorization<token>

API-ключ в заголовке Authorization со схемой Bearer:

Authorization: Bearer <CLIPIA_API_KEY>

Передавайте полную строку, включая префикс схемы Bearer и пробел. Также принимаются Authorization: Key <ключ> и заголовок X-Api-Key: <ключ> — выбирайте удобную схему. Ключ создаётся в консоли разработчика (clipia.ai/developer, вкладка «API-ключи») и показывается один раз. Формат: clipia_live_… (боевой), clipia_test_… (песочница).

Sandbox / тестовый режим. Ключ с префиксом clipia_test_… работает в песочнице: submit не списывает кредиты и не запускает реальную генерацию — он мгновенно возвращает status: COMPLETED с детерминированным mock-результатом (фиксированный sample-ассет на media.clipia.ai). Поле cost показывает расчётную стоимость, но она не списывается. Вебхуки приходят тем же подписанным механизмом (HMAC-SHA256). Режим предназначен для отладки интеграции до подключения боевого ключа.

In: header

Path Parameters

request_idstringrequired

Идентификатор запроса генерации, полученный при submit.

Formatuuid

Response Body

curl -X GET "https://api.clipia.ai/v1/requests/764cabcf-b745-4b3e-ae38-1200304cf45b"

{
  "request_id": "764cabcf-b745-4b3e-ae38-1200304cf45b",
  "status": "COMPLETED",
  "model": "nano-banana-2",
  "output": {
    "images": [
      {
        "url": "https://media.clipia.ai/works/8f3a1c7e.webp",
        "original_url": "https://media.clipia.ai/works/8f3a1c7e.png"
      }
    ]
  },
  "cost": 12,
  "created_at": "2026-06-01T12:00:00Z",
  "completed_at": "2026-06-01T12:00:18Z"
}

{
  "request_id": "764cabcf-b745-4b3e-ae38-1200304cf45b",
  "status": "IN_PROGRESS",
  "queue_position": null,
  "progress": 70
}

{
  "error": {
    "type": "invalid_request_error",
    "code": "invalid_api_key",
    "message": "API-ключ отсутствует, неверный или отозван."
  }
}

{
  "error": {
    "type": "invalid_request_error",
    "code": "not_found",
    "message": "Запрос с таким идентификатором не найден."
  }
}

{
  "error": {
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded. Retry after the reset window.",
    "retry_after_seconds": 12
  }
}

GET /v1/requests/:id devuelve el resultado con un campo output y el código 200 cuando el trabajo alcanza un estado terminal (COMPLETED, FAILED o CANCELED). Todos los enlaces apuntan a la CDN media.clipia.ai. No se necesita ningún permiso adicional de la clave.

GET/v1/requests/:id

Solicitud

Prop

Type

curl https://api.clipia.ai/v1/requests/764cabcf-b745-4b3e-ae38-1200304cf45b \
  -H "Authorization: Bearer $CLIPIA_KEY"
const result = await clipia.queue.result('764cabcf-b745-4b3e-ae38-1200304cf45b');

// Mientras el trabajo está en ejecución, la API devuelve 202 y el SDK establece pending: true.
if (result.pending) {
  console.log('still running:', result.status);
} else {
  console.log(result.output?.images?.[0]?.url);
}
result = client.result("764cabcf-b745-4b3e-ae38-1200304cf45b")

# Mientras el trabajo está en ejecución, la API devuelve 202 y el SDK establece pending = True.
if result.pending:
    print("still running:", result.status)
else:
    print(result.output["images"][0]["url"])

Imagen

{
  "request_id": "764cabcf-b745-4b3e-ae38-1200304cf45b",
  "status": "COMPLETED",
  "model": "nano-banana-2",
  "output": {
    "images": [
      {
        "url": "https://media.clipia.ai/....webp",
        "original_url": "https://media.clipia.ai/....png"
      }
    ]
  },
  "cost": 12,
  "created_at": "2026-10-09T12:00:00Z",
  "completed_at": "2026-10-09T12:00:18Z"
}

output.images es una matriz. url es una copia WebP optimizada para mostrarla; original_url es el archivo original a máxima calidad. Solo la primera imagen de la matriz tiene original_url.

Vídeo

{
  "request_id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
  "status": "COMPLETED",
  "model": "seedance-2-fast-i2v",
  "output": {
    "video": {
      "url": "https://media.clipia.ai/....mp4",
      "original_url": "https://media.clipia.ai/....mp4",
      "thumbnail_url": "https://media.clipia.ai/....webp"
    }
  },
  "cost": 40,
  "created_at": "2026-10-09T12:00:00Z",
  "completed_at": "2026-10-09T12:00:42Z"
}

output.video es un objeto con url. Los campos original_url y thumbnail_url (un fotograma de vista previa) pueden faltar.

Audio

{
  "output": {
    "audio": { "url": "https://media.clipia.ai/....mp3" }
  }
}

Sin dimensiones ni duración

Las respuestas reales no tienen los campos width, height ni duration. Si los necesita, léalos del propio archivo. En el entorno de pruebas, las muestras sí incluyen dimensiones: no base su lógica en ellas.

Campos de la respuesta

Prop

Type

Avisos

Si pediste sonido, pero la pista de audio no superó la comprobación de seguridad del modelo, el servidor repite la generación una vez sin sonido. La solicitud termina como COMPLETED y la respuesta incluye además el array warnings:

{
  "status": "COMPLETED",
  "output": { "video": { "url": "https://media.clipia.ai/....mp4" } },
  "warnings": [
    {
      "code": "audio_dropped",
      "parameter": "generate_audio",
      "message": "The audio track did not pass the model's safety check, so the video is generated without sound. The price of the request is unchanged."
    }
  ]
}

El coste de la solicitud no cambia. El campo warnings se omite cuando no hay nada que avisar, y también en FAILED y CANCELED. El mismo array llega con la respuesta 202 y con el estado de la solicitud mientras el vídeo sin sonido se sigue generando. De momento es el único motivo; interpreta un code desconocido como «el parámetro no se aplicó».

Códigos de respuesta

HTTPCuándoCuerpo
200COMPLETEDresultado con output
200FAILEDerror: { code, message }, code es "GENERATION_FAILED" por defecto
200CANCELEDrespuesta terminal; output suele estar vacío
202IN_QUEUE / IN_PROGRESS{ request_id, status }: vuelva a intentarlo más tarde
400identificador mal formadomessage: invalid_request_id
404no existe la solicitudcode: not_found, message: request_not_found

El código 202 es previsible

202 solo aparece mientras el trabajo no ha terminado. FAILED y CANCELED son respuestas finales con el código 200. En caso de FAILED, los créditos reservados se reembolsan íntegramente. error.code suele ser GENERATION_FAILED, y error.message es una descripción breve sin detalles internos. Base su lógica en status, no en el texto del mensaje.