Fireworks AI 入門 — 初心者のためのハンズオンガイド|2026-09 版
第 2 章

はじめの一歩 — アカウント作成から最初の API 呼び出しまで

サインアップ、API キー発行、curl と Python で最初の 1 リクエスト

この章で分かること

これは何か

第 1 章で見たとおり、Fireworks には app.fireworks.ai(Web コンソール)、firectl CLI、OpenAI 互換 / Anthropic 互換の API、Python SDK という複数の入口がある。このうち、どの入口を使うにしても最初に必ず 1 回だけ必要な作業が「API キーの発行」だ。API キーは Fireworks の API を呼び出すときの認証トークンで、コンソールの Account > API Keys(URL は app.fireworks.ai/settings/users/api-keys。短縮 URL の /api-keys でも同じ画面に着く)で発行する。

この章ではまず API キーを発行するためにブラウザでコンソールを開くが、このガイドの手順の中でブラウザ操作が必要なのはここだけで、それを終えればあとはターミナルとエディタだけで完結する。ゴールは、curl で 1 発、Python で 1 発、それぞれ Fireworks の推論 API を呼び出して応答を受け取ることだ。

いつ使うのか

この章の手順は基本的に「最初に 1 回やればよいセットアップ」だが、API キーの発行そのものは何度でも起こる作業になる。ユースケースとしては次のようなものがある。

API キーの発行経路は 1 つではない。個人利用ならコンソールが最短だが、自動化したいなら firectl のほうが向く。用途による使い分けは次のとおり。

発行経路主な用途向いている場面
コンソールの Create API key ボタン 個人が自分用のキーを 1 本発行する このガイドのような学習・プロトタイピング
firectl api-key create スクリプトやターミナルからその場で発行する ローカルでの検証、複数プロファイルの切り替え
firectl api-key create --service-account=... 個人ではなくサービスアカウントに紐づくキーを発行する CI・本番運用向け共有アイデンティティ(Admin 権限が必要。詳細は 第 13 章)

サインアップとログイン

Fireworks のアカウントは fireworks.ai/login から、Google・GitHub・LinkedIn のいずれかのアカウントでサインアップ/ログインする(Enterprise 契約では SAML / OIDC の SSO も使える)。初回サインアップ時には、プロフィールと簡単なアンケートに答えるオンボーディング画面が挟まる。

1 つだけ落とし穴がある。GitHub と LinkedIn でのログインは、そのアカウントのプライマリメールアドレスで Fireworks 側のアカウントを識別する。つまり、同じ GitHub アカウントでも、GitHub 側でプライマリメールを切り替えてからログインすると、別の Fireworks アカウントに繋がる。複数の Fireworks アカウントを持っている人がログインのたびに違うアカウントに入ってしまう事故は、たいていこれが原因だ。

API キーのライフサイクル

コンソールで Create API key を押すと、キーの実体(fw_ から始まる文字列)が画面に表示される。この平文の値が確認できるのは作成した瞬間だけで、Fireworks 側にも以後は保存されない。閉じてしまったら再発行するしかないので、その場でコピーして安全な場所に控える必要がある。

キーには他にもいくつかの性質がある。名前(displayName)を付けなければ "default" になる。有効期限(expireTime)は未設定なら無期限。lastUsed(最終利用日時)は一度も使われていないキーには存在しないので、使われていない古いキーの棚卸しに使える。firectl で作る場合も対応するフラグがあり、--key-name で名前、--expire-time で YYYY-MM-DD[ HH:MM:SS] 形式の期限を指定できる(省略時は無期限)。

発行したキーは、環境変数 FIREWORKS_API_KEY に入れてターミナルやコードから読み出すのが Fireworks の標準的な流儀だ。以降のコード例はすべてこの環境変数を前提にしている。

あなたの環境 curl / Python api.fireworks.ai Authorization: Bearer $FIREWORKS_API_KEY choices[0].message.content
図 2-1 curl や SDK が送るのは 1 本の HTTP リクエストで、認証情報は Authorization ヘッダーに、返信本文は JSON の choices[0].message.content に入っている。

