メインコンテンツへスキップ

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.

5 ステップで最初の Qoder Cloud Agent を動かします。トークン取得、環境選択、Agent 作成、Session 起動、メッセージ送受信。すべて curl だけで完結し、SDK のインストールは不要です。

前提条件

  • Qoder アカウント
  • ターミナル環境 (macOS / Linux / WSL)
  • curljq (任意。JSON 整形に使用)

ステップ 1: PAT を取得する

  1. Qoder コンソールにログイン
  2. 「設定 → パーソナルアクセストークン」へ移動
  3. 「トークンを作成」をクリックし、名前と有効期限を設定
  4. トークンをコピーして環境変数に設定:
# PAT を環境変数に設定。以降のすべてのコマンドで利用
export QODER_PAT="your-personal-access-token"
トークンは作成時に一度だけ表示されます。すぐに保存してください。~/.bashrc または ~/.zshrc に書き込むことを推奨します。

ステップ 2: 環境を選択する

利用可能な Environment 一覧を取得し、デフォルト環境の ID を確認します。
# 利用可能なすべての Environment を一覧表示
curl -s https://openapi.qoder.sh/api/v1/cloud/environments \
  -H "Authorization: Bearer $QODER_PAT"
レスポンス例:
{
  "data": [
    {
      "id": "env_default",
      "name": "default",
      "config": {
        "type": "cloud",
        "networking": "unrestricted"
      },
      "status": "ready",
      "created_at": "2026-01-01T00:00:00Z",
      "updated_at": "2026-01-01T00:00:00Z"
    }
  ],
  "first_id": "env_default",
  "last_id": "env_default",
  "has_more": false
}
# デフォルト環境 ID を抽出
ENV_ID=$(curl -s https://openapi.qoder.sh/api/v1/cloud/environments \
  -H "Authorization: Bearer $QODER_PAT" | jq -r '.data[0].id')

echo "Environment ID: $ENV_ID"

ステップ 3: Agent を作成する

shell ツールを備えた汎用 Agent を定義します。
# Agent を作成。201 が返る
curl -s -X POST https://openapi.qoder.sh/api/v1/cloud/agents \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-first-agent",
    "model": "ultimate",
    "system": "あなたは効率的なプログラミングアシスタントです。コード作成と問題解決が得意です。",
    "tools": [
      {"type": "bash_20250124"}
    ]
  }' | jq .
レスポンス例:
{
  "id": "ag_abc123def456",
  "name": "my-first-agent",
  "model": "ultimate",
  "system": "あなたは効率的なプログラミングアシスタントです。コード作成と問題解決が得意です。",
  "tools": [{"type": "bash_20250124"}],
  "metadata": {},
  "version": 1,
  "created_at": "2026-05-18T10:00:00Z",
  "updated_at": "2026-05-18T10:00:00Z"
}
# Agent ID を抽出
AGENT_ID=$(curl -s -X POST https://openapi.qoder.sh/api/v1/cloud/agents \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-first-agent",
    "model": "ultimate",
    "system": "あなたは効率的なプログラミングアシスタントです。",
    "tools": [{"type": "bash_20250124"}]
  }' | jq -r '.id')

echo "Agent ID: $AGENT_ID"

ステップ 4: Session を起動する

Agent を Environment にバインドして実行インスタンスを作成します。
# Session を起動。201 が返る
curl -s -X POST https://openapi.qoder.sh/api/v1/cloud/sessions \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d "{
    \"agent\": \"$AGENT_ID\",
    \"environment_id\": \"$ENV_ID\"
  }" | jq .
レスポンス例:
{
  "id": "ses_xyz789",
  "agent_id": "ag_abc123def456",
  "environment_id": "env_default",
  "status": "idle",
  "title": null,
  "metadata": {},
  "usage": {
    "input_tokens": 0,
    "output_tokens": 0
  },
  "created_at": "2026-05-18T10:01:00Z",
  "updated_at": "2026-05-18T10:01:00Z"
}
# Session ID を抽出
SESSION_ID=$(curl -s -X POST https://openapi.qoder.sh/api/v1/cloud/sessions \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d "{\"agent\": \"$AGENT_ID\", \"environment_id\": \"$ENV_ID\"}" | jq -r '.id')

echo "Session ID: $SESSION_ID"

ステップ 5: メッセージ送信 + イベント受信

Session にユーザーメッセージを送信し、SSE ストリームで Agent からの応答をリアルタイム受信します。
# メッセージを送信
curl -s -X POST "https://openapi.qoder.sh/api/v1/cloud/sessions/$SESSION_ID/events" \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "user.message",
    "content": "Python でフィボナッチ数列を計算する関数を書いて、テストを実行してください。"
  }' | jq .
