# Errors

BeMap reports an error with an HTTP status and, for a request it could not serve, a JSON body:

```json
{
  "code": "INVALID_ARGUMENT",
  "message": "A readable description of what went wrong"
}
```

`code` is a short identifier you can branch on, `message` is meant for a person. Some services add the `coordinate` the error is about.

## Statuses

| Status | Meaning |
|---|---|
| `200` | The request was served. The body is the answer. |
| `302` | No credentials were sent. The redirect points to a login page: do not follow it. See [Authentication](https://benomad.com/dev/doc/bemap-api/getting-started/authentication.md). |
| `401` | The account or the API key is wrong. |
| `400` | The request could not be served. Read `code` and `message`: the request is invalid, a value is out of range, or, when the message is `Access Denied`, the account lacks the option the service belongs to. |
| `405` | The operation does not accept this HTTP method. Each operation page shows the method it takes. |
| `5xx` | A server-side failure. Retry later; if it persists, contact BeNomad support with the time of the call. |

A key locked to a web site answers `403` with the message "Wrong site" to a call that does not come from that site. See [Authentication](https://benomad.com/dev/doc/bemap-api/getting-started/authentication.md).

## The mistake that does not produce an error

**A misspelt field name answers `200`.** BeMap ignores a field it does not know, so the request succeeds without the setting you meant to send: it is the one mistake to test for. Every field name in the [API reference](https://benomad.com/dev/doc/bemap-api/api.md) comes from BeMap's own specification; copy them from there. BeMap's guides can carry a name the specification does not declare: check it in the reference before you rely on it.

## When you contact support

Write to BeNomad support, [bgis-support@benomad.com](mailto:bgis-support@benomad.com), with the operation, the time of the call, the environment, the status and the body you received. Never include your API key.
