Referencia de endpoints

Base URL: https://fiacopilot.com/api/v1. Todos requieren una API key (ver Autenticación). La spec máquina-legible está en /openapi.json.

Identidad

GET /me

Datos del dueño de la key. Sin scope requerido.

curl https://fiacopilot.com/api/v1/me -H "Authorization: Bearer fia_sk_…"
{ "data": { "userId": "…", "name": "…", "org": { "id": "…", "name": "…" },
  "orgRole": "sponsor", "plan": { "status": "active", "planId": "pro" }, "scopes": [] } }

Memoria

GET /memory — scope memory:read

Lista tu memoria. Query params (todos opcionales):

Param Tipo Descripción
type string Filtra por content_type
starred true Solo destacados
tag string Items que contienen ese tag
capsule_id uuid Items ligados a una cápsula
q string Búsqueda en título y contenido
limit int Default 50, máx 200
offset int Default 0
curl "https://fiacopilot.com/api/v1/memory?type=context_process&limit=10" \
  -H "Authorization: Bearer fia_sk_…"
{ "data": [ { "id": "…", "title": "…", "content": "…", "content_type": "general",
  "tags": ["x"], "is_starred": false, "capsule_id": null,
  "created_at": "…", "updated_at": "…" } ],
  "page": { "limit": 10, "offset": 0, "total": 1 } }

GET /memory/{id} — scope memory:read

Un item completo. 404 not_found si no es tuyo.

POST /memory — scope memory:write

Crea un item. Body:

Campo Tipo Req Notas
content string sí Contenido del item
title string no Máx 200 chars
content_type string no Default general. Ver valores abajo
tags string[] no Máx 20
is_starred bool no

content_type válidos: general, context_business, context_personal, context_ai_memory, context_process, context_prompt, ai_response, resource. Uno inválido devuelve 400 invalid_content_type con la lista en allowed.

curl -X POST https://fiacopilot.com/api/v1/memory \
  -H "Authorization: Bearer fia_sk_…" -H "Content-Type: application/json" \
  -d '{"title":"Mi proceso","content":"Paso 1…","content_type":"context_process","tags":["ventas"]}'

Devuelve 201 con el item creado.

Procesos

GET /processes — scope memory:read

Atajo de /memory con content_type=context_process. Acepta los mismos filtros.

Cápsulas

GET /capsules — scope memory:read o agentica:read

Las cápsulas publicadas y learning paths que vos podés ver: las mismas que te muestra la plataforma. Los programas pagos (FIA Agéntica, FIA Ventas, tracks de empresa…) aparecen sólo si tenés acceso vigente, con su goteo semanal. Los pasos del Método FIA que piden puntos aparecen con "locked": true y sin video_url.

{ "data": { "paths": [ { "id": "…", "name": "FIA Core", "display_order": 1 } ],
  "capsules": [ { "id": "…", "number": 1, "title": "…", "slug": "…",
    "objective": "…", "estimated_minutes": 15, "fase": "1", "tags": [],
    "path_id": "…", "video_url": null, "week": 1, "class_date": null, "display_order": 1, "locked": false } ] } }

GET /capsules/progress — scope memory:read o agentica:read

Tu progreso por cápsula.

{ "data": [ { "capsule_id": "…", "status": "completed",
  "started_at": "…", "completed_at": "…" } ],
  "page": { "limit": 4, "offset": 0, "total": 4 } }

POST /capsules/progress — scope agentica:write o memory:write

Marca una cápsula como completada. Body: { "capsule_id": "…" } o { "slug": "…" }. Sólo cápsulas que podés ver.

{ "data": { "ok": true, "ya_estaba_completa": false,
  "capsula": { "id": "…", "slug": "…", "titulo": "…", "semana": 3, "url": "…" } } }

Los endpoints del Copiloto FIA Agéntica (/agentica/estado, /agentica/bitacora, /agentica/ayuda) están en Copiloto FIA Agéntica.

Briefings

Ver recetas en Briefings y logs.

Método Path Scope
GET /briefings briefings:read
POST /briefings briefings:write
GET /briefings/{id} briefings:read
PATCH /briefings/{id} briefings:write
GET /briefings/{id}/executions briefings:read
POST /briefings/{id}/executions briefings:write

Equipo

Solo para sponsor / implementador (se revalida en cada request). Scopeado a tu organización.

GET /team — scope team:read

Roster del equipo + resumen por clasificación. Excluye al solicitante.

{ "data": [ { "id": "…", "name": "…", "org_role": "implementador",
  "capsules_started": 5, "capsules_done": 3, "last_activity": "…",
  "vault_outputs": 7, "joined_at": "…", "classification": "constante",
  "days_inactive": 2 } ],
  "page": { "limit": 4, "offset": 0, "total": 4 },
  "org": { "id": "…", "name": "…" },
  "summary": { "totalMembers": 4, "byClassification": { "constante": 2, "en_riesgo": 1, "abandonando": 1 } } }

Clasificaciones: comprometido, constante, en_riesgo, abandonando, sin_empezar.

GET /team/{memberId} — scope team:read

Detalle de un miembro de tu organización. 404 not_found si no pertenece a tu org.