JDay

Error Catalog

All error codes returned by the JDay API, with their HTTP status codes and meanings.

All JDay error responses use a consistent envelope:

{
  "error": {
    "code": "invalid_country",
    "message": "Country code must be one of the supported ISO 3166-1 alpha-2 values."
  },
  "request_id": "018f7d1a-3a51-7f4b-9c78-830f8b6ce220"
}

Error Codes

HTTPCodeMeaning
400missing_parameterRequired query parameter missing.
400invalid_dateProvided date is malformed or not YYYY-MM-DD.
400invalid_yearProvided year is malformed or not in 2025–2027.
400invalid_daysProvided days is malformed, non-integer, or outside signed 32-bit range.
400invalid_countryUnsupported country code.
400invalid_regionRegion malformed, unsupported for country, or invalid code.
400date_out_of_rangeInput or computed result falls outside 2025-01-01 to 2027-12-31.
401unauthorizedMissing, malformed, unknown, revoked, or invalid credentials.
403plan_upgrade_requiredValid request requires a higher plan.
405method_not_allowedUnsupported HTTP method for endpoint.
429rate_limitedPer-key rate limit exceeded.
429monthly_limit_reachedAccount monthly quota exhausted.
500internal_errorInternal platform failure.

Missing vs Invalid Parameters

These rules are applied consistently across all endpoints:

  • missing_parameter — a required query parameter was not provided at all.
  • invalid_date — a date-like parameter was provided but is malformed or not YYYY-MM-DD.
  • invalid_yearyear was provided but is malformed or outside 2025..2027.
  • invalid_daysdays was provided but is malformed, has decimals, uses scientific notation, or exceeds signed 32-bit range.

Per-Endpoint Error Mapping

EndpointMissing params useInvalid params use
is-business-daymissing_parameter (date, country)invalid_date
add-business-daysmissing_parameter (date, country, days)invalid_date, invalid_days
count-business-daysmissing_parameter (start, end, country)invalid_date
holidaysmissing_parameter (country, year)invalid_year

Validation Order

The full validation order for authenticated endpoints:

  1. Auth — verify API key → 401 unauthorized
  2. Required params — check all present → 400 missing_parameter
  3. Date/param parsing — validate format → 400 invalid_date, invalid_year, invalid_days
  4. Date range — check supported range → 400 date_out_of_range
  5. Country — validate country code → 400 invalid_country
  6. Region — validate region support and code → 400 invalid_region
  7. Entitlement — check plan allows request → 403 plan_upgrade_required
  8. Quota — check monthly limit → 429 monthly_limit_reached

Special Response Headers

ErrorRequired Header
401 unauthorizedWWW-Authenticate: Bearer realm="JDay"
405 method_not_allowedAllow: GET
429 monthly_limit_reachedRetry-After (delta-seconds until billing period ends)

On this page