Felo API PlatformFelo API Platform

Felo APIs

LiveDoc API

Tạo cơ sở tri thức, quản lý tài nguyên và chạy truy xuất ngữ nghĩa cùng định tuyến.

POST/v2/livedocs

Xác thực

Bearer API key

Loại nội dung

application/json or multipart/form-data

Ghi chú về giới hạn

Có thể áp dụng giới hạn riêng cho endpoint.

LiveDoc API cung cấp đầy đủ các thao tác CRUD cho LiveDoc và tài nguyên của chúng, bao gồm tạo tài liệu, tải tệp lên, nhập URL và truy xuất ngữ nghĩa.

Xác thực

Mọi yêu cầu đều cần khóa API trong header Authorization:

Authorization: Bearer YOUR_API_KEY

Dùng với AI Agent

Cài gói felo-ai đầy đủ để cung cấp cho một Agent khả năng hỗ trợ LiveDoc và mọi Felo Skill khác hiện có. Trình cài đặt tự động khám phá mọi thư mục gói có chứa SKILL.md, bao gồm các bổ sung gói trong tương lai. Hãy cài mọi Skill được phát hiện vào thư mục gốc của Agent: Codex ~/.codex/skills, Claude Code ~/.claude/skills, OpenClaw ~/.agents/skills hoặc Hermes Agent ~/.hermes/skills. Hướng dẫn thiết lập AI Agent thủ công trình bày các bước khóa API và xác minh riêng cho từng nền tảng.


1. Tạo LiveDoc

Endpoint

POST https://openapi.felo.ai/v2/livedocs

Nội dung yêu cầu

Tham sốKiểuBắt buộcMô tả
namestringCóTên LiveDoc
descriptionstringKhôngMô tả LiveDoc
iconstringKhôngBiểu tượng LiveDoc

Ví dụ

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"
  }'

Phản hồi thành công (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"
  }
}

Các trường phản hồi

TrườngKiểuMô tả
short_idstringID LiveDoc
namestringTên LiveDoc
descriptionstringMô tả LiveDoc
iconstringBiểu tượng LiveDoc
created_atstringDấu thời gian tạo (ISO 8601)
modified_atstringDấu thời gian sửa đổi lần cuối (ISO 8601)
is_sharedbooleanLiveDoc này có được chia sẻ với người dùng hiện tại hay không (không thuộc sở hữu của họ)

2. Liệt kê LiveDoc

Endpoint

GET https://openapi.felo.ai/v2/livedocs

Tham số truy vấn

Tham sốKiểuBắt buộcMô tả
keywordstringKhôngLọc theo từ khóa
pageintegerKhôngSố trang (bắt đầu từ 1)
sizeintegerKhôngKích thước trang

Ví dụ

curl 'https://openapi.felo.ai/v2/livedocs?keyword=AI&page=1&size=20' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Phản hồi thành công (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..."
        }
      }
    ]
  }
}

Các trường phản hồi

Mỗi mục trong items chứa các trường giống như phản hồi Tạo LiveDoc, cộng thêm:

TrườngKiểuMô tả
readmeobject | nullThông tin README. null nếu không có README.
readme.summarystring | nullMô tả dự án một dòng
readme.contentstring | nullNội dung README (Markdown)

Endpoint

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

Nội dung yêu cầu

Tham sốKiểuBắt buộcMô tả
namestringKhôngTên LiveDoc mới
descriptionstringKhôngMô tả LiveDoc mới

Ví dụ

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"
  }'

Phản hồi thành công (200)

Trả về đối tượng LiveDoc đã cập nhật (cấu trúc giống như Tạo).


4. Xóa LiveDoc

Endpoint

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

Ví dụ

curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Phản hồi thành công (200)

{
  "status": "ok",
  "message": null,
  "data": null
}

5. Liệt kê tài nguyên

Endpoint

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

Tham số truy vấn

Tham sốKiểuBắt buộcMô tả
resource_typesstring[]KhôngLọc theo loại tài nguyên
pageintegerKhôngSố trang (bắt đầu từ 1)
sizeintegerKhôngKích thước trang

Ví dụ

curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources?page=1&size=20' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Phản hồi thành công (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"
      }
    ]
  }
}

