> ## Documentation Index
> Fetch the complete documentation index at: https://developers.flowestate.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Verificación de conexión

> Verifica que el API responde y que un bearer es válido. GET /health es anónimo; GET /me además te dice quién eres.

Dos endpoints complementarios viven fuera de la superficie autenticada, scopeada y con rate limit del API. Usa el que más te convenga:

* **`GET /health`** — sin auth, sin rate limit. Lo usan los uptime monitors y load balancers para verificar que el API está vivo **y que la base de datos responde**.
* **`GET /me`** — requiere bearer (cualquier scope, incluso vacío). Lo usan los conectores de Make / Zapier como paso de "Probar conexión" para mostrarle al usuario el nombre de su organización y los permisos del bearer.

***

## `GET /health`

Sonda pública de liveness + readiness. **No necesita header `Authorization`**, sin scope, sin rate limit. Verifica que el proceso de Next.js está vivo y que el pool de la BD puede ejecutar un `SELECT 1`.

Diseñado para [Uptime Kuma](https://github.com/louislam/uptime-kuma), Pingdom, Better Stack, target groups de AWS ELB, y monitoreo externo similar. Intencionalmente minimal: sin info de versión, sin leak de entorno, nada que un atacante pueda usar para fingerprinting.

### Request

```bash theme={null}
curl https://panel.flowestate.app/api/v1/health
```

### Response 200

```json theme={null}
{
  "ok": true,
  "ts": "2026-04-29T18:04:15.000Z"
}
```

### Response 503

Devuelto cuando la base de datos no es alcanzable desde el tier del API.

```json theme={null}
{ "ok": false }
```

### Tips para monitorear

* **Usa keyword check** sobre `"ok":true` en lugar de solo status `200`. Así, si un edge cache mal configurado sirve un `{"ok":false}` viejo, no aparece accidentalmente como healthy.
* **No le pegues más rápido que cada 60 segundos.** Es un ping a la BD; no lo conviertas en una prueba de carga.
* **No está autenticado.** No incluyas headers sensibles cuando lo pruebes.

***

## `GET /me`

Confirma que un bearer es válido y devuelve la organización a la que está atado. **No requiere scope** — útil como paso de "Probar conexión" en conectores de Make / Zapier.

### Request

```bash theme={null}
curl https://panel.flowestate.app/api/v1/me \
  -H "Authorization: Bearer fe_k_tu_key_aqui"
```

### Response 200

```json theme={null}
{
  "organization": {
    "id": "org_...",
    "name": "Acme Realty",
    "slug": "acme-realty"
  },
  "auth": {
    "type": "api_key",
    "scopes": ["leads:read", "leads:write"],
    "clientId": null,
    "userId": null
  }
}
```

### Campos

| Campo               | Descripción                                                           |
| ------------------- | --------------------------------------------------------------------- |
| `organization.id`   | Identificador interno de la organización.                             |
| `organization.name` | Nombre de display.                                                    |
| `organization.slug` | Slug seguro para URLs (puede ser `null` para orgs viejas).            |
| `auth.type`         | `api_key` o `oauth`.                                                  |
| `auth.scopes`       | Array de scopes asociados a este bearer.                              |
| `auth.clientId`     | OAuth client ID. Solo presente para `auth.type: "oauth"`.             |
| `auth.userId`       | El usuario que se autentica. Solo presente para `auth.type: "oauth"`. |

### Errores

Aplican los errores estándar de auth (`401`, `403`). Ver [Autenticación](/es/authentication#errores-de-autenticacion).