エンドポイントとモデル ID の構造

Fireworks は 1 つの API サーバー(api.fireworks.ai)の上に、OpenAI Chat Completions API と互換のエンドポイントと、Anthropic Messages API と互換のエンドポイントを両方乗せている。実際にリクエストが届く先(wire 上のパス)はどちらも https://api.fireworks.ai/inference/v1 配下で共通で、末尾だけがそれぞれ /chat/completions と /messages に分かれる。つまり Anthropic 互換の実エンドポイントは https://api.fireworks.ai/inference/v1/messages だ。ここで紛らわしいのが SDK に渡す base_url の書き方で、OpenAI SDK にはこの共通 URL をそのまま https://api.fireworks.ai/inference/v1 として渡すのに対し、Anthropic SDK には /v1 を含めない https://api.fireworks.ai/inference を渡す。SDK 側が /v1/messages を自動で付け足す流儀になっているためで、実際に叩かれるパスが変わるわけではない。レスポンスの読み方も choices[0].message.content(OpenAI 互換)と content[0].text(Anthropic 互換)に分かれる。OpenAI SDK を使う場合は base_url にこの OpenAI 互換 URL を渡すだけで、あとは通常の OpenAI SDK の使い方と同じになる。

実際に叩かれる URL(OpenAI 互換・Anthropic 互換で共通) https://api.fireworks.ai/inference/v1 /chat/completions OpenAI 互換 /messages Anthropic 互換 SDK に渡す base_url(書き方が分かれる) OpenAI SDK base_url = https://api.fireworks.ai/inference/v1 Anthropic SDK base_url = https://api.fireworks.ai/inference (/v1 なし。SDK が自動付加) 末尾に付ける 末尾に付ける
図 2-2 実際に叩かれる URL は両方とも /inference/v1 配下で共通(末尾だけ /chat/completions か /messages かで分かれる)。SDK に渡す base_url の書き方だけが /v1 の有無で分かれ、Anthropic SDK は /v1/messages を自動で付け足す。

リクエストの model パラメータに渡すモデル ID にも決まった構造がある。accounts/fireworks/models/glm-5p2 のように、accounts/ と /models/ という区切り文字列は常に固定で、変わるのはその間に挟まるアカウント ID(Fireworks 提供モデルなら常に fireworks)と、末尾のモデル名の 2 か所だけだ。モデル名のバージョン番号に現れるドットは p に置き換わる(例: 5.2 → 5p2)。

accounts/ fireworks /models/ glm-5p2 固定文字列 アカウント ID 固定文字列 モデル名 例: 5.2 は 5p2 と書く
図 2-3 accounts/ と /models/ という区切りは常に固定で、変わるのは間に挟まるアカウント ID とモデル名の部分だけ。

支払い設定とレート制限

新しく作ったアカウントは、支払い方法が未登録、または登録済みでもクレジット残高が無い状態だと、アカウント全体で 10 RPM(1 分あたり 10 リクエスト)までしかリクエストを送れない。有効な支払い方法を登録し、かつクレジット残高がある状態になると、上限はアカウント全体で最大 6,000 RPM まで上がる(2026-09 時点)。この 6,000 RPM はサーバーレス専用の上限ではなく、Serverless・Deployments・Training を含むアカウント全体で共有される固定の天井で、その後どれだけ利用額が増えても変わらない。支払い方法の登録や請求まわりの詳しい管理は 第 13 章で扱う。

月次のスペンド上限は使用量が 80% に達すると警告メールが届き、100% に達すると Serverless・Deployments・Training のすべての API リクエストが自動的に停止する(この停止挙動は Enterprise アカウントには適用されず、アラートは通知のみ)。クレジットの追加や、この 80% 警告以外の通知しきい値の追加は Billing 画面(app.fireworks.ai/account/billing)から行えるが、月次スペンド上限そのものの変更は Billing 画面ではできず firectl 経由になる(詳細は 第 13 章)。

