Models
クイックスタート: 最初の API 呼び出し
このページを読み終える頃には、Grafilab の API キー、モデル id、ターミナルに 表示された JSON の応答、同じ呼び出しのストリーミング版、そしてそのコストを示す 使用状況ダッシュボードの行が手に入っています。
- プロフィールに国を設定済みの Grafilab アカウント。これによってアカウントに 請求通貨が決まります。 アカウントを作成するを参照してください。
- 残高がゼロでないクレジット、または選んだモデルの無料クレジット。 クレジットと請求を参照してください。
curl、または Python 3.9+、または Node.js 18+。
最初の呼び出し
Section titled “最初の呼び出し”-
API キーを作成します。
コンソールで API を開き、 Generate New Key をクリックします。名前を入力し(
quickstartで十分です)、 Enter を押します。API Key Created ダイアログにキーの全文が一度だけ 表示されるので、コピーしてから I’ve saved my key をクリックします。 その後、テーブルではキーが末尾 4 文字までマスクされ、再度読みたいときは Show Key で切り替えられます。キーがコードに紛れ込まないよう、環境変数に入れておきます。
ターミナルウィンドウ export GRAFILAB_API_KEY="sk-grafilab-..."ターミナルウィンドウ $env:GRAFILAB_API_KEY = "sk-grafilab-..." -
モデルを選びます。
The model catalog is live, so list it rather than copying ids from a page. Every entry’s
idis the exact string to use in any tool or SDK.Terminal window curl https://llm.grafilab.ai/v1/models \-H "Authorization: Bearer $GRAFILAB_API_KEY" | jq -r '.data[].id'from openai import OpenAIclient = OpenAI(api_key="sk-grafilab-...", base_url="https://llm.grafilab.ai/v1")for model in client.models.list():print(model.id)import OpenAI from "openai";const client = new OpenAI({ apiKey: "sk-grafilab-...", baseURL: "https://llm.grafilab.ai/v1" });for await (const model of client.models.list()) {console.log(model.id);}The same ids appear as cards in the Playground, with context size and prices.
-
チャット応答をリクエストします。
ベース URL は
https://llm.grafilab.ai/v1です。OpenAI 互換のクライアントなら どれでも動きます。変更するのはベース URL とキーだけです。The examples on this page use
grafilab/qwen3.6-flash, the sample model from the API reference. Replace it with anyidreturned byGET /v1/models.ターミナルウィンドウ curl https://llm.grafilab.ai/v1/chat/completions \-H "Authorization: Bearer $GRAFILAB_API_KEY" \-H "Content-Type: application/json" \-d '{"model": "grafilab/qwen3.6-flash","messages": [{"role": "user", "content": "Say hello in five words."}]}'ターミナルウィンドウ pip install openaiimport osfrom openai import OpenAIclient = OpenAI(api_key=os.environ["GRAFILAB_API_KEY"],base_url="https://llm.grafilab.ai/v1",)response = client.chat.completions.create(model="grafilab/qwen3.6-flash",messages=[{"role": "user", "content": "Say hello in five words."}],)print(response.choices[0].message.content)ターミナルウィンドウ npm install openaiimport OpenAI from "openai";const client = new OpenAI({apiKey: process.env.GRAFILAB_API_KEY,baseURL: "https://llm.grafilab.ai/v1",});const response = await client.chat.completions.create({model: "grafilab/qwen3.6-flash",messages: [{ role: "user", content: "Say hello in five words." }],});console.log(response.choices[0].message.content);標準的なチャット応答が返ります。ここでは省略して示します。
{"id": "chatcmpl-...","object": "chat.completion","model": "grafilab/qwen3.6-flash","choices": [{"index": 0,"message": { "role": "assistant", "content": "Hello, good to meet you today." },"finish_reason": "stop"}],"usage": { "prompt_tokens": 13, "completion_tokens": 8, "total_tokens": 21 }} -
同じ呼び出しをストリーミングします。
stream: trueを指定すると、モデルが書き進めるのに合わせて server-sent events を受け取れます。さらにstream_options: {"include_usage": true}を追加すると、 終端の直前の data フレームにトークン数が入ります。これがないと、ストリーミング 呼び出しはクライアントに使用量を返しません。ターミナルウィンドウ curl -N https://llm.grafilab.ai/v1/chat/completions \-H "Authorization: Bearer $GRAFILAB_API_KEY" \-H "Content-Type: application/json" \-d '{"model": "grafilab/qwen3.6-flash","messages": [{"role": "user", "content": "Say hello in five words."}],"stream": true,"stream_options": {"include_usage": true}}'stream = client.chat.completions.create(model="grafilab/qwen3.6-flash",messages=[{"role": "user", "content": "Say hello in five words."}],stream=True,stream_options={"include_usage": True},)for chunk in stream:if chunk.choices and chunk.choices[0].delta.content:print(chunk.choices[0].delta.content, end="", flush=True)if chunk.usage:print("\n", chunk.usage)const stream = await client.chat.completions.create({model: "grafilab/qwen3.6-flash",messages: [{ role: "user", content: "Say hello in five words." }],stream: true,stream_options: { include_usage: true },});for await (const chunk of stream) {const delta = chunk.choices[0]?.delta?.content;if (delta) process.stdout.write(delta);if (chunk.usage) console.log("\n", chunk.usage);}生の SSE ストリームは
data: [DONE]で終わります。 -
コストを確認します。
API に戻り、そのキーの行で View Usage をクリックします。コンソールは そのキーで絞り込んだ Inference API Usage を開きます。すべてのリクエストは、認証に 使われたキーに紐づけられているからです。呼び出しを行った日の Total cost と Token breakdown のタイル(Input、Cached、Output)を読んでください。
そのページの脚注には All dates in UTC · data may lag up to 30 min とあります。 これらの数字を作るロールアップは、当日と前日を 30 分ごとに再集計するため、 直前に行った呼び出しはまだ表示されないことがあります。
次の 3 つがすべて満たされていれば完了です。
- ストリーミングなしの呼び出しが、空でない
choices[0].message.contentを返した。 - ストリーミングの呼び出しが、テキストを逐次表示し、最後に usage オブジェクトで 終わった。
- 30 分ほど以内に、そのキーの Inference API Usage に当日分の 0 でない Total cost とトークンの内訳が表示された。
テキストの呼び出しは配信後に 1 回だけ課金されるため、出力を生成する前に失敗した 呼び出しは無料です。
トラブルシューティング
Section titled “トラブルシューティング”401 invalid_api_key— キーが誤っている、ローテーション済み、または貼り付け 時にスペースや改行が混じっています。API からコピーし直してください。値が もう手元にないなら、キーをローテーションして新しい値を使います。404 model_not_found— id の綴りが違うか、招待制モデルか、アカウントの通貨で 価格が設定されていません。GET /v1/modelsを実行し直し、そのレスポンスのidを そのままコピーしてください。429 insufficient_quota— スループットの制限ではなく、残高の問題です。 Billing でチャージしてください。403 billing_currency_unset— アカウントにまだ請求通貨がありません。 プロフィールで国を設定してから再試行してください。- 接続拒否、または URL 自体で 404 — ベース URL を確認してください。OpenAI
サーフェスは
https://llm.grafilab.ai/v1で、クライアントが/chat/completionsを付け足します。Anthropic クライアントはオリジンだけ (https://llm.grafilab.ai)を受け取り、自分で/v1/messagesを付け足します。

