OpenAI APIの使い方を確認する意味で、curlコマンドを使って基本的な操作をしてみました。
OpenAI PlatformのAPI Referenceでは、curlコマンドのサンプルとレスポンスのサンプルが、テキスト送信・画像送信・ファイル送信等のケース別に掲載されているので、非常に親切です。

リファレンスはこうあるべきですね。
curlコマンド以外にも、執筆時点(2025/12/09)では、javascript/python/c#のコード例が掲載されています。

これからやること
- OpenAI PlatformでのOrganization IDの確認
- OpenAI PlatformでのAdmin key作成
- OpenAI Platformでのプロジェクト作成
- OpenAI PlatformでのAPIキー作成⇒プロジェクトへの割り当て
- 利用可能モデルの一覧取得
- Responses API経由でのメッセージ送信/レスポンス取得
- 使用量(消費トークン)/使用料金の取得
前提条件
- Ubuntu24.04.3 LTS (WSL2 on Windows11) 上で作業していきます
- OpenAI Platformのアカウント登録済(筆者はGoogleアカウントで登録済)
- OpenAI APIの利用は有料(プリペイド制。筆者はとりあえず$5チャージ済。)
※クレジットのチャージは一回で$5~$100で1年間の有効期限があります。オートリチャージの設定も可能です。
▼APIの使用料金
チャット用APIの種類
OpenAI APIでは、チャット用のAPIが何種類かあります。
執筆時点(2025/12/09)で使用可能なAPIは
- Completions・・・レガシー
- Responses・・・最先端
- Conversations・・・OpenAI側でスレッド管理
- Chatkit threads・・・Chatkit SDK用
- Traces・・・実行フローの記録/可視化
▼ChatGPT先生の教え

今回はチャットではResponsesだけを使います。
OpenAIのモデル応答生成における最先端のインターフェースです。テキストおよび画像入力、テキスト出力をサポートします。モデルに対して、前の応答の出力を入力として状態型の相互作用を作成します。ファイル検索、ウェブ検索、コンピュータ利用などの組み込みツールでモデルの機能を拡張しましょう。モデルが関数呼び出しを使って外部システムやデータにアクセスできるようにします。
OpenAI PlatformでのOrganization ID確認
画面右上「Settings」(歯車アイコン)から設定画面に遷移し、

サイドメニュー「General」を選択します。

「Organization ID」をコピーして別の場所に保存しておきましょう。
後でcurlでAPIを叩く際に使います。
OpenAI PlatformでのAdmin key作成
使用量(消費トークン)や使用料金をOrganizationレベルで取得する際には、Admin keyが必要です。
画面右上「Settings」>サイドメニュー「Admin keys」を選択します。
「+ Create new Admin key」ボタンを押下します。
モーダルが表示されるので、名前を入力し、適切な「Permissions」を選択(今回はAll)します。

「Permissions」で「Restricted」を選択すると細かい設定ができます。

が、今回は「All」を選択して「Create admin key」ボタンを押下します。
Admin keyが作成されたら、コピーして別の場所に保存しておきましょう。

この場を逃すと二度と確認できません。その場合は削除して再作成しましょう。
OpenAI Platformでのプロジェクト作成
APIを使うには、まずプロジェクトが必要です。
アカウント作成時に、自動で「Default Project」が作成され適用されています。
ツールや用途によってプロジェクトを使い分けることで、次のことができるようになります。
- 複数のAPIキーの使い分け(プロジェクト毎に異なるAPIキー)
- プロジェクト単位でのログ収集
- 消費トークンや使用料金のプロジェクト単位での確認
OpenAI Platform にログインした状態で画面左上の「Default Project」のプルダウンから
「+ Create project」を選択します。

※「Manage projects」>「+ Create project」でも同じ
※画面右上の「Settings」>サイドメニュー「Projects」>「+ Create project」でも同じ
プロジェクト名を入力して「Create」ボタンを押下します。

