Ucotron Cortex
Guías por flujo

Errores y convenciones

RFC 7807, paginación por cursor e idempotencia — las tres reglas que valen para toda la API.

Errores: RFC 7807

Todo error es application/problem+json con un code estable. El code es lo que tu cliente mapea; el detail es para una persona y puede cambiar.

SituaciónStatuscode
Sin Authorization401missing_bearer_credential
Token que no verifica401invalid_bearer_credential
Falta el permiso403insufficient_permission
Recurso inexistente o de otra organización404not_found
Método no soportado en una ruta que existe405method_not_allowed
Sin Idempotency-Key en una escritura409missing_idempotency_key
Clave reusada con otro cuerpo409idempotency_conflict
Cuerpo que no cumple el contrato422invalid_request_body
Cursor o limit inválidos400invalid_cursor / invalid_limit
Rate limit de AI429rate_limited

404 y no 403 para otra organización es deliberado: un 403 confirmaría que el recurso existe en algún lado.

Paginación

json
{ "data": [  ], "page": { "nextCursor": "eyJvIjoyNX0", "previousCursor": null, "limit": 25, "hasMore": true } }

El cursor es opaco. Usá el nextCursor que te devolvimos; si lo construís a mano, tu cliente se rompe el día que la paginación pase a ser por keyset.

bash
curl -sS "$SBOX/v1/aois?limit=1" -H "authorization: Bearer $TOKEN"
curl -sS "$SBOX/v1/aois?limit=1&cursor=<nextCursor>" -H "authorization: Bearer $TOKEN"
curl -sS "$SBOX/v1/aois?cursor=no-soy-un-cursor" -H "authorization: Bearer $TOKEN"  # 400

Idempotencia

Toda escritura pide Idempotency-Key (16–128 caracteres).

Diagrama: Errores y convencionesFlujo de decisión ante un error de la API: qué mirar en el problem+json, qué reintentar y con qué backoff, y qué es un bug del cliente.

no

sí, mismo cuerpo

sí, otro cuerpo

POST con Idempotency-Key

¿Clave vista antes?

Se crea · 201

Se devuelve la respuesta anterior · 201

409 idempotency_conflict

Diagrama: Errores y convencionesFlujo de decisión ante un error de la API: qué mirar en el problem+json, qué reintentar y con qué backoff, y qué es un bug del cliente.

no

sí, mismo cuerpo

sí, otro cuerpo

POST con Idempotency-Key

¿Clave vista antes?

Se crea · 201

Se devuelve la respuesta anterior · 201

409 idempotency_conflict

Fuente del diagrama (mermaid)
flowchart TD
    A[POST con Idempotency-Key] --> B{¿Clave vista antes?}
    B -- no --> C[Se crea · 201]
    B -- sí, mismo cuerpo --> D[Se devuelve la respuesta anterior · 201]
    B -- sí, otro cuerpo --> E[409 idempotency_conflict]

Devolverte la respuesta anterior ante otro cuerpo sería contestarte una pregunta distinta de la que hiciste, así que es un 409 y no un reemplazo silencioso.

Modo

Cada respuesta trae x-ucotron-api-mode: sbox, x-ucotron-fixture-only: true y x-ucotron-no-external-provider-call: true. Si alguno falta, no estás hablando con el sandbox.

Endpoints de esta guía

Las convenciones de error aplican a toda la superficie: ver la referencia de API completa.

On this page