# Requisições

Envie JSON no corpo. A API aceita até 1 MB.

```
Content-Type: application/json
```

## Listas

A maioria das listas usa `limit` e `page`.

- `limit` vale 50 por padrão e não pode passar de 100.
- `page` começa em 0. A página 1 pula os primeiros `limit` registros.
- `GET /videos` usa `skip` em vez de `page`.
- `GET /search/leads` vale 25 por padrão e não pode passar de 50.

A resposta é um array. Um resultado vazio é `[]`. As rotas de busca também devolvem um array quando você passa um id exato.

## Erros

Os erros usam um código estável em `error` e um `message`.

| Status | Código | Significado |
| --- | --- | --- |
| 400 | `invalid_request` | Falta um campo ou um valor é inválido |
| 401 | `missing_token` | Nenhum token Bearer foi enviado |
| 401 | `invalid_token` | A chave é desconhecida, expirou ou foi revogada |
| 403 | `insufficient_scope` | A chave não inclui o escopo |
| 403 | `ip_not_allowed` | O IP está fora da lista da chave |
| 404 | `not_found`, `page_not_found`, `project_not_found` | O registro não existe ou é de outra conta |
| 409 | `project_in_use` | O projeto ainda tem páginas, produtos, sites ou funis |
| 429 | `rate_limited` | A chave enviou mais de 5.000 solicitações em 10 minutos |

```json
{
  "error": "invalid_request",
  "message": "name is required."
}
```

## Limites

| Janela | Limite | Vale para |
| --- | --- | --- |
| 10 minutos | 5.000 solicitações | Cada chave |
| 15 minutos | 60.000 solicitações | Cada IP, no host inteiro |

Se atingir um limite, espere a janela acabar e tente de novo. A resposta inclui os cabeçalhos padrão de limite.

## O que não está nesta API

A criação de chaves, a revogação e o registro de atividade usam o app da Atomicat com a sessão iniciada. Não estão disponíveis para uma chave de API. As rotas internas dos serviços da Atomicat também ficam de fora.