Các trường phản hồi tài nguyên

TrườngKiểuMô tả
idstringID tài nguyên
titlestringTiêu đề tài nguyên
linkstringLiên kết/URL tài nguyên
snippetstringTóm tắt tài nguyên
thumbnailstringURL ảnh thu nhỏ
resource_typestringLoại tài nguyên (ví dụ web, ai_doc, file)
resource_keystringKhóa liên kết tài nguyên
statusstringTrạng thái tài nguyên
sourcestringNguồn tài nguyên
created_atstringDấu thời gian tạo (ISO 8601)
modified_atstringDấu thời gian sửa đổi lần cuối (ISO 8601)

6. Lấy một tài nguyên

Endpoint

GET https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}

Ví dụ

curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Phản hồi thành công (200)

Trả về một đối tượng tài nguyên (cấu trúc giống như các mục trong Liệt kê tài nguyên).


7. Cập nhật tài nguyên

Cập nhật title, snippet hoặc thumbnail của một tài nguyên. Chỉ các trường được cung cấp mới được cập nhật; các trường bỏ qua giữ nguyên giá trị hiện tại.

Endpoint

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

Nội dung yêu cầu

Mọi trường đều tùy chọn.

Tham sốKiểuBắt buộcMô tả
titlestringKhôngTiêu đề tài nguyên mới (tối đa 500 ký tự)
snippetstringKhôngTóm tắt tài nguyên mới (tối đa 2000 ký tự)
thumbnailstringKhôngURL ảnh thu nhỏ mới (tối đa 2000 ký tự)

Ví dụ

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."
  }'

Phản hồi thành công (200)

Trả về đối tượng tài nguyên đã cập nhật (cấu trúc giống như các mục trong Liệt kê tài nguyên).


8. Cập nhật nội dung tài nguyên

Cập nhật nội dung Markdown của một tài nguyên ai_doc. Chỉ hỗ trợ cho các tài nguyên có resource_type == ai_doc. Trường snippet được tự động cập nhật từ 2000 byte đầu tiên của nội dung mới.

Endpoint

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

Nội dung yêu cầu

Tham sốKiểuBắt buộcMô tả
contentstringCóNội dung Markdown mới cho tài nguyên

Ví dụ

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."
  }'

Phản hồi thành công (200)

Trả về đối tượng tài nguyên đã cập nhật (cấu trúc giống như các mục trong Liệt kê tài nguyên).


9. Tạo tài nguyên tài liệu

Endpoint

POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/doc

Nội dung yêu cầu

Tham sốKiểuBắt buộcMô tả
titlestringKhôngTiêu đề tài liệu (mặc định là "New Document")
contentstringCóNội dung tài liệu

Ví dụ

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..."
  }'

Phản hồi thành công (200)

Trả về đối tượng tài nguyên đã tạo.


10. Tải tệp lên dưới dạng tài liệu

Tải một tệp lên và chuyển nó thành tài nguyên tài liệu (loại ai_doc).

Endpoint

POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/upload-doc

Content-Type

multipart/form-data

Các phần yêu cầu

Tham sốKiểuBắt buộcMô tả
filefileCóTệp cần tải lên
titlestringKhôngTiêu đề tài liệu

Ví dụ

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'

Phản hồi thành công (200)

Trả về đối tượng tài nguyên đã tạo.


11. Tải tệp lên làm tài nguyên

Tải một tệp lên và giữ nguyên định dạng gốc của nó.

Endpoint

POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/upload

Content-Type

multipart/form-data

Các phần yêu cầu

Tham sốKiểuBắt buộcMô tả
filefileCóTệp cần tải lên

Ví dụ

curl -X POST 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/upload' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -F '[email protected]'

Phản hồi thành công (200)

Trả về đối tượng tài nguyên đã tạo.


12. Thêm tài nguyên URL

Thêm một hoặc nhiều URL làm tài nguyên cho một LiveDoc.

Endpoint

POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/urls

Nội dung yêu cầu

Tham sốKiểuBắt buộcMô tả
urlsarrayCóDanh sách các mục URL cần thêm (1-10). Mỗi mục có thể là chuỗi thuần hoặc một đối tượng có url và title tùy chọn.

