Armox
    Armox Academy 📚
    Referencia de APIIntroducción a la Referencia de APIEndpoint de Jobs

    Endpoint de Jobs

    Cada ejecución de modelo/app crea un objeto job.

    Usa los endpoints de Jobs para:

    • listar jobs recientes
    • obtener un job por ID
    • cancelar jobs cancelables

    Rutas base:

    • GET /api/v1/jobs
    • GET /api/v1/jobs/:id
    • POST /api/v1/jobs/:id/cancel

    Ciclo de Vida del Job

    Los jobs utilizan estos estados:

    • pending
    • processing
    • completed
    • failed
    • cancelled
    flowchart LR
      pending --> processing
      processing --> completed
      processing --> failed
      pending --> cancelled
      processing --> cancelled
    

    Los estados terminales son:

    • completed
    • failed
    • cancelled

    GET /api/v1/jobs

    Lista los jobs recientes del usuario autenticado.

    Parámetros de Consulta

    • limit (opcional): 1-100, por defecto 20

    Solicitud

    curl -X GET "https://armox.ai/api/v1/jobs?limit=20" \
      -H "Authorization: Bearer sk_live_your_key_here"
    

    Respuesta

    Prompt Template
    {
      "object": "list",
      "data": [
        {
          "id": "job_123",
          "run_type": "model",
          "model_id": "google/nano-banana",
          "app_id": null,
          "status": "completed",
          "input_data": { "input": { "prompt": "..." } },
          "output_data": { "outputImage": "https://..." },
          "error_message": null,
          "credits_charged": 70,
          "created_at": "2026-03-26T12:30:00.000Z",
          "completed_at": "2026-03-26T12:30:03.000Z"
        }
      ]
    }

    GET /api/v1/jobs/:id

    Devuelve un job específico.

    Solicitud

    curl -X GET "https://armox.ai/api/v1/jobs/job_123" \
      -H "Authorization: Bearer sk_live_your_key_here"
    

    Respuesta

    {
      "object": "job",
      "id": "job_123",
      "run_type": "model",
      "model_id": "google/nano-banana",
      "app_id": null,
      "status": "completed",
      "input_data": { "input": { "prompt": "..." } },
      "output_data": { "outputImage": "https://..." },
      "error_message": null,
      "credits_charged": 70,
      "created_at": "2026-03-26T12:30:00.000Z",
      "completed_at": "2026-03-26T12:30:03.000Z",
      "webhook_delivered": true
    }
    

    POST /api/v1/jobs/:id/cancel

    Intenta cancelar un job en estado pending o processing.

    Solicitud

    curl -X POST "https://armox.ai/api/v1/jobs/job_123/cancel" \
      -H "Authorization: Bearer sk_live_your_key_here"
    

    Respuesta Exitosa

    {
      "id": "job_123",
      "object": "job",
      "status": "cancelled",
      "cancelled_at": "2026-03-26T12:35:00.000Z"
    }
    

    Si el job ya no puede ser cancelado, la API puede devolver 409.


    Patrón de Polling

    JavaScript

    Prompt Template
    async function waitForJob(jobId, apiKey) {
      while (true) {
        const response = await fetch(`https://armox.ai/api/v1/jobs/${jobId}`, {
          headers: { Authorization: `Bearer ${apiKey}` },
        });
    
        const job = await response.json();
        if (["completed", "failed", "cancelled"].includes(job.status)) {
          return job;
        }
    
        await new Promise((resolve) => setTimeout(resolve, 2000));
      }
    }

    Python

    Prompt Template
    import time
    import requests
    
    def wait_for_job(job_id, api_key):
        while True:
            response = requests.get(
                f"https://armox.ai/api/v1/jobs/{job_id}",
                headers={"Authorization": f"Bearer {api_key}"}
            )
            job = response.json()
    
            if job.get("status") in ["completed", "failed", "cancelled"]:
                return job
    
            time.sleep(2)

    Créditos y Fallos

    • los créditos se cobran cuando se acepta una ejecución
    • los jobs fallidos se reembolsan mediante el flujo de ejecución de jobs
    • los jobs cancelados siguen la lógica de cancelación y créditos de la plataforma

    Páginas Relacionadas

    ¿Listo para transformar tu flujo de trabajo creativo?

    No se requiere tarjeta de crédito2000 créditos gratis