ShiftB / LABSOpenAI API Reference ↗

OPENAI API PLAYGROUND

APIを、
ひとつずつ試そう。

文章をつくる。絵を描く。声で話す。
OpenAIのAPIを、ひとつの実験室で。

128 ENDPOINTSTEXT / IMAGE / AUDIO / VIDEOログイン不要

00 APIキーを設定

このタブだけで保持

APIキーはパスワード表示で隠します。データベース・ブラウザストレージ・Cookieには保存せず、リロードすると消えます。

○ 未設定

キーと入力は実行時だけアプリのサーバーを経由してOpenAIへ送信します。サーバーのDB・ファイル・アプリログには書き込みません。API利用料は入力したキーのOpenAIアカウントに発生します。

OpenAI側の保持ポリシーは別です。Responses / Chat生成は通常は保存せずに送信し、「OpenAIに保存する」を選んだ場合のみ30日間保存されます。Files・会話管理・Batchなど、保存を伴うAPIは各セクションに表示しています。データの取り扱い ↗

公式リファレンスのHTTPエンドポイントを掲載(削除系を除く)(2026年9月11日確認)。主要な生成APIは専用フォーム、その他はJSON・ファイル入力で試せます。モデルや機能の利用可否はキーの権限により異なります。Webhook受信やWebSocketイベント一覧はHTTP実行の対象外です。

01

Responses · テキストとマルチモーダル

6 endpoints
POST/v1/responses

Create a model response

文章・画像・PDFを入力して、回答を少しずつ受け取る。

公式仕様 ↗

確認ポイント:議事メモが3つの項目に整理され、担当者・期限・未決事項が区別されるか。画像やPDFを添付する場合は、その内容への質問に書き換えてください。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/responses", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "model": "gpt-4.1-mini",
      "input": [
        {
          "role": "user",
          "content": [
            {
              "type": "input_text",
              "text": "次のメモを整理し、①決定事項 ②担当者ごとのタスク ③未決事項に分けて日本語でまとめてください。\n\nメモ:新しいカフェのWebサイトは10月1日に公開する。田中さんが9月20日までに店内写真を用意し、佐藤さんが9月25日までにメニューを登録する。予約フォームを初回公開に含めるかは、次の会議で決める。"
            }
          ]
        }
      ],
      "stream": true,
      "store": false
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  // stream: true のときは SSE(data: {...} の行)が少しずつ届く
  const reader = response.body!.getReader();
  const decoder = new TextDecoder();
  while (true) {
    const { value, done } = await reader.read();
    if (done) break;
    console.log(decoder.decode(value, { stream: true }));
  }
}
POST/v1/responses/{response_id}/cancel

Cancel a response

バックグラウンド実行中の回答生成を途中で止める。

公式仕様 ↗

この操作は追加の入力本文が不要です。URLに {…} があれば対象の実際のIDへ差し替えて実行してください。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/responses/{response_id}/cancel", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/responses/compact

Compact a response

長くなった会話履歴を要約して短くし、次の回答に使いやすくする。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/responses/compact", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "model": "gpt-4.1-mini",
      "input": [
        {
          "role": "user",
          "content": "京都で半日観光します。寺院とカフェを訪れたいです。予算は5000円で、移動は徒歩とバスです。"
        },
        {
          "role": "assistant",
          "content": [
            {
              "type": "output_text",
              "text": "午前は清水寺を訪れ、近くのカフェで休憩するプランがおすすめです。交通費と食事代を予算内に収めましょう。"
            }
          ]
        },
        {
          "role": "user",
          "content": "雨天でも楽しめる代案も考えてください。"
        }
      ]
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/responses/{response_id}

Get a model response

保存済みの回答をIDで取り出し、出力内容や使用トークンを確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/responses/{response_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/responses/{response_id}/input_items

List input items

ある回答に渡した入力(メッセージや添付)の一覧を取り出す。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/responses/{response_id}/input_items", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/responses/input_tokens

Get input token counts

送る前に入力のトークン数を数えて、コストや上限を見積もる。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/responses/input_tokens", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "model": "gpt-4.1-mini",
      "input": "OpenAIのAPIを使って、日本語の文章に必要な入力トークン数を調べています。"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
02

Chat · チャット生成

5 endpoints
POST/v1/chat/completions

Create chat completion

メッセージを送って、チャットの返信を受け取る。

公式仕様 ↗

確認ポイント:時間・場所・楽しみ方の表と、雨の日の代案が返るか。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/chat/completions", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "model": "gpt-4.1-mini",
      "messages": [
        {
          "role": "user",
          "content": "あなたは旅行プランナーです。初めて京都を訪れる人向けに、午前9時から正午までの散歩プランを提案してください。寺院とカフェを1か所ずつ含め、時間・場所・楽しみ方を表にしてください。最後に雨の日の代案を1文で添えてください。"
        }
      ],
      "stream": true,
      "store": false
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  // stream: true のときは SSE(data: {...} の行)が少しずつ届く
  const reader = response.body!.getReader();
  const decoder = new TextDecoder();
  while (true) {
    const { value, done } = await reader.read();
    if (done) break;
    console.log(decoder.decode(value, { stream: true }));
  }
}
GET/v1/chat/completions

List Chat Completions

保存済みのチャット生成結果を一覧で取り出す。

公式仕様 ↗

入力本文は不要です。実行すると、このキーで参照できるデータの一覧や情報を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/chat/completions", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/chat/completions/{completion_id}

Get chat completion