Định dạng mục URL

Mỗi mục trong urls có thể là một trong hai:

  • Chuỗi thuần: "https://example.com/article"
  • Một đối tượng: {"url": "https://example.com/article", "title": "Custom Title"}
TrườngKiểuBắt buộcMô tả
urlstringCóURL cần thêm (5-2000 ký tự)
titlestringKhôngTiêu đề tùy chỉnh cho tài nguyên (tối đa 1000 ký tự). Nếu bỏ qua, tiêu đề được tự động tạo từ trang.

Ví dụ

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"}
    ]
  }'

Phản hồi thành công (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"
    }
  ]
}

Các trường kết quả URL

TrườngKiểuMô tả
urlstringURL đã xử lý
statusstringTrạng thái kết quả: success, failed hoặc existed
fail_reasonstringLý do thất bại (null nếu thành công)
resource_idstringID tài nguyên đã tạo

13. Xóa tài nguyên

Endpoint

DELETE https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}

Ví dụ

curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Phản hồi thành công (200)

{
  "status": "ok",
  "message": null,
  "data": null
}

14. Truy xuất (tìm kiếm ngữ nghĩa)

Thực hiện truy xuất ngữ nghĩa trên các tài nguyên trong một LiveDoc.

Endpoint

POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/retrieve

Nội dung yêu cầu

Tham sốKiểuBắt buộcMô tả
querystringCóNội dung truy vấn cho tìm kiếm ngữ nghĩa
resource_idsstring[]KhôngCác ID tài nguyên cụ thể để tìm kiếm bên trong (1-50). Nếu bỏ qua, các tài nguyên liên quan được tự động định tuyến theo truy vấn

Ví dụ

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"]
  }'

Phản hồi thành công (200)

{
  "status": "ok",
  "message": null,
  "data": [
    {
      "id": "res_001",
      "title": "LLM Research Paper",
      "content": "Relevant content excerpt...",
      "score": 0.92,
      "metadata": {}
    }
  ]
}

Các trường kết quả truy xuất

TrườngKiểuMô tả
idstringID tài nguyên
titlestringTiêu đề tài nguyên
contentstringNội dung khớp
scorenumberĐiểm liên quan
metadataobjectSiêu dữ liệu bổ sung

15. Định tuyến tài nguyên

Định tuyến các tài nguyên liên quan từ một LiveDoc dựa trên truy vấn. Trả về danh sách ID tài nguyên có thể được truyền cho endpoint truy xuất.

Endpoint

POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/route

Nội dung yêu cầu

Tham sốKiểuBắt buộcMô tả
querystringCóNội dung truy vấn cho việc định tuyến
max_resourcesintegerKhôngSố ID tài nguyên tối đa cần trả về

Ví dụ

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
  }'

Phản hồi thành công (200)

{
  "status": "ok",
  "message": null,
  "data": ["res_001", "res_003", "res_007"]
}

16. Tải xuống tệp nguồn của tài nguyên

Lấy tệp nguồn của một tài nguyên. Trả về chuyển hướng 302 đến URL tải xuống đã ký trước.

Chỉ hỗ trợ cho các tài nguyên có tệp nguồn liên kết (ví dụ tài liệu đã tải lên).

Endpoint

GET https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}/download

Tham số truy vấn

Tham sốKiểuBắt buộcMô tả
expires_inintegerKhôngThời hạn URL tính bằng giây (mặc định: 3600)

Ví dụ

curl -L 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001/download' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Phản hồi

Trả về 302 Found với header Location trỏ đến URL tải xuống S3 đã ký trước. Các HTTP client hỗ trợ chuyển hướng (ví dụ curl -L) sẽ theo chuyển hướng và tải tệp trực tiếp.


17. Lấy nội dung tài nguyên

Lấy nội dung văn bản đã trích xuất của một tài nguyên. Hỗ trợ cho hầu hết các loại tài nguyên (document, web, video, ai_doc, ai_ppt, text, voice, mindmap, v.v.). Trả về 400 cho các loại không được hỗ trợ như image.

Endpoint

GET https://openapi.felo.ai/v2/livedocs/{short_id}/resources/{resource_id}/content

Ví dụ

curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/resources/res_001/content' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Phản hồi thành công (200)

{
  "status": "ok",
  "message": null,
  "data": {
    "title": "Q4 Financial Report",
    "type": "document",
    "content": "Full extracted text content of the resource..."
  }
}

Các trường phản hồi

TrườngKiểuMô tả
titlestringTiêu đề tài nguyên
typestringLoại tài nguyên
contentstringNội dung văn bản đã trích xuất

18. Truy xuất trang PPT

Thực hiện truy xuất nội dung chuyên sâu trên một trang cụ thể của tài nguyên PPT. Thu thập trang slide và trả về các đoạn nội dung đã xếp hạng. Định dạng phản hồi giống hệt endpoint Truy xuất.

Endpoint

POST https://openapi.felo.ai/v2/livedocs/{short_id}/resources/ppt-retrieve

Nội dung yêu cầu

Tham sốKiểuBắt buộcMô tả
resource_idstringCóID tài nguyên PPT
page_numberintegerCóSố trang cần truy xuất (bắt đầu từ 1)
querystringCóNội dung truy vấn mô tả nội dung cần tìm
max_chunkintegerKhôngSố đoạn tối đa cần trả về (mặc định: 3)

Ví dụ

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
  }'

Phản hồi thành công (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
      }
    }
  ]
}

Các trường phản hồi

Giống như Các trường kết quả truy xuất.


Mã lỗi

MãTrạng thái HTTPMô tả
UNAUTHORIZED401Khóa API không hợp lệ hoặc đã bị thu hồi
LIVEDOC_CREATE_FAILED502Tạo LiveDoc thất bại
LIVEDOC_UPDATE_FAILED502Cập nhật LiveDoc thất bại
LIVEDOC_DELETE_FAILED502Xóa LiveDoc thất bại
LIVEDOC_NOT_FOUND404Không tìm thấy LiveDoc
LIVEDOC_LIST_FAILED502Liệt kê LiveDoc thất bại
LIVEDOC_RESOURCE_CREATE_FAILED502Tạo tài nguyên thất bại
LIVEDOC_RESOURCE_UPLOAD_FAILED502Tải tài nguyên lên thất bại
LIVEDOC_RESOURCE_DELETE_FAILED502Xóa tài nguyên thất bại
LIVEDOC_RESOURCE_NOT_FOUND404Không tìm thấy tài nguyên
LIVEDOC_RESOURCE_LIST_FAILED502Liệt kê tài nguyên thất bại
LIVEDOC_RESOURCE_RETRIEVE_FAILED502Truy xuất tài nguyên thất bại
LIVEDOC_RESOURCE_ADD_URLS_FAILED502Thêm tài nguyên URL thất bại

19. Lấy README

Lấy nội dung README của một LiveDoc. Trả về chuỗi rỗng nếu chưa thiết lập README.

Endpoint

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

Ví dụ

curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/readme' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Phản hồi thành công (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."
  }
}

Các trường phản hồi

TrườngKiểuMô tả
summarystring | nullMô tả dự án một dòng. Tối đa 2000 ký tự.
contentstringNội dung README (Markdown). Chuỗi rỗng nếu chưa thiết lập.

20. Tạo hoặc cập nhật README

Tạo hoặc cập nhật README của một LiveDoc (ngữ nghĩa upsert).

Endpoint

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

Nội dung yêu cầu

Tham sốKiểuBắt buộcMô tả
summarystringKhôngMô tả dự án một dòng (tối đa 2000 ký tự)
contentstringKhôngNội dung README (Markdown)

Lưu ý: Phải cung cấp ít nhất một trong summary hoặc content.

Ví dụ

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."
  }'

Phản hồi thành công (200)

Trả về đối tượng README đã cập nhật (cấu trúc giống như Lấy README).


21. Nối thêm vào README

Nối nội dung vào cuối một README hiện có. Nếu chưa có README, tạo mới với nội dung được cung cấp.

Endpoint

POST https://openapi.felo.ai/v2/livedocs/{short_id}/readme/append

Nội dung yêu cầu

Tham sốKiểuBắt buộcMô tả
contentstringCóNội dung cần nối thêm (Markdown)

Ví dụ

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."
  }'