両方そろうと 支払い方法未登録 またはクレジット残高なし 10 RPM 支払い方法登録済み かつクレジット残高あり 6,000 RPM(上限)
図 2-4 この上限はアカウント全体で共有される固定の天井で、支払い方法とクレジット残高がともに揃っているかどうかで切り替わる(2026-09 時点)。

ハンズオン 2-1 API キーを発行して curl で最初のリクエストを送る

  1. ブラウザで app.fireworks.ai/settings/users/api-keys を開く。未サインインなら Google / GitHub / LinkedIn のいずれかでサインアップする(初回はプロフィール入力のアンケートが挟まる)。
  2. Create API key ボタンをクリックする。名前を付けられる(省略した場合の既定値は default)。
  3. 表示された値(fw_ から始まる文字列)をコピーして安全な場所に保存する。この画面を閉じると二度と表示されないので、忘れた場合は作り直すしかない。
  4. ターミナルで環境変数にセットする。
# macOS / Linux
export FIREWORKS_API_KEY="fw_ここに発行されたキーを貼る"

# Windows(PowerShell)
setx FIREWORKS_API_KEY "fw_ここに発行されたキーを貼る"

ここで 1 つ注意したい。macOS / Linux の export はその場で開いているターミナルの中だけ有効で、新しいターミナルを開くと消える(恒久化したいなら ~/.zshrc や ~/.bashrc などシェルの設定ファイルに追記する)。Windows の setx は逆に恒久化されるが、実行した今のセッションには反映されないので、値を使うには新しいターミナルを開き直す必要がある。以降の手順を別のターミナルで実行するときはこの点を思い出してほしい。

Serverless はトークン従量課金で、この後の curl リクエストにも料金が発生する(単価の詳細は 第 5 章で扱う)。短い会話文 1 往復なら実質誤差程度の金額だが、支払い方法が未登録、またはクレジット残高が無いうちはそもそもアカウント全体で 10 RPM(1 分 10 リクエスト)までしか送れないので、まずはこの手順どおり 1 回ずつ試すとよい。想定外の請求が心配なら、上の「支払い設定とレート制限」で触れた Billing 画面の通知しきい値を先に確認しておく。

  1. 次の curl コマンドを実行する。
curl https://api.fireworks.ai/inference/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $FIREWORKS_API_KEY" \
  -d '{
    "model": "accounts/fireworks/models/glm-5p2",
    "messages": [
      {"role": "user", "content": "Say hello in Spanish"}
    ]
  }'

レスポンスは OpenAI Chat Completions 形式の JSON オブジェクトで返る。実際に読むのは主に choices[0].message.content で、ここに "¡Hola!" のような返信本文が入っていれば成功。

ハンズオン 2-2 Python で同じリクエストを送り、ストリーミングで受け取る

  1. OpenAI 互換のクライアントを使う場合は、まず OpenAI の Python SDK をインストールする。
pip install openai

この後実行する 3 本(OpenAI SDK の非ストリーミング呼び出し/ストリーミング呼び出し/Fireworks 純正 SDK 呼び出し)はいずれも Serverless のトークン従量課金の対象になる(単価の詳細は 第 5 章で扱う)。とくにストリーミング例(「短い物語を聞かせて」という依頼)は 2-1 の 1 単語応答より生成トークン数が増える点に注意する。

  1. 次のスクリプトを実行する。base_url を Fireworks のエンドポイントに向け、api_key は環境変数から読む。
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("FIREWORKS_API_KEY"),
    base_url="https://api.fireworks.ai/inference/v1"
)

response = client.chat.completions.create(
    model="accounts/fireworks/models/glm-5p2",
    messages=[{"role": "user", "content": "Say hello in Spanish"}],
)

print(response.choices[0].message.content)
  1. stream=True を足すと、トークンが生成され次第 1 つずつ受け取れる。
