Ghosty
API

Referencia de la API

Todos los endpoints de /api/v2/me — agentes, conversaciones, mensajes, eventos, permisos, archivos, conectores — con su esquema OpenAPI 3.1.

Actualizado 2026-09-16

La especificación completa está en (OpenAPI 3.1). Abajo se renderiza; puedes importarla en Postman, Bruno o generar un cliente con openapi-generator.

Base: https://www.ghosty.studio. Todas las rutas exigen Authorization: Bearer () y responden JSON con Cache-Control: no-store.

Mapa

RecursoRutas
Configuración del agente (token gat_)GET/PATCH /api/v2/agents/:id, PUT/DELETE/GET …/files/*, GET …/skills, PUT/DELETE …/skills/:slug, GET/PUT …/mcp, POST …/restart — ver
CuentaDELETE /api/v2/me
AgentesGET /api/v2/me/agents
ConversacionesGET/POST …/agents/:agentId/conversations, GET/PATCH/DELETE …/conversations/:sessionId
TurnosPOST …/:sessionId/messages (202), GET …/:sessionId/events (SSE), POST …/:sessionId/cancel
Permisos y modeloPOST …/:sessionId/permission, POST …/:sessionId/model
ProgramadosGET/POST …/:sessionId/schedule, DELETE …/:sessionId/schedule/:id
CompartirGET/POST/DELETE …/:sessionId/share
ArchivosGET/POST /api/v2/me/files, GET/DELETE /api/v2/me/files/:id, POST /api/v2/me/stt
ConectoresGET /api/v2/me/connectors, POST …/:id/start, DELETE …/:id
DispositivosPOST/DELETE /api/v2/me/devices

Un turno completo

typescript
const base = "https://www.ghosty.studio/api/v2/me";const h = { Authorization: `Bearer ${token}`, "Content-Type": "application/json" };
// 1. abre una conversaciónconst { id: sessionId } = await (await fetch(`${base}/agents/${agentId}/conversations`, { method: "POST", headers: h })).json();
// 2. suscríbete a los eventos ANTES de mandar (el stream reproduce lo ya emitido, así que el orden no es crítico)const es = new EventSource(`${base}/agents/${agentId}/conversations/${sessionId}/events`); // añade el bearer con un polyfill que acepte headerses.addEventListener("chunk", (e) => process.stdout.write(JSON.parse(e.data).text));es.addEventListener("done", () => es.close());
// 3. manda el mensaje: responde 202 al aceptarlo, no al terminarawait fetch(`${base}/agents/${agentId}/conversations/${sessionId}/messages`, {  method: "POST", headers: h,  body: JSON.stringify({ content: "Resume este PDF en 5 líneas", images: [{ name: "contrato.pdf", mimeType: "application/pdf", data: base64 }] }),});

EventSource del navegador no manda headers; en Node usa eventsource o fetch con lectura del body. Detalle de cada evento en .