Phản hồi thành công (200)

Trả về đối tượng README đầy đủ sau khi nối thêm (cấu trúc giống như Lấy README).


22. Xóa README

Xóa README của một LiveDoc.

Endpoint

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

Ví dụ

curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/readme' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Phản hồi thành công (200)

{
  "status": "ok",
  "message": null,
  "data": null
}

23. Liệt kê tác vụ

Lấy danh sách tác vụ có phân trang trong một LiveDoc. Kết quả được sắp xếp theo sort tăng dần, status tăng dần, created_at giảm dần.

Endpoint

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

Tham số truy vấn

Tham sốKiểuBắt buộcMô tả
statusintegerKhôngLọc theo trạng thái: 0=TODO, 1=IN_PROGRESS, 2=DONE
labelsstring[]KhôngLọc theo nhãn (tác vụ phải chứa tất cả nhãn được chỉ định)
pageintegerKhôngSố trang (bắt đầu từ 1)
sizeintegerKhôngKích thước trang

Ví dụ

curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks?status=0&page=1&size=20' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Phản hồi thành công (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"
      }
    ]
  }
}

Các trường phản hồi tác vụ

TrườngKiểuMô tả
idstringID tác vụ (UUID)
titlestringTiêu đề tác vụ
descriptionstringMô tả tác vụ
statusintegerTrạng thái tác vụ: 0=TODO, 1=IN_PROGRESS, 2=DONE
sortintegerThứ tự sắp xếp (không âm)
labelsstring[]Danh sách nhãn
operated_bystringChữ ký người thao tác, ví dụ claude-code, openclaw
created_atstringDấu thời gian tạo (ISO 8601)
modified_atstringDấu thời gian sửa đổi lần cuối (ISO 8601)

24. Tạo tác vụ

Tạo một tác vụ mới trong một LiveDoc.

Endpoint

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

Nội dung yêu cầu

Tham sốKiểuBắt buộcMô tả
titlestringCóTiêu đề tác vụ
descriptionstringKhôngMô tả tác vụ
statusintegerCóTrạng thái tác vụ: 0=TODO, 1=IN_PROGRESS, 2=DONE
sortintegerCóThứ tự sắp xếp (số nguyên không âm)
labelsstring[]KhôngDanh sách nhãn (tối đa 10, mỗi nhãn tối đa 50 ký tự)
operated_bystringKhôngChữ ký người thao tác, ví dụ claude-code, openclaw (tối đa 100 ký tự)

Ví dụ

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"]
  }'

Phản hồi thành công (200)

Trả về đối tượng tác vụ đã tạo (cấu trúc giống như các mục trong Liệt kê tác vụ).


25. Cập nhật tác vụ

Cập nhật một phần của tác vụ. Chỉ các trường được cung cấp mới được cập nhật; các trường bỏ qua giữ nguyên giá trị hiện tại.

Endpoint

PATCH https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}

Nội dung yêu cầu

Mọi trường đều tùy chọn.

Tham sốKiểuBắt buộcMô tả
titlestringKhôngTiêu đề tác vụ mới
descriptionstringKhôngMô tả tác vụ mới
statusintegerKhôngTrạng thái mới: 0=TODO, 1=IN_PROGRESS, 2=DONE
sortintegerKhôngThứ tự sắp xếp mới (không âm)
labelsstring[]KhôngDanh sách nhãn mới (tối đa 10, mỗi nhãn tối đa 50 ký tự)
operated_bystringKhôngChữ ký người thao tác, ví dụ claude-code, openclaw (tối đa 100 ký tự)

Ví dụ

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
  }'

Phản hồi thành công (200)

Trả về đối tượng tác vụ đã cập nhật (cấu trúc giống như các mục trong Liệt kê tác vụ).


26. Xóa tác vụ

Xóa mềm một tác vụ.

Endpoint

DELETE https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}

Ví dụ

curl -X DELETE 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks/550e8400-e29b-41d4-a716-446655440000' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Phản hồi thành công (200)

{
  "status": "ok",
  "message": null,
  "data": null
}

27. Liệt kê bản ghi tác vụ

Lấy danh sách bản ghi có phân trang của một tác vụ (bình luận và lịch sử thay đổi), được sắp xếp theo created_at tăng dần.