保存済みのチャット生成結果をIDで1件取り出す。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/chat/completions/{completion_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/chat/completions/{completion_id}

Update chat completion

保存済みのチャット生成結果にメタデータ(タグなど)を付け直す。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/chat/completions/{completion_id}", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "metadata": {
        "test_case": "api-lab-metadata-update"
      }
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/chat/completions/{completion_id}/messages

Get chat messages

保存済みチャットに送ったメッセージの一覧を取り出す。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/chat/completions/{completion_id}/messages", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
03

Images · 画像生成・編集

3 endpoints
POST/v1/images/generations

Create image

言葉から画像を生成する。

公式仕様 ↗

確認ポイント:赤いマグ、青い花、左からの光など、指定した要素が画像に反映されるか。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/images/generations", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "model": "gpt-image-1",
      "prompt": "白い木製テーブルの中央に、赤い陶器のマグカップが1つ置かれている。カップから細い湯気が上がり、右側には小さな青い花を挿した透明な花瓶。左から柔らかな朝日が差し込む。落ち着いた写真風、正方形の構図、文字やロゴは入れない。",
      "size": "1024x1024",
      "n": 1
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/images/edits

Create image edit

画像を添付して、指示に沿って編集する。

公式仕様 ↗

人物や物が写った画像を添付してください。確認ポイント:主役を保ったまま背景が水色に変わるか。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  // file は <input type="file"> で選んだ File などを想定
  const form = new FormData();
  form.set("image", file);
  form.set("model", "gpt-image-1");
  form.set("prompt", "添付画像の主役の形・色・質感と構図を保ち、背景だけを淡い水色の無地に変えてください。主役の下に柔らかな影を加え、文字や新しい物体は追加しないでください。");

  const response = await fetch("https://api.openai.com/v1/images/edits", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
    body: form,
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/images/variations

Create image variation

画像を添付して、雰囲気の似た別バージョンの画像を生成する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  // file は <input type="file"> で選んだ File などを想定
  const form = new FormData();
  form.set("image", file);
  form.set("model", "dall-e-2");
  form.set("n", JSON.stringify(1));
  form.set("size", "512x512");

  const response = await fetch("https://api.openai.com/v1/images/variations", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
    body: form,
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
04

Audio · 読み上げ・文字起こし

8 endpoints
POST/v1/audio/speech

Create speech

文章を自然な音声に変える。

公式仕様 ↗

確認ポイント:日本語の発音、句読点での間、質問文の抑揚。文章を変えると読み上げも変わります。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/audio/speech", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "model": "gpt-4o-mini-tts",
      "input": "こんにちは。OpenAI API Labへようこそ。文章を、こんなふうに音声に変えられます。今日は何を作ってみましょうか?ひとつずつ、気軽に試してみてください。",
      "voice": "marin",
      "response_format": "mp3"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  // 音声やファイル本体はバイナリで返る
  const blob = await response.blob();
  console.log(blob.type, blob.size);
}
POST/v1/audio/transcriptions

Create transcription

音声ファイルを文字に起こす。

公式仕様 ↗

日本語の音声を添付してください。例文は認識を助ける固有名詞です。確認ポイント:音声が文字になり、固有名詞も正しく認識されるか。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  // file は <input type="file"> で選んだ File などを想定
  const form = new FormData();
  form.set("file", file);
  form.set("model", "gpt-4o-mini-transcribe");
  form.set("prompt", "OpenAI、ChatGPT、API Lab、リアルタイム、文字起こし。");

  const response = await fetch("https://api.openai.com/v1/audio/transcriptions", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
    body: form,
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/audio/translations

Create translation

音声の内容を英語のテキストに翻訳する。

公式仕様 ↗

英語以外の音声を添付してください。例文は英語の文脈ヒントです。確認ポイント:音声の内容が英語の文章に翻訳されるか。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  // file は <input type="file"> で選んだ File などを想定
  const form = new FormData();
  form.set("file", file);
  form.set("model", "whisper-1");
  form.set("prompt", "Welcome to OpenAI API Lab. Today we are testing speech recognition and translation.");

  const response = await fetch("https://api.openai.com/v1/audio/translations", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
    body: form,
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/audio/voice_consents

Create voice consent

カスタム音声を作るための本人同意の録音を登録する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  // file は <input type="file"> で選んだ File などを想定
  const form = new FormData();
  form.set("recording", file);
  form.set("name", "API Lab 同意録音");
  form.set("language", "ja");

  const response = await fetch("https://api.openai.com/v1/audio/voice_consents", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
    body: form,
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/audio/voice_consents

List voice consents

登録済みの音声同意の一覧を取り出す。

公式仕様 ↗

入力本文は不要です。実行すると、このキーで参照できるデータの一覧や情報を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/audio/voice_consents", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/audio/voice_consents/{consent_id}

Update voice consent

音声同意の名前などの情報を更新する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/audio/voice_consents/{consent_id}", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "name": "API Lab 検証用"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/audio/voices

Create voice

音声サンプルを添付して、読み上げ用のカスタム音声を作る。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  // file は <input type="file"> で選んだ File などを想定
  const form = new FormData();
  form.set("audio_sample", file);
  form.set("name", "API Lab サンプル音声");
  form.set("consent", "REPLACE_CONSENT_ID");

  const response = await fetch("https://api.openai.com/v1/audio/voices", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
    body: form,
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
05

Realtime · リアルタイム会話

9 endpoints
LIVE/v1/realtime/calls

声で、そのまま話してみる。

マイクで話しかけると、AIが音声で返答します。

開始するとマイクの許可を求めます。音声はOpenAIへ直接送信され、アプリには録音を保存しません。再生される声はAI音声です。

未接続
POST/v1/realtime/calls/{call_id}/accept

Accept call

着信したリアルタイム通話を受け付けて会話を始める。

公式仕様 ↗

これは自分から発信するAPIではなく、外部から電話がかかってきたときに、AIが応答を始めるためのAPIです。TwilioなどのSIP事業者を経由して自分の電話番号への着信をOpenAIに転送すると、OpenAIから自分のサーバーへWebhookが届き、その中に call_id が入っています。その値をURLの {call_id} に入れて実行すると通話が始まります。call_id は自分で作る値ではなくWebhookで受け取る値なので、受け口を用意していない状態では実行できません。ブラウザのマイクで話したい場合は、このセクション上部の「音声会話を始める」を使ってください。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/realtime/calls/{call_id}/accept", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "type": "realtime",
      "model": "gpt-realtime",
      "instructions": "日本語で、相手の質問に2文以内で答えてください。"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/realtime/calls

Create call

WebRTCでモデルと音声通話するセッションを開始する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  // file は <input type="file"> で選んだ File などを想定
  const form = new FormData();
  form.set("file", file);
  form.set("sdp", "REPLACE_WEBRTC_SDP");
  form.set("session", JSON.stringify({
    "type": "realtime",
    "model": "gpt-realtime"
  }));

  const response = await fetch("https://api.openai.com/v1/realtime/calls", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
    body: form,
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/realtime/calls/{call_id}/hangup

Hang up call

進行中のリアルタイム通話を終了する。

公式仕様 ↗

この操作は追加の入力本文が不要です。URLに {…} があれば対象の実際のIDへ差し替えて実行してください。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/realtime/calls/{call_id}/hangup", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/realtime/calls/{call_id}/refer

Refer call

リアルタイム通話を別の宛先(SIP)へ転送する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/realtime/calls/{call_id}/refer", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "target_uri": "REPLACE_SIP_OR_TEL_URI"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/realtime/calls/{call_id}/reject

Reject call

着信したリアルタイム通話を拒否する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/realtime/calls/{call_id}/reject", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "status_code": 486
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/realtime/client_secrets

Create client secret

ブラウザからリアルタイムAPIに接続するための短命な鍵を発行する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/realtime/client_secrets", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "session": {
        "type": "realtime",
        "model": "gpt-realtime",
        "instructions": "日本語で会話し、相手に今日の予定を一つ質問してください。"
      }
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/realtime/sessions

Create session

リアルタイム会話セッションを作り、音声や指示の初期設定を行う。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/realtime/sessions", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "model": "gpt-4o-realtime-preview",
      "instructions": "日本語で短く会話してください。"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/realtime/transcription_sessions

Create transcription session

音声をリアルタイムに文字起こしするセッションを作る。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/realtime/transcription_sessions", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "input_audio_format": "pcm16",
      "input_audio_transcription": {
        "model": "gpt-4o-transcribe",
        "language": "ja"
      }
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/realtime/translations/client_secrets

Create translation client secret

リアルタイム翻訳に接続するための短命な鍵を発行する。

公式仕様 ↗

この操作は追加の入力本文が不要です。URLに {…} があれば対象の実際のIDへ差し替えて実行してください。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/realtime/translations/client_secrets", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
06

Embeddings · テキストのベクトル化

1 endpoints
POST/v1/embeddings

Create embeddings

文章を検索や類似度計算に使える数値に変える。

公式仕様 ↗

確認ポイント:文章が数値の配列に変わるか。詳細JSONでは似た2文と無関係な1文を同時に送り、3件のベクトルを取得できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/embeddings", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "model": "text-embedding-3-small",
      "input": "駅から徒歩5分の静かなカフェです。自家焙煎のコーヒーと手作りのチーズケーキを楽しめます。"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
07

Moderations · コンテンツ判定

1 endpoints
POST/v1/moderations

Create moderation

文章に有害な内容が含まれるか判定する。

公式仕様 ↗

確認ポイント:脅迫表現の判定カテゴリとスコア。詳細JSONでは穏やかな文章も同時に送り、判定を比較できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/moderations", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "model": "omni-moderation-latest",
      "input": "今からお前を殴りに行く。絶対に許さない。"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
08

Videos · 動画生成

9 endpoints
POST/v1/videos

Create video

文章から動画を生成するジョブを開始する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/videos", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "model": "sora-2",
      "prompt": "朝の静かな池に、赤い折り紙の船がゆっくり浮かんでいる。水面の小さな波と柔らかい朝日。カメラは固定。文字や字幕なし。",
      "seconds": "4",
      "size": "720x1280"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/videos/characters

Create a character from an uploaded video.

動画を添付して、他の動画生成で再利用できるキャラクターを登録する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  // file は <input type="file"> で選んだ File などを想定
  const form = new FormData();
  form.set("video", file);
  form.set("name", "API Lab サンプルキャラクター");

  const response = await fetch("https://api.openai.com/v1/videos/characters", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
    body: form,
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/videos/{video_id}/content

Retrieve video content

生成が完了した動画ファイル本体をダウンロードする。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/videos/{video_id}/content", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  // 音声やファイル本体はバイナリで返る
  const blob = await response.blob();
  console.log(blob.type, blob.size);
}
POST/v1/videos/edits

Create a new video generation job by editing a source video or existing generated video.

既存の動画を元に、指示に沿って編集した動画を生成する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/videos/edits", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "prompt": "元の動画の被写体と動きを保ち、背景の空を夕焼けに変更してください。",
      "video": {
        "id": "REPLACE_VIDEO_ID"
      }
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/videos/extensions

Create an extension of a completed video.

完成した動画の続きを生成して長さを延ばす。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/videos/extensions", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "prompt": "同じ被写体がゆっくり進み続け、カメラが少し引いて周囲の風景を映す。",
      "seconds": "4",
      "video": {
        "id": "REPLACE_VIDEO_ID"
      }
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/videos/characters/{character_id}

Fetch a character.

登録済みキャラクターの情報をIDで確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/videos/characters/{character_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/videos

List videos

生成した動画ジョブの一覧と進行状況を確認する。

公式仕様 ↗

入力本文は不要です。実行すると、このキーで参照できるデータの一覧や情報を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/videos", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/videos/{video_id}/remix

Remix video

生成済み動画を別のプロンプトで作り直す。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/videos/{video_id}/remix", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "prompt": "元の構図と動きを保ち、全体を温かい水彩画風に変えてください。"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/videos/{video_id}

Retrieve video

動画ジョブの状態(生成中・完了)と詳細を確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/videos/{video_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
09

Models · モデル一覧

2 endpoints
GET/v1/models

List models

このAPIキーで使えるモデルの一覧を取得する。

公式仕様 ↗

入力本文は不要です。実行すると、このキーで参照できるデータの一覧や情報を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/models", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/models/{model}

Retrieve model

モデルの詳細情報(所有者・公開日など)を確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/models/{model}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
10

Files · ファイル管理

4 endpoints
POST/v1/files

Upload file

OpenAIにファイルをアップロードして、他のAPIから利用する。

公式仕様 ↗

小さなテキストファイルなどを添付してください。返されたfile IDを取得APIや検索用データの登録で使えます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  // file は <input type="file"> で選んだ File などを想定
  const form = new FormData();
  form.set("file", file);
  form.set("purpose", "user_data");

  const response = await fetch("https://api.openai.com/v1/files", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
    body: form,
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/files

List files

アップロード済みファイルの一覧を取得する。

公式仕様 ↗

入力本文は不要です。実行すると、このキーで参照できるデータの一覧や情報を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/files", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/files/{file_id}/content

Retrieve file content

アップロード済みファイルの中身をダウンロードする。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/files/{file_id}/content", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  // 音声やファイル本体はバイナリで返る
  const blob = await response.blob();
  console.log(blob.type, blob.size);
}
GET/v1/files/{file_id}

Retrieve file

アップロード済みファイルの情報(用途・サイズ)をIDで確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/files/{file_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
11

Uploads · 分割アップロード

4 endpoints
POST/v1/uploads/{upload_id}/cancel

Cancel upload

進行中の分割アップロードを中止する。

公式仕様 ↗

この操作は追加の入力本文が不要です。URLに {…} があれば対象の実際のIDへ差し替えて実行してください。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/uploads/{upload_id}/cancel", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/uploads/{upload_id}/complete

Complete upload

全パートの送信を終えた分割アップロードを確定し、ファイルにする。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/uploads/{upload_id}/complete", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "part_ids": [
        "REPLACE_PART_ID"
      ]
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/uploads

Create upload

大きなファイルを分割して送るためのアップロード枠を作る。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/uploads", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "purpose": "user_data",
      "filename": "hello.txt",
      "bytes": 6,
      "mime_type": "text/plain"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/uploads/{upload_id}/parts

Add upload part

分割アップロードにファイルの一部(パート)を追加する。

公式仕様 ↗

このAPIはファイルが入力です。ファイルを添付し、URLに {…} があれば実際のIDへ差し替えてください。JSON本文の追加項目は不要です。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  // file は <input type="file"> で選んだ File などを想定
  const form = new FormData();
  form.set("data", file);

  const response = await fetch("https://api.openai.com/v1/uploads/{upload_id}/parts", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
    body: form,
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
12

Vector stores · 検索用データ

14 endpoints
POST/v1/vector_stores

Create vector store

ファイル検索用のデータ置き場(ベクトルストア)を作る。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/vector_stores", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "name": "API Lab カフェFAQ",
      "expires_after": {
        "anchor": "last_active_at",
        "days": 1
      }
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/vector_stores

List vector stores

作成済みベクトルストアの一覧を取得する。

公式仕様 ↗

入力本文は不要です。実行すると、このキーで参照できるデータの一覧や情報を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/vector_stores", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/vector_stores/{vector_store_id}

Retrieve vector store

ベクトルストアの状態やファイル数をIDで確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/vector_stores/{vector_store_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/vector_stores/{vector_store_id}/search

Search vector store

ベクトルストアを質問文で検索し、関連する文章を取り出す。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/vector_stores/{vector_store_id}/search", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "query": "カフェの営業時間と定休日はいつですか?",
      "max_num_results": 3
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/vector_stores/{vector_store_id}

Modify vector store

ベクトルストアの名前や有効期限の設定を変更する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/vector_stores/{vector_store_id}", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "name": "API Lab カフェFAQ・更新済み"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel

Cancel vector store file batch

進行中のファイル一括登録を中止する。

公式仕様 ↗

この操作は追加の入力本文が不要です。URLに {…} があれば対象の実際のIDへ差し替えて実行してください。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/vector_stores/{vector_store_id}/file_batches

Create vector store file batch

複数のファイルをまとめてベクトルストアに登録する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/vector_stores/{vector_store_id}/file_batches", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "file_ids": [
        "REPLACE_FILE_ID"
      ]
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/files

List vector store files in a batch

一括登録に含まれるファイルの一覧と処理状況を確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}/files", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}

Retrieve vector store file batch

ファイル一括登録の進行状況を確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/vector_stores/{vector_store_id}/file_batches/{batch_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/vector_stores/{vector_store_id}/files/{file_id}/content

Retrieve vector store file content

ベクトルストアに登録したファイルの解析済みテキストを取り出す。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/vector_stores/{vector_store_id}/files/{file_id}/content", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  // 音声やファイル本体はバイナリで返る
  const blob = await response.blob();
  console.log(blob.type, blob.size);
}
POST/v1/vector_stores/{vector_store_id}/files

Create vector store file

アップロード済みファイルを1件ベクトルストアに登録する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/vector_stores/{vector_store_id}/files", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "file_id": "REPLACE_FILE_ID"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/vector_stores/{vector_store_id}/files

List vector store files

ベクトルストアに登録されたファイルの一覧を取得する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/vector_stores/{vector_store_id}/files", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/vector_stores/{vector_store_id}/files/{file_id}

Retrieve vector store file

登録ファイルの処理状況(解析中・完了・失敗)を確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/vector_stores/{vector_store_id}/files/{file_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/vector_stores/{vector_store_id}/files/{file_id}

Update vector store file attributes

登録ファイルに検索の絞り込みに使う属性を付ける。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/vector_stores/{vector_store_id}/files/{file_id}", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "attributes": {
        "category": "cafe-faq",
        "language": "ja"
      }
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
13

Batches · 非同期の一括実行

4 endpoints
POST/v1/batches/{batch_id}/cancel

Cancel batch

実行中の一括処理ジョブを中止する。

公式仕様 ↗

この操作は追加の入力本文が不要です。URLに {…} があれば対象の実際のIDへ差し替えて実行してください。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/batches/{batch_id}/cancel", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/batches

Create batch

JSONLファイルに書いた大量のリクエストを、割安に非同期でまとめて実行する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/batches", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "input_file_id": "REPLACE_BATCH_FILE_ID",
      "endpoint": "/v1/responses",
      "completion_window": "24h"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/batches

List batches

一括処理ジョブの一覧と進行状況を確認する。

公式仕様 ↗

入力本文は不要です。実行すると、このキーで参照できるデータの一覧や情報を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/batches", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/batches/{batch_id}

Retrieve batch

一括処理ジョブの状態と結果ファイルのIDを確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/batches/{batch_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
14

Fine-tuning · モデルの調整

12 endpoints
POST/v1/fine_tuning/alpha/graders/run

Run grader

採点ルール(グレーダー)をサンプルに対して試しに実行する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/fine_tuning/alpha/graders/run", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "grader": {
        "type": "string_check",
        "name": "日本の首都の正解判定",
        "input": "{{sample.output_text}}",
        "reference": "東京",
        "operation": "eq"
      },
      "model_sample": "東京"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/fine_tuning/alpha/graders/validate

Validate grader

採点ルールの定義に誤りがないか検証する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/fine_tuning/alpha/graders/validate", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "grader": {
        "type": "string_check",
        "name": "日本の首都の正解判定",
        "input": "{{sample.output_text}}",
        "reference": "東京",
        "operation": "eq"
      }
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/fine_tuning/checkpoints/{fine_tuned_model_checkpoint}/permissions

Create checkpoint permissions

調整済みモデルのチェックポイントを他プロジェクトへ共有する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/fine_tuning/checkpoints/{fine_tuned_model_checkpoint}/permissions", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "project_ids": [
        "REPLACE_PROJECT_ID"
      ]
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/fine_tuning/checkpoints/{fine_tuned_model_checkpoint}/permissions

List checkpoint permissions

チェックポイントの共有先一覧を確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/fine_tuning/checkpoints/{fine_tuned_model_checkpoint}/permissions", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel

Cancel fine-tuning

実行中のモデル調整ジョブを中止する。

公式仕様 ↗

この操作は追加の入力本文が不要です。URLに {…} があれば対象の実際のIDへ差し替えて実行してください。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/fine_tuning/jobs

Create fine-tuning job

学習データを指定して、独自データでモデルを調整するジョブを開始する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/fine_tuning/jobs", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "model": "gpt-4.1-mini-2025-04-14",
      "training_file": "REPLACE_TRAINING_FILE_ID"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/fine_tuning/jobs

List fine-tuning jobs

モデル調整ジョブの一覧を取得する。

公式仕様 ↗

入力本文は不要です。実行すると、このキーで参照できるデータの一覧や情報を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/fine_tuning/jobs", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/fine_tuning/jobs/{fine_tuning_job_id}/events

List fine-tuning events

モデル調整ジョブの進行ログ(イベント)を確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}/events", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause

Pause fine-tuning

実行中のモデル調整ジョブを一時停止する。

公式仕様 ↗

この操作は追加の入力本文が不要です。URLに {…} があれば対象の実際のIDへ差し替えて実行してください。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume

Resume fine-tuning

一時停止中のモデル調整ジョブを再開する。

公式仕様 ↗

この操作は追加の入力本文が不要です。URLに {…} があれば対象の実際のIDへ差し替えて実行してください。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/fine_tuning/jobs/{fine_tuning_job_id}

Retrieve fine-tuning job

モデル調整ジョブの状態と完成したモデル名を確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints

List fine-tuning checkpoints

学習途中で保存されたチェックポイントの一覧を確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
15

Evals · 出力の評価

10 endpoints
POST/v1/evals

Create eval

モデル出力の良し悪しを測る評価(テスト条件と採点方法)を定義する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/evals", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "name": "API Lab 正解一致テスト",
      "data_source_config": {
        "type": "custom",
        "item_schema": {
          "type": "object",
          "properties": {
            "question": {
              "type": "string"
            },
            "answer": {
              "type": "string"
            }
          },
          "required": [
            "question",
            "answer"
          ]
        },
        "include_sample_schema": true
      },
      "testing_criteria": [
        {
          "type": "string_check",
          "name": "正解と一致",
          "input": "{{sample.output_text}}",
          "reference": "{{item.answer}}",
          "operation": "eq"
        }
      ]
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/evals

List evals

定義済みの評価の一覧を取得する。

公式仕様 ↗

入力本文は不要です。実行すると、このキーで参照できるデータの一覧や情報を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/evals", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/evals/{eval_id}

Get an eval

評価の定義内容をIDで確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/evals/{eval_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/evals/{eval_id}

Update an eval

評価の名前やメタデータを更新する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/evals/{eval_id}", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "name": "API Lab 正解一致テスト・更新済み",
      "metadata": {
        "test_case": "exact-match"
      }
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/evals/{eval_id}/runs/{run_id}

Cancel eval run

実行中の評価ランを中止する。

公式仕様 ↗

この操作は追加の入力本文が不要です。URLに {…} があれば対象の実際のIDへ差し替えて実行してください。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/evals/{eval_id}/runs/{run_id}", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/evals/{eval_id}/runs

Create eval run

評価をモデルとデータに対して実際に走らせる。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/evals/{eval_id}/runs", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "name": "足し算と首都のテスト",
      "data_source": {
        "type": "jsonl",
        "source": {
          "type": "file_content",
          "content": [
            {
              "item": {
                "question": "1+1は?",
                "answer": "2"
              },
              "sample": {
                "output_text": "2"
              }
            },
            {
              "item": {
                "question": "日本の首都は?",
                "answer": "東京"
              },
              "sample": {
                "output_text": "大阪"
              }
            }
          ]
        }
      }
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/evals/{eval_id}/runs

Get eval runs

評価の実行履歴(ラン)の一覧を取得する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/evals/{eval_id}/runs", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/evals/{eval_id}/runs/{run_id}

Get an eval run

評価ランの結果サマリー(合格率など)を確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/evals/{eval_id}/runs/{run_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/evals/{eval_id}/runs/{run_id}/output_items

Get eval run output items

評価ランの1件ごとの出力と採点結果を一覧で確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/evals/{eval_id}/runs/{run_id}/output_items", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}

Get an output item of an eval run

評価ランの出力1件の詳細を確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
16

Containers · 実行環境

7 endpoints

AIがPythonを実行するための、隔離された作業机です。CSVを渡して集計させる、グラフを画像として出力させる、正確な数値計算をさせる、画像を加工させるといった用途に使います。コードが間違っていればモデル自身が書き直して再実行するので、答えが出るまで試行錯誤してくれます。普段はResponses APIのツール設定に type: auto と書けば自動で用意されるため、このAPIを直接呼ぶ必要はありません。自分で作るのは、同じ環境を複数のリクエストで使い回したい場合や、先にファイルを置いてから会話を始めたい場合です。20分使われないと期限切れになり、中のデータは復元できません。保存場所ではなく一時的な作業場所と考えてください。

POST/v1/containers

Create container

コードインタープリターが動く実行環境(コンテナ)を作る。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/containers", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "name": "api-lab-sandbox",
      "expires_after": {
        "anchor": "last_active_at",
        "minutes": 20
      }
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/containers

List containers

作成済みコンテナの一覧を取得する。

公式仕様 ↗

入力本文は不要です。実行すると、このキーで参照できるデータの一覧や情報を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/containers", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/containers/{container_id}

Retrieve container

コンテナの状態と有効期限をIDで確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/containers/{container_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/containers/{container_id}/files

Create container file

コンテナにファイルを送り込み、コード実行で使えるようにする。

公式仕様 ↗

このAPIはファイルが入力です。ファイルを添付し、URLに {…} があれば実際のIDへ差し替えてください。JSON本文の追加項目は不要です。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  // file は <input type="file"> で選んだ File などを想定
  const form = new FormData();
  form.set("file", file);

  const response = await fetch("https://api.openai.com/v1/containers/{container_id}/files", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
    body: form,
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/containers/{container_id}/files

List container files

コンテナ内のファイル一覧を取得する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/containers/{container_id}/files", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/containers/{container_id}/files/{file_id}

Retrieve container file

コンテナ内ファイルの情報をIDで確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/containers/{container_id}/files/{file_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/containers/{container_id}/files/{file_id}/content

Retrieve container file content

コンテナ内でコードが生成したファイルをダウンロードする。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/containers/{container_id}/files/{file_id}/content", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  // 音声やファイル本体はバイナリで返る
  const blob = await response.blob();
  console.log(blob.type, blob.size);
}
17

Conversations · 会話の管理

6 endpoints

チャットを続けるには、本来なら毎回それまでのやり取りを全部送り直す必要があります。会話を1つ作ってIDをもらっておくと、あとはResponses APIにそのIDを渡すだけで、発言もツールの呼び出しもOpenAI側が積み上げてくれます。回答そのものの保存が30日で消えるのに対し、会話の中身は期限の対象外なので、ユーザーが数か月ぶりに戻ってきても続きから話せます。ここは事前準備なしで試せます。まず「Create a conversation」を実行してconv_で始まるIDを受け取り、それを他のAPIのURLの {conversation_id} に入れてください。項目の追加や一覧の確認ができます。

POST/v1/conversations

Create a conversation

複数回のやり取りをまとめて保存する会話を作る。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/conversations", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "metadata": {
        "topic": "api-lab-travel"
      },
      "items": [
        {
          "type": "message",
          "role": "user",
          "content": "京都を半日観光したいです。寺院とカフェを1か所ずつ紹介してください。"
        }
      ]
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/conversations/{conversation_id}

Retrieve a conversation

会話のメタデータをIDで確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/conversations/{conversation_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/conversations/{conversation_id}

Update a conversation

会話のメタデータ(タグなど)を更新する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/conversations/{conversation_id}", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "metadata": {
        "topic": "api-lab-travel",
        "status": "reviewed"
      }
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/conversations/{conversation_id}/items

Create items

会話にメッセージなどの項目を追加する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/conversations/{conversation_id}/items", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "items": [
        {
          "type": "message",
          "role": "user",
          "content": "先ほどの京都観光プランを、雨の日でも楽しめる内容に変更してください。"
        }
      ]
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/conversations/{conversation_id}/items

List items

会話に含まれるメッセージの一覧を取得する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/conversations/{conversation_id}/items", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/conversations/{conversation_id}/items/{item_id}

Retrieve an item

会話内の1項目をIDで取り出す。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/conversations/{conversation_id}/items/{item_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
18

Skills · スキル管理

9 endpoints
POST/v1/skills

Create a new skill.

手順書とファイルをzipでまとめた「スキル」を登録し、モデルが使えるようにする。

公式仕様 ↗

このAPIはファイルが入力です。ファイルを添付し、URLに {…} があれば実際のIDへ差し替えてください。JSON本文の追加項目は不要です。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  // file は <input type="file"> で選んだ File などを想定
  const form = new FormData();
  form.set("files", file);

  const response = await fetch("https://api.openai.com/v1/skills", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
    body: form,
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/skills

List all skills for the current project.

登録済みスキルの一覧を取得する。

公式仕様 ↗

入力本文は不要です。実行すると、このキーで参照できるデータの一覧や情報を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/skills", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/skills/{skill_id}

Get a skill by its ID.

スキルの情報と既定バージョンをIDで確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/skills/{skill_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/skills/{skill_id}

Update the default version pointer for a skill.

スキルの既定バージョンを切り替える。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/skills/{skill_id}", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "default_version": "REPLACE_SKILL_VERSION"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/skills/{skill_id}/content

Download a skill zip bundle by its ID.

スキルの中身をzipでダウンロードする。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/skills/{skill_id}/content", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  // 音声やファイル本体はバイナリで返る
  const blob = await response.blob();
  console.log(blob.type, blob.size);
}
POST/v1/skills/{skill_id}/versions

Create a new immutable skill version.

既存スキルに新しいバージョンを追加する。

公式仕様 ↗

このAPIはファイルが入力です。ファイルを添付し、URLに {…} があれば実際のIDへ差し替えてください。JSON本文の追加項目は不要です。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  // file は <input type="file"> で選んだ File などを想定
  const form = new FormData();
  form.set("files", file);

  const response = await fetch("https://api.openai.com/v1/skills/{skill_id}/versions", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
    body: form,
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/skills/{skill_id}/versions

List skill versions for a skill.

スキルのバージョン一覧を取得する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/skills/{skill_id}/versions", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/skills/{skill_id}/versions/{version}

Get a specific skill version.

スキルの特定バージョンの情報を確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/skills/{skill_id}/versions/{version}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/skills/{skill_id}/versions/{version}/content

Download a skill version zip bundle.

スキルの特定バージョンをzipでダウンロードする。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/skills/{skill_id}/versions/{version}/content", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  // 音声やファイル本体はバイナリで返る
  const blob = await response.blob();
  console.log(blob.type, blob.size);
}
19

ChatKit · チャットセッション

5 endpoints

ChatKitは、チャット画面そのものを用意してくれる仕組みです。吹き出しの並び、入力欄、少しずつ表示される返答、ファイル添付といったUIを自分で作らずに、自社サイトへ組み込めます。使う流れは、まず自分のサーバーでセッションを作り、返ってきた一時的な鍵をブラウザへ渡し、ChatKitのライブラリがその鍵でOpenAIへ接続する、という3段階です。セッションはエンドユーザー1人分の入場券にあたり、キャンセルするとその鍵では接続できなくなります。セッション作成にはAgent Builderで作ったワークフローのIDが必要なので、このアプリだけでは実行できません。

POST/v1/chatkit/sessions/{session_id}/cancel

Cancel chat session

ChatKitのチャットセッションを終了する。

公式仕様 ↗

この操作は追加の入力本文が不要です。URLに {…} があれば対象の実際のIDへ差し替えて実行してください。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/chatkit/sessions/{session_id}/cancel", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/chatkit/sessions

Create ChatKit session

ChatKitのUIをブラウザに埋め込むためのセッションを発行する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/chatkit/sessions", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "user": "api-lab-demo-user",
      "workflow": {
        "id": "REPLACE_WORKFLOW_ID"
      }
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/chatkit/threads

List ChatKit threads

ChatKitで行われた会話スレッドの一覧を取得する。

公式仕様 ↗

入力本文は不要です。実行すると、このキーで参照できるデータの一覧や情報を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/chatkit/threads", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/chatkit/threads/{thread_id}/items

List ChatKit thread items

ChatKitスレッド内のメッセージ一覧を取得する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/chatkit/threads/{thread_id}/items", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/chatkit/threads/{thread_id}

Retrieve ChatKit thread

ChatKitスレッドの情報をIDで確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/chatkit/threads/{thread_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
20

Beta · ベータAPI

6 endpoints
POST/v1/responses/{response_id}/cancel?beta=true

Cancel a response

バックグラウンド実行中の回答生成を途中で止める。

公式仕様 ↗

この操作は追加の入力本文が不要です。URLに {…} があれば対象の実際のIDへ差し替えて実行してください。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/responses/{response_id}/cancel", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "OpenAI-Beta": "responses=v1",
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/responses/compact?beta=true

Compact a response

長くなった会話履歴を要約して短くし、次の回答に使いやすくする。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/responses/compact", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "OpenAI-Beta": "responses=v1",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "model": "gpt-4.1-mini",
      "input": [
        {
          "role": "user",
          "content": "京都で半日観光します。寺院とカフェを訪れたいです。予算は5000円で、移動は徒歩とバスです。"
        },
        {
          "role": "assistant",
          "content": [
            {
              "type": "output_text",
              "text": "午前は清水寺を訪れ、近くのカフェで休憩するプランがおすすめです。交通費と食事代を予算内に収めましょう。"
            }
          ]
        },
        {
          "role": "user",
          "content": "雨天でも楽しめる代案も考えてください。"
        }
      ]
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/responses?beta=true

Create a model response

文章・画像・PDFを入力して、回答を少しずつ受け取る(ベータ機能を有効化)。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/responses", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "OpenAI-Beta": "responses=v1",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "model": "gpt-4.1-mini",
      "input": "次のメモを整理し、①決定事項 ②担当者ごとのタスク ③未決事項に分けて日本語でまとめてください。\n\nメモ:新しいカフェのWebサイトは10月1日に公開する。田中さんが9月20日までに店内写真を用意し、佐藤さんが9月25日までにメニューを登録する。予約フォームを初回公開に含めるかは、次の会議で決める。",
      "stream": true,
      "store": false
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  // stream: true のときは SSE(data: {...} の行)が少しずつ届く
  const reader = response.body!.getReader();
  const decoder = new TextDecoder();
  while (true) {
    const { value, done } = await reader.read();
    if (done) break;
    console.log(decoder.decode(value, { stream: true }));
  }
}
GET/v1/responses/{response_id}?beta=true

Get a model response

保存済みの回答をIDで取り出し、出力内容や使用トークンを確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/responses/{response_id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "OpenAI-Beta": "responses=v1",
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
GET/v1/responses/{response_id}/input_items?beta=true

List input items

ある回答に渡した入力(メッセージや添付)の一覧を取り出す。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/responses/{response_id}/input_items", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "OpenAI-Beta": "responses=v1",
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
POST/v1/responses/input_tokens?beta=true

Get input token counts

送る前に入力のトークン数を数えて、コストや上限を見積もる。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/responses/input_tokens", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "OpenAI-Beta": "responses=v1",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "model": "gpt-4.1-mini",
      "input": "OpenAIのAPIを使って、日本語の文章に必要な入力トークン数を調べています。"
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
21

Completions · 旧テキスト生成

1 endpoints
POST/v1/completions

Create completion

旧方式のテキスト補完。プロンプトの続きを生成する。

公式仕様 ↗

用途を試すための入力例です。REPLACE_… とURLの {…} は実際の値に差し替えてください。実行結果は下に表示されます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/completions", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "model": "gpt-3.5-turbo-instruct",
      "prompt": "次の文章の続きを日本語で2文だけ書いてください。\n雨上がりの公園で、小さな猫が見つけたのは、",
      "max_tokens": 120,
      "stream": true
    }),
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  // stream: true のときは SSE(data: {...} の行)が少しずつ届く
  const reader = response.body!.getReader();
  const decoder = new TextDecoder();
  while (true) {
    const { value, done } = await reader.read();
    if (done) break;
    console.log(decoder.decode(value, { stream: true }));
  }
}
22

Content provenance · コンテンツの出所確認

1 endpoints
POST/v1/content_provenance_checks

Create content provenance check

画像や音声を添付して、OpenAIのモデルで生成されたものかを判定する。

公式仕様 ↗

このAPIはファイルが入力です。ファイルを添付し、URLに {…} があれば実際のIDへ差し替えてください。JSON本文の追加項目は不要です。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

この操作はOpenAI側にデータを保存・変更することがあります。アプリをリロードしてもOpenAI側のデータは消えません。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  // file は <input type="file"> で選んだ File などを想定
  const form = new FormData();
  form.set("file", file);

  const response = await fetch("https://api.openai.com/v1/content_provenance_checks", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
    body: form,
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}
23

Safety · 安全性アラート

1 endpoints

AIエージェントが指示を大きく取り違えた疑いがあるとき、OpenAI側でアラートが作られます。機密データの持ち出しや破壊的な変更など、影響の大きい場面を非同期で点検する仕組みです。受け取るには、管理画面のプロジェクト設定 → Webhooks(platform.openai.com/settings/project/webhooks)で自分のサーバーのURLを登録し、safety.alert.created を購読します。通知にはアラートIDだけが入っているので、その値(data.id、evt_で始まる外側のidではありません)をこのAPIのURLに入れて中身を取得します。IDはWebhookでしか手に入らず一覧APIもないため、このアプリからは実行できません。アラートを受け取ったら、その会話の処理を止め、リクエストIDやツール呼び出しの記録を残し、担当者に知らせるのが推奨される対応です。

GET/v1/safety/alerts/{id}

Retrieve a safety alert

利用ポリシー違反の疑いで発行された安全性アラートの内容を確認する。

公式仕様 ↗

URLの {…} を作成・一覧APIで取得した実際のIDに置き換えてください。対象の情報や処理状況を確認できます。

必要なID・必須項目は公式仕様で確認してください。GETの検索条件はURL末尾に ?limit=10 のように追加できます。

先にAPIキーを入力してください
TypeScriptでの書き方
async function callOpenAI() {
  const response = await fetch("https://api.openai.com/v1/safety/alerts/{id}", {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,
    },
  });
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  const data = await response.json();
  console.log(data);
}