Trabajos

Entrega y SLA de inicio

La entrega controla client_wait — independientemente del SLA de inicio processing_lane. Consulte SLA de inicio.

Slug de la pipeline

Las rutas de los trabajos utilizan handler___command con tres guiones bajos. OCR: POST /job/add/paperoffice_aiocr___generate. IDP: POST /job/add/workflow. Sin puntos ni po-* en la ruta.

La notación de puntos (handler.command) devuelve HTTP 400 (JOB_CONFIG_INVALID).

IDP POST /job/add/workflow acepta solo file multipart o pofid — no hay matrices de URL JSON.

Estándar — Mantener la conexión

POST /job/add/{pipeline}  →  Verbindung halten bis ~295s  →  200 result ODER HTTP 202 + job_id + poll_url

Después de que expire la ventana de retención, el trabajo continúa. Utilice GET /job/get/{job_id} cada 5–10 segundos o use poll_url de la respuesta.

Los trabajos de API pendientes, en ejecución y completados se encuentran bajo Cuenta → API → Cola de trabajos (/paperoffice-account/api-queue).

job_id inmediato

client_wait=false  ODER  async_only=true

1. POST /job/add/{pipeline}     → job_id sofort (~100ms)
2. GET  /job/get/{job_id}        → Alle 5–10 s pollen, bis job_status = "completed"
3. GET  /job/download/{token}    → Nur wenn job_result eine Download-URL enthält

HTTP 202 — El trabajo continúa

HTTP 202 es un camino de éxito, no un error. El trabajo permanece activo. Polling de job_id y poll_url hasta que job_status tenga el valor completed. El resultado está en job_result.

Con Connection Hold, el resultado final está en result. Al hacer polling, está en job_result. Los clientes evalúan el código estable, no el texto localizado de message.

Formato de respuesta

Todas las respuestas son JSON e incluyen processing_time.

Éxito:

{
  "status": "success",
  "job_id": "abc123",
  "result": { "text": "…" },
  "processing_time": "45.12ms"
}

Polling / HTTP 202:

{
  "status": "success",
  "job_id": "abc123",
  "poll_url": "/job/get/abc123",
  "client_wait": false,
  "max_wait_seconds": 60,
  "message": "Job queued — poll for result",
  "processing_time": "45.12ms"
}

Error:

{
  "status": "error",
  "code": "INSUFFICIENT_CREDITS",
  "message": "Not enough credits for this job",
  "processing_time": "12.04ms"
}

Códigos de error

HTTPCódigoSignificadoSolución
400INVALID_REQUESTParámetros faltantes / inválidosVerificar el cuerpo de la solicitud
400JOB_CONFIG_INVALIDSlug de pipeline inválidoUsar handler___command, no notación de puntos
401AUTH_REQUIREDSin token BearerEstablecer Authorization: Bearer YOUR_TOKEN
401INVALID_TOKENToken inválidoVerificar el formato del token (po_sk_, po_ut_, po_gt_, po_pk_)
401BEARERTOKEN_EXPIREDToken expiradoSolicitar un nuevo token
402INSUFFICIENT_CREDITSCredits insuficienteRecargar Credits o elegir una lane más baja
402BUDGET_EXHAUSTEDPresupuesto de clave publicable agotadoCrear un nuevo po_pk_ o aumentar el límite de presupuesto
403FORBIDDENAcción no permitidaVerificar alcance, origen o licencia
403TIER_RESTRICTEDAPI del producto sin token (VISITOR)Establecer token Bearer — esto no es HTTP 401
403JOB_REQUIRES_PAID_TIERNivel Free no permitidoUsar un plan de pago
404NOT_FOUNDNo encontradoVerificar la ruta de la URL
429RATE_LIMIT_EXCEEDEDDemasiadas solicitudesRespetar Retry-After
429QUEUE_LIMIT_REACHEDCola llenaReenviar más tarde
500INTERNAL_ERRORError del servidorIntentar de nuevo tras una breve pausa
503SERVICE_UNAVAILABLEServicio no disponibleIntentar de nuevo con backoff

Continuar