Felo APIs
LiveDoc API
Créez des bases de connaissances, gérez les ressources et exécutez la recherche sémantique et le routage.
/v2/livedocsAuthentification
Bearer API key
Type de contenu
application/json or multipart/form-data
Notes sur les limites
Des limites propres à l'endpoint peuvent s'appliquer.
L'API LiveDoc fournit des opérations CRUD complètes sur les LiveDocs et leurs ressources, y compris la création de documents, l'import de fichiers, l'import d'URL et la récupération sémantique.
Authentification
Toutes les requêtes nécessitent une clé API dans l'en-tête Authorization :
Authorization: Bearer YOUR_API_KEYUtilisation avec des agents IA
Installez le paquet complet felo-ai pour fournir à un agent la prise en charge des LiveDocs et tous les autres Felo Skills disponibles. L'installateur découvre dynamiquement chaque répertoire de paquet contenant SKILL.md, y compris les ajouts futurs au paquet. Installez tous les Skills découverts dans le répertoire natif de votre agent : Codex ~/.codex/skills, Claude Code ~/.claude/skills, OpenClaw ~/.agents/skills ou Hermes Agent ~/.hermes/skills. Le guide d'installation manuelle des agents IA détaille les étapes de clé API et de vérification propres à chaque plateforme.
1. Créer un LiveDoc
Endpoint
POST https://openapi.felo.ai/v2/livedocsCorps de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
name | string | Oui | Nom du LiveDoc |
description | string | Non | Description du LiveDoc |
icon | string | Non | Icône du LiveDoc |
Exemple
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"
}'Réponse de succès (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"
}
}Champs de réponse
| Champ | Type | Description |
|---|---|---|
short_id | string | ID du LiveDoc |
name | string | Nom du LiveDoc |
description | string | Description du LiveDoc |
icon | string | Icône du LiveDoc |
created_at | string | Horodatage de création (ISO 8601) |
modified_at | string | Horodatage de la dernière modification (ISO 8601) |
is_shared | boolean | Indique si ce LiveDoc est partagé avec l'utilisateur actuel (sans lui appartenir) |
2. Lister les LiveDocs
Endpoint
GET https://openapi.felo.ai/v2/livedocsParamètres de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
keyword | string | Non | Filtrer par mot-clé |
page | integer | Non | Numéro de page (à partir de 1) |
size | integer | Non | Taille de page |
Exemple
curl 'https://openapi.felo.ai/v2/livedocs?keyword=AI&page=1&size=20' \
-H 'Authorization: Bearer YOUR_API_KEY'Réponse de succès (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..."
}
}
]
}
}Champs de réponse
Chaque élément de items contient les mêmes champs que la réponse de création d'un LiveDoc, plus :
| Champ | Type | Description |
|---|---|---|
readme | object | null | Informations du README. null si aucun README n'existe. |
readme.summary | string | null | Description du projet en une ligne |
readme.content | string | null | Contenu du README (Markdown) |
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}Corps de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
name | string | Non | Nouveau nom du LiveDoc |
description | string | Non | Nouvelle description du LiveDoc |
Exemple
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"
}'Réponse de succès (200)
Renvoie l'objet LiveDoc mis à jour (même structure que la création).
4. Supprimer un LiveDoc
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}Exemple
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3' \
-H 'Authorization: Bearer YOUR_API_KEY'Réponse de succès (200)
{
"status": "ok",
"message": null,
"data": null
}5. Lister les ressources
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/resourcesParamètres de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
resource_types | string[] | Non | Filtrer par types de ressources |
page | integer | Non | Numéro de page (à partir de 1) |
size | integer | Non | Taille de page |
Exemple
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources?page=1&size=20' \
-H 'Authorization: Bearer YOUR_API_KEY'Réponse de succès (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"
}
]
}
}Champs de réponse d'une ressource
| Champ | Type | Description |
|---|---|---|
id | string | ID de la ressource |
title | string | Titre de la ressource |
link | string | Lien ou URL de la ressource |
snippet | string | Résumé de la ressource |
thumbnail | string | URL de la vignette |
resource_type | string | Type de ressource (par exemple web, ai_doc, file) |
resource_key | string | Clé d'association de la ressource |
status | string | Statut de la ressource |
source | string | Source de la ressource |
created_at | string | Horodatage de création (ISO 8601) |
modified_at | string | Horodatage de la dernière modification (ISO 8601) |
6. Obtenir une ressource unique
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}Exemple
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001' \
-H 'Authorization: Bearer YOUR_API_KEY'Réponse de succès (200)
Renvoie un objet ressource unique (même structure que les éléments de la liste des ressources).
7. Mettre à jour une ressource
Mettez à jour le title, le snippet ou la thumbnail d'une ressource. Seuls les champs fournis sont modifiés ; les champs omis conservent leur valeur actuelle.
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}Corps de requête
Tous les champs sont facultatifs.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
title | string | Non | Nouveau titre de la ressource (500 caractères maximum) |
snippet | string | Non | Nouveau résumé de la ressource (2000 caractères maximum) |
thumbnail | string | Non | Nouvelle URL de vignette (2000 caractères maximum) |
Exemple
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."
}'Réponse de succès (200)
Renvoie l'objet ressource mis à jour (même structure que les éléments de la liste des ressources).
8. Mettre à jour le contenu d'une ressource
Mettez à jour le contenu Markdown d'une ressource ai_doc. Pris en charge uniquement pour les ressources dont resource_type == ai_doc. Le champ snippet est automatiquement mis à jour à partir des 2000 premiers octets du nouveau contenu.
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}/contentCorps de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
content | string | Oui | Nouveau contenu Markdown de la ressource |
Exemple
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."
}'Réponse de succès (200)
Renvoie l'objet ressource mis à jour (même structure que les éléments de la liste des ressources).
9. Créer une ressource document
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/docCorps de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
title | string | Non | Titre du document (par défaut New Document) |
content | string | Oui | Contenu du document |
Exemple
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..."
}'Réponse de succès (200)
Renvoie l'objet ressource créé.
10. Importer un fichier comme document
Importez un fichier et convertissez-le en ressource document (type ai_doc).
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/upload-docContent-Type
multipart/form-data
Parties de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
file | file | Oui | Le fichier à importer |
title | string | Non | Titre du document |
Exemple
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'Réponse de succès (200)
Renvoie l'objet ressource créé.
11. Importer un fichier comme ressource
Importez un fichier en conservant son format d'origine.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/uploadContent-Type
multipart/form-data
Parties de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
file | file | Oui | Le fichier à importer |
Exemple
curl -X POST 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/upload' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-F '[email protected]'Réponse de succès (200)
Renvoie l'objet ressource créé.
12. Ajouter des ressources URL
Ajoutez une ou plusieurs URL comme ressources à un LiveDoc.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/urlsCorps de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
urls | array | Oui | Liste des URL à ajouter (1 à 10). Chaque élément peut être une chaîne simple ou un objet avec url et un title facultatif. |
Formats d'élément URL
Chaque entrée de urls peut être :
- Une chaîne simple :
"https://example.com/article" - Un objet :
{"url": "https://example.com/article", "title": "Custom Title"}
| Champ | Type | Requis | Description |
|---|---|---|---|
url | string | Oui | L'URL à ajouter (5 à 2000 caractères) |
title | string | Non | Titre personnalisé de la ressource (1000 caractères maximum). S'il est omis, le titre est généré automatiquement à partir de la page. |
Exemple
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"}
]
}'Réponse de succès (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"
}
]
}Champs de résultat URL
| Champ | Type | Description |
|---|---|---|
url | string | L'URL traitée |
status | string | Statut du résultat : success, failed ou existed |
fail_reason | string | Raison de l'échec (null en cas de succès) |
resource_id | string | ID de la ressource créée |
13. Supprimer une ressource
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}Exemple
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001' \
-H 'Authorization: Bearer YOUR_API_KEY'Réponse de succès (200)
{
"status": "ok",
"message": null,
"data": null
}14. Récupération (recherche sémantique)
Effectuez une récupération sémantique sur les ressources d'un LiveDoc.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/retrieveCorps de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
query | string | Oui | Contenu de la requête pour la recherche sémantique |
resource_ids | string[] | Non | ID de ressources spécifiques dans lesquelles chercher (1 à 50). S'il est omis, les ressources pertinentes sont routées automatiquement selon la requête |
Exemple
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"]
}'Réponse de succès (200)
{
"status": "ok",
"message": null,
"data": [
{
"id": "res_001",
"title": "LLM Research Paper",
"content": "Relevant content excerpt...",
"score": 0.92,
"metadata": {}
}
]
}Champs de résultat de récupération
| Champ | Type | Description |
|---|---|---|
id | string | ID de la ressource |
title | string | Titre de la ressource |
content | string | Contenu correspondant |
score | number | Score de pertinence |
metadata | object | Métadonnées supplémentaires |
15. Router les ressources
Routez les ressources pertinentes d'un LiveDoc selon une requête. Renvoie une liste d'ID de ressources à transmettre à l'endpoint de récupération.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/routeCorps de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
query | string | Oui | Contenu de la requête pour le routage |
max_resources | integer | Non | Nombre maximal d'ID de ressources à renvoyer |
Exemple
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
}'Réponse de succès (200)
{
"status": "ok",
"message": null,
"data": ["res_001", "res_003", "res_007"]
}16. Télécharger le fichier source d'une ressource
Obtenez le fichier source d'une ressource. Renvoie une redirection 302 vers l'URL de téléchargement présignée.
Pris en charge uniquement pour les ressources associées à un fichier source (par exemple les documents importés).
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}/downloadParamètres de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
expires_in | integer | Non | Expiration de l'URL en secondes (par défaut : 3600) |
Exemple
curl -L 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001/download' \
-H 'Authorization: Bearer YOUR_API_KEY'Réponse
Renvoie 302 Found avec un en-tête Location pointant vers l'URL de téléchargement S3 présignée. Les clients HTTP prenant en charge les redirections (par exemple curl -L) suivent la redirection et téléchargent le fichier directement.
17. Obtenir le contenu d'une ressource
Récupérez le contenu textuel extrait d'une ressource. Pris en charge pour la plupart des types de ressources (document, web, vidéo, ai_doc, ai_ppt, texte, voix, mindmap, etc.). Renvoie 400 pour les types non pris en charge, comme image.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}/contentExemple
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001/content' \
-H 'Authorization: Bearer YOUR_API_KEY'Réponse de succès (200)
{
"status": "ok",
"message": null,
"data": {
"title": "Q4 Financial Report",
"type": "document",
"content": "Full extracted text content of the resource..."
}
}Champs de réponse
| Champ | Type | Description |
|---|---|---|
title | string | Titre de la ressource |
type | string | Type de ressource |
content | string | Contenu textuel extrait |
18. Récupération sur une page PPT
Effectuez une récupération de contenu approfondie sur une page spécifique d'une ressource PPT. La page de la diapositive est analysée et des blocs de contenu classés sont renvoyés. Le format de réponse est identique à celui de l'endpoint Récupération.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/ppt-retrieveCorps de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
resource_id | string | Oui | ID de la ressource PPT |
page_number | integer | Oui | Numéro de page à récupérer (à partir de 1) |
query | string | Oui | Contenu de la requête décrivant ce que vous cherchez |
max_chunk | integer | Non | Nombre maximal de blocs à renvoyer (par défaut : 3) |
Exemple
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
}'Réponse de succès (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
}
}
]
}Champs de réponse
Identiques aux champs de résultat de récupération.
Codes d'erreur
| Code | Statut HTTP | Description |
|---|---|---|
UNAUTHORIZED | 401 | La clé API est invalide ou révoquée |
LIVEDOC_CREATE_FAILED | 502 | Échec de la création du LiveDoc |
LIVEDOC_UPDATE_FAILED | 502 | Échec de la mise à jour du LiveDoc |
LIVEDOC_DELETE_FAILED | 502 | Échec de la suppression du LiveDoc |
LIVEDOC_NOT_FOUND | 404 | LiveDoc introuvable |
LIVEDOC_LIST_FAILED | 502 | Échec de la liste des LiveDocs |
LIVEDOC_RESOURCE_CREATE_FAILED | 502 | Échec de la création de la ressource |
LIVEDOC_RESOURCE_UPLOAD_FAILED | 502 | Échec de l'import de la ressource |
LIVEDOC_RESOURCE_DELETE_FAILED | 502 | Échec de la suppression de la ressource |
LIVEDOC_RESOURCE_NOT_FOUND | 404 | Ressource introuvable |
LIVEDOC_RESOURCE_LIST_FAILED | 502 | Échec de la liste des ressources |
LIVEDOC_RESOURCE_RETRIEVE_FAILED | 502 | Échec de la récupération des ressources |
LIVEDOC_RESOURCE_ADD_URLS_FAILED | 502 | Échec de l'ajout des ressources URL |
19. Obtenir le README
Obtenez le contenu du README d'un LiveDoc. Renvoie une chaîne vide si aucun README n'a été défini.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/readmeExemple
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/readme' \
-H 'Authorization: Bearer YOUR_API_KEY'Réponse de succès (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."
}
}Champs de réponse
| Champ | Type | Description |
|---|---|---|
summary | string | null | Description du projet en une ligne. 2000 caractères maximum. |
content | string | Contenu du README (Markdown). Chaîne vide s'il n'est pas défini. |
20. Créer ou mettre à jour le README
Créez ou mettez à jour le README d'un LiveDoc (sémantique d'upsert).
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}/readmeCorps de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
summary | string | Non | Description du projet en une ligne (2000 caractères maximum) |
content | string | Non | Contenu du README (Markdown) |
Remarque : au moins l'un de
summaryoucontentdoit être fourni.
Exemple
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."
}'Réponse de succès (200)
Renvoie l'objet README mis à jour (même structure que pour l'obtention du README).
21. Ajouter du contenu au README
Ajoutez du contenu à la fin d'un README existant. Si aucun README n'existe, un nouveau est créé avec le contenu fourni.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/readme/appendCorps de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
content | string | Oui | Contenu à ajouter (Markdown) |
Exemple
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."
}'Réponse de succès (200)
Renvoie l'objet README complet après l'ajout (même structure que pour l'obtention du README).
22. Supprimer le README
Supprimez le README d'un LiveDoc.
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}/readmeExemple
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/readme' \
-H 'Authorization: Bearer YOUR_API_KEY'Réponse de succès (200)
{
"status": "ok",
"message": null,
"data": null
}23. Lister les tâches
Obtenez une liste paginée des tâches d'un LiveDoc. Les résultats sont triés par sort croissant, status croissant, puis created_at décroissant.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/tasksParamètres de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
status | integer | Non | Filtrer par statut : 0=TODO, 1=IN_PROGRESS, 2=DONE |
labels | string[] | Non | Filtrer par étiquettes (les tâches doivent contenir toutes les étiquettes indiquées) |
page | integer | Non | Numéro de page (à partir de 1) |
size | integer | Non | Taille de page |
Exemple
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks?status=0&page=1&size=20' \
-H 'Authorization: Bearer YOUR_API_KEY'Réponse de succès (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"
}
]
}
}Champs de réponse d'une tâche
| Champ | Type | Description |
|---|---|---|
id | string | ID de la tâche (UUID) |
title | string | Titre de la tâche |
description | string | Description de la tâche |
status | integer | Statut de la tâche : 0=TODO, 1=IN_PROGRESS, 2=DONE |
sort | integer | Ordre de tri (non négatif) |
labels | string[] | Liste d'étiquettes |
operated_by | string | Signature de l'opérateur, par exemple claude-code, openclaw |
created_at | string | Horodatage de création (ISO 8601) |
modified_at | string | Horodatage de la dernière modification (ISO 8601) |
24. Créer une tâche
Créez une nouvelle tâche dans un LiveDoc.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/tasksCorps de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
title | string | Oui | Titre de la tâche |
description | string | Non | Description de la tâche |
status | integer | Oui | Statut de la tâche : 0=TODO, 1=IN_PROGRESS, 2=DONE |
sort | integer | Oui | Ordre de tri (entier non négatif) |
labels | string[] | Non | Liste d'étiquettes (10 maximum, 50 caractères chacune au maximum) |
operated_by | string | Non | Signature de l'opérateur, par exemple claude-code, openclaw (100 caractères maximum) |
Exemple
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"]
}'Réponse de succès (200)
Renvoie l'objet tâche créé (même structure que les éléments de la liste des tâches).
25. Mettre à jour une tâche
Mettez partiellement à jour une tâche. Seuls les champs fournis sont modifiés ; les champs omis conservent leur valeur actuelle.
Endpoint
PATCH https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}Corps de requête
Tous les champs sont facultatifs.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
title | string | Non | Nouveau titre de la tâche |
description | string | Non | Nouvelle description de la tâche |
status | integer | Non | Nouveau statut : 0=TODO, 1=IN_PROGRESS, 2=DONE |
sort | integer | Non | Nouvel ordre de tri (non négatif) |
labels | string[] | Non | Nouvelle liste d'étiquettes (10 maximum, 50 caractères chacune au maximum) |
operated_by | string | Non | Signature de l'opérateur, par exemple claude-code, openclaw (100 caractères maximum) |
Exemple
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
}'Réponse de succès (200)
Renvoie l'objet tâche mis à jour (même structure que les éléments de la liste des tâches).
26. Supprimer une tâche
Supprimez une tâche en douceur (soft delete).
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}Exemple
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks/550e8400-e29b-41d4-a716-446655440000' \
-H 'Authorization: Bearer YOUR_API_KEY'Réponse de succès (200)
{
"status": "ok",
"message": null,
"data": null
}27. Lister les enregistrements d'une tâche
Obtenez une liste paginée des enregistrements d'une tâche (commentaires et historique des modifications), triés par created_at croissant.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}/recordsParamètres de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
record_type | string | Non | Filtrer par type d'enregistrement : comment, edit, status_change |
page | integer | Non | Numéro de page (à partir de 1) |
size | integer | Non | Taille de page |
Exemple
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks/550e8400-e29b-41d4-a716-446655440000/records' \
-H 'Authorization: Bearer YOUR_API_KEY'Réponse de succès (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"
}
]
}
}Champs de réponse d'un enregistrement de tâche
| Champ | Type | Description |
|---|---|---|
id | string | ID de l'enregistrement |
record_type | string | Type d'enregistrement : comment / edit / status_change |
content | string | Texte du commentaire (uniquement pour le type comment) |
meta | object | Détails de la modification (pour les types edit et status_change) |
task_id | string | ID de la tâche parente |
operated_by | string | Signature de l'opérateur, par exemple claude-code, openclaw |
created_at | string | Horodatage de création (ISO 8601) |
modified_at | string | Horodatage de la dernière modification (ISO 8601) |
28. Ajouter un commentaire à une tâche
Ajoutez un commentaire à une tâche.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}/commentsCorps de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
content | string | Oui | Contenu du commentaire |
operated_by | string | Non | Signature de l'opérateur, par exemple claude-code, openclaw (100 caractères maximum) |
Exemple
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."
}'Réponse de succès (200)
Renvoie l'objet enregistrement créé (même structure que les éléments de la liste des enregistrements d'une tâche).
Codes d'erreur (mis à jour)
| Code | Statut HTTP | Description |
|---|---|---|
UNAUTHORIZED | 401 | La clé API est invalide ou révoquée |
LIVEDOC_CREATE_FAILED | 502 | Échec de la création du LiveDoc |
LIVEDOC_UPDATE_FAILED | 502 | Échec de la mise à jour du LiveDoc |
LIVEDOC_DELETE_FAILED | 502 | Échec de la suppression du LiveDoc |
LIVEDOC_NOT_FOUND | 404 | LiveDoc introuvable |
LIVEDOC_LIST_FAILED | 502 | Échec de la liste des LiveDocs |
LIVEDOC_RESOURCE_CREATE_FAILED | 502 | Échec de la création de la ressource |
LIVEDOC_RESOURCE_UPLOAD_FAILED | 502 | Échec de l'import de la ressource |
LIVEDOC_RESOURCE_DELETE_FAILED | 502 | Échec de la suppression de la ressource |
LIVEDOC_RESOURCE_NOT_FOUND | 404 | Ressource introuvable |
LIVEDOC_RESOURCE_LIST_FAILED | 502 | Échec de la liste des ressources |
LIVEDOC_RESOURCE_RETRIEVE_FAILED | 502 | Échec de la récupération des ressources |
LIVEDOC_RESOURCE_ADD_URLS_FAILED | 502 | Échec de l'ajout des ressources URL |
LIVEDOC_README_GET_FAILED | 502 | Échec de l'obtention du README |
LIVEDOC_README_UPDATE_FAILED | 502 | Échec de la création ou de la mise à jour du README |
LIVEDOC_README_DELETE_FAILED | 502 | Échec de la suppression du README |
LIVEDOC_README_NOT_FOUND | 404 | README introuvable |
LIVEDOC_TASK_LIST_FAILED | 502 | Échec de la liste des tâches |
LIVEDOC_TASK_CREATE_FAILED | 502 | Échec de la création de la tâche |
LIVEDOC_TASK_UPDATE_FAILED | 502 | Échec de la mise à jour de la tâche |
LIVEDOC_TASK_DELETE_FAILED | 502 | Échec de la suppression de la tâche |
LIVEDOC_TASK_NOT_FOUND | 404 | Tâche introuvable |
LIVEDOC_TASK_RECORD_LIST_FAILED | 502 | Échec de la liste des enregistrements de tâche |
LIVEDOC_TASK_COMMENT_CREATE_FAILED | 502 | Échec de la création du commentaire de tâche |