Documentation Index
Fetch the complete documentation index at: https://docs.qoder.com/llms.txt
Use this file to discover all available pages before exploring further.
Qoder Cloud Agents API は 冪等キー(Idempotency Key) を通じて、書き込み操作の安全なリトライをサポートします。ネットワークが不安定な場合やクライアントタイムアウトが発生した場合でも、冪等キーを使用することで、リソースの重複作成や操作の重複実行を回避できます。
ヘッダー形式
等価な 2 種類のヘッダー名がサポートされています。
| ヘッダー名 | 説明 |
|---|
Idempotency-Key | 標準形式 |
X-Idempotency-Key | X- プレフィックス付きの互換形式 |
両者の機能は完全に同じで、どちらを選択してもかまいません。
# 方式 1: 標準形式
Idempotency-Key: unique-request-id-001
# 方式 2: X- プレフィックス形式
X-Idempotency-Key: unique-request-id-001
グローバルな一意性を保証するため、UUID v4 を冪等キーの値として使用することを推奨します。
適用範囲
冪等キーは 書き込み操作にのみ 有効です。
| HTTP メソッド | 冪等キーのサポート | 説明 |
|---|
| POST | はい | リソースの作成 |
| PUT | はい | リソースの更新 |
| DELETE | はい | リソースの削除 |
| GET | いいえ | 読み取り操作は本質的に冪等であり、この機構は不要 |
使用例
Agent の作成(冪等キー付き)
# UUID を冪等キーとして使用 \
curl -X POST https://openapi.qoder.sh/api/v1/cloud/agents \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
-d '{
"name": "my-agent",
"model": "qoder-sonnet-latest"
}'
スクリプトで冪等キーを生成
# UUID を自動生成してリクエストを発行 \
IDEMPOTENCY_KEY=$(uuidgen | tr '[:upper:]' '[:lower:]')
curl -X POST https://openapi.qoder.sh/api/v1/cloud/sessions \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-d '{
"agent_id": "agent_abc123"
}'
echo "冪等キー: $IDEMPOTENCY_KEY"
重複リクエストの動作
同じ冪等キー + 同じリクエストボディ
サーバーは初回リクエストのレスポンス結果を直接返し、操作を繰り返し実行しません。
# 1 回目のリクエスト → リソース作成、201 を返す \
curl -X POST https://openapi.qoder.sh/api/v1/cloud/agents \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: my-unique-key-001" \
-d '{"name": "test-agent", "model": "qoder-sonnet-latest"}'
# 2 回目のリクエスト(同じ key + 同じ body)→ 初回の結果を直接返す \
curl -X POST https://openapi.qoder.sh/api/v1/cloud/agents \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: my-unique-key-001" \
-d '{"name": "test-agent", "model": "qoder-sonnet-latest"}'
同じ冪等キー + 異なるリクエストボディ
サーバーは 409 conflict_error を返し、実行を拒否します。
{
"type": "error",
"error": {
"type": "conflict_error",
"message": "A request with this idempotency key has already been processed with different parameters."
}
}
ユニークなビジネス操作ごとに、独立した冪等キーを使用してください。異なるリクエストで同じ key を再利用しないでください。
冪等キーのライフサイクル
| 機能 | 説明 |
|---|
| 有効期間 | 冪等キーは初回使用後 24 時間保持されます |
| 期限切れ後 | 同じ key は新規リクエストとして再実行されます |
| 適用範囲 | PAT(アカウント)ごとに分離。異なるアカウントの同じ key は互いに影響しません |
ベストプラクティス
1. 冪等キーを使用するタイミング
- 重要なリソース(Agent、Session)の作成時に 強く推奨
- ネットワーク不安定な環境下でのすべての書き込み操作
- 自動化スクリプトでのバッチ操作
2. Key の生成戦略
| 戦略 | 適用シナリオ | 例 |
|---|
| UUID v4 | 汎用シナリオ | 550e8400-e29b-41d4-a716-446655440000 |
| ビジネス ID 組み合わせ | ビジネスレベルでの重複排除 | create-agent-project42-env-prod |
| タイムスタンプ + ランダム数 | シンプルなシナリオ | 1717200000-abc123 |
3. リトライ付きの完全な例
#!/bin/bash
# Session の作成、冪等キーとリトライロジック付き
IDEMPOTENCY_KEY=$(uuidgen | tr '[:upper:]' '[:lower:]')
MAX_RETRIES=3
for i in $(seq 1 $MAX_RETRIES); do
response=$(curl -s -w "\n%{http_code}" \
-X POST https://openapi.qoder.sh/api/v1/cloud/sessions \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-d '{"agent_id": "agent_abc123"}')
http_code=$(echo "$response" | tail -1)
body=$(echo "$response" | sed '$d')
# 成功またはクライアントエラー(リトライ不要)
if [ "$http_code" -lt 500 ] && [ "$http_code" != "429" ]; then
echo "$body"
break
fi
# サーバーエラー、安全にリトライ(冪等キーが重複作成を防止)
echo "$i 回目のリクエスト失敗 ($http_code)、リトライ中..."
sleep $((i * 2))
done
冪等キーを使用しない場合の動作
- 同じリクエストの繰り返し送信は 毎回実行され、リソースの重複作成につながる可能性があります。
- 重要でない操作、またはビジネス層で重複排除を実装済みのシナリオでは、冪等キーを使用しなくてもかまいません。
- GET リクエストには冪等キーが不要で、本質的に安全にリトライ可能です。