---
title: "Errors and rate limits"
canonical: "http://docs.symios.ai/integration/errors"
lang: "en"
---

# Errors and rate limits

Successful responses return the JSON payload directly. Failures return `error_code` and `error_message` (HTTP 500).

## Common errors

| Code | Meaning |
| --- | --- |
| `-4` | Not authorized (missing/invalid key or secret, disabled credential, inactive company) |
| `-3` | Bad request |
| `-132` | Query set not found (or outside company scope) |
| `-145` | Rate limited |

## Rate limits

Integration requests are limited to **120 requests per API key per 60 seconds**. When exceeded, the API returns error code `-145`.

## Error responses

### Not authorized

**Endpoint**

```
GET /brands/list
```

**Return**

```json
{
    "error_code": -4,
    "error_message": "Not authorized"
}
```

**Example (cURL)**

```bash
curl -sS "https://api.symios.ai/v2/integration/brands/list" \
  -H "X-Api-Key: sk_live_YOUR_KEY" \
  -H "X-Api-Secret: YOUR_SECRET"
```

### Query set not found

**Endpoint**

```
GET /sets/{querySetId}/details
```

**Return**

```json
{
    "error_code": -132,
    "error_message": "Query set not found"
}
```

**Example (cURL)**

```bash
curl -sS "https://api.symios.ai/v2/integration/sets/42/details" \
  -H "X-Api-Key: sk_live_YOUR_KEY" \
  -H "X-Api-Secret: YOUR_SECRET"
```

### Rate limited

**Endpoint**

```
GET /presence/sets/{querySetId}/gross
```

**Return**

```json
{
    "error_code": -145,
    "error_message": "Rate limit exceeded"
}
```

**Example (cURL)**

```bash
curl -sS "https://api.symios.ai/v2/integration/presence/sets/42/gross" \
  -H "X-Api-Key: sk_live_YOUR_KEY" \
  -H "X-Api-Secret: YOUR_SECRET"
```
