| missing_header | 401 | No se envió la cabecera Authorization. |
| malformed_header | 401 | La cabecera Authorization no es Bearer + cot_live_<32 hex>. |
| unknown_token | 401 | El token no coincide con ninguna fila activa. Puede haber sido revocado o nunca generado. |
| revoked | 403 | El token existe pero fue revocado (suscripción cancelada, revocación manual). |
| account_suspended | 403 | La cuenta a la que pertenece este token está suspendida o cerrada. Sus tokens vuelven a funcionar cuando se levanta la suspensión; los de una cuenta cerrada se revocan junto con su suscripción y no vuelven si la cuenta se restaura. |
| rate_limited | 429 | Límite por minuto o por día excedido. La cabecera Retry-After indica los segundos de espera. |
| invalid_code | 400 | cftc_code en el path no pasó la validación alfanumérica. |
| invalid_family | 400 | Parámetro family no en legacy, disagg, tff, supp. |
| invalid_from | 400 | Parámetro from no es una fecha YYYY-MM-DD válida. |
| invalid_to | 400 | Parámetro to no es una fecha YYYY-MM-DD válida. |
| invalid_variant | 400 | El parámetro variant no es futonly ni combined. |
| variant_not_published | 400 | La CFTC no publica esa variante del informe (supp: solo Futures & Options Combined). |
| variant_unavailable | 404 | Esa variante del informe aún no está disponible. |
| no_data | 404 | No existe historial para el mercado solicitado en la familia solicitada. |
| db_error | 500 | Error interno de base de datos. Reintenta una vez; si persiste, contacta soporte. |
| internal | 500 | Error de servidor inesperado. Reintenta una vez; si persiste, contacta soporte. |
| demo_rate_limited | 429 | /api/v1/demo/ límite por hash de IP (10/día) alcanzado. |