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

# Arquitectura

> Cómo está estructurada la plataforma Shimli y cómo se conectan sus componentes.

# Arquitectura de Shimli

Shimli es una plataforma cloud-native que se compone de varias capas. Esta página explica la arquitectura conceptual para que entiendas cómo encajan las piezas cuando integres la API.

## Visión general

```
┌──────────────────────────────────────────────────────────┐
│                    Capa de canales                        │
│  WhatsApp · Facebook Messenger · SMS · Correo · Web      │
└──────────┬───────────────────────────────┬───────────────┘
           │ inbound                       │ outbound
           ▼                               ▲
┌──────────────────────────────────────────────────────────┐
│                   Núcleo de Shimli                        │
│  Inbox unificado · Flujos · Plantillas · Agentes IA      │
│  CRM · Campañas · Shop · Researcher                      │
└──────────┬───────────────────────────────┬───────────────┘
           │                               │
           ▼                               ▼
┌────────────────────────┐   ┌─────────────────────────────┐
│   API REST (v1)        │   │   Dashboard / Plataforma     │
│   api.shimli.app/v1    │   │   Interfaz web de Shimli     │
│   30+ endpoints        │   │   Gestión visual de todo     │
└────────────────────────┘   └─────────────────────────────┘
```

## La API REST

La API de Shimli vive en `https://api.shimli.app/v1/`. Todos los endpoints comparten:

* **Autenticación por token** — se envía en el body JSON como `token` o como query param `api-token`.
* **Formato JSON** — tanto requests como responses son `application/json`.
* **Rate limiting** — aplica límites por plan para proteger el servicio.
* **CORS habilitado** — puedes llamar la API desde el navegador si es necesario.

<Callout type="info">
  La API no usa Bearer tokens en headers. El token va dentro del cuerpo del request como un campo `token`. Esto es intencional para simplificar la integración desde entornos sin control de headers.
</Callout>

## Instancias y canales

En Shimli, una **instancia** representa una conexión activa a un canal (un número de WhatsApp Business, una página de Facebook, etc.). Muchos endpoints requieren un `instance` para saber por qué canal operar.

* Un cliente puede tener **múltiples instancias** (ej. un número para ventas, otro para soporte).
* Cada instancia tiene su propio **ID de instancia** que usas en la API.
* Las instancias se gestionan desde la plataforma web de Shimli.

## Seguridad

* **TLS 1.2+** en todas las conexiones.
* **Tokens de API** únicos por cliente, rotables desde la plataforma.
* **No almacenamos datos sensibles** más allá de lo necesario para la operación del servicio.
