Felo APIs
LiveDoc API
Crea bases de conocimiento, gestiona recursos y ejecuta recuperación semántica y enrutamiento.
/v2/livedocsAutenticación
Bearer API key
Tipo de contenido
application/json or multipart/form-data
Notas sobre límites
Pueden aplicarse límites específicos del endpoint.
La LiveDoc API ofrece operaciones CRUD completas para los LiveDocs y sus recursos, incluida la creación de documentos, la carga de archivos, la importación de URL y la recuperación semántica.
Autenticación
Todas las solicitudes requieren una clave de API en el encabezado Authorization:
Authorization: Bearer YOUR_API_KEYUso con agentes de IA
Instala el paquete completo felo-ai para dar a un agente compatibilidad con LiveDoc y todas las demás Felo Skills disponibles. El instalador descubre dinámicamente todos los directorios del paquete que contengan SKILL.md, incluidas las futuras incorporaciones. Instala todas las Skills descubiertas en el directorio nativo del agente: Codex ~/.codex/skills, Claude Code ~/.claude/skills, OpenClaw ~/.agents/skills o Hermes Agent ~/.hermes/skills. La guía de configuración manual de agentes de IA cubre los pasos específicos de clave de API y verificación de cada plataforma.
1. Crear un LiveDoc
Endpoint
POST https://openapi.felo.ai/v2/livedocsCuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name | string | Sí | Nombre del LiveDoc |
description | string | No | Descripción del LiveDoc |
icon | string | No | Icono del LiveDoc |
Ejemplo
curl -X POST 'https://openapi.felo.ai/v2/livedocs' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "AI Research Notes",
"description": "Collection of AI research materials"
}'Respuesta correcta (200)
{
"status": "ok",
"message": null,
"data": {
"short_id": "PvyKouzJirXjFdst4uKRK3",
"name": "AI Research Notes",
"description": "Collection of AI research materials",
"icon": null,
"created_at": "2026-03-09T10:00:00Z",
"modified_at": "2026-03-09T10:00:00Z"
}
}Campos de la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
short_id | string | ID del LiveDoc |
name | string | Nombre del LiveDoc |
description | string | Descripción del LiveDoc |
icon | string | Icono del LiveDoc |
created_at | string | Marca de tiempo de creación (ISO 8601) |
modified_at | string | Marca de tiempo de la última modificación (ISO 8601) |
is_shared | boolean | Indica si este LiveDoc está compartido con el usuario actual (es decir, no es de su propiedad) |
2. Listar LiveDocs
Endpoint
GET https://openapi.felo.ai/v2/livedocsParámetros de consulta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
keyword | string | No | Filtrar por palabra clave |
page | integer | No | Número de página (empieza por 1) |
size | integer | No | Tamaño de página |
Ejemplo
curl 'https://openapi.felo.ai/v2/livedocs?keyword=AI&page=1&size=20' \
-H 'Authorization: Bearer YOUR_API_KEY'Respuesta correcta (200)
{
"status": "ok",
"message": null,
"data": {
"total": 2,
"page": 1,
"size": 20,
"items": [
{
"short_id": "PvyKouzJirXjFdst4uKRK3",
"name": "AI Research Notes",
"description": "Collection of AI research materials",
"icon": null,
"created_at": "2026-03-09T10:00:00Z",
"modified_at": "2026-03-09T10:05:00Z",
"is_shared": false,
"readme": {
"summary": "AI research notes and papers collection",
"content": "# AI Research Notes\n\nThis LiveDoc contains..."
}
}
]
}
}Campos de la respuesta
Cada elemento de items contiene los mismos campos que la respuesta de Crear un LiveDoc, además de:
| Campo | Tipo | Descripción |
|---|---|---|
readme | object | null | Información del README. null si no existe ningún README. |
readme.summary | string | null | Descripción del proyecto en una línea |
readme.content | string | null | Contenido del README (Markdown) |
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}Cuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name | string | No | Nuevo nombre del LiveDoc |
description | string | No | Nueva descripción del LiveDoc |
Ejemplo
curl -X PUT 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Updated Research Notes"
}'Respuesta correcta (200)
Devuelve el objeto LiveDoc actualizado (la misma estructura que en Crear).
4. Eliminar un LiveDoc
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}Ejemplo
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3' \
-H 'Authorization: Bearer YOUR_API_KEY'Respuesta correcta (200)
{
"status": "ok",
"message": null,
"data": null
}5. Listar recursos
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/resourcesParámetros de consulta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
resource_types | string[] | No | Filtrar por tipos de recurso |
page | integer | No | Número de página (empieza por 1) |
size | integer | No | Tamaño de página |
Ejemplo
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources?page=1&size=20' \
-H 'Authorization: Bearer YOUR_API_KEY'Respuesta correcta (200)
{
"status": "ok",
"message": null,
"data": {
"total": 2,
"page": 1,
"size": 20,
"items": [
{
"id": "res_001",
"title": "OpenAI Blog Post",
"link": "https://openai.com/blog/...",
"snippet": "Summary of the article...",
"thumbnail": null,
"resource_type": "web",
"resource_key": "key_001",
"status": "completed",
"source": "url",
"created_at": "2026-03-09T10:00:10Z",
"modified_at": "2026-03-09T10:00:15Z"
}
]
}
}Campos de la respuesta de recurso
| Campo | Tipo | Descripción |
|---|---|---|
id | string | ID del recurso |
title | string | Título del recurso |
link | string | Enlace/URL del recurso |
snippet | string | Resumen del recurso |
thumbnail | string | URL de la miniatura |
resource_type | string | Tipo de recurso (por ejemplo, web, ai_doc, file) |
resource_key | string | Clave de asociación del recurso |
status | string | Estado del recurso |
source | string | Origen del recurso |
created_at | string | Marca de tiempo de creación (ISO 8601) |
modified_at | string | Marca de tiempo de la última modificación (ISO 8601) |
6. Obtener un recurso concreto
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}Ejemplo
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001' \
-H 'Authorization: Bearer YOUR_API_KEY'Respuesta correcta (200)
Devuelve un único objeto de recurso (la misma estructura que los elementos de Listar recursos).
7. Actualizar un recurso
Actualiza el title, snippet o thumbnail de un recurso. Solo se actualizan los campos proporcionados; los campos omitidos conservan sus valores actuales.
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}Cuerpo de la solicitud
Todos los campos son opcionales.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
title | string | No | Nuevo título del recurso (máximo 500 caracteres) |
snippet | string | No | Nuevo resumen del recurso (máximo 2000 caracteres) |
thumbnail | string | No | Nueva URL de miniatura (máximo 2000 caracteres) |
Ejemplo
curl -X PUT 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"title": "Updated Title",
"snippet": "Updated summary of the resource."
}'Respuesta correcta (200)
Devuelve el objeto de recurso actualizado (la misma estructura que los elementos de Listar recursos).
8. Actualizar el contenido de un recurso
Actualiza el contenido Markdown de un recurso ai_doc. Solo se admite para recursos con resource_type == ai_doc. El campo snippet se actualiza automáticamente a partir de los primeros 2000 bytes del nuevo contenido.
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}/contentCuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
content | string | Sí | Nuevo contenido Markdown del recurso |
Ejemplo
curl -X PUT 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001/content' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"content": "# Updated Document\n\nThis is the new content."
}'Respuesta correcta (200)
Devuelve el objeto de recurso actualizado (la misma estructura que los elementos de Listar recursos).
9. Crear un recurso de documento
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/docCuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
title | string | No | Título del documento (por defecto, "New Document") |
content | string | Sí | Contenido del documento |
Ejemplo
curl -X POST 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/doc' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"title": "My Research Notes",
"content": "Key findings from the AI research paper..."
}'Respuesta correcta (200)
Devuelve el objeto de recurso creado.
10. Subir un archivo como documento
Sube un archivo y conviértelo en un recurso de documento (tipo ai_doc).
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/upload-docContent-Type
multipart/form-data
Partes de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
file | file | Sí | El archivo que se va a subir |
title | string | No | Título del documento |
Ejemplo
curl -X POST 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/upload-doc' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-F '[email protected]' \
-F 'title=My PDF Document'Respuesta correcta (200)
Devuelve el objeto de recurso creado.
11. Subir un archivo como recurso
Sube un archivo y conserva su formato original.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/uploadContent-Type
multipart/form-data
Partes de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
file | file | Sí | El archivo que se va a subir |
Ejemplo
curl -X POST 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/upload' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-F '[email protected]'Respuesta correcta (200)
Devuelve el objeto de recurso creado.
12. Añadir recursos de URL
Añade una o varias URL como recursos a un LiveDoc.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/urlsCuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
urls | array | Sí | Lista de elementos de URL que se van a añadir (de 1 a 10). Cada elemento puede ser una cadena simple o un objeto con url y title opcional. |
Formatos de los elementos de URL
Cada entrada de urls puede ser:
- Una cadena simple:
"https://example.com/article" - Un objeto:
{"url": "https://example.com/article", "title": "Custom Title"}
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
url | string | Sí | La URL que se va a añadir (de 5 a 2000 caracteres) |
title | string | No | Título personalizado del recurso (máximo 1000 caracteres). Si se omite, el título se genera automáticamente a partir de la página. |
Ejemplo
curl -X POST 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/urls' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"urls": [
"https://example.com/article-1",
{"url": "https://example.com/article-2", "title": "My Custom Title"}
]
}'Respuesta correcta (200)
{
"status": "ok",
"message": null,
"data": [
{
"url": "https://example.com/article-1",
"status": "success",
"fail_reason": null,
"resource_id": "res_003"
},
{
"url": "https://example.com/article-2",
"status": "existed",
"fail_reason": null,
"resource_id": "res_004"
}
]
}Campos del resultado de URL
| Campo | Tipo | Descripción |
|---|---|---|
url | string | La URL procesada |
status | string | Estado del resultado: success, failed o existed |
fail_reason | string | Motivo del fallo (null si se completó correctamente) |
resource_id | string | ID del recurso creado |
13. Eliminar un recurso
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}Ejemplo
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001' \
-H 'Authorization: Bearer YOUR_API_KEY'Respuesta correcta (200)
{
"status": "ok",
"message": null,
"data": null
}14. Recuperación (búsqueda semántica)
Realiza una recuperación semántica sobre los recursos de un LiveDoc.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/retrieveCuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
query | string | Sí | Contenido de la consulta para la búsqueda semántica |
resource_ids | string[] | No | ID de recursos concretos en los que buscar (de 1 a 50). Si se omite, los recursos relevantes se enrutan automáticamente según la consulta |
Ejemplo
curl -X POST 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/retrieve' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"query": "latest developments in large language models",
"resource_ids": ["res_001", "res_002"]
}'Respuesta correcta (200)
{
"status": "ok",
"message": null,
"data": [
{
"id": "res_001",
"title": "LLM Research Paper",
"content": "Relevant content excerpt...",
"score": 0.92,
"metadata": {}
}
]
}Campos del resultado de recuperación
| Campo | Tipo | Descripción |
|---|---|---|
id | string | ID del recurso |
title | string | Título del recurso |
content | string | Contenido coincidente |
score | number | Puntuación de relevancia |
metadata | object | Metadatos adicionales |
15. Enrutar recursos
Enruta los recursos relevantes de un LiveDoc según una consulta. Devuelve una lista de ID de recursos que se pueden pasar al endpoint de recuperación.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/routeCuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
query | string | Sí | Contenido de la consulta para el enrutamiento |
max_resources | integer | No | Número máximo de ID de recursos que se devolverán |
Ejemplo
curl -X POST 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/route' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"query": "latest developments in large language models",
"max_resources": 5
}'Respuesta correcta (200)
{
"status": "ok",
"message": null,
"data": ["res_001", "res_003", "res_007"]
}16. Descargar el archivo de origen de un recurso
Obtén el archivo de origen de un recurso. Devuelve una redirección 302 a la URL de descarga prefirmada.
Solo se admite para recursos que tengan un archivo de origen asociado (por ejemplo, documentos subidos).
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}/downloadParámetros de consulta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
expires_in | integer | No | Caducidad de la URL en segundos (predeterminado: 3600) |
Ejemplo
curl -L 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001/download' \
-H 'Authorization: Bearer YOUR_API_KEY'Respuesta
Devuelve 302 Found con un encabezado Location que apunta a la URL de descarga prefirmada de S3. Los clientes HTTP compatibles con redirecciones (por ejemplo, curl -L) seguirán la redirección y descargarán el archivo directamente.
17. Obtener el contenido de un recurso
Obtén el contenido de texto extraído de un recurso. Se admite para la mayoría de los tipos de recurso (document, web, video, ai_doc, ai_ppt, text, voice, mindmap, etc.). Devuelve 400 para tipos no admitidos como image.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}/contentEjemplo
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001/content' \
-H 'Authorization: Bearer YOUR_API_KEY'Respuesta correcta (200)
{
"status": "ok",
"message": null,
"data": {
"title": "Q4 Financial Report",
"type": "document",
"content": "Full extracted text content of the resource..."
}
}Campos de la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
title | string | Título del recurso |
type | string | Tipo de recurso |
content | string | Contenido de texto extraído |
18. Recuperación de una página de PPT
Realiza una recuperación profunda de contenido en una página concreta de un recurso de PPT. Extrae la página de la diapositiva y devuelve fragmentos de contenido ordenados por relevancia. El formato de la respuesta es idéntico al del endpoint Recuperación.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/ppt-retrieveCuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
resource_id | string | Sí | ID del recurso de PPT |
page_number | integer | Sí | Número de página que se va a recuperar (empieza por 1) |
query | string | Sí | Contenido de la consulta que describe lo que se busca |
max_chunk | integer | No | Número máximo de fragmentos que se devolverán (predeterminado: 3) |
Ejemplo
curl -X POST 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/ppt-retrieve' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"resource_id": "res_001",
"page_number": 3,
"query": "product pricing information",
"max_chunk": 3
}'Respuesta correcta (200)
{
"status": "ok",
"message": null,
"data": [
{
"id": "res_001_page_3_chunk_1",
"title": "Q4 Product Deck",
"content": "Relevant slide content excerpt...",
"score": null,
"metadata": {
"resource_id": "res_001",
"page_number": 3,
"index": 1
}
}
]
}Campos de la respuesta
Igual que en Campos del resultado de recuperación.
Códigos de error
| Código | Estado HTTP | Descripción |
|---|---|---|
UNAUTHORIZED | 401 | La clave de API no es válida o está revocada |
LIVEDOC_CREATE_FAILED | 502 | No se pudo crear el LiveDoc |
LIVEDOC_UPDATE_FAILED | 502 | No se pudo actualizar el LiveDoc |
LIVEDOC_DELETE_FAILED | 502 | No se pudo eliminar el LiveDoc |
LIVEDOC_NOT_FOUND | 404 | LiveDoc no encontrado |
LIVEDOC_LIST_FAILED | 502 | No se pudo listar los LiveDocs |
LIVEDOC_RESOURCE_CREATE_FAILED | 502 | No se pudo crear el recurso |
LIVEDOC_RESOURCE_UPLOAD_FAILED | 502 | No se pudo subir el recurso |
LIVEDOC_RESOURCE_DELETE_FAILED | 502 | No se pudo eliminar el recurso |
LIVEDOC_RESOURCE_NOT_FOUND | 404 | Recurso no encontrado |
LIVEDOC_RESOURCE_LIST_FAILED | 502 | No se pudieron listar los recursos |
LIVEDOC_RESOURCE_RETRIEVE_FAILED | 502 | No se pudieron recuperar los recursos |
LIVEDOC_RESOURCE_ADD_URLS_FAILED | 502 | No se pudieron añadir los recursos de URL |
19. Obtener el README
Obtén el contenido del README de un LiveDoc. Devuelve una cadena vacía si no se ha definido ningún README.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/readmeEjemplo
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/readme' \
-H 'Authorization: Bearer YOUR_API_KEY'Respuesta correcta (200)
{
"status": "ok",
"message": null,
"data": {
"summary": "A brief one-line description of the project.",
"content": "# My LiveDoc\n\nThis is the README content in Markdown."
}
}Campos de la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
summary | string | null | Descripción del proyecto en una línea. Máximo 2000 caracteres. |
content | string | Contenido del README (Markdown). Cadena vacía si no se ha definido. |
20. Crear o actualizar el README
Crea o actualiza el README de un LiveDoc (semántica de inserción o actualización).
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}/readmeCuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
summary | string | No | Descripción del proyecto en una línea (máximo 2000 caracteres) |
content | string | No | Contenido del README (Markdown) |
Nota: debe proporcionarse al menos
summaryocontent.
Ejemplo
curl -X PUT 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/readme' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"summary": "A brief one-line description of the project.",
"content": "# My LiveDoc\n\nThis is the README content in Markdown."
}'Respuesta correcta (200)
Devuelve el objeto README actualizado (la misma estructura que en Obtener el README).
21. Añadir contenido al README
Añade contenido al final de un README existente. Si no existe ningún README, crea uno nuevo con el contenido proporcionado.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/readme/appendCuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
content | string | Sí | Contenido que se va a añadir (Markdown) |
Ejemplo
curl -X POST 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/readme/append' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"content": "\n\n## New Section\n\nAdditional content appended to README."
}'Respuesta correcta (200)
Devuelve el objeto README completo después de añadir el contenido (la misma estructura que en Obtener el README).
22. Eliminar el README
Elimina el README de un LiveDoc.
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}/readmeEjemplo
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/readme' \
-H 'Authorization: Bearer YOUR_API_KEY'Respuesta correcta (200)
{
"status": "ok",
"message": null,
"data": null
}23. Listar tareas
Obtén una lista paginada de tareas de un LiveDoc. Los resultados se ordenan por sort ascendente, status ascendente y created_at descendente.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/tasksParámetros de consulta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
status | integer | No | Filtrar por estado: 0=TODO, 1=IN_PROGRESS, 2=DONE |
labels | string[] | No | Filtrar por etiquetas (las tareas deben contener todas las etiquetas especificadas) |
page | integer | No | Número de página (empieza por 1) |
size | integer | No | Tamaño de página |
Ejemplo
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks?status=0&page=1&size=20' \
-H 'Authorization: Bearer YOUR_API_KEY'Respuesta correcta (200)
{
"status": "ok",
"message": null,
"data": {
"total": 1,
"page": 1,
"size": 20,
"items": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Write documentation",
"description": "Write API documentation for the new endpoints",
"status": 0,
"sort": 0,
"labels": ["docs", "priority-high"],
"created_at": "2026-03-19T10:00:00Z",
"modified_at": "2026-03-19T10:00:00Z"
}
]
}
}Campos de la respuesta de tarea
| Campo | Tipo | Descripción |
|---|---|---|
id | string | ID de la tarea (UUID) |
title | string | Título de la tarea |
description | string | Descripción de la tarea |
status | integer | Estado de la tarea: 0=TODO, 1=IN_PROGRESS, 2=DONE |
sort | integer | Orden de clasificación (no negativo) |
labels | string[] | Lista de etiquetas |
operated_by | string | Firma del operador, por ejemplo claude-code, openclaw |
created_at | string | Marca de tiempo de creación (ISO 8601) |
modified_at | string | Marca de tiempo de la última modificación (ISO 8601) |
24. Crear una tarea
Crea una nueva tarea en un LiveDoc.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/tasksCuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
title | string | Sí | Título de la tarea |
description | string | No | Descripción de la tarea |
status | integer | Sí | Estado de la tarea: 0=TODO, 1=IN_PROGRESS, 2=DONE |
sort | integer | Sí | Orden de clasificación (entero no negativo) |
labels | string[] | No | Lista de etiquetas (máximo 10, cada una de máximo 50 caracteres) |
operated_by | string | No | Firma del operador, por ejemplo claude-code, openclaw (máximo 100 caracteres) |
Ejemplo
curl -X POST 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"title": "Write documentation",
"description": "Write API documentation for the new endpoints",
"status": 0,
"sort": 0,
"labels": ["docs", "priority-high"]
}'Respuesta correcta (200)
Devuelve el objeto de tarea creado (la misma estructura que los elementos de Listar tareas).
25. Actualizar una tarea
Actualiza parcialmente una tarea. Solo se actualizan los campos proporcionados; los campos omitidos conservan sus valores actuales.
Endpoint
PATCH https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}Cuerpo de la solicitud
Todos los campos son opcionales.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
title | string | No | Nuevo título de la tarea |
description | string | No | Nueva descripción de la tarea |
status | integer | No | Nuevo estado: 0=TODO, 1=IN_PROGRESS, 2=DONE |
sort | integer | No | Nuevo orden de clasificación (no negativo) |
labels | string[] | No | Nueva lista de etiquetas (máximo 10, cada una de máximo 50 caracteres) |
operated_by | string | No | Firma del operador, por ejemplo claude-code, openclaw (máximo 100 caracteres) |
Ejemplo
curl -X PATCH 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks/550e8400-e29b-41d4-a716-446655440000' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"status": 1
}'Respuesta correcta (200)
Devuelve el objeto de tarea actualizado (la misma estructura que los elementos de Listar tareas).
26. Eliminar una tarea
Elimina una tarea de forma lógica (soft delete).
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}Ejemplo
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks/550e8400-e29b-41d4-a716-446655440000' \
-H 'Authorization: Bearer YOUR_API_KEY'Respuesta correcta (200)
{
"status": "ok",
"message": null,
"data": null
}27. Listar los registros de una tarea
Obtén una lista paginada de registros de una tarea (comentarios e historial de cambios), ordenados por created_at ascendente.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}/recordsParámetros de consulta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
record_type | string | No | Filtrar por tipo de registro: comment, edit, status_change |
page | integer | No | Número de página (empieza por 1) |
size | integer | No | Tamaño de página |
Ejemplo
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks/550e8400-e29b-41d4-a716-446655440000/records' \
-H 'Authorization: Bearer YOUR_API_KEY'Respuesta correcta (200)
{
"status": "ok",
"message": null,
"data": {
"total": 2,
"page": 1,
"size": 20,
"items": [
{
"id": "rec_001",
"record_type": "comment",
"content": "This is a comment",
"meta": null,
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"created_at": "2026-03-19T10:05:00Z",
"modified_at": "2026-03-19T10:05:00Z"
},
{
"id": "rec_002",
"record_type": "status_change",
"content": null,
"meta": {"from": 0, "to": 1},
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"created_at": "2026-03-19T10:10:00Z",
"modified_at": "2026-03-19T10:10:00Z"
}
]
}
}Campos de la respuesta de registro de tarea
| Campo | Tipo | Descripción |
|---|---|---|
id | string | ID del registro |
record_type | string | Tipo de registro: comment / edit / status_change |
content | string | Texto del comentario (solo para el tipo comment) |
meta | object | Detalles del cambio (para los tipos edit y status_change) |
task_id | string | ID de la tarea principal |
operated_by | string | Firma del operador, por ejemplo claude-code, openclaw |
created_at | string | Marca de tiempo de creación (ISO 8601) |
modified_at | string | Marca de tiempo de la última modificación (ISO 8601) |
28. Añadir un comentario a una tarea
Añade un comentario a una tarea.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}/commentsCuerpo de la solicitud
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
content | string | Sí | Contenido del comentario |
operated_by | string | No | Firma del operador, por ejemplo claude-code, openclaw (máximo 100 caracteres) |
Ejemplo
curl -X POST 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks/550e8400-e29b-41d4-a716-446655440000/comments' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"content": "This task is now in progress."
}'Respuesta correcta (200)
Devuelve el objeto de registro creado (la misma estructura que los elementos de Listar los registros de una tarea).
Códigos de error (actualizados)
| Código | Estado HTTP | Descripción |
|---|---|---|
UNAUTHORIZED | 401 | La clave de API no es válida o está revocada |
LIVEDOC_CREATE_FAILED | 502 | No se pudo crear el LiveDoc |
LIVEDOC_UPDATE_FAILED | 502 | No se pudo actualizar el LiveDoc |
LIVEDOC_DELETE_FAILED | 502 | No se pudo eliminar el LiveDoc |
LIVEDOC_NOT_FOUND | 404 | LiveDoc no encontrado |
LIVEDOC_LIST_FAILED | 502 | No se pudo listar los LiveDocs |
LIVEDOC_RESOURCE_CREATE_FAILED | 502 | No se pudo crear el recurso |
LIVEDOC_RESOURCE_UPLOAD_FAILED | 502 | No se pudo subir el recurso |
LIVEDOC_RESOURCE_DELETE_FAILED | 502 | No se pudo eliminar el recurso |
LIVEDOC_RESOURCE_NOT_FOUND | 404 | Recurso no encontrado |
LIVEDOC_RESOURCE_LIST_FAILED | 502 | No se pudieron listar los recursos |
LIVEDOC_RESOURCE_RETRIEVE_FAILED | 502 | No se pudieron recuperar los recursos |
LIVEDOC_RESOURCE_ADD_URLS_FAILED | 502 | No se pudieron añadir los recursos de URL |
LIVEDOC_README_GET_FAILED | 502 | No se pudo obtener el README |
LIVEDOC_README_UPDATE_FAILED | 502 | No se pudo crear o actualizar el README |
LIVEDOC_README_DELETE_FAILED | 502 | No se pudo eliminar el README |
LIVEDOC_README_NOT_FOUND | 404 | README no encontrado |
LIVEDOC_TASK_LIST_FAILED | 502 | No se pudieron listar las tareas |
LIVEDOC_TASK_CREATE_FAILED | 502 | No se pudo crear la tarea |
LIVEDOC_TASK_UPDATE_FAILED | 502 | No se pudo actualizar la tarea |
LIVEDOC_TASK_DELETE_FAILED | 502 | No se pudo eliminar la tarea |
LIVEDOC_TASK_NOT_FOUND | 404 | Tarea no encontrada |
LIVEDOC_TASK_RECORD_LIST_FAILED | 502 | No se pudieron listar los registros de tarea |
LIVEDOC_TASK_COMMENT_CREATE_FAILED | 502 | No se pudo crear el comentario de tarea |