Skip to main content
OrigoID never returns opaque errors. Every error includes:
  • A stable type code that does not change between versions
  • A human message describing what happened
  • An actionable path to resolution

Common error types

typeHTTPWhat it meansWhat to do
INVALID_REQUEST200Your request body did not pass validationInspect errors[], fix the listed fields, retry
UNAUTHORIZED401Authentication failedVerify your API key. Check your IP allow-list. If you suspect a leak, rotate.
RATE_LIMIT_EXCEEDED429You exceeded your rate limitImplement exponential backoff. Consider upgrading your plan.
SERVICE_UNAVAILABLE200An upstream source is temporarily unavailableRetry with backoff. Check status.origoid.com
INTERNAL_ERROR200An unexpected error occurredSave the transactionId and email support@origoid.com

Endpoint-specific result codes

Each endpoint can return additional type codes that represent valid business results (not errors per se). For example:
  • CURP endpoints can return CURP_NOT_FOUND, CURP_APOCRYPHAL, CURP_DECEASED
  • SAT endpoints can return CFDI_CANCELED, TAX_PROFILE_NOT_FOUND
  • Voter ID endpoints can return INE_NOT_FOUND, INE_NOT_VALID
  • Biometric endpoints can return FACE_MISMATCH, MASK_ATTACK
The complete list of type codes for each endpoint is documented in that endpoint’s page in the API reference. Treat business results according to your domain logic.

Validation error codes

When type is INVALID_REQUEST, the errors[] array lists field-level failures (see ErrorDetail). Each entry has a code you can branch on. These codes are cross-cutting — they may appear on any endpoint when the corresponding validation fails:
codeWhen it appears
MALFORMED_JSONThe request body is not valid JSON. The field is body.
PAYLOAD_TOO_LARGEEither the whole request body exceeds 28 MB (field: "body"), or a base64 image/PDF field exceeds 12 MB (field: "<field name>").
MISSING_REQUIRED_FIELDA required field is absent.
MISSING_DEPENDENT_FIELDA field that depends on another required field is missing (e.g. cif provided without rfc).
INVALID_TYPEA field has the wrong primitive type (e.g. number where string is expected).
INVALID_FORMATA field does not match its required pattern or format (CURP, RFC, NSS, ISO dates, base64, etc.).
INVALID_ENUM_VALUEA field’s value is not in the allowed enum. See Catalogs.
INVALID_LENGTHA string is shorter or longer than allowed.
OUT_OF_RANGEA numeric value is outside its allowed range.
INVALID_ARRAYAn array has too few/many items, or duplicates that are not allowed.
UNKNOWN_FIELDThe body contains a field the endpoint does not recognize.
SCHEMA_MISMATCHThe body does not satisfy a oneOf / anyOf constraint — specifically, all alternatives were provided when only one was allowed. When some alternatives are missing, you receive MISSING_REQUIRED_FIELD per alternative instead.
INVALID_SCOPEThe requested OAuth scope is not granted to the API key. Returned by /auth/token when the caller asks for scopes outside its grant.
INVALID_VALUEA value is invalid for reasons not covered above (typical fallback).

Endpoint-specific codes

Some endpoints add extra codes that capture domain-specific validation. For example:
  • INVALID_RFC_FORMAT (/mex/fiscal/v1/rfc-validations, SAT 69 / 69-B searches)
  • NAME_TOO_SHORT, NAME_ONLY_STOPWORDS (SAT 69 / 69-B searches)
  • QR_NOT_FOUND (/mex/fiscal/v1/csf-extractions, /mex/fiscal/v1/cfdi-validations)
  • IMAGE_UNREADABLE (OCR endpoints)
See each operation’s page in the API reference for the full list.

How errors aggregate

Multiple field-level validation failures in the same request may come back together in errors[]. The array length depends on which kind of validation failed:
  • Failures detected by request-shape validation (missing required fields, wrong types, bad patterns, enum / length / range mismatches) are aggregated — all violations of this kind come back in one response.
  • Failures detected by domain-specific checks (e.g. INVALID_RFC_FORMAT, NAME_TOO_SHORT, QR_NOT_FOUND) may return only the first error encountered, even if other fields would also have failed.
Always iterate errors[] rather than assuming a single entry. If your code receives one error, fixes it, and resubmits, the next response may surface additional errors that were latent.

Reporting an issue

If you hit an unexpected error, email support@origoid.com with:
  • The transactionId from the response
  • A brief description of what you were trying to do
  • The endpoint you called
We do not log request or response bodies, so we cannot retrieve your call automatically. When reporting, please include the transactionId and the path you called, and we will work with you on next steps.