Skip to main content

Error Codes

Quick Reference​

HTTP StatusError CodeWhen It Occurs
400MISSING_PARAMETERA required query parameter is not provided
400INVALID_PARAMETERA parameter value is out of range or the wrong type
401INVALID_API_KEYThe API key is missing, invalid, or revoked
403PLAN_UPGRADE_REQUIREDThe feature is not included in your plan (never consumes credits)
404NOT_FOUNDThe resource does not exist or does not belong to your account
409JOB_NOT_READYA batch job's results were requested before completion
429RATE_LIMIT_EXCEEDEDToo many requests per second for your plan tier
429QUOTA_EXCEEDEDCredit quota exhausted for the current window (daily on Free, monthly on paid plans)
500INTERNAL_ERRORUnexpected server-side failure (credits automatically refunded)
502INTERNAL_ERRORAn upstream engine (geocoding/routing) failed
503SERVICE_UNAVAILABLEThe feature is not provisioned on this deployment yet (retryable)

Error Format​

All errors follow a consistent JSON structure:

{
"error": {
"code": "ERROR_CODE",
"message": "Human-readable description of the error",
"field": "parameter_name",
"retry_after": 1,
"quota_reset": 1753056000,
"upgrade_url": "https://geocodeme.net/dashboard/billing"
}
}
FieldTypePresentDescription
codestringAlwaysMachine-readable error code
messagestringAlwaysHuman-readable error description
fieldstringMISSING_PARAMETER, INVALID_PARAMETER onlyThe parameter that caused the error
retry_afterintegerRATE_LIMIT_EXCEEDED onlySeconds to wait before retrying
quota_resetintegerQUOTA_EXCEEDED onlyUnix timestamp when the quota window resets
upgrade_urlstringPLAN_UPGRADE_REQUIRED, QUOTA_EXCEEDEDWhere to upgrade the plan

Error Details​

MISSING_PARAMETER​

HTTP Status: 400

Returned when a required query parameter is not provided in the request.

Fix: Add the missing parameter to your request. Check the endpoint documentation for required parameters.

{
"error": {
"code": "MISSING_PARAMETER",
"message": "Required parameter 'q' is missing",
"field": "q"
}
}

INVALID_PARAMETER​

HTTP Status: 400

Returned when a parameter value is out of the allowed range or has an incorrect type.

Fix: Check the parameter constraints in the endpoint documentation and correct the value.

{
"error": {
"code": "INVALID_PARAMETER",
"message": "Parameter 'lat' must be between -90 and 90",
"field": "lat"
}
}

INVALID_API_KEY​

HTTP Status: 401

Returned when the X-Api-Key header or api_key query parameter is missing, malformed, or refers to a revoked key.

Fix: Verify your API key in the Dashboard. Regenerate the key if it has been revoked.

{
"error": {
"code": "INVALID_API_KEY",
"message": "API key missing or invalid"
}
}

PLAN_UPGRADE_REQUIRED​

HTTP Status: 403

Returned when your plan does not include the requested feature: a vehicle profile (bike/foot need Startup+, truck/moto need Growth+), an isochrone/matrix size beyond your plan's cap, elevation, vector tiles, or batch geocoding. A 403 never consumes credits.

Fix: Upgrade via the upgrade_url, or adjust the request to your plan's capabilities (see Credits & quotas).

{
"error": {
"code": "PLAN_UPGRADE_REQUIRED",
"message": "Profile 'truck' requires the growth plan or higher",
"upgrade_url": "https://geocodeme.net/dashboard/billing"
}
}

RATE_LIMIT_EXCEEDED​

HTTP Status: 429

Returned when you exceed the per-second rate limit for your plan tier. The retry_after field indicates how many seconds to wait.

Fix: Implement exponential backoff. See Rate Limiting for a code example.

{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. Try again in 1 second",
"retry_after": 1
}
}

QUOTA_EXCEEDED​

HTTP Status: 429

Returned when your credit quota is exhausted for the current window: the day (midnight UTC reset) on Free, the calendar month on paid plans. The quota_reset field is the Unix timestamp when the window resets.

Fix: Upgrade your plan for a bigger envelope, or wait for the reset.

{
"error": {
"code": "QUOTA_EXCEEDED",
"message": "Quota exceeded. Upgrade your plan to continue.",
"quota_reset": 1753056000,
"upgrade_url": "https://geocodeme.net/dashboard/billing"
}
}

INTERNAL_ERROR​

HTTP Status: 500

Returned when an unexpected error occurs on the server side.

Fix: Retry the request once after a short delay. If the error persists, contact support. Any credits debited for a request that ends in a 5xx are automatically refunded.

{
"error": {
"code": "INTERNAL_ERROR",
"message": "An unexpected error occurred. Please try again later"
}
}

JOB_NOT_READY​

HTTP Status: 409

Returned by GET /v1/batch/{job_id}/result while the job is still queued or running (or after it failed).

Fix: Poll GET /v1/batch/{job_id} until status is completed, then download the results.

{
"error": {
"code": "JOB_NOT_READY",
"message": "Job is 'running': results are only available once completed"
}
}

SERVICE_UNAVAILABLE​

HTTP Status: 503

Returned when a feature exists but is not provisioned on this deployment yet (e.g. autocomplete while its instances are being rolled out).

Fix: Retry later; this is a temporary, deployment-side condition.

{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Autocomplete is not provisioned on this deployment yet"
}
}