Saltar al contenido principal
Algunas consultas de Croma tardan más en responder, desde unos pocos segundos hasta un par de minutos. Estas se ejecutan como trabajos asíncronos: la misma solicitud puede resolverse de tres maneras distintas, y tú eliges cuál se ajusta a tu aplicación.
No tienes que hacer nada especial. Por defecto estos endpoints se comportan como cualquier otro: haces POST y recibes { "data": … } de vuelta. Las opciones siguientes son opt-in, para cuando prefieras no mantener una conexión abierta.

¿Qué endpoints son asíncronos?

Estas consultas se ejecutan como trabajos asíncronos: Todo lo demás (Rama Judicial, Registraduría, RUES, Procuraduría, Contraloría, SECOP y Web Search) responde de forma síncrona, sin ningún trabajo de por medio.

Las tres maneras de obtener un resultado

Las tres se apoyan en el mismo trabajo, así que elige según cada solicitud.

Modo 1: Esperar en línea (por defecto)

Simplemente llama al endpoint. La solicitud se mantiene abierta hasta que el trabajo termina (hasta 55 segundos) y devuelve el resultado en la forma habitual { data }, idéntica a un endpoint síncrono.
Controla cuánto esperar con el encabezado estándar Prefer: wait=N (segundos, limitado a 55):
  • 200: terminó. El cuerpo es { "data": … }, igual que la forma síncrona.
  • 202: no terminó dentro del tiempo de espera. El cuerpo es un sobre de trabajo; sigue su status_url para hacer polling. El encabezado X-Job-Id lleva el id del trabajo.
Maneja siempre tanto 200 como 202. Un 202 no es un error; solo significa “aún en proceso, vuelve por él”.

Modo 2: Polling

Envía Prefer: wait=0 para obtener un 202 de inmediato, luego haz GET al status_url del trabajo hasta que alcance un estado terminal.
GET /jobs/:id siempre devuelve 200 con el sobre. Mientras el trabajo sigue en ejecución incluye un encabezado Retry-After (segundos); úsalo para regular tu polling. Los trabajos tienen alcance de tu organización; un trabajo que pertenece a otra organización se lee como 404.

Modo 3: Callback (webhook)

Incluye un callback_url en el cuerpo de la solicitud. Obtienes un 202 de inmediato, y Croma hace POST con el resultado a tu URL una vez que el trabajo termina, sin necesidad de polling.
callback_url debe ser una URL HTTPS absoluta en un host público (localhost y los rangos privados son rechazados). Cuando el trabajo termina, Croma le envía un POST:
  • Cuerpo: el mismo sobre de trabajo que el endpoint de polling.
  • x-croma-job-id: el id del trabajo.
  • x-croma-signature: sha256=<hmac>, un HMAC-SHA256 del cuerpo crudo de la solicitud, para que puedas verificar la integridad de la carga útil.
La verificación de firma usa un secreto compartido emitido por Croma; contáctanos si quieres habilitarla para tus callbacks. Responde 2xx con rapidez; las respuestas distintas de 2xx se reintentan.

El sobre de trabajo

La respuesta 202, GET /jobs/:id y el cuerpo del callback comparten una misma forma:
  • data se completa solo cuando status es completed (y coincide con la carga útil data normal del endpoint). De lo contrario es null.
  • error se completa solo cuando el trabajo ha fallado (failed), como { "type", "code", "message" }.

Estados

Referencia de encabezados

Errores

Cómo funcionan las fallas y el objeto error.