Sử dụng Clevera REST API
Gọi Clevera từ các tập lệnh của riêng bạn: URL cơ sở, xác thực bearer-token, các điểm cuối (endpoint) và quyền hạn cần thiết cho mỗi điểm cuối, quy trình báo giá-rồi-bắt đầu cho công việc trả phí, tính lũy đẳng, định dạng lỗi và giới hạn tốc độ.
REST API của Clevera cho phép các tập lệnh và dịch vụ của riêng bạn thực hiện những gì một tác nhân có thể làm qua MCP: đọc thư viện, yêu cầu video và bài viết, xuất video, làm việc trên các trang tài liệu và theo dõi các công việc. Bài viết này bao gồm URL cơ sở, xác thực, quy trình yêu cầu cho công việc trả phí, các lỗi và giới hạn tốc độ.
Thông tin cơ bản
| URL cơ sở | https://app.clevera.ai/api/v1 |
| Xác thực | Authorization: Bearer <token> với một API token (bắt đầu bằng clv_agent_) |
| Định dạng | JSON đầu vào và đầu ra. Gửi Accept: application/json và, với phần thân, Content-Type: application/json. |
| Id | Các id công khai, chẳng hạn như job_… cho các công việc. Hãy sử dụng các id mà API trả về. |
Kiểm tra một token với GET /docs/me:
curl -H "Authorization: Bearer $CLEVERA_TOKEN" \
-H "Accept: application/json" \
https://app.clevera.ai/api/v1/docs/me
Câu trả lời cho biết token đó đại diện cho ai: tên và thời hạn của token, người dùng và vai trò hiện tại của họ, không gian làm việc, các trang web trong phạm vi và các quyền hiện đang hoạt động (quyền của token được cắt giảm theo vai trò hiện tại của người dùng). Hãy gọi lệnh này trước tiên khi một yêu cầu bị từ chối.
Các điểm cuối (Endpoints)
Mỗi điểm cuối cần quyền hạn được hiển thị. Việc gọi một điểm cuối mà không có quyền đó sẽ trả về 403 forbidden_ability. Xem Quyền của tác nhân.
Thư viện và tài liệu
| Phương thức và đường dẫn | Quyền | Chức năng |
|---|---|---|
GET /create/types |
bất kỳ | Các loại video và clip mạng xã hội bạn có thể yêu cầu. |
GET /library |
library:read |
Video, bản ghi và bài viết mà chủ sở hữu token có thể xem. |
GET /recordings |
library:read |
Chỉ các bản ghi. |
GET /library/{item} |
library:read |
Một mục. |
GET /library/{item}/transcript |
library:read |
Bản ghi chép của mục đó. |
GET /library/{item}/article |
library:read |
Bài viết của mục đó. |
GET /library/{item}/embed |
library:read |
Mã nhúng của mục đó. |
GET /materials |
library:read |
Hình ảnh, video và PDF đã tải lên. |
POST /materials, POST /materials/import, POST /materials/uploads, POST /materials/uploads/{upload_id}/complete |
materials:write |
Thêm hình ảnh, video hoặc PDF (trực tiếp, từ URL, hoặc dưới dạng tải lên tệp lớn). |
Video và bài viết
| Phương thức và đường dẫn | Quyền | Chức năng |
|---|---|---|
POST /videos/quotes |
videos:create |
Báo giá video từ một bản ghi (type: how_to, product_demo, cleanup, styled_video), một bài viết từ một bản ghi (article) hoặc một bản dịch (translation). |
POST /videos |
videos:create + credits:spend |
Tạo video đã báo giá (quote_id). |
POST /articles/from-recording |
videos:create + credits:spend |
Tạo bài viết đã báo giá. |
POST /videos/translations |
videos:create + credits:spend |
Tạo bản dịch đã báo giá. |
POST /clips/quotes |
videos:create |
Báo giá một clip mạng xã hội (các loại từ GET /create/types). |
POST /clips |
videos:create + credits:spend |
Tạo clip mạng xã hội đã báo giá. |
POST /videos/{video_id}/exports |
videos:export |
Kết xuất (render) một MP4: resolution 1080p (mặc định), 2k hoặc 4k; luôn ở mức 60 fps. Miễn phí. |
Công việc và tín dụng
| Phương thức và đường dẫn | Quyền | Chức năng |
|---|---|---|
POST /quotes |
quyền của công việc | Báo giá cho bất kỳ loại công việc nào. |
POST /jobs |
quyền của công việc (+ credits:spend khi trả phí) |
Bắt đầu một công việc đã báo giá. |
GET /jobs |
jobs:read |
Liệt kê các công việc. |
GET /jobs/{job} |
jobs:read |
Trạng thái và kết quả của một công việc. |
GET /jobs/{job}/wait |
jobs:read |
Chờ thay đổi thay vì thăm dò (polling). |
GET /jobs/{job}/events |
jobs:read |
Các sự kiện tiến trình của công việc. |
POST /jobs/{job}/cancel |
jobs:read |
Hủy một công việc. Đã quá muộn: "Công việc này không thể bị hủy nữa." |
GET /credits |
credits:spend hoặc jobs:read |
Số dư tín dụng của không gian làm việc. |
Các trang tài liệu
| Phương thức và đường dẫn | Quyền | Chức năng |
|---|---|---|
GET /docs/sites, GET /docs/sites/{site}, GET /docs/sites/{site}/tree, GET /docs/sites/{site}/pages |
content:read |
Các trang web trong phạm vi của token và các trang con của chúng. |
GET /docs/sites/{site}/search, GET /docs/pages/{page}, GET /docs/pages/{page}/revisions |
content:read |
Tìm kiếm và đọc các trang, bao gồm cả bản nháp. |
POST /docs/sites/{site}/articles, PATCH /docs/pages/{page}/article, POST /docs/pages/{page}/review |
articles:write |
Tạo và chỉnh sửa bài viết nháp, gửi để đánh giá. Các bài viết trực tuyến cũng cần site:publish. |
PATCH /docs/pages/{page}, DELETE /docs/pages/{page}, POST /docs/sites/{site}/sections, PATCH /docs/sections/{section} |
structure:write |
Di chuyển, đổi tên, ẩn và xóa các trang; các phần. |
GET/POST /docs/sites/{site}/site-pages, PUT /docs/site-pages/{page}/body |
content:read / site-pages:write |
Các trang chủ, liên hệ và pháp lý. |
GET/POST /docs/sites/{site}/changelog, PATCH /docs/changelog/{entry} |
content:read / changelog:write |
Các mục nhật ký thay đổi dưới dạng bản nháp. |
POST /docs/media, POST /docs/media/uploads |
media:write |
Tải lên hình ảnh. |
POST /docs/sites/{site}/publish, POST /docs/pages/{page}/ready, POST /docs/changelog/{entry}/publish |
site:publish |
Xuất bản nội dung mà người đọc nhìn thấy. |
GET /insights/sites/{site}, …/gaps, …/feedback |
insights:read |
Tìm kiếm các khoảng trống, câu hỏi chưa trả lời, phản hồi trang. |
PATCH /docs/sites/{site}/settings, …/appearance, PUT …/navigation, POST …/redirects |
site:configure |
Cài đặt trang web. |
POST /docs/sites |
sites:create |
Tạo một trang tài liệu. |
Xem thêm về các tác nhân và trang tài liệu: Kết nối các tác nhân AI với trang tài liệu của bạn.
Yêu cầu công việc trả phí
Công việc tốn tín dụng luôn thực hiện theo quy trình báo giá trước, sau đó mới bắt đầu:
- Báo giá.
POST /videos/quotes(hoặc/clips/quotes) với những gì bạn muốn. Câu trả lời có chứaquote_idvà phạm vi tín dụng. Báo giá có hiệu lực trong 15 phút và chỉ có thể sử dụng một lần. - Tùy chọn chạy thử (dry-run). Gửi lệnh bắt đầu với
"dry_run": trueđể biết liệu công việc có bắt đầu được không, có cần phê duyệt hay bị chặn. Không có gì được ghi lại. - Bắt đầu.
POST /videosvớiquote_idvà tiêu đềIdempotency-Key. Câu trả lời là202kèm theo một công việc. - Theo dõi.
GET /jobs/{job}/waitcho đến khistatuscủa công việc thay đổi, hoặc lắng nghe webhooks.
curl -X POST https://app.clevera.ai/api/v1/videos/quotes \
-H "Authorization: Bearer $CLEVERA_TOKEN" -H "Content-Type: application/json" \
-d '{"type": "how_to", "recording_id": "<recording id>", "language": "en-US"}'
curl -X POST https://app.clevera.ai/api/v1/videos \
-H "Authorization: Bearer $CLEVERA_TOKEN" -H "Content-Type: application/json" \
-H "Idempotency-Key: 3f6c1a2e-8d4b-4f7a-9c1e-2b5d7e9f0a13" \
-d '{"quote_id": "<quote id>"}'
Các trạng thái công việc:
| Trạng thái | Ý nghĩa |
|---|---|
queued |
Đã chấp nhận, sắp chạy. |
running |
Đang thực hiện. |
needs_input |
Đang chờ người dùng, thường là phê duyệt trên Yêu cầu của tác nhân. Công việc có kèm theo liên kết và thời hạn. |
succeeded |
Đã xong. Công việc liên kết đến video hoặc bài viết mới. |
failed |
Thất bại; công việc có chứa error_code. |
canceled |
Đã hủy, hoặc việc phê duyệt đã bị từ chối. |
expired |
Không ai phê duyệt trong vòng 24 giờ. |
Việc bắt đầu chạy ngay lập tức hay chờ người dùng phụ thuộc vào giới hạn chi tiêu của token và cài đặt Tự động phê duyệt bên dưới của nó. Xem Kiểm soát chi tiêu và phê duyệt của tác nhân.
Thử lại và tính lũy đẳng
Gửi tiêu đề Idempotency-Key (một UUID mới cho mỗi hành động) trong mỗi lần tạo và bắt đầu. Nếu mạng bị ngắt và bạn thử lại với cùng một khóa và nội dung, bạn sẽ nhận lại câu trả lời đầu tiên thay vì tạo ra video thứ hai. Các khóa được ghi nhớ trong 24 giờ.
| Mã | Ý nghĩa |
|---|---|
idempotency_key_reused |
Cùng một khóa với nội dung khác. Hãy sử dụng khóa mới cho yêu cầu mới. |
idempotency_in_progress |
Yêu cầu đầu tiên với khóa này vẫn đang chạy. Hãy chờ và thử lại. |
idempotency_conflict |
"Khóa lũy đẳng này đã được sử dụng cho một yêu cầu khác." |
Lỗi
Mỗi lỗi đều có cùng một hình thức, với thông báo cho biết cần làm gì tiếp theo:
{
"error": {
"code": "forbidden_ability",
"message": "This token lacks the videos:create ability. Ask the workspace member who owns it for a token that has it.",
"details": { "ability": "videos:create" }
},
"request_id": "req_example"
}
Hãy bao gồm request_id khi bạn liên hệ với bộ phận hỗ trợ.
| HTTP | Mã | Nguyên nhân phổ biến |
|---|---|---|
| 401 | unauthenticated, token_expired, token_revoked |
Không có token, token sai, hoặc token đã hết hạn hoặc bị thu hồi. |
| 402 | insufficient_credits |
Không gian làm việc không có đủ tín dụng cho báo giá. |
| 403 | forbidden_ability, forbidden_role, forbidden_item, ip_not_allowed, live_content_needs_publish, site_paused, forbidden |
Thiếu quyền, vai trò của chủ sở hữu, quyền truy cập bộ sưu tập hoặc danh sách IP cho phép. |
| 403 | plan_locked |
"API tác nhân không có trong gói của không gian làm việc này. Nó dành cho gói Pro trở lên." |
| 404 | not_found, unknown_kind |
"Không có … với id đó trong phạm vi của token này. Hãy liệt kê hoặc tìm kiếm trước và sử dụng id được trả về." |
| 409 | revision_conflict, quote_used, not_cancelable, idempotency_* |
Nội dung đã thay đổi, báo giá đã được sử dụng, hoặc xung đột khi thử lại. |
| 410 | quote_expired |
"Báo giá này đã hết hạn. Hãy yêu cầu báo giá mới." |
| 413 | unsupported_media |
Tệp quá lớn hoặc không phải loại được hỗ trợ. |
| 422 | validation_failed, invalid_input, quote_mismatch, limit_reached |
Một trường bị sai; details nêu tên trường đó. |
| 429 | rate_limited, cap_exceeded, busy |
Quá nhiều yêu cầu, giới hạn chi tiêu, hoặc hai lần bắt đầu cùng lúc. |
Mỗi thông báo, cùng với cách khắc phục: Khắc phục lỗi tác nhân và API.
Giới hạn tốc độ
| Giới hạn | Giá trị | Thông báo |
|---|---|---|
| Yêu cầu mỗi token | 300 mỗi phút | "Token này đã vượt quá tốc độ yêu cầu. Hãy chờ và thử lại." |
| Yêu cầu mỗi không gian làm việc | 1.200 mỗi phút, tổng tất cả các token | "Không gian làm việc này đã vượt quá tốc độ yêu cầu tác nhân. Hãy chờ và thử lại." |
| Lượt ghi mỗi token | 60 mỗi phút | "Quá nhiều lượt ghi từ token này. Hãy chờ và thử lại." |
| Lượt ghi mỗi token mỗi ngày | 2.000 | "Token này đã đạt giới hạn ghi hàng ngày. Hãy thử lại vào ngày mai." |
| Lượt xuất bản mỗi token | 10 mỗi giờ | "Token này đã đạt giới hạn xuất bản hàng giờ. Hãy thử lại sau." |
| Bắt đầu trả phí | 20 mỗi giờ mỗi token, 100 mỗi ngày mỗi không gian làm việc | rate_limited với retry_after |
| Tải lên | 30 mỗi phút; 500 MB mỗi ngày mỗi token; 25 MB mỗi tệp | "Quá nhiều lượt tải lên từ token này. Hãy chờ và thử lại." / "Token này đã đạt dung lượng tải lên hàng ngày. Hãy thử lại vào ngày mai." |
| Gọi không có token hợp lệ | 60 mỗi phút mỗi địa chỉ IP | "Quá nhiều yêu cầu. Hãy chờ và thử lại." |
Câu trả lời 429 có chứa tiêu đề Retry-After và retry_after (giây) trong phần thân. Hãy chờ khoảng thời gian đó trước khi thử lại. Các thao tác đọc, báo giá và kiểm tra trạng thái không tốn tín dụng.