Endpoint

GET https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}/records

Tham số truy vấn

Tham sốKiểuBắt buộcMô tả
record_typestringKhôngLọc theo loại bản ghi: comment, edit, status_change
pageintegerKhôngSố trang (bắt đầu từ 1)
sizeintegerKhôngKích thước trang

Ví dụ

curl 'https://openapi.felo.ai/v2/livedocs/PvyKouzJirXjFdst4uKRK3/tasks/550e8400-e29b-41d4-a716-446655440000/records' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Phản hồi thành công (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"
      }
    ]
  }
}

Các trường phản hồi bản ghi tác vụ

TrườngKiểuMô tả
idstringID bản ghi
record_typestringLoại bản ghi: comment / edit / status_change
contentstringNội dung bình luận (chỉ với loại comment)
metaobjectChi tiết thay đổi (với loại edit và status_change)
task_idstringID tác vụ cha
operated_bystringChữ ký người thao tác, ví dụ claude-code, openclaw
created_atstringDấu thời gian tạo (ISO 8601)
modified_atstringDấu thời gian sửa đổi lần cuối (ISO 8601)

28. Thêm bình luận cho tác vụ

Thêm một bình luận vào tác vụ.

Endpoint

POST https://openapi.felo.ai/v2/livedocs/{short_id}/tasks/{task_id}/comments

Nội dung yêu cầu

Tham sốKiểuBắt buộcMô tả
contentstringCóNội dung bình luận
operated_bystringKhôngChữ ký người thao tác, ví dụ claude-code, openclaw (tối đa 100 ký tự)

Ví dụ

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."
  }'

Phản hồi thành công (200)

Trả về đối tượng bản ghi đã tạo (cấu trúc giống như các mục trong Liệt kê bản ghi tác vụ).


Mã lỗi (cập nhật)

MãTrạng thái HTTPMô tả
UNAUTHORIZED401Khóa API không hợp lệ hoặc đã bị thu hồi
LIVEDOC_CREATE_FAILED502Tạo LiveDoc thất bại
LIVEDOC_UPDATE_FAILED502Cập nhật LiveDoc thất bại
LIVEDOC_DELETE_FAILED502Xóa LiveDoc thất bại
LIVEDOC_NOT_FOUND404Không tìm thấy LiveDoc
LIVEDOC_LIST_FAILED502Liệt kê LiveDoc thất bại
LIVEDOC_RESOURCE_CREATE_FAILED502Tạo tài nguyên thất bại
LIVEDOC_RESOURCE_UPLOAD_FAILED502Tải tài nguyên lên thất bại
LIVEDOC_RESOURCE_DELETE_FAILED502Xóa tài nguyên thất bại
LIVEDOC_RESOURCE_NOT_FOUND404Không tìm thấy tài nguyên
LIVEDOC_RESOURCE_LIST_FAILED502Liệt kê tài nguyên thất bại
LIVEDOC_RESOURCE_RETRIEVE_FAILED502Truy xuất tài nguyên thất bại
LIVEDOC_RESOURCE_ADD_URLS_FAILED502Thêm tài nguyên URL thất bại
LIVEDOC_README_GET_FAILED502Lấy README thất bại
LIVEDOC_README_UPDATE_FAILED502Tạo hoặc cập nhật README thất bại
LIVEDOC_README_DELETE_FAILED502Xóa README thất bại
LIVEDOC_README_NOT_FOUND404Không tìm thấy README
LIVEDOC_TASK_LIST_FAILED502Liệt kê tác vụ thất bại
LIVEDOC_TASK_CREATE_FAILED502Tạo tác vụ thất bại
LIVEDOC_TASK_UPDATE_FAILED502Cập nhật tác vụ thất bại
LIVEDOC_TASK_DELETE_FAILED502Xóa tác vụ thất bại
LIVEDOC_TASK_NOT_FOUND404Không tìm thấy tác vụ
LIVEDOC_TASK_RECORD_LIST_FAILED502Liệt kê bản ghi tác vụ thất bại
LIVEDOC_TASK_COMMENT_CREATE_FAILED502Tạo bình luận cho tác vụ thất bại