Felo API PlatformFelo API Platform

Felo APIs

LiveDoc API

Crea bases de conocimiento, gestiona recursos y ejecuta recuperación semántica y enrutamiento.

POST/v2/livedocs

Autenticació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_KEY

Uso 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/livedocs

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
namestringSíNombre del LiveDoc
descriptionstringNoDescripción del LiveDoc
iconstringNoIcono 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

CampoTipoDescripción
short_idstringID del LiveDoc
namestringNombre del LiveDoc
descriptionstringDescripción del LiveDoc
iconstringIcono del LiveDoc
created_atstringMarca de tiempo de creación (ISO 8601)
modified_atstringMarca de tiempo de la última modificación (ISO 8601)
is_sharedbooleanIndica 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/livedocs

Parámetros de consulta

ParámetroTipoObligatorioDescripción
keywordstringNoFiltrar por palabra clave
pageintegerNoNúmero de página (empieza por 1)
sizeintegerNoTamañ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:

CampoTipoDescripción
readmeobject | nullInformación del README. null si no existe ningún README.
readme.summarystring | nullDescripción del proyecto en una línea
readme.contentstring | nullContenido del README (Markdown)

Endpoint

PUT https://openapi.felo.ai/v2/livedocs/{short_id}

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
namestringNoNuevo nombre del LiveDoc
descriptionstringNoNueva 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}/resources

Parámetros de consulta

ParámetroTipoObligatorioDescripción
resource_typesstring[]NoFiltrar por tipos de recurso
pageintegerNoNúmero de página (empieza por 1)
sizeintegerNoTamañ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

CampoTipoDescripción
idstringID del recurso
titlestringTítulo del recurso
linkstringEnlace/URL del recurso
snippetstringResumen del recurso
thumbnailstringURL de la miniatura
resource_typestringTipo de recurso (por ejemplo, web, ai_doc, file)
resource_keystringClave de asociación del recurso
statusstringEstado del recurso
sourcestringOrigen del recurso
created_atstringMarca de tiempo de creación (ISO 8601)
modified_atstringMarca 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ámetroTipoObligatorioDescripción
titlestringNoNuevo título del recurso (máximo 500 caracteres)
snippetstringNoNuevo resumen del recurso (máximo 2000 caracteres)
thumbnailstringNoNueva 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}/content

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
contentstringSí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/doc

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
titlestringNoTítulo del documento (por defecto, "New Document")
contentstringSí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-doc

Content-Type

multipart/form-data

Partes de la solicitud

ParámetroTipoObligatorioDescripción
filefileSíEl archivo que se va a subir
titlestringNoTí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/upload

Content-Type

multipart/form-data

Partes de la solicitud

ParámetroTipoObligatorioDescripción
filefileSí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/urls

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
urlsarraySí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"}
CampoTipoObligatorioDescripción
urlstringSíLa URL que se va a añadir (de 5 a 2000 caracteres)
titlestringNoTí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

CampoTipoDescripción
urlstringLa URL procesada
statusstringEstado del resultado: success, failed o existed
fail_reasonstringMotivo del fallo (null si se completó correctamente)
resource_idstringID 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/retrieve

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
querystringSíContenido de la consulta para la búsqueda semántica
resource_idsstring[]NoID 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

CampoTipoDescripción
idstringID del recurso
titlestringTítulo del recurso
contentstringContenido coincidente
scorenumberPuntuación de relevancia
metadataobjectMetadatos 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/route

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
querystringSíContenido de la consulta para el enrutamiento
max_resourcesintegerNoNú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}/download

Parámetros de consulta

ParámetroTipoObligatorioDescripción
expires_inintegerNoCaducidad 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}/content

Ejemplo

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

CampoTipoDescripción
titlestringTítulo del recurso
typestringTipo de recurso
contentstringContenido 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-retrieve

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
resource_idstringSíID del recurso de PPT
page_numberintegerSíNúmero de página que se va a recuperar (empieza por 1)
querystringSíContenido de la consulta que describe lo que se busca
max_chunkintegerNoNú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ódigoEstado HTTPDescripción
UNAUTHORIZED401La clave de API no es válida o está revocada
LIVEDOC_CREATE_FAILED502No se pudo crear el LiveDoc
LIVEDOC_UPDATE_FAILED502No se pudo actualizar el LiveDoc
LIVEDOC_DELETE_FAILED502No se pudo eliminar el LiveDoc
LIVEDOC_NOT_FOUND404LiveDoc no encontrado
LIVEDOC_LIST_FAILED502No se pudo listar los LiveDocs
LIVEDOC_RESOURCE_CREATE_FAILED502No se pudo crear el recurso
LIVEDOC_RESOURCE_UPLOAD_FAILED502No se pudo subir el recurso
LIVEDOC_RESOURCE_DELETE_FAILED502No se pudo eliminar el recurso
LIVEDOC_RESOURCE_NOT_FOUND404Recurso no encontrado
LIVEDOC_RESOURCE_LIST_FAILED502No se pudieron listar los recursos
LIVEDOC_RESOURCE_RETRIEVE_FAILED502No se pudieron recuperar los recursos
LIVEDOC_RESOURCE_ADD_URLS_FAILED502No 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}/readme