# SSE ストリームでイベントをリアルタイム受信
curl -s -N "https://openapi.qoder.sh/api/v1/cloud/sessions/$SESSION_ID/events/stream" \
  -H "Authorization: Bearer $QODER_PAT"
イベントストリームの出力例:
event: session.status_rescheduled
data: {"type":"session.status_rescheduled","status":"processing"}

event: span.model_request_start
data: {"type":"span.model_request_start"}

event: agent.thinking
data: {"type":"agent.thinking","content":"フィボナッチ関数を書きます..."}

event: agent.message
data: {"type":"agent.message","content":"以下がフィボナッチ数列の実装です: ..."}

event: session.status_idle
data: {"type":"session.status_idle","status":"idle"}

エンドツーエンドスクリプト

上記の手順を、そのまま実行できるスクリプトにまとめます。
#!/bin/bash
# Qoder Cloud Agents クイックスタートスクリプト
# 使い方: export QODER_PAT="your-token" && bash quickstart.sh

set -euo pipefail

BASE_URL="https://openapi.qoder.sh/api/v1/cloud"
HEADERS=(
  -H "Authorization: Bearer $QODER_PAT"
)

echo "=== ステップ 1: デフォルト環境を取得 ==="
ENV_ID=$(curl -s "$BASE_URL/environments" "${HEADERS[@]}" | jq -r '.data[0].id')
echo "Environment ID: $ENV_ID"

echo "=== ステップ 2: Agent を作成 ==="
AGENT_ID=$(curl -s -X POST "$BASE_URL/agents" \
  "${HEADERS[@]}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "quickstart-agent",
    "model": "ultimate",
    "system": "あなたは効率的なプログラミングアシスタントです。",
    "tools": [{"type": "bash_20250124"}]
  }' | jq -r '.id')
echo "Agent ID: $AGENT_ID"

echo "=== ステップ 3: Session を起動 ==="
SESSION_ID=$(curl -s -X POST "$BASE_URL/sessions" \
  "${HEADERS[@]}" \
  -H "Content-Type: application/json" \
  -d "{\"agent\": \"$AGENT_ID\", \"environment_id\": \"$ENV_ID\"}" | jq -r '.id')
echo "Session ID: $SESSION_ID"

echo "=== ステップ 4: メッセージを送信 ==="
curl -s -X POST "$BASE_URL/sessions/$SESSION_ID/events" \
  "${HEADERS[@]}" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "user.message",
    "content": "Hello World を出力し、現在のシステム時刻を教えてください。"
  }' | jq .

echo "=== ステップ 5: イベントストリームを受信 ==="
echo "(終了するには Ctrl+C)"
curl -s -N "$BASE_URL/sessions/$SESSION_ID/events/stream" "${HEADERS[@]}"

よくある質問

Q: 401 Unauthorized が表示されたら? A: $QODER_PAT が正しく設定されているか、トークンが期限切れでないかを確認してください。トークンを再作成して環境変数を更新します。 Q: Agent 作成で 400 Bad Request が返る? A: リクエストボディの JSON 形式が正しいか、model フィールドが有効値 ("ultimate" など) か、tools が配列になっているかを確認してください。 Q: Session が idle のままでイベントが届かない? A: Session に user.message イベントを送信したか確認してください。Session 作成直後はデフォルトで idle 状態であり、メッセージを送らないと処理が始まりません。 Q: SSE ストリームが切断された場合は? A: events/stream エンドポイントへ再リクエストすれば、最新状態からプッシュが再開されます。GET ポーリングで履歴イベントを取得することも可能です。

次のステップ