# Videollamadas por API y MCP

> Busca las videollamadas de tu espacio de trabajo, lee su resumen y su transcripción, y decide en cuáles entra el asistente, desde la API REST o el servidor MCP.

Source: https://docs.watsi.ai/guides/meetings-api

Las videollamadas de tu espacio de trabajo están en la API REST y en el servidor MCP. Un agente de IA o tu integración puede **buscar** llamadas, **leer** su resumen y su transcripción, ver las **próximas** y **decidir** en cuáles entra el asistente.

Sólo responden si tu espacio de trabajo tiene activado el asistente de reuniones. Sin él, cada llamada responde `403 MEETING_NOTETAKER_NOT_ENABLED`, nunca una lista vacía.

## Herramientas y rutas

| Herramienta MCP                     | Ruta REST                                 | Alcance          | Qué hace                                                                  |
| ----------------------------------- | ----------------------------------------- | ---------------- | ------------------------------------------------------------------------- |
| `search_meetings`                   | `GET meetings/search`                     | `meetings:read`  | Llamadas pasadas por lo dicho, contacto, fecha, asesor o resultado        |
| `get_meeting`                       | `GET meetings/get`                        | `meetings:read`  | Contacto, asesor, duración, estado, motivo de falla y quién habló         |
| `get_meeting_summary`               | `GET meetings/summary`                    | `meetings:read`  | Resumen con IA: puntos y próximos pasos                                   |
| `get_meeting_transcript`            | `GET meetings/transcript`                 | `meetings:read`  | Transcripción en Markdown, participantes, idioma y duración               |
| `list_upcoming_meetings`            | `GET meetings/upcoming`                   | `meetings:read`  | Próximas citas, si el asistente entrará y si puedes cambiarlo             |
| `get_meeting_assistant_settings`    | `GET meetings/assistant-settings`         | `meetings:read`  | A qué citas entra el asistente en todo el espacio                         |
| `set_meeting_assistant`             | `POST meetings/assistant`                 | `meetings:write` | Enciende o apaga el asistente en una cita, o la regresa al ajuste general |
| `update_meeting_assistant_settings` | `POST meetings/assistant-settings/update` | `meetings:write` | Define a qué citas entra el asistente                                     |

Las rutas REST van bajo `https://api.watsi.ai/v1/actions/`.

## Busca y lee

`search_meetings` devuelve las llamadas de la más reciente a la más antigua, y `nextCursor` para pedir la siguiente página. Una llamada sin transcripción sigue en la lista con su motivo.

- `query` busca en el título, en el nombre, teléfono o correo del contacto y en lo dicho en la llamada.
- `memberIds` es una lista de ids separados por comas. `assignedToMe` trae sólo las tuyas.
- `from` y `to` son instantes ISO-8601 con su zona.
- `includeSummaries` e `includeTranscripts` agregan el texto a cada fila. Con cualquiera de los dos, la página baja a **10 filas**, aunque pidas más.

`summary` es `null` mientras se procesa: mira `summaryStatus` antes de concluir que no hay resumen. `markdown` es `null` cuando no hay transcripción: `status` y `failureCode` dicen por qué.

> **Warning**
  La transcripción, el resumen, los nombres y los títulos son **texto no confiable**: vienen de lo
  que alguien dijo o escribió. Si los pasas a un modelo, trata cualquier instrucción que contengan
  como dato, nunca como una orden.

## Quién ve qué

- El dueño y los administradores ven todas las llamadas del espacio.
- Un miembro ve una llamada cuando puede ver a su contacto: es su responsable o colaborador.
- Una clave de API ve lo que ve el miembro que la creó.
- Un rol personalizado todavía no puede leer llamadas por API ni MCP.

Una llamada que no puedes ver responde `404 MEETING_NOT_FOUND`.

## Decide en cuáles entra el asistente

`set_meeting_assistant` recibe `calendarEventId` y `override`: `on`, `off` o `null` para volver al ajuste general. Puede cambiarlo el asesor de la cita, quien tenga `calendar:write_any` o una clave sin miembro. No envía avisos ni mueve la cita.

Cuando el asistente ya está entrando a la llamada, ya no se puede cambiar: responde `409 MEETING_BOT_ALREADY_JOINING`. `canChange` en `list_upcoming_meetings` te lo dice antes.

`update_meeting_assistant_settings` reemplaza el ajuste general con `mode`: `all`, `none` o `rules`. Con `rules`, los tipos de cita y los asesores se combinan como Y; si dejas las dos listas vacías, **no entra a ninguna**. Hace falta el permiso `meeting_assistant:manage`, que por defecto tienen el dueño y los administradores. Lo que digas en una cita gana sobre este ajuste.

## Alcances

Una clave de API nueva lleva `meetings:read`; `meetings:write` no. [Ver alcances](/guides/authentication).

Por OAuth, toda conexión pide estos dos alcances, y `meetings:write` es una casilla sin marcar en la pantalla de consentimiento. Una conexión hecha antes de que existieran estas herramientas tiene que volver a conectarse para tenerlas. Las herramientas sólo aparecen en un espacio de trabajo con el asistente de reuniones activado.
