Clevera REST API を使用する
独自のスクリプトから Clevera を呼び出します。ベース URL、Bearer トークン認証、各エンドポイントと必要な権限、有料作業の「見積もりから開始」というフロー、冪等性、エラー形式、レート制限について説明します。
Clevera の REST API を使用すると、独自のスクリプトやサービスから、エージェントが MCP 経由で実行できる操作(ライブラリの読み取り、動画や記事の作成依頼、動画のエクスポート、ドキュメントサイトでの作業、ジョブの追跡など)を実行できます。この記事では、ベース URL、認証、有料作業の依頼フロー、エラー、レート制限について解説します。
基本
| ベース URL | https://app.clevera.ai/api/v1 |
| 認証 | API トークン を使用した Authorization: Bearer <token>(clv_agent_ で始まります) |
| 形式 | JSON 入出力。Accept: application/json を送信し、ボディがある場合は Content-Type: application/json を送信します。 |
| ID | ジョブの job_… などのパブリック ID。API が返す ID を使用してください。 |
GET /docs/me でトークンを確認します:
curl -H "Authorization: Bearer $CLEVERA_TOKEN" \
-H "Accept: application/json" \
https://app.clevera.ai/api/v1/docs/me
回答には、そのトークンが誰として機能しているか(トークン名と有効期限、担当者とその現在の役割、ワークスペース、スコープ内のサイト、現在有効な権限(トークンの権限を担当者の現在の役割に合わせてトリミングしたもの))が示されます。呼び出しが拒否された場合は、まずこれを呼び出してください。
エンドポイント
各エンドポイントには、示された権限が必要です。権限なしで呼び出すと 403 forbidden_ability が返されます。エージェントの権限 を参照してください。
ライブラリと素材
| メソッドとパス | 権限 | 内容 |
|---|---|---|
GET /create/types |
any | 依頼可能な動画およびソーシャルクリップのタイプ。 |
GET /library |
library:read |
トークンの所有者が閲覧可能な動画、録画、記事。 |
GET /recordings |
library:read |
録画のみ。 |
GET /library/{item} |
library:read |
1つのアイテム。 |
GET /library/{item}/transcript |
library:read |
その文字起こし。 |
GET /library/{item}/article |
library:read |
その記事。 |
GET /library/{item}/embed |
library:read |
その埋め込みコード。 |
GET /materials |
library:read |
アップロードされた画像、動画、PDF。 |
POST /materials, POST /materials/import, POST /materials/uploads, POST /materials/uploads/{upload_id}/complete |
materials:write |
画像、動画、または PDF の追加(直接、URL から、または大容量アップロードとして)。 |
動画と記事
| メソッドとパス | 権限 | 内容 |
|---|---|---|
POST /videos/quotes |
videos:create |
録画からの動画(type: how_to, product_demo, cleanup, styled_video)、録画からの記事(article)、または翻訳(translation)の見積もり。 |
POST /videos |
videos:create + credits:spend |
見積もられた動画を作成(quote_id)。 |
POST /articles/from-recording |
videos:create + credits:spend |
見積もられた記事を作成。 |
POST /videos/translations |
videos:create + credits:spend |
見積もられた翻訳を作成。 |
POST /clips/quotes |
videos:create |
ソーシャルクリップの見積もり(GET /create/types のタイプ)。 |
POST /clips |
videos:create + credits:spend |
見積もられたソーシャルクリップを作成。 |
POST /videos/{video_id}/exports |
videos:export |
MP4 のレンダリング: resolution 1080p(デフォルト)、2k または 4k。常に 60 fps。無料。 |
ジョブとクレジット
| メソッドとパス | 権限 | 内容 |
|---|---|---|
POST /quotes |
作業の権限 | あらゆるジョブ種別の見積もり。 |
POST /jobs |
作業の権限 (+ 有料時は credits:spend) |
見積もられたジョブを開始。 |
GET /jobs |
jobs:read |
ジョブの一覧表示。 |
GET /jobs/{job} |
jobs:read |
1つのジョブのステータスと結果。 |
GET /jobs/{job}/wait |
jobs:read |
ポーリングの代わりに変更を待機。 |
GET /jobs/{job}/events |
jobs:read |
ジョブの進捗イベント。 |
POST /jobs/{job}/cancel |
jobs:read |
ジョブのキャンセル。遅すぎる場合: 「このジョブはこれ以上キャンセルできません。」 |
GET /credits |
credits:spend または jobs:read |
ワークスペースのクレジット残高。 |
ドキュメントサイト
| メソッドとパス | 権限 | 内容 |
|---|---|---|
GET /docs/sites, GET /docs/sites/{site}, GET /docs/sites/{site}/tree, GET /docs/sites/{site}/pages |
content:read |
トークンのスコープ内のサイトとそのページ。 |
GET /docs/sites/{site}/search, GET /docs/pages/{page}, GET /docs/pages/{page}/revisions |
content:read |
ページの検索と読み取り(ドラフトを含む)。 |
POST /docs/sites/{site}/articles, PATCH /docs/pages/{page}/article, POST /docs/pages/{page}/review |
articles:write |
ドラフト記事の作成と編集、レビューへの提出。公開記事には site:publish も必要。 |
PATCH /docs/pages/{page}, DELETE /docs/pages/{page}, POST /docs/sites/{site}/sections, PATCH /docs/sections/{section} |
structure:write |
ページの移動、名前変更、非表示、削除、セクション操作。 |
GET/POST /docs/sites/{site}/site-pages, PUT /docs/site-pages/{page}/body |
content:read / site-pages:write |
ホーム、お問い合わせ、法務ページ。 |
GET/POST /docs/sites/{site}/changelog, PATCH /docs/changelog/{entry} |
content:read / changelog:write |
ドラフトとしての変更履歴エントリ。 |
POST /docs/media, POST /docs/media/uploads |
media:write |
画像のアップロード。 |
POST /docs/sites/{site}/publish, POST /docs/pages/{page}/ready, POST /docs/changelog/{entry}/publish |
site:publish |
閲覧者向けの公開。 |
GET /insights/sites/{site}, …/gaps, …/feedback |
insights:read |
検索のギャップ、未回答の質問、ページへのフィードバック。 |
PATCH /docs/sites/{site}/settings, …/appearance, PUT …/navigation, POST …/redirects |
site:configure |
サイト設定。 |
POST /docs/sites |
sites:create |
ドキュメントサイトの作成。 |
エージェントとドキュメントサイトの詳細: AI エージェントをドキュメントサイトに接続する。
有料作業の依頼
クレジットを消費する作業は、必ず先に見積もりを行い、その後に開始します:
- 見積もりを取得する。 依頼内容を指定して
POST /videos/quotes(または/clips/quotes)を呼び出します。回答にはquote_idとクレジット範囲が含まれます。見積もりは 15 分間有効で、1 回のみ使用可能です。 - 必要に応じてドライランを行う。
"dry_run": trueを指定して開始リクエストを送信し、開始可能か、承認が必要か、ブロックされるかを確認します。何も書き込まれません。 - 開始する。
quote_idとIdempotency-Keyヘッダーを指定してPOST /videosを呼び出します。回答は202で、ジョブが含まれます。 - 追跡する。 ジョブの
statusが変更されるまでGET /jobs/{job}/waitを呼び出すか、Webhook をリッスンします。
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>"}'
ジョブのステータス:
| ステータス | 意味 |
|---|---|
queued |
受理済み、実行予定。 |
running |
実行中。 |
needs_input |
人による操作待ち(通常は エージェントのリクエスト での承認)。ジョブにはリンクと有効期限が含まれます。 |
succeeded |
完了。ジョブから新しい動画や記事にリンクされます。 |
failed |
失敗しました。ジョブに error_code が含まれます。 |
canceled |
キャンセル済み、または承認が拒否されました。 |
expired |
24 時間以内に承認されませんでした。 |
開始リクエストが即座に実行されるか、人の承認を待つかは、トークンの支出上限と 以下を自動的に承認 設定によって決まります。エージェントの支出と承認を管理する を参照してください。
再試行と冪等性
作成および開始のすべてのリクエストで、Idempotency-Key ヘッダー(アクションごとに新しい UUID)を送信してください。ネットワークが切断されて同じキーとボディで再試行した場合、2 つ目の動画が作成されるのではなく、最初の回答が返されます。キーは 24 時間保持されます。
| コード | 意味 |
|---|---|
idempotency_key_reused |
同じキーでボディが異なります。新しいリクエストには新しいキーを使用してください。 |
idempotency_in_progress |
このキーを使用した最初のリクエストがまだ実行中です。待機してから再試行してください。 |
idempotency_conflict |
「この冪等性キーは別のリクエストで使用されました。」 |
エラー
すべてのエラーは同じ形式で、次に何をすべきかを示すメッセージが含まれています:
{
"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"
}
サポートに連絡する際は request_id を含めてください。
| HTTP | コード | 一般的な原因 |
|---|---|---|
| 401 | unauthenticated, token_expired, token_revoked |
トークンなし、誤ったトークン、期限切れ、または取り消されたトークン。 |
| 402 | insufficient_credits |
ワークスペースに見積もりに必要なクレジットが不足しています。 |
| 403 | forbidden_ability, forbidden_role, forbidden_item, ip_not_allowed, live_content_needs_publish, site_paused, forbidden |
権限の欠如、所有者の役割、コレクションへのアクセス権、または IP 許可リスト。 |
| 403 | plan_locked |
「エージェント API はこのワークスペースのプランに含まれていません。Pro プラン以上で利用可能です。」 |
| 404 | not_found, unknown_kind |
「このトークンのスコープ内に該当する ID がありません。先に一覧表示または検索を行い、返された ID を使用してください。」 |
| 409 | revision_conflict, quote_used, not_cancelable, idempotency_* |
コンテンツの変更、見積もりの使用済み、または再試行の競合。 |
| 410 | quote_expired |
「この見積もりは期限切れです。新しい見積もりを依頼してください。」 |
| 413 | unsupported_media |
ファイルが大きすぎるか、サポートされていないタイプです。 |
| 422 | validation_failed, invalid_input, quote_mismatch, limit_reached |
フィールドが正しくありません。details で指定されています。 |
| 429 | rate_limited, cap_exceeded, busy |
リクエスト過多、支出上限、または同時に 2 つの開始リクエスト。 |
すべてのメッセージと修正方法: エージェントおよび API エラーの修正。
レート制限
| 制限 | 値 | メッセージ |
|---|---|---|
| トークンあたりのリクエスト | 1 分間に 300 回 | 「このトークンのリクエストレートを超えています。待機してから再試行してください。」 |
| ワークスペースあたりのリクエスト | 1 分間に 1,200 回(全トークン合計) | 「このワークスペースのエージェントリクエストレートを超えています。待機してから再試行してください。」 |
| トークンあたりの書き込み | 1 分間に 60 回 | 「このトークンからの書き込みが多すぎます。待機してから再試行してください。」 |
| トークンあたりの 1 日の書き込み | 2,000 回 | 「このトークンの 1 日の書き込み制限に達しました。明日再試行してください。」 |
| トークンあたりの公開 | 1 時間に 10 回 | 「このトークンの 1 時間の公開制限に達しました。後で再試行してください。」 |
| 有料作業の開始 | トークンあたり 1 時間に 20 回、ワークスペースあたり 1 日に 100 回 | retry_after を伴う rate_limited |
| アップロード | 1 分間に 30 回、トークンあたり 1 日 500 MB、ファイルあたり 25 MB | 「このトークンからのアップロードが多すぎます。待機してから再試行してください。」 / 「このトークンの 1 日のアップロード容量に達しました。明日再試行してください。」 |
| 有効なトークンなしの呼び出し | IP アドレスあたり 1 分間に 60 回 | 「リクエストが多すぎます。待機してから再試行してください。」 |
429 の回答には Retry-After ヘッダーとボディ内の retry_after(秒)が含まれます。その時間が経過してから再試行してください。読み取り、見積もり、ステータス確認にはクレジットは消費されません。