プロジェクト一覧(「Manage projects」または「Settings」>「Projects」で表示)
に作成されたプロジェクトが表示されます。

ここで表示される「ID」(project id)は、後でAPIを叩く際に使います。
APIキー作成
続いて、APIキーを作成して、プロジェクトに割り当てていきます。
サイドメニューの「API Keys」をクリックし、「+ Create new secret key」ボタンを押下します。
モーダルが表示されるので、キー名称を入力し、プロジェクトを選択し、適切なPermissions(今回はAll)を選択します。

「Permissions」で「Restricted」を選択すると、かなり細かい設定ができます。

が、今回は「All」にしておきます。
「Create secret key」ボタンを押下します。
APIキーが作成されるので、コピーして別の場所に保存しておきましょう。
この場を逃すと二度と確認できないので、逃した場合は削除して再作成しておきましょう。
.envの準備
前段で作成・取得した情報を「.env」にでもまとめて記録して使うことにします。
# Organization ID
OPENAI_ORG_ID=org-****
# Admin Key
OPENAI_ADMIN_KEY=sk-admin-****
# Project: test project 01
OPENAI_PROJECT=proj_****
# API Key:Test 01
OPENAI_API_KEY=sk-proj-****
利用可能モデルの一覧取得
毎回curlコマンドを複数行で実行するのも面倒なので、シェルスクリプトにまとめて実行することします。
このリクエストによるAPI使用料金の発生はありません。
▼「list_models.sh」
#!/bin/bash
OPENAI_ORG_ID=`cat .env | grep OPENAI_ORG_ID | cut -d '=' -f2`
OPENAI_API_KEY=`cat .env | grep OPENAI_API_KEY | cut -d '=' -f2`
OPENAI_PROJECT=`cat .env | grep OPENAI_PROJECT | cut -d '=' -f2`
curl -s https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Organization: $OPENAI_ORG_ID" \
-H "OpenAI-Project: $OPENAI_PROJECT"
▼実行
bash ./list_models.sh
▼実行結果
{
"object": "list",
"data": [
{
"id": "gpt-4-0613",
"object": "model",
"created": 1686588896,
"owned_by": "openai"
},
{
"id": "gpt-4",
"object": "model",
"created": 1687882411,
"owned_by": "openai"
},
・・・(中略)・・・
{
"id": "whisper-1",
"object": "model",
"created": 1677532384,
"owned_by": "openai-internal"
},
{
"id": "text-embedding-ada-002",
"object": "model",
"created": 1671217299,
"owned_by": "openai-internal"
}
]
}
Responses API経由でのメッセージ送信/レスポンス取得
このリクエストではトークン数に応じた使用料金が発生します。
これもシェルスクリプトにして実行してみます。
▼「response_api_test01.sh」
#!/bin/bash
OPENAI_API_KEY=`cat .env | grep OPENAI_API_KEY | cut -d '=' -f2`
OPENAI_PROJECT=`cat .env | grep OPENAI_PROJECT | cut -d '=' -f2`
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-5.1",
"input": [
{
"role": "user",
"content": "OpenAIとChatGPTの未来について、あなたの推測を教えてください。"
}
],
"reasoning": {
"effort": "high"
}
}'
※せっかくの「gpt-5.1」なので「reasoning.effort」を「high」にしてみました。
※「gpt-5.1-codex」のみ「reasoning.effort」で「xhigh」をサポートしています。
▼ドキュメントの「reasoning.effort」の項目抜粋
推論モデルの推論にかかる労力を制限します。現在サポートされているのは、none、minimal、low、medium、high、xhighです。推論の努力を減らすことで、応答の速さや推論に使われるトークンの削減につながります。
🔵gpt-5.1はデフォルトで none となり、推論は行われません。gpt-5.1のサポート推論値は、none、low、medium、high です。gpt-5.1ではすべての推論値に対してツール呼び出しがサポートされています。
🔵gpt-5.1以前のすべてのモデルはデフォルトで medium 程度の推論努力を用いており、none はサポートしていません。
🔵gpt-5-proモデルはデフォルトで high レベルの思考(そしてそれのみサポート)を行います。
🔵xhigh は現在gpt-5.1-codex-maxのみでサポートされています。
▼実行
bash ./responses_api_test01.sh
▼実行結果
{
"id": "resp_02f50a9665c627e5006938278168a08190840cab1aab43859f",
"object": "response",
"created_at": 1765287809,
"status": "completed",
"background": false,
"billing": {
"payer": "developer"
},
"error": null,
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"max_tool_calls": null,
"model": "gpt-5.1-2025-11-13",
"output": [
{
"id": "rs_02f50a9665c627e500693827827c508190b12a08329bd628ac",
"type": "reasoning",
"summary": []
},
{
"id": "msg_02f50a9665c627e50069382785f3688190bee376628ef3f7ed",
"type": "message",
"status": "completed",
"content": [
{
"type": "output_text",
"annotations": [],
"logprobs": [],
"text": "\u4ee5\u4e0b\u306f・・・(中略)・・・"
}
],
"role": "assistant"
}
],
"parallel_tool_calls": true,
"previous_response_id": null,
"prompt_cache_key": null,
"prompt_cache_retention": null,
"reasoning": {
"effort": "high",
"summary": null
},
"safety_identifier": null,
"service_tier": "default",
"store": true,
"temperature": 1.0,
"text": {
"format": {
"type": "text"
},
"verbosity": "medium"
},
"tool_choice": "auto",
"tools": [],
"top_logprobs": 0,
"top_p": 1.0,
"truncation": "disabled",
"usage": {
"input_tokens": 24,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens": 2205,
"output_tokens_details": {
"reasoning_tokens": 136
},
"total_tokens": 2229
},
"user": null,
"metadata": {}
}
レスポンスの内容が長いので省略しました。
詳細は、OpenAI Platformの「Logs」>「Responses」で見れます。

