curl --request POST \
--url https://api.mixroute.ai/v1/responses \
--header 'Authorization: Bearer sk-xxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-5.5",
"max_output_tokens": 2048,
"input": [
{"role": "user", "content": "Briefly introduce artificial intelligence"}
]
}'
from openai import OpenAI
client = OpenAI(
api_key="sk-xxxxxxxxxx",
base_url="https://api.mixroute.ai/v1"
)
response = client.responses.create(
model="gpt-5.5",
max_output_tokens=2048,
input=[
{"role": "user", "content": "Briefly introduce artificial intelligence"}
]
)
print(response.output_text)
const OpenAI = require('openai');
const client = new OpenAI({
apiKey: 'sk-xxxxxxxxxx',
baseURL: 'https://api.mixroute.ai/v1'
});
const response = await client.responses.create({
model: 'gpt-5.5',
max_output_tokens: 2048,
input: [
{ role: 'user', content: 'Briefly introduce artificial intelligence' }
]
});
console.log(response.output_text);
<?php
$client = new GuzzleHttp\Client();
$response = $client->post('https://api.mixroute.ai/v1/responses', [
'headers' => [
'Authorization' => 'Bearer sk-xxxxxxxxxx',
'Content-Type' => 'application/json',
],
'json' => [
'model' => 'gpt-5.5',
'max_output_tokens' => 2048,
'input' => [
['role' => 'user', 'content' => 'Briefly introduce artificial intelligence']
]
]
]);
echo $response->getBody();
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
payload := map[string]interface{}{
"model": "gpt-5.5",
"max_output_tokens": 2048,
"input": []map[string]string{
{"role": "user", "content": "Briefly introduce artificial intelligence"},
},
}
body, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", "https://api.mixroute.ai/v1/responses", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer sk-xxxxxxxxxx")
req.Header.Set("Content-Type", "application/json")
http.DefaultClient.Do(req)
}
import java.net.http.*;
import java.net.URI;
HttpClient client = HttpClient.newHttpClient();
String json = """
{
"model": "gpt-5.5",
"max_output_tokens": 2048,
"input": [{"role": "user", "content": "Briefly introduce artificial intelligence"}]
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.mixroute.ai/v1/responses"))
.header("Authorization", "Bearer sk-xxxxxxxxxx")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
require 'net/http'
require 'json'
uri = URI('https://api.mixroute.ai/v1/responses')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer sk-xxxxxxxxxx'
request['Content-Type'] = 'application/json'
request.body = {
model: 'gpt-5.5',
max_output_tokens: 2048,
input: [{ role: 'user', content: 'Briefly introduce artificial intelligence' }]
}.to_json
response = http.request(request)
puts response.body
{
"id": "resp_xxx",
"object": "response",
"created_at": 1768271369,
"model": "gpt-5.5",
"status": "completed",
"output": [
{
"id": "msg_xxx",
"type": "message",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "Artificial Intelligence (AI) is a branch of computer science...",
"annotations": []
}
]
}
],
"usage": {
"input_tokens": 25,
"output_tokens": 150,
"total_tokens": 175
}
}
テキストシリーズ
Responsesリクエストの作成(OpenAI)
推論モデルと高度な機能のために設計された、OpenAIの次世代会話インターフェース
POST
/
v1
/
responses
curl --request POST \
--url https://api.mixroute.ai/v1/responses \
--header 'Authorization: Bearer sk-xxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-5.5",
"max_output_tokens": 2048,
"input": [
{"role": "user", "content": "Briefly introduce artificial intelligence"}
]
}'
from openai import OpenAI
client = OpenAI(
api_key="sk-xxxxxxxxxx",
base_url="https://api.mixroute.ai/v1"
)
response = client.responses.create(
model="gpt-5.5",
max_output_tokens=2048,
input=[
{"role": "user", "content": "Briefly introduce artificial intelligence"}
]
)
print(response.output_text)
const OpenAI = require('openai');
const client = new OpenAI({
apiKey: 'sk-xxxxxxxxxx',
baseURL: 'https://api.mixroute.ai/v1'
});
const response = await client.responses.create({
model: 'gpt-5.5',
max_output_tokens: 2048,
input: [
{ role: 'user', content: 'Briefly introduce artificial intelligence' }
]
});
console.log(response.output_text);
<?php
$client = new GuzzleHttp\Client();
$response = $client->post('https://api.mixroute.ai/v1/responses', [
'headers' => [
'Authorization' => 'Bearer sk-xxxxxxxxxx',
'Content-Type' => 'application/json',
],
'json' => [
'model' => 'gpt-5.5',
'max_output_tokens' => 2048,
'input' => [
['role' => 'user', 'content' => 'Briefly introduce artificial intelligence']
]
]
]);
echo $response->getBody();
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
payload := map[string]interface{}{
"model": "gpt-5.5",
"max_output_tokens": 2048,
"input": []map[string]string{
{"role": "user", "content": "Briefly introduce artificial intelligence"},
},
}
body, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", "https://api.mixroute.ai/v1/responses", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer sk-xxxxxxxxxx")
req.Header.Set("Content-Type", "application/json")
http.DefaultClient.Do(req)
}
import java.net.http.*;
import java.net.URI;
HttpClient client = HttpClient.newHttpClient();
String json = """
{
"model": "gpt-5.5",
"max_output_tokens": 2048,
"input": [{"role": "user", "content": "Briefly introduce artificial intelligence"}]
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.mixroute.ai/v1/responses"))
.header("Authorization", "Bearer sk-xxxxxxxxxx")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
require 'net/http'
require 'json'
uri = URI('https://api.mixroute.ai/v1/responses')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer sk-xxxxxxxxxx'
request['Content-Type'] = 'application/json'
request.body = {
model: 'gpt-5.5',
max_output_tokens: 2048,
input: [{ role: 'user', content: 'Briefly introduce artificial intelligence' }]
}.to_json
response = http.request(request)
puts response.body
{
"id": "resp_xxx",
"object": "response",
"created_at": 1768271369,
"model": "gpt-5.5",
"status": "completed",
"output": [
{
"id": "msg_xxx",
"type": "message",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "Artificial Intelligence (AI) is a branch of computer science...",
"annotations": []
}
]
}
],
"usage": {
"input_tokens": 25,
"output_tokens": 150,
"total_tokens": 175
}
}
はじめに
Responses APIは、推論モデル(oシリーズ、GPT-5シリーズ)と高度な機能のために特別に設計された、OpenAIの次世代会話インターフェースです。従来のChat Completions APIと比べて、Responses APIでは、よりきめ細かな推論制御、組み込みツールのサポート、マルチモーダル入力機能が提供されます。gpt-6.1-sol: 関数呼び出しとreasoning.effort="max"にはResponsesを使用してください。Chat Completionsはツールなしのリクエストを受け付け、reasoning_effortの値としてlow、medium、high、xhighに対応しています。どちらのインターフェースもnoneとminimalは受け付けません。temperature、top_pおよび対数確率のオプションは省略してください。GPT 6.1 Solを参照してください。使用例
- 推論負荷の高いタスク:o1、o3-mini、o4-mini、GPT-5などの推論モデルを使用
- ウェブ検索が必要な場合:組み込みのWeb Search Previewツール
- 高度なツール呼び出し:関数呼び出しとカスタムツール呼び出しに対応
- マルチターン会話の継続:
previous_response_idによる会話履歴の管理
認証
Bearerトークン。例:Bearer sk-xxxxxxxxxx
リクエストパラメーター
string
必須
モデル識別子。例:
gpt-5.5、o4-mini、o3-ministring | array
必須
入力テキスト、またはResponsesの入力項目の配列。
integer
最大出力トークン数
boolean
ストリーミング出力を有効にする
object
推論の設定。例:
{"effort": "high", "summary": "detailed"}array
ツール一覧。Web検索と関数呼び出しに対応
string
会話を継続するための、前のレスポンスID
基本的な例
- シンプルな会話(非ストリーミング)
- シンプルな会話(ストリーミング)
- Python SDK
curl -X POST "https://api.mixroute.ai/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxx" \
-d '{
"model": "gpt-5.5",
"max_output_tokens": 2048,
"input": [
{"role": "user", "content": "Briefly introduce artificial intelligence"}
]
}'
curl -X POST "https://api.mixroute.ai/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxx" \
-d '{
"model": "gpt-5.5",
"stream": true,
"max_output_tokens": 2048,
"input": [
{"role": "user", "content": "Briefly introduce artificial intelligence"}
]
}'
from openai import OpenAI
client = OpenAI(
api_key="sk-xxxxxxxxxx",
base_url="https://api.mixroute.ai/v1"
)
# Non-streaming call
response = client.responses.create(
model="gpt-5.5",
max_output_tokens=2048,
input=[
{"role": "user", "content": "Briefly introduce artificial intelligence"}
]
)
print(response.output_text)
# Streaming call
stream = client.responses.create(
model="gpt-5.5",
stream=True,
max_output_tokens=2048,
input=[
{"role": "user", "content": "Briefly introduce artificial intelligence"}
]
)
for event in stream:
if event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)
高度な機能
ウェブ検索
- 基本的な例
- 詳細設定
curl -X POST "https://api.mixroute.ai/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxx" \
-d '{
"model": "gpt-5.5",
"stream": true,
"input": [
{"role": "user", "content": "What are today'\''s news headlines?"}
],
"tools": [
{
"type": "web_search_preview"
}
]
}'
curl -X POST "https://api.mixroute.ai/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxx" \
-d '{
"model": "gpt-5.5",
"stream": true,
"input": [
{"role": "user", "content": "Search for the latest AI research developments"}
],
"tools": [
{
"type": "web_search_preview",
"search_context_size": "high",
"user_location": {
"type": "approximate",
"country": "US"
}
}
]
}'
search_context_size:検索コンテキストのサイズ。選択肢:low、medium、highuser_location: ユーザーの所在地。検索結果の地域的な関連性に影響します
推論の制御
- 推論の自動要約
- 詳細な推論プロセス
curl -X POST "https://api.mixroute.ai/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxx" \
-d '{
"model": "o4-mini",
"stream": true,
"reasoning": {
"effort": "medium",
"summary": "auto"
},
"max_output_tokens": 4096,
"input": [
{"role": "user", "content": "Calculate the sum of 1+2+3+...+100"}
]
}'
summary: "auto"は推論の要約を自動生成するため、結果をすばやく得たい場合に適しています。curl -X POST "https://api.mixroute.ai/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxx" \
-d '{
"model": "o4-mini",
"stream": true,
"reasoning": {
"effort": "high",
"summary": "detailed"
},
"max_output_tokens": 8192,
"input": [
{"role": "user", "content": "Prove that the square root of 2 is irrational"}
]
}'
effort:推論の強度。選択肢:low、medium、highsummary: 要約モード。選択肢:auto、concise、detailed
カスタム関数の呼び出し
Responsesの関数定義では、name、description、parameters、strictをtypeと同じ階層に配置し、functionオブジェクトで囲まないでください。出力項目はtypeごとに処理します。関数の実行後は、そのcall_idを付けてfunction_call_outputを返します。ステートレスなリクエストでは、推論項目を含むoutput配列全体を次のinputに保持してください。その後続リクエストでは、モデルが回答を生成できるようにtool_choiceを”auto”に戻します。curl --request POST "https://api.mixroute.ai/v1/responses" \
--header "Authorization: Bearer $MIXROUTE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "gpt-6.1-sol",
"input": "Call lookup_status for service demo.",
"reasoning": {
"effort": "low"
},
"tools": [
{
"type": "function",
"name": "lookup_status",
"description": "Return the status of a named service.",
"parameters": {
"type": "object",
"properties": {
"service": {
"type": "string"
}
},
"required": [
"service"
],
"additionalProperties": false
},
"strict": true
}
],
"tool_choice": {
"type": "function",
"name": "lookup_status"
},
"include": [
"reasoning.encrypted_content"
],
"max_output_tokens": 1024,
"store": false
}'
マルチモーダル入力
- 画像入力
- ファイル入力
curl -X POST "https://api.mixroute.ai/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxx" \
-d '{
"model": "gpt-5.5",
"input": [
{
"role": "user",
"content": [
{
"type": "input_text",
"text": "What'\''s in this image?"
},
{
"type": "input_image",
"image_url": "https://api.mixroute.ai/demo/sample-image.jpg"
}
]
}
]
}'
curl -X POST "https://api.mixroute.ai/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxx" \
-d '{
"model": "gpt-5.5",
"input": [
{
"role": "user",
"content": [
{
"type": "input_text",
"text": "Please summarize the main content of this document"
},
{
"type": "input_file",
"file_id": "file-xxxxxxxx"
}
]
}
]
}'
ファイル入力を使用する前に、Files APIでファイルをアップロードして
file_idを取得する必要があります。会話の継続
複数ターンの会話でコンテキストを維持するには、previous_response_idを使用してください。
# First conversation turn
curl -X POST "https://api.mixroute.ai/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxx" \
-d '{
"model": "gpt-5.5",
"input": [
{"role": "user", "content": "My name is John, please remember my name"}
]
}'
# Response returns id: "resp_abc123"
# Second conversation turn (continuing context)
curl -X POST "https://api.mixroute.ai/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxx" \
-d '{
"model": "gpt-5.5",
"previous_response_id": "resp_abc123",
"input": [
{"role": "user", "content": "What is my name?"}
]
}'
レスポンス形式
- 非ストリーミングレスポンス
- ストリーミングレスポンス(SSEイベント)
{
"id": "resp_xxx",
"object": "response",
"created_at": 1709123456,
"model": "gpt-5.5",
"status": "completed",
"output": [
{
"type": "message",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "Artificial Intelligence (AI) is a branch of computer science..."
}
]
}
],
"usage": {
"input_tokens": 25,
"output_tokens": 150,
"total_tokens": 175
}
}
ストリーミングレスポンスはServer-Sent Events(SSE)形式で返されます。一般的なSSEイベントの種類:
event: response.created
data: {"type":"response.created","response":{"id":"resp_xxx","status":"in_progress"}}
event: response.output_item.added
data: {"type":"response.output_item.added","output_index":0,"item":{"type":"message","role":"assistant"}}
event: response.content_part.added
data: {"type":"response.content_part.added","part":{"type":"output_text","text":""}}
event: response.output_text.delta
data: {"type":"response.output_text.delta","delta":"Artificial"}
event: response.output_text.delta
data: {"type":"response.output_text.delta","delta":" Intelligence"}
event: response.output_text.delta
data: {"type":"response.output_text.delta","delta":" is..."}
event: response.output_text.done
data: {"type":"response.output_text.done","text":"Artificial Intelligence is..."}
event: response.completed
data: {"type":"response.completed","response":{"id":"resp_xxx","status":"completed","usage":{"input_tokens":25,"output_tokens":150}}}
| イベントの種類 | 説明 |
|---|---|
response.created | レスポンスが作成されました |
response.output_text.delta | テキスト差分の出力 |
response.output_text.done | テキスト出力が完了 |
response.completed | レスポンス完了 |
response.failed | レスポンスの失敗 |
比較:Responses APIとChat Completions API
| 機能 | Responses API | Chat Completions API |
|---|---|---|
| 推論モデルのサポート | ✅ 完全対応 | ⚠️ 限定的なサポート |
| 組み込みWeb検索 | ✅ ネイティブ対応 | ❌ 非対応 |
| 推論の制御 | ✅ きめ細かな制御 | ❌ 非対応 |
| 会話の継続 | ✅ previous_response_id | ❌ 手動管理が必要 |
| マルチモーダル入力 | ✅ 完全対応 | ✅ 対応 |
| 使用例 | 推論、検索、高度な機能 | 一般的な会話 |
curl --request POST \
--url https://api.mixroute.ai/v1/responses \
--header 'Authorization: Bearer sk-xxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-5.5",
"max_output_tokens": 2048,
"input": [
{"role": "user", "content": "Briefly introduce artificial intelligence"}
]
}'
from openai import OpenAI
client = OpenAI(
api_key="sk-xxxxxxxxxx",
base_url="https://api.mixroute.ai/v1"
)
response = client.responses.create(
model="gpt-5.5",
max_output_tokens=2048,
input=[
{"role": "user", "content": "Briefly introduce artificial intelligence"}
]
)
print(response.output_text)
const OpenAI = require('openai');
const client = new OpenAI({
apiKey: 'sk-xxxxxxxxxx',
baseURL: 'https://api.mixroute.ai/v1'
});
const response = await client.responses.create({
model: 'gpt-5.5',
max_output_tokens: 2048,
input: [
{ role: 'user', content: 'Briefly introduce artificial intelligence' }
]
});
console.log(response.output_text);
<?php
$client = new GuzzleHttp\Client();
$response = $client->post('https://api.mixroute.ai/v1/responses', [
'headers' => [
'Authorization' => 'Bearer sk-xxxxxxxxxx',
'Content-Type' => 'application/json',
],
'json' => [
'model' => 'gpt-5.5',
'max_output_tokens' => 2048,
'input' => [
['role' => 'user', 'content' => 'Briefly introduce artificial intelligence']
]
]
]);
echo $response->getBody();
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
payload := map[string]interface{}{
"model": "gpt-5.5",
"max_output_tokens": 2048,
"input": []map[string]string{
{"role": "user", "content": "Briefly introduce artificial intelligence"},
},
}
body, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", "https://api.mixroute.ai/v1/responses", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer sk-xxxxxxxxxx")
req.Header.Set("Content-Type", "application/json")
http.DefaultClient.Do(req)
}
import java.net.http.*;
import java.net.URI;
HttpClient client = HttpClient.newHttpClient();
String json = """
{
"model": "gpt-5.5",
"max_output_tokens": 2048,
"input": [{"role": "user", "content": "Briefly introduce artificial intelligence"}]
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.mixroute.ai/v1/responses"))
.header("Authorization", "Bearer sk-xxxxxxxxxx")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
require 'net/http'
require 'json'
uri = URI('https://api.mixroute.ai/v1/responses')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer sk-xxxxxxxxxx'
request['Content-Type'] = 'application/json'
request.body = {
model: 'gpt-5.5',
max_output_tokens: 2048,
input: [{ role: 'user', content: 'Briefly introduce artificial intelligence' }]
}.to_json
response = http.request(request)
puts response.body
{
"id": "resp_xxx",
"object": "response",
"created_at": 1768271369,
"model": "gpt-5.5",
"status": "completed",
"output": [
{
"id": "msg_xxx",
"type": "message",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "Artificial Intelligence (AI) is a branch of computer science...",
"annotations": []
}
]
}
],
"usage": {
"input_tokens": 25,
"output_tokens": 150,
"total_tokens": 175
}
}