## Errors

Error codes represent the error code returned by the API. Then general structure of an error is as follows:

Important warning
More error codes will be added over time, initial error codes are based on generic HTTP status codes.

### Error Codes

Below is a non exhaustive list of error codes that you may encounter from Quiqup APIs

| HTTP Status | Error Code | Type |
|  --- | --- | --- |
| 400 | invalid_argument | input |
| 400 | failed_precondition | internal |
| 401 | unauthenticated | unauthorized |
| 403 | permission_denied | forbidden |
| 404 | not_found | not_found |
| 409 | already_exists | internal |
| 429 | resource_exhausted | internal |
| 499 | canceled | internal |
| 500 | internal | internal |
| 500 | internal | integration |
| 500 | data_loss | internal |
| 500 | unknown | internal |
| 503 | unavailable | internal |
| 504 | deadline_exceeded | internal |


### Field Errors

When there are problems with specific fields, the error will contain field errors. For example if we have a payload like this:

```json
{
  "name": "string",
  "email": "email",
  "address": {
    "street": "string"
  }
}
```

Then we could expect errors like this, telling you which fields are invalid and the reason why:

```json
{
  "status": "invalid_argument",
  "code": "invalid_argument",
  "message": "Invalid Input",
  "details": {
    "type": "input",
    "fields": [
      {
        "field": "name",
        "message": "required"
      },
      {
        "field": "email",
        "message": "email"
      },
      {
        "field": "address.street",
        "message": "required"
      }
    ]
  }
}
```