Saltar al contenido principal

Ciclo de Vida de Trabajos Asíncronos

Todos los trabajos de generación en la API de AetherAI se procesan de forma asíncrona. Después de crear un trabajo, debes hacer polling para verificar su estado.

Creación del Trabajo

Cuando envías una solicitud POST, se devuelve inmediatamente un job_id. El procesamiento de imágenes continúa en segundo plano.

Ejemplo de Solicitud

curl -X POST "https://api.aetherforgeai.com/public/v1/generate/image" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A beautiful sunset over mountains",
"ai_model": "GPT Image 1.5"
}'

Ejemplo de Respuesta

{
"job_id": "550e8400-e29b-41d4-a716-446655440000"
}

Polling de Estado del Trabajo

Envía una solicitud GET con el job_id devuelto para verificar el estado del trabajo.

curl -X GET "https://api.aetherforgeai.com/public/v1/job/{job_id}" \
-H "Authorization: Bearer your_api_key_here"

Valores de Estado

EstadoDescripción
PendingEl trabajo está en espera o siendo procesado
SucceedEl trabajo se completó exitosamente
FailedOcurrió un error durante el procesamiento del trabajo

Ejemplos de Respuesta por Estado

Pending

{
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "Pending",
"image_urls": []
}

Succeed

{
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "Succeed",
"image_urls": [
"https://cdn.aetherforgeai.com/images/abc123.png",
"https://cdn.aetherforgeai.com/images/abc123.gif"
]
}

Failed

{
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "Failed",
"image_urls": []
}

Estrategia de Polling

Recomendamos hacer polling a los siguientes intervalos para verificar la finalización del trabajo:

  • Polling inicial: 1 segundo después de la creación del trabajo
  • Intervalos posteriores: 2-5 segundos
  • Tiempo máximo de polling: 1 minuto (varía según el tipo de trabajo)

Ejemplo en Python

import time
import requests

def poll_job_status(job_id, api_key, max_attempts=60):
headers = {"Authorization": f"Bearer {api_key}"}

for attempt in range(max_attempts):
response = requests.get(
f"https://api.aetherforgeai.com/public/v1/job/{job_id}",
headers=headers
)
data = response.json()

if data["status"] == "Succeed":
return data["image_urls"]
elif data["status"] == "Failed":
raise Exception(f"Job failed: {data.get('error_message', 'Error desconocido')}")

time.sleep(2)

raise TimeoutError("El polling del trabajo ha expirado")

Documentación Relacionada