← volver

SABO · API y MCP

Pide tus resúmenes sin abrir el panel: desde Claude (MCP) o desde tu propio código. Beta: seis rutas, las mismas que usa el panel, con los mismos precios y topes.

1. Tu clave

En Tu cuenta, apartado // api: crea una clave. Hace falta tener el correo verificado. Se enseña entera una sola vez; guárdala. Máximo 3 vivas; puedes revocarlas cuando quieras. Una clave puede ver tus partidas, encolar resúmenes (gastan tu saldo igual que el panel), mirar la cola y descargar. No puede comprar, publicar en tus redes, cancelar ni borrar nada, ni crear o revocar otras claves: eso solo con tu sesión del navegador.

Ponle nombre y usa una clave por máquina. El alta la deja en texto plano dentro de la configuración de Claude Code, así que si pierdes el portátil o le pasas el proyecto a tu editor, revocas solo esa y las demás siguen vivas.

2. Con Claude (MCP)

Necesitas Node 18 o más nuevo y Claude Code. Descarga el paquete y añádelo:

mkdir sabo-mcp && cd sabo-mcp
curl -O https://app.sabo.gg/mcp/index.js -O https://app.sabo.gg/mcp/package.json
npm install
claude mcp add sabo --env SABO_API_KEY=sabo_TU_CLAVE -- node "$PWD/index.js"

Abre Claude y pídele: "lista mis partidas de anoche y encola el resumen de la que mejor nota tenga". Herramientas que aparecen: sabo_partidas, sabo_resumir, sabo_estado, sabo_videos, sabo_saldo.

3. Con tu código

Cabecera Authorization: Bearer sabo_TU_CLAVE. Base https://app.sabo.gg. Respuestas JSON.

RutaQué haceErrores propios
GET /api/v0/matches?count=15Partidas resumibles de todas tus cuentas Riot, con vod.onStream si el directo la cubre, durationSec y nota sabo. Si Riot frena o falla alguna cuenta, viene parcial: la lista está coja y ahí dentro pone qué falta. Pedir historial fresco va a 1 cada 30 s y 40 a la hora; pasado eso te devuelve el último guardado con cached: true.sin_riot_id, refresh_limitado, riot
POST /api/v0/summaries
{"matchId": "EUW1_…", "rehacer": false}
Encola el resumen. Cobra de tu saldo lo mismo que el panel por ese mismo trabajo, a la tarifa que publica /api/v0/balance: así tu código no lleva el precio escrito. Devuelve jobId y credits.sin_riot_id, email_no_verificado, discord_requerido, match_id_invalido, no_es_tu_partida, ya_procesada, ya_en_cola, sin_vod, twitch_no_responde, kick_sin_canal, kick_sin_grabaciones, kick_sin_vod, riot, nota_baja, sin_creditos, limite_semanal, tope_diario, tope_horario, descargas_pendientes, cola_llena, demasiados_intentos
GET /api/v0/jobs/:idUn trabajo: estado, progreso, y si está listo la URL de descarga, expira_at y el plazo en horasEntrega. Pedirlo cuando está listo cuenta como entrega: ahí empieza a correr el plazo.id_invalido, no_encontrado
GET /api/v0/videosTus últimos 50 trabajos con estado, enlace de descarga si está listo, expira_at de cada uno y horasEntrega. Pedir la lista cuenta como entrega de todos los que ya estén listos y les arranca el plazo, así que no la uses para vigilar la cola.
POST /api/v0/jobs/:id/descargadoDice que ya te has bajado ese vídeo. Libera su hueco del tope de vídeos listos sin recoger, igual que pulsar Descargar en el panel: sin esto, quien trabaja solo por API se queda bloqueado hasta que el vídeo caduca. No borra nada ni toca el fichero. Devuelve marcado: false si ese trabajo no es tuyo o no estaba entregado, y ahí no hay error, porque una descarga no puede fallar por avisarnos.id_invalido
GET /api/v0/balanceSaldo: credits (SB comprados) y sub (tu plan y lo que queda de la semana, que se repone los lunes). Trae también tarifa, lo que cuesta un resumen, para que tu código no lleve el precio escrito; si llega a null es que el servidor no la publica y entonces no te la inventes.

Genéricos: no_auth (sin clave o mal formada), key_invalida (revocada o inexistente), demasiados_intentos (tres topes distintos, aquí debajo). Los errores llegan como {"error": "codigo"}, a veces con un minutos de espera al lado. Los dos topes de clave añaden limite, con cuál de ellos ha saltado, y retry_s, con los segundos que faltan.

Los tres topes que devuelven demasiados_intentos, y no son el mismo:

descargas_pendientes engaña de nombre: no se quita descargando. Son vídeos entregados que siguen dentro de su plazo y ya no caben más; el hueco se libera cuando ese plazo vence. El plazo de cada uno viene en expira_at. Eso es así por la API: en el panel el hueco sí se suelta al pulsar Descargar, y desde una clave todavía no hay forma de avisar de la descarga.

4. Lo que no hay, a propósito

Publicar en tus redes, comprar, cancelar el plan, borrar vídeos o la cuenta, clips sueltos y Studio: todo eso se hace desde el panel, con tus ojos puestos. Fuera de las seis rutas de arriba no hay nada más al alcance de una clave, ni siquiera el resto del panel. Una clave robada no puede gastar tu tarjeta ni publicar en tu nombre.

Lo único que sí puede es encolar resúmenes, y eso gasta tu saldo de SB. Si ves trabajos que no has pedido, revoca la clave desde Tu cuenta y el corte es inmediato.

¿Dudas o quieres una ruta más? Discord de SABO.