MasterOSDocumentación
Documentación

Referencia de la API

Endpoints REST reales expuestos por la API de MasterOS, organizados por recurso, bajo el prefijo /v1.

Estos son los endpoints reales, hoy

Esta referencia documenta la API exactamente como está implementada ahora mismo. Está escrita a mano, no generada a partir de la especificación OpenAPI real de la API (vea Versioning para saber dónde vive esa especificación) — esté atento a Changelog para detectar desviaciones entre ambas.

Todos los endpoints son relativos a la URL base de la API, bajo un prefijo /v1 (vea Versioning). Todos los endpoints autenticados usan una cookie de sesión httpOnly establecida por POST /v1/auth/verify-login-code — hoy no existe una autenticación por clave de API separada (vea Authentication).

auth

MethodPathAuthNotas
POST/v1/auth/request-login-code—{ email }. Envía por email un código de 6 dígitos y crea la cuenta en el primer uso; siempre devuelve el mismo mensaje. Limitado por tasa según IP y según email, de forma independiente.
POST/v1/auth/verify-login-code—{ email, code }. Establece la cookie de sesión. Limitado por tasa según IP y según email, de forma independiente.
POST/v1/auth/logoutsessionBorra la cookie de sesión.
GET/v1/auth/mesessionDevuelve el usuario actual.
GET/v1/auth/google—Redirige a Google OAuth.
GET/v1/auth/google/callback—Callback de OAuth; redirige a la app en caso de éxito.
GET/v1/auth/facebook—Redirige a Facebook OAuth.
GET/v1/auth/facebook/callback—Callback de OAuth; redirige a la app en caso de éxito.
POST/v1/auth/forgot-password—{ email }. Siempre devuelve el mismo mensaje, sin importar si el email está registrado.
POST/v1/auth/reset-password—{ token, password }. El token es de un solo uso y expira.

chat

MethodPathAuthNotas
POST/v1/chatsession{ model, messages, conversationId?, idempotencyKey }. Transmite en streaming un cuerpo de respuesta de texto plano; el header x-conversation-id de la respuesta lleva el id de la conversación. idempotencyKey es obligatorio — un request reintentado con la misma clave nunca vuelve a facturarse ni a llamar al proveedor.

skills

MethodPathAuthNotas
POST/v1/skillssession{ name, instruction, input_schema?, output_schema? }. Crea un Skill privado de su cuenta.
GET/v1/skillssessionLista sus propios Skills.
GET/v1/skills/templatessessionLista plantillas iniciales que puede duplicar en su propio Skill.
POST/v1/skills/templates/:id/duplicatesessionCopia una plantilla en un nuevo Skill propio.
POST/v1/skills/importsession{ name, instruction, input_schema?, output_schema?, version? } — exactamente la forma que produce GET /v1/skills/:id/export, de modo que exportar → importar funciona en ambos sentidos. Cualquier otro campo (id, owner_id, organization_id, allowed_tools) se rechaza de plano; un Skill importado nunca conserva un tool binding del archivo.
GET/v1/skills/:idsessionUn Skill de su propiedad, con todas sus versiones.
GET/v1/skills/:id/exportsessionLa forma portable { name, instruction, input_schema, output_schema, version }, que coincide con la entrada del endpoint de importación.
POST/v1/skills/:id/versionssession{ instruction, input_schema?, output_schema? }. Publica una nueva versión inmutable.
POST/v1/skills/:id/runsession{ model, input, conversationId?, idempotencyKey }. Vuelve a entrar en el mismo pipeline de chat que POST /v1/chat, con input en lugar del único mensaje de usuario — mismo comportamiento de idempotency/quota/ledger.

conversations

MethodPathAuthNotas
GET/v1/conversationssessionLista sus propias conversaciones.
GET/v1/conversations/:idsessionUna conversación individual con sus mensajes. Devuelve 404 para una conversación que no le pertenece.

files

MethodPathAuthNotas
GET/v1/filessessionLista sus propios archivos subidos.
POST/v1/filessessionSubida multipart, nombre de campo file. Acepta texto plano, Markdown, PDF, y .docx, hasta 20 MB.
DELETE/v1/files/:idsessionElimina un archivo de su propiedad (objeto de almacenamiento + registro).

plans

MethodPathAuthNotas
GET/v1/plans— (público)Lista los planes con precios y modelos permitidos — intencionalmente público para que el precio sea visible antes de iniciar sesión.

billing

MethodPathAuthNotas
POST/v1/billing/checkoutsession{ planId, provider: "sepay" | "paddle" }. El monto cobrado siempre proviene de la consulta del plan del lado del servidor, nunca del cliente. Los planes Free y Enterprise no pueden pagarse por esta vía.
GET/v1/billing/quotasessionSu límite de quota diaria actual y el saldo restante.

Existen dos recursos más en la API en producción que no se documentan aquí como una superficie orientada al cliente: /v1/webhooks/* (solo entrante, llamado por SePay/Paddle — no algo que usted llame) y /v1/admin/* (interno, solo para admin).

Referencia de la API — Documentación de MasterOS