Ejemplo

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

CampoTipoDescripción
summarystring | nullDescripción del proyecto en una línea. Máximo 2000 caracteres.
contentstringContenido 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}/readme

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
summarystringNoDescripción del proyecto en una línea (máximo 2000 caracteres)
contentstringNoContenido del README (Markdown)

Nota: debe proporcionarse al menos summary o content.

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/append

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
contentstringSí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}/readme

Ejemplo

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}/tasks

Parámetros de consulta

ParámetroTipoObligatorioDescripción
statusintegerNoFiltrar por estado: 0=TODO, 1=IN_PROGRESS, 2=DONE
labelsstring[]NoFiltrar por etiquetas (las tareas deben contener todas las etiquetas especificadas)
pageintegerNoNúmero de página (empieza por 1)
sizeintegerNoTamañ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

CampoTipoDescripción
idstringID de la tarea (UUID)
titlestringTítulo de la tarea
descriptionstringDescripción de la tarea
statusintegerEstado de la tarea: 0=TODO, 1=IN_PROGRESS, 2=DONE
sortintegerOrden de clasificación (no negativo)
labelsstring[]Lista de etiquetas
operated_bystringFirma del operador, por ejemplo claude-code, openclaw
created_atstringMarca de tiempo de creación (ISO 8601)
modified_atstringMarca 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}/tasks

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
titlestringSíTítulo de la tarea
descriptionstringNoDescripción de la tarea
statusintegerSíEstado de la tarea: 0=TODO, 1=IN_PROGRESS, 2=DONE
sortintegerSíOrden de clasificación (entero no negativo)
labelsstring[]NoLista de etiquetas (máximo 10, cada una de máximo 50 caracteres)
operated_bystringNoFirma 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ámetroTipoObligatorioDescripción
titlestringNoNuevo título de la tarea
descriptionstringNoNueva descripción de la tarea
statusintegerNoNuevo estado: 0=TODO, 1=IN_PROGRESS, 2=DONE
sortintegerNoNuevo orden de clasificación (no negativo)
labelsstring[]NoNueva lista de etiquetas (máximo 10, cada una de máximo 50 caracteres)
operated_bystringNoFirma 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}/records

Parámetros de consulta

ParámetroTipoObligatorioDescripción
record_typestringNoFiltrar por tipo de registro: comment, edit, status_change
pageintegerNoNúmero de página (empieza por 1)
sizeintegerNoTamañ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

CampoTipoDescripción
idstringID del registro
record_typestringTipo de registro: comment / edit / status_change
contentstringTexto del comentario (solo para el tipo comment)
metaobjectDetalles del cambio (para los tipos edit y status_change)
task_idstringID de la tarea principal
operated_bystringFirma del operador, por ejemplo claude-code, openclaw
created_atstringMarca de tiempo de creación (ISO 8601)
modified_atstringMarca 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}/comments

Cuerpo de la solicitud

ParámetroTipoObligatorioDescripción
contentstringSíContenido del comentario
operated_bystringNoFirma 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ódigoEstado HTTPDescripción
UNAUTHORIZED401La clave de API no es válida o está revocada
LIVEDOC_CREATE_FAILED502No se pudo crear el LiveDoc
LIVEDOC_UPDATE_FAILED502No se pudo actualizar el LiveDoc
LIVEDOC_DELETE_FAILED502No se pudo eliminar el LiveDoc
LIVEDOC_NOT_FOUND404LiveDoc no encontrado
LIVEDOC_LIST_FAILED502No se pudo listar los LiveDocs
LIVEDOC_RESOURCE_CREATE_FAILED502No se pudo crear el recurso
LIVEDOC_RESOURCE_UPLOAD_FAILED502No se pudo subir el recurso
LIVEDOC_RESOURCE_DELETE_FAILED502No se pudo eliminar el recurso
LIVEDOC_RESOURCE_NOT_FOUND404Recurso no encontrado
LIVEDOC_RESOURCE_LIST_FAILED502No se pudieron listar los recursos
LIVEDOC_RESOURCE_RETRIEVE_FAILED502No se pudieron recuperar los recursos
LIVEDOC_RESOURCE_ADD_URLS_FAILED502No se pudieron añadir los recursos de URL
LIVEDOC_README_GET_FAILED502No se pudo obtener el README
LIVEDOC_README_UPDATE_FAILED502No se pudo crear o actualizar el README
LIVEDOC_README_DELETE_FAILED502No se pudo eliminar el README
LIVEDOC_README_NOT_FOUND404README no encontrado
LIVEDOC_TASK_LIST_FAILED502No se pudieron listar las tareas
LIVEDOC_TASK_CREATE_FAILED502No se pudo crear la tarea
LIVEDOC_TASK_UPDATE_FAILED502No se pudo actualizar la tarea
LIVEDOC_TASK_DELETE_FAILED502No se pudo eliminar la tarea
LIVEDOC_TASK_NOT_FOUND404Tarea no encontrada
LIVEDOC_TASK_RECORD_LIST_FAILED502No se pudieron listar los registros de tarea
LIVEDOC_TASK_COMMENT_CREATE_FAILED502No se pudo crear el comentario de tarea