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

# API del CRM de ventas

> API del CRM de ventas — Visito M2M API

Las rutas son relativas a `/m2m/v1`. Envía `Authorization: Bearer <clave>`. La clave determina el tenant.

La API usa `crm_sales_opportunities` (tarjetas), `crm_sales_pipelines` (configuración publicada) y `crm_sales_audit` (actividad). Los contactos siguen en `leads` y los seguimientos en `follow_ups`.

Con `crm:sales:read` puedes consultar:

* `GET /crm/sales/configuration`: configuración publicada, versión y estado; no incluye borradores.
* `GET /crm/sales/opportunities`: tarjetas paginadas.
* `GET /crm/sales/opportunities/{opportunityId}`: detalle y últimas 50 actividades.
* `GET /crm/sales/opportunities/{opportunityId}/contact`: contacto vinculado por leadId.
* `GET /crm/sales/opportunities/{opportunityId}/follow-ups`: seguimientos de esa oportunidad; limit y cursor.

El tenant debe tener el CRM habilitado y una configuración publicada; de lo contrario devuelve 403. Las tarjetas admiten `limit` (hasta 100), `cursor`, `stageId`, `status`, `group=closed` e `includeTotal`. No combines el grupo cerrado con stageId/status. Si cambia la versión publicada, un cursor puede devolver 409: recarga y reinicia la paginación.

`PATCH /crm/sales/opportunities/{opportunityId}` requiere `crm:sales:write`:

```json theme={null}
{"revision":3,"fieldId":"budget","value":1500}
```

```json theme={null}
{"revision":4,"stageId":"qualified"}
```

Cada edición requiere la revisión actual. Ante 409, recarga y concilia antes de reintentar. Las ediciones manuales bloquean cambios de IA, incluso al limpiar con null. Usa `restoreAi:true` con fieldId para liberar un campo, o sin fieldId para liberar la etapa. Una etapa terminal cierra la tarjeta; las tarjetas cerradas no se reabren. Se conserva la invalidación de seguimientos del CRM.

No se crean tarjetas, publican pipelines ni envían seguimientos. Los eventos `crm.opportunity.created` y `crm.opportunity.updated` notifican IDs y cambios de revisión/etapa/estado; no incluyen valores capturados.
