Felo APIs
LiveDoc API
Twórz bazy wiedzy, zarządzaj zasobami i uruchamiaj wyszukiwanie semantyczne oraz routing.
/v2/livedocsUwierzytelnianie
Bearer API key
Typ zawartości
application/json or multipart/form-data
Uwagi o limitach
Mogą obowiązywać limity dla poszczególnych endpointów.
API LiveDoc zapewnia pełne operacje CRUD dla LiveDoców i ich zasobów, w tym tworzenie dokumentów, przesyłanie plików, import adresów URL i wyszukiwanie semantyczne.
Uwierzytelnianie
Wszystkie żądania wymagają klucza API w nagłówku Authorization:
Authorization: Bearer YOUR_API_KEYUżycie z agentami AI
Zainstaluj kompletny pakiet felo-ai, aby dać agentowi obsługę LiveDoc i każdy inny dostępny Felo Skill. Instalator dynamicznie wykrywa każdy katalog pakietu zawierający SKILL.md, w tym przyszłe dodatki do pakietu. Zainstaluj wszystkie wykryte Skills w natywnym katalogu agenta: Codex ~/.codex/skills, Claude Code ~/.claude/skills, OpenClaw ~/.agents/skills lub Hermes Agent ~/.hermes/skills. Podręcznik konfiguracji agenta AI opisuje odrębne kroki konfiguracji klucza API i weryfikacji dla każdej platformy.
1. Tworzenie LiveDoc
Endpoint
POST https://openapi.felo.ai/v2/livedocsTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
name | string | Tak | Nazwa LiveDoc |
description | string | Nie | Opis LiveDoc |
icon | string | Nie | Ikona LiveDoc |
Przykład
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"
}'Odpowiedź sukcesu (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"
}
}Pola odpowiedzi
| Pole | Typ | Opis |
|---|---|---|
short_id | string | Identyfikator LiveDoc |
name | string | Nazwa LiveDoc |
description | string | Opis LiveDoc |
icon | string | Ikona LiveDoc |
created_at | string | Znacznik czasu utworzenia (ISO 8601) |
modified_at | string | Znacznik czasu ostatniej modyfikacji (ISO 8601) |
is_shared | boolean | Czy ten LiveDoc jest udostępniony bieżącemu użytkownikowi (nie jest jego właścicielem) |
2. Wyświetlanie LiveDoców
Endpoint
GET https://openapi.felo.ai/v2/livedocsParametry zapytania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
keyword | string | Nie | Filtruj według słowa kluczowego |
page | integer | Nie | Numer strony (zaczynając od 1) |
size | integer | Nie | Rozmiar strony |
Przykład
curl 'https://openapi.felo.ai/v2/livedocs?keyword=AI&page=1&size=20' \
-H 'Authorization: Bearer YOUR_API_KEY'Odpowiedź sukcesu (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..."
}
}
]
}
}Pola odpowiedzi
Każdy element w items zawiera te same pola co odpowiedź Create LiveDoc, plus:
| Pole | Typ | Opis |
|---|---|---|
readme | object | null | Informacje README. null, jeśli README nie istnieje. |
readme.summary | string | null | Jednowierszowy opis projektu |
readme.content | string | null | Treść README (Markdown) |
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}Treść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
name | string | Nie | Nowa nazwa LiveDoc |
description | string | Nie | Nowy opis LiveDoc |
Przykład
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"
}'Odpowiedź sukcesu (200)
Zwraca zaktualizowany obiekt LiveDoc (ta sama struktura co przy tworzeniu).
4. Usuwanie LiveDoc
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}Przykład
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3' \
-H 'Authorization: Bearer YOUR_API_KEY'Odpowiedź sukcesu (200)
{
"status": "ok",
"message": null,
"data": null
}5. Wyświetlanie zasobów
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/resourcesParametry zapytania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
resource_types | string[] | Nie | Filtruj według typów zasobów |
page | integer | Nie | Numer strony (zaczynając od 1) |
size | integer | Nie | Rozmiar strony |
Przykład
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources?page=1&size=20' \
-H 'Authorization: Bearer YOUR_API_KEY'Odpowiedź sukcesu (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"
}
]
}
}Pola odpowiedzi zasobu
| Pole | Typ | Opis |
|---|---|---|
id | string | Identyfikator zasobu |
title | string | Tytuł zasobu |
link | string | Link/adres URL zasobu |
snippet | string | Podsumowanie zasobu |
thumbnail | string | Adres URL miniatury |
resource_type | string | Typ zasobu (np. web, ai_doc, file) |
resource_key | string | Klucz powiązania zasobu |
status | string | Stan zasobu |
source | string | Źródło zasobu |
created_at | string | Znacznik czasu utworzenia (ISO 8601) |
modified_at | string | Znacznik czasu ostatniej modyfikacji (ISO 8601) |
6. Pobieranie pojedynczego zasobu
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}Przykład
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001' \
-H 'Authorization: Bearer YOUR_API_KEY'Odpowiedź sukcesu (200)
Zwraca pojedynczy obiekt zasobu (ta sama struktura co elementy w sekcji Wyświetlanie zasobów).
7. Aktualizowanie zasobu
Zaktualizuj title, snippet lub thumbnail zasobu. Aktualizowane są tylko podane pola; pominięte pola zachowują bieżące wartości.
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}Treść żądania
Wszystkie pola są opcjonalne.
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
title | string | Nie | Nowy tytuł zasobu (maks. 500 znaków) |
snippet | string | Nie | Nowe podsumowanie zasobu (maks. 2000 znaków) |
thumbnail | string | Nie | Nowy adres URL miniatury (maks. 2000 znaków) |
Przykład
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."
}'Odpowiedź sukcesu (200)
Zwraca zaktualizowany obiekt zasobu (ta sama struktura co elementy w sekcji Wyświetlanie zasobów).
8. Aktualizowanie treści zasobu
Zaktualizuj treść Markdown zasobu ai_doc. Obsługiwane tylko dla zasobów z resource_type == ai_doc. Pole snippet jest automatycznie aktualizowane na podstawie pierwszych 2000 bajtów nowej treści.
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}/contentTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
content | string | Tak | Nowa treść Markdown zasobu |
Przykład
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."
}'Odpowiedź sukcesu (200)
Zwraca zaktualizowany obiekt zasobu (ta sama struktura co elementy w sekcji Wyświetlanie zasobów).
9. Tworzenie zasobu dokumentu
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/docTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
title | string | Nie | Tytuł dokumentu (domyślnie „New Document”) |
content | string | Tak | Treść dokumentu |
Przykład
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..."
}'Odpowiedź sukcesu (200)
Zwraca utworzony obiekt zasobu.
10. Przesyłanie pliku jako dokumentu
Prześlij plik i przekonwertuj go na zasób dokumentu (typ ai_doc).
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/upload-docContent-Type
multipart/form-data
Części żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
file | file | Tak | Plik do przesłania |
title | string | Nie | Tytuł dokumentu |
Przykład
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'Odpowiedź sukcesu (200)
Zwraca utworzony obiekt zasobu.
11. Przesyłanie pliku jako zasobu
Prześlij plik i zachowaj jego oryginalny format.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/uploadContent-Type
multipart/form-data
Części żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
file | file | Tak | Plik do przesłania |
Przykład
curl -X POST 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/upload' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-F '[email protected]'Odpowiedź sukcesu (200)
Zwraca utworzony obiekt zasobu.
12. Dodawanie zasobów URL
Dodaj jeden lub więcej adresów URL jako zasoby do LiveDoc.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/urlsTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
urls | array | Tak | Lista elementów URL do dodania (1–10). Każdy element może być zwykłym ciągiem lub obiektem z url i opcjonalnym title. |
Formaty elementów URL
Każdy wpis w urls może być:
- Zwykłym ciągiem:
"https://example.com/article" - Obiektem:
{"url": "https://example.com/article", "title": "Custom Title"}
| Pole | Typ | Wymagany | Opis |
|---|---|---|---|
url | string | Tak | Adres URL do dodania (5–2000 znaków) |
title | string | Nie | Niestandardowy tytuł zasobu (maks. 1000 znaków). Jeśli go pominiesz, tytuł zostanie wygenerowany automatycznie na podstawie strony. |
Przykład
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"}
]
}'Odpowiedź sukcesu (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"
}
]
}Pola wyniku URL
| Pole | Typ | Opis |
|---|---|---|
url | string | Przetworzony adres URL |
status | string | Stan wyniku: success, failed lub existed |
fail_reason | string | Przyczyna niepowodzenia (null, jeśli operacja się powiodła) |
resource_id | string | Identyfikator utworzonego zasobu |
13. Usuwanie zasobu
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}Przykład
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001' \
-H 'Authorization: Bearer YOUR_API_KEY'Odpowiedź sukcesu (200)
{
"status": "ok",
"message": null,
"data": null
}14. Pobieranie (wyszukiwanie semantyczne)
Wykonaj wyszukiwanie semantyczne w zasobach LiveDoc.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/retrieveTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
query | string | Tak | Treść zapytania do wyszukiwania semantycznego |
resource_ids | string[] | Nie | Konkretne identyfikatory zasobów do przeszukania (1–50). Jeśli je pominiesz, odpowiednie zasoby są automatycznie kierowane na podstawie zapytania |
Przykład
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"]
}'Odpowiedź sukcesu (200)
{
"status": "ok",
"message": null,
"data": [
{
"id": "res_001",
"title": "LLM Research Paper",
"content": "Relevant content excerpt...",
"score": 0.92,
"metadata": {}
}
]
}Pola wyniku pobierania
| Pole | Typ | Opis |
|---|---|---|
id | string | Identyfikator zasobu |
title | string | Tytuł zasobu |
content | string | Dopasowana treść |
score | number | Ocena trafności |
metadata | object | Dodatkowe metadane |
15. Kierowanie zasobów
Skieruj odpowiednie zasoby z LiveDoc na podstawie zapytania. Zwraca listę identyfikatorów zasobów, które można przekazać do endpointu pobierania.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/routeTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
query | string | Tak | Treść zapytania do kierowania |
max_resources | integer | Nie | Maksymalna liczba identyfikatorów zasobów do zwrócenia |
Przykład
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
}'Odpowiedź sukcesu (200)
{
"status": "ok",
"message": null,
"data": ["res_001", "res_003", "res_007"]
}16. Pobieranie pliku źródłowego zasobu
Pobierz plik źródłowy zasobu. Zwraca przekierowanie 302 do wstępnie podpisanego adresu URL pobierania.
Obsługiwane tylko dla zasobów, które mają powiązany plik źródłowy (np. przesłane dokumenty).
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}/downloadParametry zapytania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
expires_in | integer | Nie | Czas ważności adresu URL w sekundach (domyślnie: 3600) |
Przykład
curl -L 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001/download' \
-H 'Authorization: Bearer YOUR_API_KEY'Odpowiedź
Zwraca 302 Found z nagłówkiem Location wskazującym wstępnie podpisany adres URL pobierania z S3. Klienci HTTP obsługujący przekierowania (np. curl -L) podążą za przekierowaniem i pobiorą plik bezpośrednio.
17. Pobieranie treści zasobu
Pobierz wyodrębnioną treść tekstową zasobu. Obsługiwane dla większości typów zasobów (document, web, video, ai_doc, ai_ppt, text, voice, mindmap itd.). Zwraca 400 dla nieobsługiwanych typów, takich jak image.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}/contentPrzykład
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001/content' \
-H 'Authorization: Bearer YOUR_API_KEY'Odpowiedź sukcesu (200)
{
"status": "ok",
"message": null,
"data": {
"title": "Q4 Financial Report",
"type": "document",
"content": "Full extracted text content of the resource..."
}
}Pola odpowiedzi
| Pole | Typ | Opis |
|---|---|---|
title | string | Tytuł zasobu |
type | string | Typ zasobu |
content | string | Wyodrębniona treść tekstowa |
18. Pobieranie zawartości strony PPT
Wykonaj pogłębione wyszukiwanie treści na konkretnej stronie zasobu PPT. Zbiera zawartość strony slajdu i zwraca uszeregowane fragmenty treści. Format odpowiedzi jest identyczny jak w endpointcie Pobieranie.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/ppt-retrieveTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
resource_id | string | Tak | Identyfikator zasobu PPT |
page_number | integer | Tak | Numer strony do pobrania (zaczynając od 1) |
query | string | Tak | Treść zapytania opisująca, czego szukać |
max_chunk | integer | Nie | Maksymalna liczba fragmentów do zwrócenia (domyślnie: 3) |
Przykład
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
}'Odpowiedź sukcesu (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
}
}
]
}Pola odpowiedzi
Takie same jak Pola wyniku pobierania.
Kody błędów
| Kod | Status HTTP | Opis |
|---|---|---|
UNAUTHORIZED | 401 | Klucz API jest nieprawidłowy lub unieważniony |
LIVEDOC_CREATE_FAILED | 502 | Nie udało się utworzyć LiveDoc |
LIVEDOC_UPDATE_FAILED | 502 | Nie udało się zaktualizować LiveDoc |
LIVEDOC_DELETE_FAILED | 502 | Nie udało się usunąć LiveDoc |
LIVEDOC_NOT_FOUND | 404 | Nie znaleziono LiveDoc |
LIVEDOC_LIST_FAILED | 502 | Nie udało się wyświetlić listy LiveDoców |
LIVEDOC_RESOURCE_CREATE_FAILED | 502 | Nie udało się utworzyć zasobu |
LIVEDOC_RESOURCE_UPLOAD_FAILED | 502 | Nie udało się przesłać zasobu |
LIVEDOC_RESOURCE_DELETE_FAILED | 502 | Nie udało się usunąć zasobu |
LIVEDOC_RESOURCE_NOT_FOUND | 404 | Nie znaleziono zasobu |
LIVEDOC_RESOURCE_LIST_FAILED | 502 | Nie udało się wyświetlić listy zasobów |
LIVEDOC_RESOURCE_RETRIEVE_FAILED | 502 | Nie udało się pobrać zasobów |
LIVEDOC_RESOURCE_ADD_URLS_FAILED | 502 | Nie udało się dodać zasobów URL |
19. Pobieranie README
Pobierz treść README LiveDoc. Zwraca pusty ciąg, jeśli README nie zostało ustawione.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/readmePrzykład
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/readme' \
-H 'Authorization: Bearer YOUR_API_KEY'Odpowiedź sukcesu (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."
}
}Pola odpowiedzi
| Pole | Typ | Opis |
|---|---|---|
summary | string | null | Jednowierszowy opis projektu. Maks. 2000 znaków. |
content | string | Treść README (Markdown). Pusty ciąg, jeśli nie ustawiono. |
20. Tworzenie lub aktualizowanie README
Utwórz lub zaktualizuj README LiveDoc (semantyka upsert).
Endpoint
PUT https://openapi.felo.ai/v2/livedocs/{short_id}/readmeTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
summary | string | Nie | Jednowierszowy opis projektu (maks. 2000 znaków) |
content | string | Nie | Treść README (Markdown) |
Uwaga: Należy podać co najmniej jedno z pól
summarylubcontent.
Przykład
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."
}'Odpowiedź sukcesu (200)
Zwraca zaktualizowany obiekt README (ta sama struktura co w sekcji Pobieranie README).
21. Dołączanie do README
Dołącz treść na końcu istniejącego README. Jeśli README nie istnieje, tworzy nowe z podaną treścią.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/readme/appendTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
content | string | Tak | Treść do dołączenia (Markdown) |
Przykład
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."
}'Odpowiedź sukcesu (200)
Zwraca kompletny obiekt README po dołączeniu (ta sama struktura co w sekcji Pobieranie README).
22. Usuwanie README
Usuń README LiveDoc.
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}/readmePrzykład
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/readme' \
-H 'Authorization: Bearer YOUR_API_KEY'Odpowiedź sukcesu (200)
{
"status": "ok",
"message": null,
"data": null
}23. Wyświetlanie zadań
Pobierz paginowaną listę zadań w LiveDoc. Wyniki są sortowane według sort rosnąco, status rosnąco, created_at malejąco.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/tasksParametry zapytania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
status | integer | Nie | Filtruj według stanu: 0=TODO, 1=IN_PROGRESS, 2=DONE |
labels | string[] | Nie | Filtruj według etykiet (zadania muszą zawierać wszystkie podane etykiety) |
page | integer | Nie | Numer strony (zaczynając od 1) |
size | integer | Nie | Rozmiar strony |
Przykład
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks?status=0&page=1&size=20' \
-H 'Authorization: Bearer YOUR_API_KEY'Odpowiedź sukcesu (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"
}
]
}
}Pola odpowiedzi zadania
| Pole | Typ | Opis |
|---|---|---|
id | string | Identyfikator zadania (UUID) |
title | string | Tytuł zadania |
description | string | Opis zadania |
status | integer | Stan zadania: 0=TODO, 1=IN_PROGRESS, 2=DONE |
sort | integer | Kolejność sortowania (nieujemna) |
labels | string[] | Lista etykiet |
operated_by | string | Podpis operatora, np. claude-code, openclaw |
created_at | string | Znacznik czasu utworzenia (ISO 8601) |
modified_at | string | Znacznik czasu ostatniej modyfikacji (ISO 8601) |
24. Tworzenie zadania
Utwórz nowe zadanie w LiveDoc.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/tasksTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
title | string | Tak | Tytuł zadania |
description | string | Nie | Opis zadania |
status | integer | Tak | Stan zadania: 0=TODO, 1=IN_PROGRESS, 2=DONE |
sort | integer | Tak | Kolejność sortowania (nieujemna liczba całkowita) |
labels | string[] | Nie | Lista etykiet (maks. 10, każda maks. 50 znaków) |
operated_by | string | Nie | Podpis operatora, np. claude-code, openclaw (maks. 100 znaków) |
Przykład
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"]
}'Odpowiedź sukcesu (200)
Zwraca utworzony obiekt zadania (ta sama struktura co elementy w sekcji Wyświetlanie zadań).
25. Aktualizowanie zadania
Częściowo zaktualizuj zadanie. Aktualizowane są tylko podane pola; pominięte pola zachowują bieżące wartości.
Endpoint
PATCH https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}Treść żądania
Wszystkie pola są opcjonalne.
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
title | string | Nie | Nowy tytuł zadania |
description | string | Nie | Nowy opis zadania |
status | integer | Nie | Nowy stan: 0=TODO, 1=IN_PROGRESS, 2=DONE |
sort | integer | Nie | Nowa kolejność sortowania (nieujemna) |
labels | string[] | Nie | Nowa lista etykiet (maks. 10, każda maks. 50 znaków) |
operated_by | string | Nie | Podpis operatora, np. claude-code, openclaw (maks. 100 znaków) |
Przykład
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
}'Odpowiedź sukcesu (200)
Zwraca zaktualizowany obiekt zadania (ta sama struktura co elementy w sekcji Wyświetlanie zadań).
26. Usuwanie zadania
Miękko usuń zadanie.
Endpoint
DELETE https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}Przykład
curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks/550e8400-e29b-41d4-a716-446655440000' \
-H 'Authorization: Bearer YOUR_API_KEY'Odpowiedź sukcesu (200)
{
"status": "ok",
"message": null,
"data": null
}27. Wyświetlanie rekordów zadania
Pobierz paginowaną listę rekordów zadania (komentarze i historia zmian), sortowaną według created_at rosnąco.
Endpoint
GET https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}/recordsParametry zapytania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
record_type | string | Nie | Filtruj według typu rekordu: comment, edit, status_change |
page | integer | Nie | Numer strony (zaczynając od 1) |
size | integer | Nie | Rozmiar strony |
Przykład
curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks/550e8400-e29b-41d4-a716-446655440000/records' \
-H 'Authorization: Bearer YOUR_API_KEY'Odpowiedź sukcesu (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"
}
]
}
}Pola odpowiedzi rekordu zadania
| Pole | Typ | Opis |
|---|---|---|
id | string | Identyfikator rekordu |
record_type | string | Typ rekordu: comment / edit / status_change |
content | string | Treść komentarza (tylko dla typu comment) |
meta | object | Szczegóły zmiany (dla typów edit i status_change) |
task_id | string | Identyfikator zadania nadrzędnego |
operated_by | string | Podpis operatora, np. claude-code, openclaw |
created_at | string | Znacznik czasu utworzenia (ISO 8601) |
modified_at | string | Znacznik czasu ostatniej modyfikacji (ISO 8601) |
28. Dodawanie komentarza do zadania
Dodaj komentarz do zadania.
Endpoint
POST https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}/commentsTreść żądania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
content | string | Tak | Treść komentarza |
operated_by | string | Nie | Podpis operatora, np. claude-code, openclaw (maks. 100 znaków) |
Przykład
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."
}'Odpowiedź sukcesu (200)
Zwraca utworzony obiekt rekordu (ta sama struktura co elementy w sekcji Wyświetlanie rekordów zadania).
Kody błędów (zaktualizowane)
| Kod | Status HTTP | Opis |
|---|---|---|
UNAUTHORIZED | 401 | Klucz API jest nieprawidłowy lub unieważniony |
LIVEDOC_CREATE_FAILED | 502 | Nie udało się utworzyć LiveDoc |
LIVEDOC_UPDATE_FAILED | 502 | Nie udało się zaktualizować LiveDoc |
LIVEDOC_DELETE_FAILED | 502 | Nie udało się usunąć LiveDoc |
LIVEDOC_NOT_FOUND | 404 | Nie znaleziono LiveDoc |
LIVEDOC_LIST_FAILED | 502 | Nie udało się wyświetlić listy LiveDoców |
LIVEDOC_RESOURCE_CREATE_FAILED | 502 | Nie udało się utworzyć zasobu |
LIVEDOC_RESOURCE_UPLOAD_FAILED | 502 | Nie udało się przesłać zasobu |
LIVEDOC_RESOURCE_DELETE_FAILED | 502 | Nie udało się usunąć zasobu |
LIVEDOC_RESOURCE_NOT_FOUND | 404 | Nie znaleziono zasobu |
LIVEDOC_RESOURCE_LIST_FAILED | 502 | Nie udało się wyświetlić listy zasobów |
LIVEDOC_RESOURCE_RETRIEVE_FAILED | 502 | Nie udało się pobrać zasobów |
LIVEDOC_RESOURCE_ADD_URLS_FAILED | 502 | Nie udało się dodać zasobów URL |
LIVEDOC_README_GET_FAILED | 502 | Nie udało się pobrać README |
LIVEDOC_README_UPDATE_FAILED | 502 | Nie udało się utworzyć lub zaktualizować README |
LIVEDOC_README_DELETE_FAILED | 502 | Nie udało się usunąć README |
LIVEDOC_README_NOT_FOUND | 404 | Nie znaleziono README |
LIVEDOC_TASK_LIST_FAILED | 502 | Nie udało się wyświetlić listy zadań |
LIVEDOC_TASK_CREATE_FAILED | 502 | Nie udało się utworzyć zadania |
LIVEDOC_TASK_UPDATE_FAILED | 502 | Nie udało się zaktualizować zadania |
LIVEDOC_TASK_DELETE_FAILED | 502 | Nie udało się usunąć zadania |
LIVEDOC_TASK_NOT_FOUND | 404 | Nie znaleziono zadania |
LIVEDOC_TASK_RECORD_LIST_FAILED | 502 | Nie udało się wyświetlić listy rekordów zadania |
LIVEDOC_TASK_COMMENT_CREATE_FAILED | 502 | Nie udało się utworzyć komentarza do zadania |