API REST
Proyectos, tareas y notas desde tus scripts y servicios, con tokens personales y permisos por recurso.
La API pública está versionada bajo /api/v1. En el servicio gestionado la base es https://api.fxcode.dev/api/v1; en una instalación propia, la dirección de tu API seguida de /api/v1.
Autenticación
Crea un token personal en Ajustes → Tokens de API. Elige solo los permisos que necesites; el token se muestra una sola vez y empieza por fxc_. Mándalo en cada petición:
curl -H "Authorization: Bearer fxc_TU_TOKEN" https://api.fxcode.dev/api/v1/projects
| Permiso | Permite |
|---|---|
projects:read |
Listar y ver proyectos |
tasks:read / tasks:write |
Leer / crear, editar y borrar tareas |
notes:read / notes:write |
Leer / crear, editar y borrar notas |
Un token sin permisos marcados tiene acceso completo. Puedes revocarlo cuando quieras desde la misma pantalla.
Solo ves los proyectos donde eres miembro del equipo. Un proyecto ajeno responde 404, igual que uno que no existe.
Endpoints
| Método y ruta | Permiso | Qué hace |
|---|---|---|
GET /projects |
projects:read |
Tus proyectos (los fijados primero) |
GET /projects/:id |
projects:read |
Un proyecto |
GET /projects/:id/tasks |
tasks:read |
Las tareas de un proyecto |
GET /tasks?projectId= |
tasks:read |
Tareas de tus proyectos, opcionalmente de uno |
GET /tasks/:id |
tasks:read |
Una tarea |
POST /tasks |
tasks:write |
Crea una tarea |
PUT /tasks/:id |
tasks:write |
Edita una tarea (solo los campos que mandes) |
DELETE /tasks/:id |
tasks:write |
Borra una tarea |
GET /projects/:id/notes |
notes:read |
Las notas de un proyecto |
POST /projects/:id/notes |
notes:write |
Crea una nota |
PUT /projects/:id/notes/:noteId |
notes:write |
Edita una nota |
DELETE /projects/:id/notes/:noteId |
notes:write |
Borra una nota |
Tareas
curl -X POST https://api.fxcode.dev/api/v1/tasks \
-H "Authorization: Bearer fxc_TU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"projectId": "ID_DEL_PROYECTO",
"title": "Revisar webhooks de Stripe",
"description": "Los reintentos fallan con 409",
"tags": ["pagos"]
}'
| Campo | Tipo | |
|---|---|---|
title |
texto | Obligatorio al crear |
projectId |
texto | Obligatorio al crear |
description |
texto | Opcional |
taskStatusId |
texto | Opcional. El id de un estado; lo ves en taskStatus.id de cualquier tarea |
tags |
lista de textos | Opcional; al editar reemplaza las etiquetas |
Una tarea devuelve:
{
"id": "cmvc…",
"title": "Revisar webhooks de Stripe",
"description": "Los reintentos fallan con 409",
"tags": ["pagos"],
"projectId": "ID_DEL_PROYECTO",
"taskStatus": { "id": "cmt…", "name": "Working", "color": "#14b8a6" },
"createdAt": "2026-10-17T14:00:00.000Z",
"updatedAt": "2026-10-17T14:00:00.000Z"
}
Los cambios que hagas por la API se ven en vivo en la aplicación, igual que los de la web.
Notas
curl -X POST https://api.fxcode.dev/api/v1/projects/<id>/notes \
-H "Authorization: Bearer fxc_TU_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "title": "Decisiones de la reunión", "content": "## Acuerdos\n- …" }'
content es obligatorio al crear; title es opcional.
Errores
Los errores responden con un código HTTP y un JSON { "error": "mensaje" }:
| Código | Cuándo |
|---|---|
400 |
Datos inválidos (falta un campo obligatorio, un taskStatusId que no existe) |
401 |
Falta el token, o es inválido, está revocado o expiró |
403 |
El token no tiene el permiso que pide la ruta |
404 |
El recurso no existe o no es de un proyecto tuyo |
La especificación OpenAPI completa está en /docs de tu API (en el servicio gestionado, api.fxcode.dev/docs).