Measure MapAPI

Errors

How a failed request answers, every error code, and what to do about each.

A successful request answers 200. A failed one answers with a 4xx or 5xx status and a JSON body:

JSON
{
  "errorCode": "insufficient_scope",
  "errorMessage": "This API key does not have the scope required for this endpoint"
}
  • errorCode is stable: branch on it.
  • errorMessage is a short explanation in English for people reading logs. It may change, and it is not sent with every code.

Handling errors#

StatusWhat to do
400Fix the request: a value is missing, has the wrong type, or is not accepted. Don't retry it as it is.
401The item is not yours, or the request came from a website the key does not allow.
402A payment is needed: the Open Guest budget is reached, or a seat could not be charged.
403The key, its access or the subscription stops this request. Check the code.
404The item does not exist, or is not on your account.
409The request conflicts with your account's state, such as every seat being taken.
429Slow down, then retry. See Rate limits.
500Retry once after a pause. If it keeps failing, contact support with the time and the endpoint.

Retry only what is safe to repeat: a GET always is; a POST that creates something may have done it before the error reached you, so check first.

Every code#

StatuserrorCodeWhat it means
400invalid_bodyA value in the request body is missing, has the wrong type, is too long or is not one of the accepted values.
400invalid_product_pricingA product's prices are not complete or not valid. Check the unit, the currency, the type and every tier.
400invalid_project_idThe project or folder ID in the path is missing or blank.
400invalid_uidThe person's ID in the path is missing or blank.
400pagination_invalid_page_limitThe limit query parameter is missing or not a number above 0.
400pagination_invalid_page_numberThe page query parameter is missing or not a number.
400request_body_emptyThe request needs a JSON body and none was sent.
401unauthorized_actionThe item is not on your account or your members', the request came from a web page on a website the key does not allow, or the action is not allowed for this person.
402budget_limit_reachedOpen Guest. Your budget limit for this billing period is reached, so no more guest projects are started until the next one or until you raise it.
402enterprise_seat_payment_failedEvery seat is taken, and the payment for the extra seat your automatic seats setting asked for did not go through.
403api_key_suspendedAPI access on your account has been suspended. Contact support.
403insufficient_scopeThe key does not have the access this endpoint needs. Create a key with that access.
403invalid_api_keyNo key was sent in the Authorization header, or the key is unknown, revoked, or past the time it kept working after being replaced.
403invalid_subscriptionYour plan has no API access. The API is part of the Enterprise and Open Guest plans.
403scope_not_in_planYour plan does not include this endpoint, for example members on Open Guest.
403subscription_expiredYour subscription is not active. Update your payment method in the app.
404not_foundThe folder or product does not exist, or is not in your catalogue.
404project_not_foundThe project does not exist.
404user_not_foundThe person does not exist or is not a member of your organisation.
409enterprise_add_users_limitEvery seat of your Enterprise subscription is taken. Add seats in the app, or turn on automatic seats.
409enterprise_transfer_requiredYour organisation requires a member's projects to be transferred before their account is deleted. Transfer them in the app first.
409user_email_already_existsAn account with this email address already exists.
429too_many_requestsYour account asked for more than 600 tokens in an hour. Wait a little and try again.
500server_errorThe request could not be completed. Check the IDs you sent and try again; contact support if it persists.

Each endpoint's page in the reference lists the codes it can answer with.