stream = client.chat.completions.create(
    model="accounts/fireworks/models/glm-5p2",
    messages=[{"role": "user", "content": "Tell me a short story"}],
    stream=True,
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

ここまでの 2 本は OpenAI SDK 経由だったが、Fireworks 純正の Python SDK(fireworks-ai。2026-09 時点で alpha 段階)を使う別解もある。import と呼び出し方が少し変わり、次の手順で試せる。

  1. alpha 段階のためインストール時に --pre フラグが必須になる。次のコマンドを実行する。
pip install --pre fireworks-ai
  1. 次のスクリプトを実行する。base_url も api_key の指定も不要になる(環境変数 FIREWORKS_API_KEY を自動で読み込む)。
from fireworks import Fireworks

client = Fireworks()

response = client.chat.completions.create(
    model="accounts/fireworks/models/glm-5p2",
    messages=[{"role": "user", "content": "Say hello in Spanish"}],
)

print(response.choices[0].message.content)

つまずきポイント

API キーの平文(key フィールド)は作成した瞬間の 1 回しか返ってこない。Fireworks 側もその後は保存しないので、コピーし忘れると再発行するしかない。コンソールを開いたまま席を外さず、その場で安全な場所(パスワードマネージャ等)に控える。

GitHub / LinkedIn ログインは、そのアカウントのプライマリメールアドレスで Fireworks 側のアカウントを識別する。プライマリメールを切り替えてからログインすると別のアカウントに繋がってしまうため、「昨日発行したキーが今日のコンソールに無い」と感じたら、まずログイン中のアカウントを疑う。

支払い方法が未登録、またはクレジット残高が無いアカウントは、アカウント全体で 10 RPM(1 分 10 リクエスト)までしか送れない。ハンズオンのコードをループで何度も回すとすぐに 429(レート制限エラー)に当たる。連続で試したいときは、先に支払い方法を登録し、クレジット残高がある状態にしておく。

OpenAI 互換と Anthropic 互換は、SDK に渡す base_url(/inference/v1 か /inference か)だけでなく、レスポンスの読み方(choices[0].message.content か content[0].text か)も違う。Anthropic SDK の base_url に /v1 が無いのは SDK が /v1/messages を自動で付け足すためで、実際に叩かれる URL は OpenAI 互換と同じく /inference/v1 配下になる。片方の SDK のコード例をもう片方の base URL にそのまま向けても動かない。

理解度チェック

Q1. API キーの平文の値(key フィールド)はいつ確認できますか?

作成した瞬間の 1 回だけ。gatewayApiKey リソースの key フィールドは作成時のみレスポンスに含まれ、それ以降は Fireworks 側にも保存されない。取り逃したら再発行するしかない。

Q2. OpenAI 互換と Anthropic 互換で、base URL は具体的にどう違いますか?

OpenAI 互換は https://api.fireworks.ai/inference/v1、Anthropic 互換は /v1 を含まない https://api.fireworks.ai/inference。パスの末尾(/chat/completions か /messages か)とレスポンスの読み方も異なる。ただし実際に叩かれる URL は両方とも /inference/v1 配下で、Anthropic SDK は base_url に /v1/messages を自動で付け足す。

Q3. 支払い方法もクレジットも登録していないアカウントのリクエスト上限は?

アカウント全体で 10 RPM(1 分あたり 10 リクエスト)。有効な支払い方法を登録し、かつクレジット残高がある状態になると、最大 6,000 RPM まで上がる。これはサーバーレス専用ではなくアカウント全体で共有される固定の上限で、その後どれだけ利用額が増えても変わらない(2026-09 時点)。

Q4. モデル ID accounts/fireworks/models/glm-5p2 のうち、自分のアカウントの別モデルを指すときに変わるのはどこですか?

accounts/ の後ろの fireworks(アカウント ID)の部分と、/models/ の後ろのモデル名の部分。accounts/ と /models/ という区切り文字列そのものは常に固定。

まとめ

次の第 3 章では、100 を超えるモデルの中から目的に合う 1 つを見つけるための Model Library の使い方を見ていく。

参考リンク