Formato de error

Todos los errores siguen el mismo formato: ``json { "error": { "code": "ERROR_CODE", "message": "Descripción legible del error" } } `

Códigos HTTP

StatusSignificado
200OK — Request exitoso
400Bad Request — Parámetros inválidos
401Unauthorized — API key inválida o ausente
403Forbidden — Sin permisos (scope insuficiente o IP bloqueada)
404Not Found — Recurso no encontrado
409Conflict — Conflicto (ej: factura ya anulada)
429Too Many Requests — Rate limit excedido
500Server Error — Error interno

Códigos de error comunes

CódigoHTTPDescripción
UNAUTHORIZED401API key no proporcionada o inválida
KEY_EXPIRED401La API key ha expirado
INSUFFICIENT_SCOPE403La key no tiene el scope necesario
IP_NOT_ALLOWED403Request desde IP no autorizada
RATE_LIMIT_EXCEEDED429Excediste el límite de requests
INVALID_PARAMS400Parámetros del request inválidos
RESOURCE_NOT_FOUND404El recurso solicitado no existe
INVOICE_ALREADY_VOIDED409La factura ya fue anulada
VOID_NOT_SAME_DAY400Solo se pueden anular facturas del mismo día

Manejo recomendado

`javascript try { const response = await fetch('https://vertex.app/api/v1/invoices', { headers: { 'Authorization': 'Bearer vtx_tu_key' } }) if (!response.ok) { const { error } = await response.json() console.error(Error ${response.status}: ${error.code} - ${error.message}) if (response.status === 429) { const retryAfter = response.headers.get('Retry-After') // Esperar y reintentar } } } catch (err) { // Error de red } ``