# Consultar status do servidor

GET /status

Saúde do servidor: a versão em execução e quantas inboxes há em cada estado. **Sem token.**

Responde `200` mesmo com o banco fora do ar: nesse caso vem `status.database_status`, e as contagens são as da última leitura boa. As contagens são atualizadas a cada, no máximo, 60 segundos. Não tem resposta de erro: com problema, o `200` traz o estado em `status`.

## Autenticação

```json
[]
```

```json
{}
```

## Respostas

```json
{
  "200": {
    "description": "Status atual do servidor",
    "content": {
      "application/json": {
        "schema": {
          "type": "object",
          "required": [
            "info",
            "build",
            "instance_counts",
            "status"
          ],
          "properties": {
            "info": {
              "type": "string",
              "example": "Server health check completed",
              "description": "Resumo em texto (em inglês): `Server health check completed`, `Server is up but no instances connected` ou, com o banco degradado, `Server is accepting HTTP requests; database health check degraded`."
            },
            "build": {
              "type": "object",
              "required": [
                "version",
                "revision",
                "date"
              ],
              "properties": {
                "version": {
                  "type": "string",
                  "example": "2.2.2",
                  "description": "Versão (ex.: `2.6.8`)."
                },
                "revision": {
                  "type": "string",
                  "example": "a1b2c3d4e",
                  "description": "Commit do build."
                },
                "date": {
                  "type": "string",
                  "example": "2026-08-31",
                  "description": "Data do build."
                }
              },
              "description": "A versão da api em execução."
            },
            "instance_counts": {
              "type": "object",
              "required": [
                "total",
                "connected",
                "reconnecting",
                "connecting",
                "queued_reconnect",
                "disconnected",
                "hibernated",
                "other",
                "observed_at"
              ],
              "properties": {
                "total": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Todas as inboxes do servidor."
                },
                "connected": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Conectadas ao WhatsApp."
                },
                "reconnecting": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Caíram e estão reconectando sozinhas. Já saem da contagem dos outros estados."
                },
                "connecting": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Conectando ou esperando a leitura do QR code ou do código de pareamento."
                },
                "queued_reconnect": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Na fila para reconectar (por exemplo, logo depois de um reinício)."
                },
                "disconnected": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Desconectadas."
                },
                "hibernated": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Pausadas pelo servidor."
                },
                "other": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Em qualquer outro estado."
                },
                "observed_at": {
                  "type": "string",
                  "format": "date-time",
                  "description": "Quando as contagens foram lidas. ISO 8601 em UTC, sem milissegundos."
                }
              },
              "description": "Quantas inboxes há em cada estado."
            },
            "status": {
              "type": "object",
              "required": [
                "server_status",
                "total_instances",
                "last_check",
                "dc",
                "node"
              ],
              "properties": {
                "server_status": {
                  "type": "string",
                  "example": "running",
                  "description": "Sempre `running` quando o servidor responde."
                },
                "total_instances": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Inboxes **conectadas** (o mesmo que `instance_counts.connected`), não o total. O total está em `instance_counts.total`."
                },
                "last_check": {
                  "type": "string",
                  "format": "date-time",
                  "description": "Quando as contagens foram atualizadas. ISO 8601, sem milissegundos."
                },
                "dc": {
                  "type": "string",
                  "description": "Datacenter onde o servidor roda."
                },
                "node": {
                  "type": "string",
                  "description": "Máquina (nó) onde o servidor roda."
                },
                "database_status": {
                  "type": "string",
                  "description": "Só quando a leitura do banco falhou: `timeout`, `database_error` ou `database_unavailable`."
                },
                "database_error": {
                  "type": "string",
                  "description": "Detalhe do erro do banco, quando há."
                },
                "checked_instance": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Id da inbox verificada."
                    },
                    "is_healthy": {
                      "type": "boolean",
                      "description": "`true` se a sessão dela está pronta."
                    },
                    "connection_status": {
                      "type": "string",
                      "description": "O estado dela agora (`connected`, `disconnected`...)."
                    },
                    "message": {
                      "type": "string",
                      "description": "`Instance is healthy` ou `Instance health check failed`."
                    }
                  },
                  "description": "Uma inbox conectada, escolhida em rodízio, para conferir se as conexões respondem. Ausente quando não há inbox conectada ou o banco falhou."
                },
                "reconnecting_instances": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Inboxes que caíram e estão reconectando sozinhas. Ausente com o banco degradado."
                },
                "reconnecting_instances_oldest": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time",
                  "description": "Quando começou a reconexão mais antiga em andamento (ISO 8601 em UTC), ou `null` se nenhuma. Ausente com o banco degradado."
                }
              },
              "description": "O servidor e a última verificação."
            }
          }
        }
      }
    }
  }
}
```

**Estado:** Disponível

**Formato:** o mesmo da API v1 (caminho, campos e erros no padrão antigo).

## Compatibilidade de canais

| Canal | Compatível | Observação |
|---|---|---|
| WhatsApp (Web) | Sim |  |
| WhatsApp (API oficial) | Sim |  |
| Instagram | Sim |  |
| Messenger | Sim |  |
| Telegram | Sim |  |

## Eventos que esta rota gera

Nenhum. Esta rota não gera evento no webhook (nem em `GET /events`): o resultado vem só na resposta.

## Antes e depois (uazapi → Orkesio)

Na uazapi: `GET /status`.

- Sem mudança: a mesma rota e o mesmo formato da uazapi (é a mesma rota nas duas).

## Guias relacionados

[Visão geral](/docs/overview) · [O que funciona em cada canal](/docs/canais) · [O que muda da uazapi](/docs/o-que-muda)
