API para desarrolladores de Wave
Crea un token con permisos limitados y lee o actualiza tus sesiones, transcripciones y tareas pendientes de Wave desde tu propio código, con búsqueda, exportación masiva y webhooks.
La API para desarrolladores de Wave es una API REST sobre tus propias grabaciones. Apunta tu código a https://api.wave.co/v1 con un token que crees en Wave, y podrás listar sesiones, leer resúmenes y transcripciones, buscar por significado, descargar audio, actualizar títulos y tareas pendientes, y recibir un webhook en el momento en que una grabación termine de procesarse.
Es gratis en todos los planes de Wave, y solo accede a tu propia cuenta.
Crear un token
En la app web de Wave en app.wave.co, abre tu perfil, elige la pestaña Integrations ("Integraciones") y abre Developer API ("API para desarrolladores") — o ve directamente a app.wave.co/settings/integrations/api.
En API Tokens, haz clic en Create Token ("Crear token").
Ponle un Token Name ("Nombre del token") que puedas reconocer después, marca los Permissions ("Permisos") que necesite, y haz clic en Create Token. Es mucho más fácil gestionar un token por integración que un token compartido.
Copia el token. Wave lo muestra una sola vez: Copy this token now. You will not be able to see it again. ("Copia este token ahora. No podrás volver a verlo").
Envíalo como bearer token en cada solicitud:
curl -H "Authorization: Bearer wave_api_xxx..." \
https://api.wave.co/v1/sessionsLa lista de tokens muestra el nombre de cada uno, su prefijo wave_api_, cuándo se creó y cuándo se usó por última vez. El ícono de papelera abre Revoke Token ("Revocar token") — la revocación se aplica de inmediato, y cualquier cosa que use ese token empieza a recibir un 401.
Los tokens de API caducan un año después de crearse, y la fecha de caducidad no aparece en la lista de tokens. Si una integración que funcionaba bien durante meses de repente devuelve 401 invalid_token, crea un token nuevo.
Permisos
Los permisos son por token. Otorga los mínimos necesarios para la tarea.
| Permiso | Qué permite |
|---|---|
| Read Sessions | Listar y abrir sesiones, estadísticas, carpetas, exportación masiva |
| Search Sessions | Búsqueda semántica en toda tu biblioteca |
| Read Transcripts | Transcripciones completas con segmentos por hablante |
| Access Media | URLs firmadas de descarga para audio y video |
| Write Sessions & Action Items | Actualizar título, notas, etiquetas, favoritos, tareas pendientes |
| Delete Sessions | Eliminar una sesión permanentemente |
| Manage Folders | Crear carpetas, añadir y quitar sesiones |
| Manage Webhooks | Registrar y gestionar endpoints de webhook |
| Read Event Feed | Consultar y confirmar el feed de eventos |
| Read Account | Información de la cuenta y estado de la suscripción |
Si llamas a un endpoint sin el permiso correspondiente, obtienes un 403 que indica qué falta.
Leer tus datos
GET /v1/sessions— de más reciente a más antigua, paginada por cursor, filtrable portype,since,folderytag. Solo se devuelven las sesiones que terminaron de procesarse.GET /v1/sessions/:id— título, duración, resumen en markdown, notas, etiquetas, favorito. Las llamadas telefónicas también incluyen dirección y números.GET /v1/sessions/:id/transcript— una cadena de transcripción plana, más segmentos con marca de tiempo y hablante identificado.GET /v1/sessions/:id/action-items— tareas pendientes estructuradas y un número de versión.GET /v1/sessions/:id/media— URLs firmadas de audio y video, válidas por una hora.POST /v1/sessions/search— búsqueda semántica, hasta 50 resultados, con filtros de etiqueta opcionales.POST /v1/sessions/bulk— hasta 50 sesiones en una sola llamada, con resúmenes y transcripciones. La forma rápida de importar el histórico.GET /v1/folders,GET /v1/sessions/stats— carpetas, y totales por tipo y plataforma.
Escribir datos
PATCH /v1/sessions/:id establece título, notas, etiquetas, favorito y tareas pendientes. Para las tareas pendientes, léelas primero y devuelve la versión que obtuviste — así una edición simultánea en la app de Wave se rechaza en lugar de sobrescribirse silenciosamente. POST /v1/folders y los endpoints de pertenencia a carpetas organizan las sesiones; las carpetas no son excluyentes, así que una sesión puede estar en varias.
DELETE /v1/sessions/:id es permanente y no es lo mismo que eliminar desde la app. Trátalo como algo irrecuperable.
Límites de uso
Cada token tiene un límite de 60 solicitudes por minuto y 10.000 solicitudes por día. Las respuestas incluyen X-RateLimit-Limit, X-RateLimit-Remaining y X-RateLimit-Reset, y un 429 incluye Retry-After — espera antes de reintentar en lugar de hacerlo de inmediato.
Repetir la misma búsqueda más de diez veces por hora también devuelve un 429. Las búsquedas idénticas devuelven resultados idénticos, así que usa webhooks o GET /v1/sessions?since= para encontrar lo nuevo.
Webhooks
En lugar de hacer polling, deja que Wave te envíe un POST. En la sección Webhooks, haz clic en Add Webhook ("Añadir webhook"), ingresa una Endpoint URL ("URL del endpoint"; solo HTTPS, y se rechazan las URLs que resuelven a direcciones privadas), elige tus eventos y haz clic en Create Webhook. El Signing Secret ("Secreto de firma") se muestra una sola vez — guárdalo entonces. Puedes tener hasta cinco webhooks.
Hoy se pueden registrar tres eventos: Session Completed ("Sesión completada", se dispara una vez, después de que termine el procesamiento y el resumen sea consultable — el que la mayoría de las integraciones quiere), Session Updated ("Sesión actualizada") y Session Deleted ("Sesión eliminada").
Cada envío se firma con tu secreto y llega con los encabezados X-Wave-Webhook-Id, X-Wave-Webhook-Timestamp y X-Wave-Webhook-Signature. Verifica la firma antes de confiar en un payload; la cadena exacta a firmar está en la referencia de la API.
Wave no garantiza una sola entrega por evento. Una entrega que se agota (10 segundos) o devuelve un código que no sea 2xx se reintenta hasta tres veces con un backoff corto — unos 10 segundos, luego un minuto, luego cinco minutos — y el mismo evento puede legítimamente llegar más de una vez. Haz que tu manejador sea idempotente: usa X-Wave-Webhook-Id como clave, ignora un id ya procesado, y devuelve un 2xx rápidamente. Un endpoint que esté caído más tiempo que esa ventana pierde los eventos que se perdió, así que usa el feed de eventos de abajo para ponerte al día.
Si un endpoint falla diez veces seguidas, Wave lo marca como Auto-disabled ("Desactivado automáticamente") y deja de enviarle datos. Arregla el endpoint y luego usa el botón de reactivar en la fila del webhook.
¿No tienes servidor? Usa el feed de eventos
Si no puedes alojar una URL pública, usa polling en su lugar. GET /v1/events devuelve los eventos posteriores a un cursor que Wave rastrea por token, y POST /v1/events/ack lo avanza una vez que los hayas procesado, así reiniciar un script no vuelve a reproducir todo. Las páginas son de 50 elementos por defecto, con un máximo de 200, y el feed también incluye cambios en las tareas pendientes que las suscripciones de webhook no cubren. Requiere el permiso Read Event Feed.
El Wave CLI envuelve esto en wave events tail si prefieres no escribir tú mismo el bucle de polling.
Preguntas frecuentes
api.wave.co/reference tiene todos los endpoints, parámetros y formatos de respuesta con ejemplos en vivo. api.wave.co/llms.txt es el mismo contenido en texto plano — pégalo en un asistente de IA y pídele que te escriba la integración.
Siempre en JSON, con un code y un message. Los más comunes: 401 invalid_token (caducado, revocado o mal escrito), 403 insufficient_scope (al token le falta un permiso), y 429 (límite de uso alcanzado).
No. Un token está vinculado a la cuenta que lo creó y solo devuelve las sesiones de esa cuenta.
¿Te resultó útil este artículo?
¿Necesitas más ayuda?
El Wave Agents Toolkit: conecta tus datos con cualquier otra herramienta
Tres formas de llevar tus grabaciones de Wave a otras herramientas: MCP para asistentes de IA, una REST API para tu propio código y una CLI para la terminal.
Wave CLI
Instala el comando wave, inicia sesión desde tu navegador, y lista, busca, exporta y organiza tus grabaciones desde la terminal.