Felo APIs
LiveDoc API
Crie bases de conhecimento, gerencie recursos e execute recuperação semântica e roteamento.
/v2/livedocsAutenticação
Bearer API key
Tipo de conteúdo
application/json or multipart/form-data
Notas de limite
Podem se aplicar limites específicos do endpoint.
A LiveDoc API oferece operações CRUD completas para LiveDocs e seus recursos, incluindo criação de documentos, envio de arquivos, importação por URL e recuperação semântica.
Autenticação
Todas as requisições exigem uma chave de API no cabeçalho Authorization:
Authorization: Bearer YOUR_API_KEYUso com agentes de IA
Instale o pacote completo felo-ai para dar a um agente suporte a LiveDoc e todos os demais Felo Skills disponíveis. O instalador descobre dinamicamente todos os diretórios de pacote que contêm SKILL.md, incluindo adições futuras de pacotes. Instale todos os Skills descobertos no diretório nativo do agente: ~/.codex/skills para o Codex, ~/.claude/skills para o Claude Code, ~/.agents/skills para o OpenClaw ou ~/.hermes/skills para o Hermes Agent. O guia de configuração manual de agentes de IA cobre a chave de API e as etapas de verificação específicas de cada plataforma.
1. Criar LiveDoc
Endpoint
POST https://openapi.felo.ai/v2/livedocsCorpo da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Nome do LiveDoc |
description | string | Não | Descrição do LiveDoc |
icon | string | Não | Ícone do LiveDoc |
Exemplo
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"
}'Resposta de sucesso (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 da resposta
| Campo | Tipo | Descrição |
|---|---|---|
short_id | string | ID do LiveDoc |
name | string | Nome do LiveDoc |
description | string | Descrição do LiveDoc |
icon | string | Ícone do LiveDoc |
created_at | string | Timestamp de criação (ISO 8601) |
modified_at | string | Timestamp da última modificação (ISO 8601) |
is_shared | boolean | Se este LiveDoc é compartilhado com o usuário atual (ou seja, não pertence a ele) |
2. Listar LiveDocs
Endpoint
GET https://openapi.felo.ai/v2/livedocsParâmetros de consulta
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
keyword | string | Não | Filtrar por palavra-chave |
page | integer | Não | Número da página (começando em 1) |
size | integer | Não | Tamanho da página |
Exemplo
curl 'https://openapi.felo.ai/v2/livedocs?keyword=AI&page=1&size=20' \
-H 'Authorization: Bearer YOUR_API_KEY'Resposta de sucesso (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 da resposta
Cada item em items contém os mesmos campos da resposta de criação do LiveDoc, além de:
| Campo | Tipo | Descrição |
|---|---|---|
readme | object | null | Informações do README. null se não houver README. |
readme.summary | string | null | Descrição do projeto em uma linha |
readme.content | string | null | Conteúdo do README (Markdown) |
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}Corpo da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Não | Novo nome do LiveDoc |
description | string | Não | Nova descrição do LiveDoc |
Exemplo
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"
}'Resposta de sucesso (200)
Retorna o objeto LiveDoc atualizado (mesma estrutura da criação).
4. Excluir LiveDoc
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}Exemplo
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3' \
-H 'Authorization: Bearer YOUR_API_KEY'Resposta de sucesso (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 | Obrigatório | Descrição |
|---|---|---|---|
resource_types | string[] | Não | Filtrar por tipos de recurso |
page | integer | Não | Número da página (começando em 1) |
size | integer | Não | Tamanho da página |
Exemplo
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources?page=1&size=20' \
-H 'Authorization: Bearer YOUR_API_KEY'Resposta de sucesso (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 da resposta de recurso
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID do recurso |
title | string | Título do recurso |
link | string | Link/URL do recurso |
snippet | string | Resumo do recurso |
thumbnail | string | URL da miniatura |
resource_type | string | Tipo de recurso (por exemplo, web, ai_doc, file) |
resource_key | string | Chave de associação do recurso |
status | string | Status do recurso |
source | string | Origem do recurso |
created_at | string | Timestamp de criação (ISO 8601) |
modified_at | string | Timestamp da última modificação (ISO 8601) |
6. Obter um recurso
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}Exemplo
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001' \
-H 'Authorization: Bearer YOUR_API_KEY'Resposta de sucesso (200)
Retorna um único objeto de recurso (mesma estrutura dos itens em Listar recursos).
7. Atualizar recurso
Atualize o title, o snippet ou o thumbnail de um recurso. Apenas os campos informados são atualizados; os campos omitidos mantêm os valores atuais.
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}Corpo da requisição
Todos os campos são opcionais.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
title | string | Não | Novo título do recurso (máximo de 500 caracteres) |
snippet | string | Não | Novo resumo do recurso (máximo de 2000 caracteres) |
thumbnail | string | Não | Nova URL da miniatura (máximo de 2000 caracteres) |
Exemplo
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."
}'Resposta de sucesso (200)
Retorna o objeto de recurso atualizado (mesma estrutura dos itens em Listar recursos).
8. Atualizar o conteúdo do recurso
Atualize o conteúdo Markdown de um recurso ai_doc. Suportado apenas para recursos com resource_type == ai_doc. O campo snippet é atualizado automaticamente a partir dos primeiros 2000 bytes do novo conteúdo.
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}/contentCorpo da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
content | string | Sim | Novo conteúdo Markdown do recurso |
Exemplo
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."
}'Resposta de sucesso (200)
Retorna o objeto de recurso atualizado (mesma estrutura dos itens em Listar recursos).
9. Criar recurso de documento
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/docCorpo da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
title | string | Não | Título do documento (o padrão é "New Document") |
content | string | Sim | Conteúdo do documento |
Exemplo
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..."
}'Resposta de sucesso (200)
Retorna o objeto de recurso criado.
10. Enviar arquivo como documento
Envie um arquivo e converta-o em um recurso de documento (tipo ai_doc).
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/upload-docContent-Type
multipart/form-data
Partes da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
file | file | Sim | O arquivo a enviar |
title | string | Não | Título do documento |
Exemplo
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'Resposta de sucesso (200)
Retorna o objeto de recurso criado.
11. Enviar arquivo como recurso
Envie um arquivo e mantenha o formato original.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/uploadContent-Type
multipart/form-data
Partes da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
file | file | Sim | O arquivo a enviar |
Exemplo
curl -X POST 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/upload' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-F '[email protected]'Resposta de sucesso (200)
Retorna o objeto de recurso criado.
12. Adicionar recursos de URL
Adicione uma ou mais URLs como recursos a um LiveDoc.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/urlsCorpo da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
urls | array | Sim | Lista de itens de URL a adicionar (1-10). Cada item pode ser uma string simples ou um objeto com url e title opcional. |
Formatos de item de URL
Cada entrada em urls pode ser:
- Uma string simples:
"https://example.com/article" - Um objeto:
{"url": "https://example.com/article", "title": "Custom Title"}
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
url | string | Sim | A URL a adicionar (5 a 2000 caracteres) |
title | string | Não | Título personalizado do recurso (máximo de 1000 caracteres). Se omitido, o título é gerado automaticamente a partir da página. |
Exemplo
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"}
]
}'Resposta de sucesso (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 do resultado de URL
| Campo | Tipo | Descrição |
|---|---|---|
url | string | A URL processada |
status | string | Status do resultado: success, failed ou existed |
fail_reason | string | Motivo da falha (null em caso de sucesso) |
resource_id | string | ID do recurso criado |
13. Excluir recurso
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}Exemplo
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001' \
-H 'Authorization: Bearer YOUR_API_KEY'Resposta de sucesso (200)
{
"status": "ok",
"message": null,
"data": null
}14. Recuperação (busca semântica)
Execute recuperação semântica nos recursos de um LiveDoc.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/retrieveCorpo da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
query | string | Sim | Conteúdo da consulta para busca semântica |
resource_ids | string[] | Não | IDs específicos de recursos nos quais buscar (1-50). Se omitido, os recursos relevantes são roteados automaticamente pela consulta |
Exemplo
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"]
}'Resposta de sucesso (200)
{
"status": "ok",
"message": null,
"data": [
{
"id": "res_001",
"title": "LLM Research Paper",
"content": "Relevant content excerpt...",
"score": 0.92,
"metadata": {}
}
]
}Campos do resultado da recuperação
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID do recurso |
title | string | Título do recurso |
content | string | Conteúdo correspondente |
score | number | Pontuação de relevância |
metadata | object | Metadados adicionais |
15. Roteamento de recursos
Encaminhe os recursos relevantes de um LiveDoc com base em uma consulta. Retorna uma lista de IDs de recursos que podem ser passados ao endpoint de recuperação.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/routeCorpo da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
query | string | Sim | Conteúdo da consulta para roteamento |
max_resources | integer | Não | Número máximo de IDs de recursos a retornar |
Exemplo
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
}'Resposta de sucesso (200)
{
"status": "ok",
"message": null,
"data": ["res_001", "res_003", "res_007"]
}16. Baixar o arquivo de origem do recurso
Obtenha o arquivo de origem de um recurso. Retorna um redirecionamento 302 para a URL de download pré-assinada.
Suportado apenas para recursos que têm um arquivo de origem associado (por exemplo, documentos enviados).
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}/downloadParâmetros de consulta
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
expires_in | integer | Não | Expiração da URL em segundos (padrão: 3600) |
Exemplo
curl -L 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001/download' \
-H 'Authorization: Bearer YOUR_API_KEY'Resposta
Retorna 302 Found com um cabeçalho Location apontando para a URL de download pré-assinada do S3. Clientes HTTP com suporte a redirecionamento (por exemplo, curl -L) seguirão o redirecionamento e baixarão o arquivo diretamente.
17. Obter o conteúdo do recurso
Obtenha o conteúdo de texto extraído de um recurso. Suportado para a maioria dos tipos de recurso (document, web, video, ai_doc, ai_ppt, text, voice, mindmap etc.). Retorna 400 para tipos não suportados, como image.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}/contentExemplo
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001/content' \
-H 'Authorization: Bearer YOUR_API_KEY'Resposta de sucesso (200)
{
"status": "ok",
"message": null,
"data": {
"title": "Q4 Financial Report",
"type": "document",
"content": "Full extracted text content of the resource..."
}
}Campos da resposta
| Campo | Tipo | Descrição |
|---|---|---|
title | string | Título do recurso |
type | string | Tipo do recurso |
content | string | Conteúdo de texto extraído |
18. Recuperação de página de PPT
Execute recuperação profunda de conteúdo em uma página específica de um recurso PPT. Extrai a página do slide e retorna trechos de conteúdo classificados. O formato da resposta é idêntico ao do endpoint Recuperação.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/ppt-retrieveCorpo da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
resource_id | string | Sim | ID do recurso PPT |
page_number | integer | Sim | Número da página a recuperar (começa em 1) |
query | string | Sim | Conteúdo da consulta descrevendo o que procurar |
max_chunk | integer | Não | Número máximo de trechos a retornar (padrão: 3) |
Exemplo
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
}'Resposta de sucesso (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 da resposta
O mesmo que Campos do resultado da recuperação.
Códigos de erro
| Código | Status HTTP | Descrição |
|---|---|---|
UNAUTHORIZED | 401 | A chave de API é inválida ou foi revogada |
LIVEDOC_CREATE_FAILED | 502 | Falha ao criar o LiveDoc |
LIVEDOC_UPDATE_FAILED | 502 | Falha ao atualizar o LiveDoc |
LIVEDOC_DELETE_FAILED | 502 | Falha ao excluir o LiveDoc |
LIVEDOC_NOT_FOUND | 404 | LiveDoc não encontrado |
LIVEDOC_LIST_FAILED | 502 | Falha ao listar os LiveDocs |
LIVEDOC_RESOURCE_CREATE_FAILED | 502 | Falha ao criar o recurso |
LIVEDOC_RESOURCE_UPLOAD_FAILED | 502 | Falha ao enviar o recurso |
LIVEDOC_RESOURCE_DELETE_FAILED | 502 | Falha ao excluir o recurso |
LIVEDOC_RESOURCE_NOT_FOUND | 404 | Recurso não encontrado |
LIVEDOC_RESOURCE_LIST_FAILED | 502 | Falha ao listar os recursos |
LIVEDOC_RESOURCE_RETRIEVE_FAILED | 502 | Falha ao recuperar os recursos |
LIVEDOC_RESOURCE_ADD_URLS_FAILED | 502 | Falha ao adicionar recursos de URL |
19. Obter README
Obtenha o conteúdo do README de um LiveDoc. Retorna uma string vazia se nenhum README foi definido.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/readmeExemplo
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/readme' \
-H 'Authorization: Bearer YOUR_API_KEY'Resposta de sucesso (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 da resposta
| Campo | Tipo | Descrição |
|---|---|---|
summary | string | null | Descrição do projeto em uma linha. Máximo de 2000 caracteres. |
content | string | Conteúdo do README (Markdown). String vazia se não definido. |
20. Criar ou atualizar README
Crie ou atualize o README de um LiveDoc (semântica de upsert).
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}/readmeCorpo da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
summary | string | Não | Descrição do projeto em uma linha (máximo de 2000 caracteres) |
content | string | Não | Conteúdo do README (Markdown) |
Observação: é necessário informar pelo menos
summaryoucontent.
Exemplo
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."
}'Resposta de sucesso (200)
Retorna o objeto README atualizado (mesma estrutura de Obter README).
21. Acrescentar ao README
Acrescente conteúdo ao final de um README existente. Se não existir README, cria um novo com o conteúdo fornecido.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/readme/appendCorpo da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
content | string | Sim | Conteúdo a acrescentar (Markdown) |
Exemplo
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."
}'Resposta de sucesso (200)
Retorna o objeto README completo após o acréscimo (mesma estrutura de Obter README).
22. Excluir README
Exclua o README de um LiveDoc.
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}/readmeExemplo
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/readme' \
-H 'Authorization: Bearer YOUR_API_KEY'Resposta de sucesso (200)
{
"status": "ok",
"message": null,
"data": null
}23. Listar tarefas
Obtenha uma lista paginada de tarefas de um LiveDoc. Os resultados são ordenados por sort crescente, status crescente e created_at decrescente.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/tasksParâmetros de consulta
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
status | integer | Não | Filtrar por status: 0=TODO, 1=IN_PROGRESS, 2=DONE |
labels | string[] | Não | Filtrar por rótulos (as tarefas devem conter todos os rótulos especificados) |
page | integer | Não | Número da página (começando em 1) |
size | integer | Não | Tamanho da página |
Exemplo
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks?status=0&page=1&size=20' \
-H 'Authorization: Bearer YOUR_API_KEY'Resposta de sucesso (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 da resposta de tarefa
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID da tarefa (UUID) |
title | string | Título da tarefa |
description | string | Descrição da tarefa |
status | integer | Status da tarefa: 0=TODO, 1=IN_PROGRESS, 2=DONE |
sort | integer | Ordem de classificação (não negativa) |
labels | string[] | Lista de rótulos |
operated_by | string | Assinatura do operador, por exemplo claude-code, openclaw |
created_at | string | Timestamp de criação (ISO 8601) |
modified_at | string | Timestamp da última modificação (ISO 8601) |
24. Criar tarefa
Crie uma nova tarefa em um LiveDoc.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/tasksCorpo da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
title | string | Sim | Título da tarefa |
description | string | Não | Descrição da tarefa |
status | integer | Sim | Status da tarefa: 0=TODO, 1=IN_PROGRESS, 2=DONE |
sort | integer | Sim | Ordem de classificação (inteiro não negativo) |
labels | string[] | Não | Lista de rótulos (máximo de 10, cada um com no máximo 50 caracteres) |
operated_by | string | Não | Assinatura do operador, por exemplo claude-code, openclaw (máximo de 100 caracteres) |
Exemplo
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"]
}'Resposta de sucesso (200)
Retorna o objeto de tarefa criado (mesma estrutura dos itens em Listar tarefas).
25. Atualizar tarefa
Atualize parcialmente uma tarefa. Apenas os campos informados são atualizados; os campos omitidos mantêm os valores atuais.
Endpoint
PATCH https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}Corpo da requisição
Todos os campos são opcionais.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
title | string | Não | Novo título da tarefa |
description | string | Não | Nova descrição da tarefa |
status | integer | Não | Novo status: 0=TODO, 1=IN_PROGRESS, 2=DONE |
sort | integer | Não | Nova ordem de classificação (não negativa) |
labels | string[] | Não | Nova lista de rótulos (máximo de 10, cada um com no máximo 50 caracteres) |
operated_by | string | Não | Assinatura do operador, por exemplo claude-code, openclaw (máximo de 100 caracteres) |
Exemplo
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
}'Resposta de sucesso (200)
Retorna o objeto de tarefa atualizado (mesma estrutura dos itens em Listar tarefas).
26. Excluir tarefa
Exclui uma tarefa com exclusão lógica.
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}Exemplo
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks/550e8400-e29b-41d4-a716-446655440000' \
-H 'Authorization: Bearer YOUR_API_KEY'Resposta de sucesso (200)
{
"status": "ok",
"message": null,
"data": null
}27. Listar registros de tarefa
Obtenha uma lista paginada de registros de uma tarefa (comentários e histórico de alterações), ordenados por created_at crescente.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}/recordsParâmetros de consulta
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
record_type | string | Não | Filtrar por tipo de registro: comment, edit, status_change |
page | integer | Não | Número da página (começando em 1) |
size | integer | Não | Tamanho da página |
Exemplo
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks/550e8400-e29b-41d4-a716-446655440000/records' \
-H 'Authorization: Bearer YOUR_API_KEY'Resposta de sucesso (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 da resposta de registro de tarefa
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID do registro |
record_type | string | Tipo de registro: comment / edit / status_change |
content | string | Texto do comentário (apenas para o tipo comment) |
meta | object | Detalhes da alteração (para os tipos edit e status_change) |
task_id | string | ID da tarefa pai |
operated_by | string | Assinatura do operador, por exemplo claude-code, openclaw |
created_at | string | Timestamp de criação (ISO 8601) |
modified_at | string | Timestamp da última modificação (ISO 8601) |
28. Adicionar comentário à tarefa
Adicione um comentário a uma tarefa.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}/commentsCorpo da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
content | string | Sim | Conteúdo do comentário |
operated_by | string | Não | Assinatura do operador, por exemplo claude-code, openclaw (máximo de 100 caracteres) |
Exemplo
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."
}'Resposta de sucesso (200)
Retorna o objeto de registro criado (mesma estrutura dos itens em Listar registros de tarefa).
Códigos de erro (atualizado)
| Código | Status HTTP | Descrição |
|---|---|---|
UNAUTHORIZED | 401 | A chave de API é inválida ou foi revogada |
LIVEDOC_CREATE_FAILED | 502 | Falha ao criar o LiveDoc |
LIVEDOC_UPDATE_FAILED | 502 | Falha ao atualizar o LiveDoc |
LIVEDOC_DELETE_FAILED | 502 | Falha ao excluir o LiveDoc |
LIVEDOC_NOT_FOUND | 404 | LiveDoc não encontrado |
LIVEDOC_LIST_FAILED | 502 | Falha ao listar os LiveDocs |
LIVEDOC_RESOURCE_CREATE_FAILED | 502 | Falha ao criar o recurso |
LIVEDOC_RESOURCE_UPLOAD_FAILED | 502 | Falha ao enviar o recurso |
LIVEDOC_RESOURCE_DELETE_FAILED | 502 | Falha ao excluir o recurso |
LIVEDOC_RESOURCE_NOT_FOUND | 404 | Recurso não encontrado |
LIVEDOC_RESOURCE_LIST_FAILED | 502 | Falha ao listar os recursos |
LIVEDOC_RESOURCE_RETRIEVE_FAILED | 502 | Falha ao recuperar os recursos |
LIVEDOC_RESOURCE_ADD_URLS_FAILED | 502 | Falha ao adicionar recursos de URL |
LIVEDOC_README_GET_FAILED | 502 | Falha ao obter o README |
LIVEDOC_README_UPDATE_FAILED | 502 | Falha ao criar ou atualizar o README |
LIVEDOC_README_DELETE_FAILED | 502 | Falha ao excluir o README |
LIVEDOC_README_NOT_FOUND | 404 | README não encontrado |
LIVEDOC_TASK_LIST_FAILED | 502 | Falha ao listar as tarefas |
LIVEDOC_TASK_CREATE_FAILED | 502 | Falha ao criar a tarefa |
LIVEDOC_TASK_UPDATE_FAILED | 502 | Falha ao atualizar a tarefa |
LIVEDOC_TASK_DELETE_FAILED | 502 | Falha ao excluir a tarefa |
LIVEDOC_TASK_NOT_FOUND | 404 | Tarefa não encontrada |
LIVEDOC_TASK_RECORD_LIST_FAILED | 502 | Falha ao listar os registros da tarefa |
LIVEDOC_TASK_COMMENT_CREATE_FAILED | 502 | Falha ao criar o comentário da tarefa |