このリクエストだけで2,229トークン消費、$0.02に相当。

使用量(消費トークン)の取得
このリクエストでは使用料金は発生しません。
ここで必要なのは「Admin key」のみです。
オプションとして、「Project ID」の指定もできます。
使用量(消費トークン数)は日別データとして返ってきます。
「start_time」の指定が必須で、UNIXタイムスタンプでの指定になります。
「end_time」の指定が無い場合は今日までのデータが返ってきます。
▼「usage_test01.sh」
#!/bin/bash
OPENAI_ADMIN_KEY=`cat .env | grep OPENAI_ADMIN_KEY | cut -d '=' -f2`
OPENAI_PROJECT=`cat .env | grep OPENAI_PROJECT | cut -d '=' -f2`
# 指定日時のUNIXタイムスタンプ
START_TIME=`date -d "2025/12/07 00:00:00" +%s`
# トークン使用量
curl "https://api.openai.com/v1/organization/usage/completions?start_time=${START_TIME}&project_ids=${OPENAI_PROJECT}" \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
▼実行
bash ./usage_test01.sh
▼実行結果
{
"object": "page",
"data": [
{
"object": "bucket",
"end_time": 1765065600,
"end_time_iso": "2025-12-07T00:00:00+00:00",
"results": [],
"start_time": 1764979200,
"start_time_iso": "2025-12-06T00:00:00+00:00"
},
{
"object": "bucket",
"end_time": 1765152000,
"end_time_iso": "2025-12-08T00:00:00+00:00",
"results": [],
"start_time": 1765065600,
"start_time_iso": "2025-12-07T00:00:00+00:00"
},
{
"object": "bucket",
"end_time": 1765238400,
"end_time_iso": "2025-12-09T00:00:00+00:00",
"results": [],
"start_time": 1765152000,
"start_time_iso": "2025-12-08T00:00:00+00:00"
},
{
"object": "bucket",
"end_time": 1765324800,
"end_time_iso": "2025-12-10T00:00:00+00:00",
"results": [
{
"object": "organization.usage.completions.result",
"project_id": null,
"num_model_requests": 1,
"user_id": null,
"api_key_id": null,
"model": null,
"batch": null,
"service_tier": null,
"input_tokens": 24,
"output_tokens": 2205,
"input_cached_tokens": 0,
"input_uncached_tokens": 24,
"input_text_tokens": 24,
"output_text_tokens": 2205,
"input_cached_text_tokens": 0,
"input_audio_tokens": 0,
"input_cached_audio_tokens": 0,
"output_audio_tokens": 0,
"input_image_tokens": 0,
"input_cached_image_tokens": 0,
"output_image_tokens": 0
}
],
"start_time": 1765238400,
"start_time_iso": "2025-12-09T00:00:00+00:00"
}
],
"has_more": false,
"next_page": null
}
期間の総使用量(消費トークン数)は、日別データの配列について、results配列内の
「input_tokens」と「output_tokens」を合計すればOKですね。
使用料金の取得
このリクエストでは使用料金は発生しません。
ここで必要なのは「Admin key」のみです。
オプションとして、「Project ID」の指定もできます。
使用料金は日別データとして返ってきます。
「start_time」の指定が必須で、UNIXタイムスタンプでの指定になります。
「end_time」の指定が無い場合は今日までのデータが返ってきます。
▼「costs_test01.sh」
#!/bin/bash
OPENAI_ADMIN_KEY=`cat .env | grep OPENAI_ADMIN_KEY | cut -d '=' -f2`
OPENAI_PROJECT=`cat .env | grep OPENAI_PROJECT | cut -d '=' -f2`
# 指定日時のUNIXタイムスタンプ
START_TIME=`date -d "2025/12/07 00:00:00" +%s`
# 使用料金
curl "https://api.openai.com/v1/organization/costs?start_time=${START_TIME}&project_ids=${OPENAI_PROJECT}" \
-H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
-H "Content-Type: application/json"
▼実行
bash ./costs_test01.sh
▼実行結果
{
"object": "page",
"has_more": false,
"next_page": null,
"data": [
{
"object": "bucket",
"start_time": 1764979200,
"end_time": 1765065600,
"start_time_iso": "2025-12-06T00:00:00+00:00",
"end_time_iso": "2025-12-07T00:00:00+00:00",
"results": []
},
{
"object": "bucket",
"start_time": 1765065600,
"end_time": 1765152000,
"start_time_iso": "2025-12-07T00:00:00+00:00",
"end_time_iso": "2025-12-08T00:00:00+00:00",
"results": []
},
{
"object": "bucket",
"start_time": 1765152000,
"end_time": 1765238400,
"start_time_iso": "2025-12-08T00:00:00+00:00",
"end_time_iso": "2025-12-09T00:00:00+00:00",
"results": []
},
{
"object": "bucket",
"start_time": 1765238400,
"end_time": 1765324800,
"start_time_iso": "2025-12-09T00:00:00",
"end_time_iso": "2025-12-10T00:00:00",
"results": [
{
"object": "organization.costs.result",
"amount": {
"value": "0.02208000000000000000000000000",
"currency": "usd"
},
"line_item": null,
"user_id": null,
"project_id": "proj_bXZ57WOvwUyMmbSpjnDZzFAI",
"organization_id": "org-kdyapFvRN9QqMDwuO09eML0M",
"project_name": "Default project",
"organization_name": "Personal",
"user_email": null
}
]
}
]
}
期間内の総コストは、日別データについて、「amount.value」を合計すればOKですね。
今回は以上です。次回はシステムプロンプトやファイル入力など、もう少し深堀した使い方をしていきます。
- 0
- 0
- 0
- 0



コメント