AI Gateway は、リクエストごとに有効な Cloudflare API トークンを要求します。不正アクセスを防ぎ、ログ保存量を膨らませる無効なリクエストからも守れます。
REST API を使う場合は、標準の Authorization ヘッダーに Cloudflare API トークンを渡します。gateway.ai.cloudflare.com の プロバイダーネイティブエンドポイント を使う場合は、代わりに cf-aig-authorization ヘッダーを使います。
- 認証を有効にするゲートウェイの Settings を開きます。
- Create authentication token を選択し、必要な
Run権限付きのカスタムトークンを生成します。このトークンは再表示されないため、安全に保存してください。 - 各リクエストに API トークンを含めます。
- REST API(
/ai/run)を使う場合は、標準のAuthorizationヘッダーに Cloudflare API トークンを含めます。 gateway.ai.cloudflare.comの プロバイダーネイティブエンドポイント を使う場合は、cf-aig-authorizationヘッダーを使います。
- REST API(
- 設定ページに戻り、Authenticated Gateway をオンにします。
# Run `wrangler whoami` to get your account ID to replace $CLOUDFLARE_ACCOUNT_ID,
# and `wrangler auth token` to get an auth token to replace $CLOUDFLARE_API_TOKEN.
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/ai/v1/chat/completions" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--header "Content-Type: application/json" \
--data '{"model": "openai/gpt-4.1-mini", "messages": [{"role": "user", "content": "What is Cloudflare?"}]}'OpenAI SDK を使う場合:
import OpenAI from "openai";
const openai = new OpenAI({
apiKey: CLOUDFLARE_API_TOKEN,
baseURL: `https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/ai/v1`,
});
const response = await openai.chat.completions.create({
model: "openai/gpt-4.1-mini",
messages: [{ role: "user", content: "What is Cloudflare?" }],
});Vercel AI SDK を使う場合:
import { createOpenAI } from "@ai-sdk/openai";
const openai = createOpenAI({
apiKey: CLOUDFLARE_API_TOKEN,
baseURL: `https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/ai/v1`,
});認証設定とヘッダーの有無に応じたゲートウェイの動作は、次のとおりです。
| 認証設定 | ヘッダー | ゲートウェイの状態 | レスポンス |
|---|---|---|---|
| オン | ヘッダーあり | 認証済みゲートウェイ | リクエストは成功します |
| オン | ヘッダーなし | エラー | 認可がないためリクエストは失敗します |
| オフ | ヘッダーあり | 未認証ゲートウェイ | リクエストは成功します |
| オフ | ヘッダーなし | 未認証ゲートウェイ | リクエストは成功します |