const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'openai/gpt-5-nano',
stream: false,
input: [{role: 'user', content: 'Give me the current datetime in Asia/Tokyo.'}],
tools: [{type: 'gateway:datetime', parameters: {timezone: 'Asia/Tokyo'}}],
tool_choice: 'auto'
})
};
fetch('https://api.phaseo.app/v1/responses', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.phaseo.app/v1/responses"
payload = {
"model": "openai/gpt-5-nano",
"stream": False,
"input": [
{
"role": "user",
"content": "Give me the current datetime in Asia/Tokyo."
}
],
"tools": [
{
"type": "gateway:datetime",
"parameters": { "timezone": "Asia/Tokyo" }
}
],
"tool_choice": "auto"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)curl --request POST \
--url https://api.phaseo.app/v1/responses \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "openai/gpt-5-nano",
"stream": false,
"input": [
{
"role": "user",
"content": "Give me the current datetime in Asia/Tokyo."
}
],
"tools": [
{
"type": "gateway:datetime",
"parameters": {
"timezone": "Asia/Tokyo"
}
}
],
"tool_choice": "auto"
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.phaseo.app/v1/responses"
payload := strings.NewReader("{\n \"model\": \"openai/gpt-5-nano\",\n \"stream\": false,\n \"input\": [\n {\n \"role\": \"user\",\n \"content\": \"Give me the current datetime in Asia/Tokyo.\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"gateway:datetime\",\n \"parameters\": {\n \"timezone\": \"Asia/Tokyo\"\n }\n }\n ],\n \"tool_choice\": \"auto\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.phaseo.app/v1/responses")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"openai/gpt-5-nano\",\n \"stream\": false,\n \"input\": [\n {\n \"role\": \"user\",\n \"content\": \"Give me the current datetime in Asia/Tokyo.\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"gateway:datetime\",\n \"parameters\": {\n \"timezone\": \"Asia/Tokyo\"\n }\n }\n ],\n \"tool_choice\": \"auto\"\n}")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.phaseo.app/v1/responses",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'openai/gpt-5-nano',
'stream' => false,
'input' => [
[
'role' => 'user',
'content' => 'Give me the current datetime in Asia/Tokyo.'
]
],
'tools' => [
[
'type' => 'gateway:datetime',
'parameters' => [
'timezone' => 'Asia/Tokyo'
]
]
],
'tool_choice' => 'auto'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.phaseo.app/v1/responses")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"openai/gpt-5-nano\",\n \"stream\": false,\n \"input\": [\n {\n \"role\": \"user\",\n \"content\": \"Give me the current datetime in Asia/Tokyo.\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"gateway:datetime\",\n \"parameters\": {\n \"timezone\": \"Asia/Tokyo\"\n }\n }\n ],\n \"tool_choice\": \"auto\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"object": "<string>",
"created": 123,
"model": "<string>",
"provider": "<string>",
"provider_id": "<string>",
"nativeResponseId": "<string>",
"status": "completed",
"finish_reason": "<string>",
"meta": {},
"cost_nanos": 123,
"cost_cents": 123,
"currency": "<string>",
"pricing_lines": [
{}
],
"output": [
{
"type": "<string>",
"role": "<string>",
"content": [
{
"type": "output_text",
"text": "<string>",
"annotations": [
{}
]
}
],
"call_id": "<string>",
"name": "<string>",
"arguments": "<string>"
}
],
"output_items": [
{
"type": "<string>",
"role": "<string>",
"content": [
{
"type": "output_text",
"text": "<string>",
"annotations": [
{}
]
}
],
"call_id": "<string>",
"name": "<string>",
"arguments": "<string>"
}
],
"content": [
{}
],
"role": "<string>",
"stop_reason": "<string>",
"type": "<string>",
"usage": {
"prompt_tokens": 123,
"completion_tokens": 123,
"total_tokens": 123,
"server_tool_use": {
"datetime_requests": 1,
"web_search_requests": 1,
"subagent_requests": 1,
"fusion_requests": 1,
"search_models_requests": 1,
"web_fetch_requests": 1,
"advisor_requests": 1,
"image_generation_requests": 1,
"apply_patch_requests": 1
}
}
}{
"error": "error_type",
"ok": false,
"message": "Human-readable error message",
"description": "Additional error details.",
"generation_id": "G-abc123",
"status_code": 502,
"error_type": "system",
"error_origin": "upstream",
"reason": "all_candidates_failed",
"attempt_count": 2,
"failed_providers": [
"google-ai-studio",
"openai"
],
"failed_statuses": [
403,
429
],
"upstream_error": {
"code": "PERMISSION_DENIED",
"message": "The caller does not have permission.",
"description": "<string>",
"param": "<string>"
},
"failure_sample": [
{
"provider": "<string>",
"type": "<string>",
"status": 123,
"upstream_error_code": "<string>",
"upstream_error_message": "<string>",
"upstream_error_description": "<string>",
"upstream_error_param": "<string>",
"upstream_payload_preview": "<string>",
"retryable": true
}
],
"provider_failure_diagnostics": {
"category": "credentials_not_configured",
"hint": "<string>",
"provider": "<string>"
},
"routing_diagnostics": {
"filterStages": [
{
"stage": "<string>",
"beforeCount": 123,
"afterCount": 123,
"droppedProviders": [
{
"providerId": "<string>",
"reason": "<string>"
}
]
}
]
},
"provider_candidate_diagnostics": {
"totalProviders": 123,
"supportsEndpointCount": 123,
"candidateCount": 123,
"droppedUnsupportedEndpoint": [
"<string>"
],
"droppedMissingAdapter": [
{
"providerId": "<string>",
"endpoint": "<string>"
}
]
},
"provider_enablement": {
"capability": "<string>",
"providersBefore": [
"<string>"
],
"providersAfter": [
"<string>"
],
"dropped": [
{
"providerId": "<string>",
"reason": "<string>"
}
]
},
"missing_pricing_providers": [
"<string>"
],
"provider_payment_required_provider": "openai",
"provider_payment_required_support_notice": "Our upstream provider billing appears to be unavailable. If this persists, contact support.",
"details": [
{}
]
}Créer une réponse
Crée une réponse à l’aide de Responses API.
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'openai/gpt-5-nano',
stream: false,
input: [{role: 'user', content: 'Give me the current datetime in Asia/Tokyo.'}],
tools: [{type: 'gateway:datetime', parameters: {timezone: 'Asia/Tokyo'}}],
tool_choice: 'auto'
})
};
fetch('https://api.phaseo.app/v1/responses', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.phaseo.app/v1/responses"
payload = {
"model": "openai/gpt-5-nano",
"stream": False,
"input": [
{
"role": "user",
"content": "Give me the current datetime in Asia/Tokyo."
}
],
"tools": [
{
"type": "gateway:datetime",
"parameters": { "timezone": "Asia/Tokyo" }
}
],
"tool_choice": "auto"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)curl --request POST \
--url https://api.phaseo.app/v1/responses \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "openai/gpt-5-nano",
"stream": false,
"input": [
{
"role": "user",
"content": "Give me the current datetime in Asia/Tokyo."
}
],
"tools": [
{
"type": "gateway:datetime",
"parameters": {
"timezone": "Asia/Tokyo"
}
}
],
"tool_choice": "auto"
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.phaseo.app/v1/responses"
payload := strings.NewReader("{\n \"model\": \"openai/gpt-5-nano\",\n \"stream\": false,\n \"input\": [\n {\n \"role\": \"user\",\n \"content\": \"Give me the current datetime in Asia/Tokyo.\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"gateway:datetime\",\n \"parameters\": {\n \"timezone\": \"Asia/Tokyo\"\n }\n }\n ],\n \"tool_choice\": \"auto\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.phaseo.app/v1/responses")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"openai/gpt-5-nano\",\n \"stream\": false,\n \"input\": [\n {\n \"role\": \"user\",\n \"content\": \"Give me the current datetime in Asia/Tokyo.\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"gateway:datetime\",\n \"parameters\": {\n \"timezone\": \"Asia/Tokyo\"\n }\n }\n ],\n \"tool_choice\": \"auto\"\n}")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.phaseo.app/v1/responses",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'openai/gpt-5-nano',
'stream' => false,
'input' => [
[
'role' => 'user',
'content' => 'Give me the current datetime in Asia/Tokyo.'
]
],
'tools' => [
[
'type' => 'gateway:datetime',
'parameters' => [
'timezone' => 'Asia/Tokyo'
]
]
],
'tool_choice' => 'auto'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.phaseo.app/v1/responses")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"openai/gpt-5-nano\",\n \"stream\": false,\n \"input\": [\n {\n \"role\": \"user\",\n \"content\": \"Give me the current datetime in Asia/Tokyo.\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"gateway:datetime\",\n \"parameters\": {\n \"timezone\": \"Asia/Tokyo\"\n }\n }\n ],\n \"tool_choice\": \"auto\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"object": "<string>",
"created": 123,
"model": "<string>",
"provider": "<string>",
"provider_id": "<string>",
"nativeResponseId": "<string>",
"status": "completed",
"finish_reason": "<string>",
"meta": {},
"cost_nanos": 123,
"cost_cents": 123,
"currency": "<string>",
"pricing_lines": [
{}
],
"output": [
{
"type": "<string>",
"role": "<string>",
"content": [
{
"type": "output_text",
"text": "<string>",
"annotations": [
{}
]
}
],
"call_id": "<string>",
"name": "<string>",
"arguments": "<string>"
}
],
"output_items": [
{
"type": "<string>",
"role": "<string>",
"content": [
{
"type": "output_text",
"text": "<string>",
"annotations": [
{}
]
}
],
"call_id": "<string>",
"name": "<string>",
"arguments": "<string>"
}
],
"content": [
{}
],
"role": "<string>",
"stop_reason": "<string>",
"type": "<string>",
"usage": {
"prompt_tokens": 123,
"completion_tokens": 123,
"total_tokens": 123,
"server_tool_use": {
"datetime_requests": 1,
"web_search_requests": 1,
"subagent_requests": 1,
"fusion_requests": 1,
"search_models_requests": 1,
"web_fetch_requests": 1,
"advisor_requests": 1,
"image_generation_requests": 1,
"apply_patch_requests": 1
}
}
}{
"error": "error_type",
"ok": false,
"message": "Human-readable error message",
"description": "Additional error details.",
"generation_id": "G-abc123",
"status_code": 502,
"error_type": "system",
"error_origin": "upstream",
"reason": "all_candidates_failed",
"attempt_count": 2,
"failed_providers": [
"google-ai-studio",
"openai"
],
"failed_statuses": [
403,
429
],
"upstream_error": {
"code": "PERMISSION_DENIED",
"message": "The caller does not have permission.",
"description": "<string>",
"param": "<string>"
},
"failure_sample": [
{
"provider": "<string>",
"type": "<string>",
"status": 123,
"upstream_error_code": "<string>",
"upstream_error_message": "<string>",
"upstream_error_description": "<string>",
"upstream_error_param": "<string>",
"upstream_payload_preview": "<string>",
"retryable": true
}
],
"provider_failure_diagnostics": {
"category": "credentials_not_configured",
"hint": "<string>",
"provider": "<string>"
},
"routing_diagnostics": {
"filterStages": [
{
"stage": "<string>",
"beforeCount": 123,
"afterCount": 123,
"droppedProviders": [
{
"providerId": "<string>",
"reason": "<string>"
}
]
}
]
},
"provider_candidate_diagnostics": {
"totalProviders": 123,
"supportsEndpointCount": 123,
"candidateCount": 123,
"droppedUnsupportedEndpoint": [
"<string>"
],
"droppedMissingAdapter": [
{
"providerId": "<string>",
"endpoint": "<string>"
}
]
},
"provider_enablement": {
"capability": "<string>",
"providersBefore": [
"<string>"
],
"providersAfter": [
"<string>"
],
"dropped": [
{
"providerId": "<string>",
"reason": "<string>"
}
]
},
"missing_pricing_providers": [
"<string>"
],
"provider_payment_required_provider": "openai",
"provider_payment_required_support_notice": "Our upstream provider billing appears to be unavailable. If this persists, contact support.",
"details": [
{}
]
}Outils serveur
/v1/responses prend en charge les outils de fonction classiques ainsi que les outils serveur gérés par le Gateway suivants :
gateway:datetimephaseo:web_searchphaseo:web_fetchphaseo:advisorphaseo:image_generationphaseo:apply_patch
Exemple de date et heure
curl https://api.phaseo.app/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5-nano",
"stream": false,
"input": [
{ "role": "user", "content": "Give me the current datetime in Asia/Tokyo." }
],
"tools": [
{
"type": "gateway:datetime",
"parameters": { "timezone": "Asia/Tokyo" }
}
],
"tool_choice": "auto"
}'
usage.server_tool_use.* correspondants sont inclus dans les données d’utilisation.
gateway:datetime->datetime_requestsphaseo:web_search->web_search_requests,web_search_results,web_search_extra_resultsphaseo:web_fetch->web_fetch_requestsphaseo:advisor->advisor_requestsphaseo:image_generation->image_generation_requestsphaseo:apply_patch->apply_patch_requests
À propos du streaming
stream: true est également pris en charge. Avec les outils serveur gérés par le Gateway, Phaseo peut matérialiser le tour d’appel d’outil amont, poursuivre la boucle, puis réémettre un flux synthétique.Autorisations
Authentification par jeton Bearer
Corps
x >= 1Show child attributes
Show child attributes
Identifiant unique permettant de regrouper des requêtes liées (par exemple, une conversation ou un flux de travail d’agent) à des fins d’observabilité.
256Show child attributes
Show child attributes
standard, default, fast, ultrafast, priority, flex, batch 0 <= x <= 2Stratégie de sélection des outils. Les types d’outils serveur Phaseo sont acceptés et convertis en cibles de fonctions ou d’outils du fournisseur amont.
auto, none, required, phaseo:datetime, phaseo:web_search, phaseo:web_fetch, phaseo:subagent, phaseo:fusion, phaseo:search_models, gateway:datetime, gateway:web_search, gateway:web_fetch Définitions des outils pour les appels de fonctions du modèle et les outils serveur de la passerelle. Les outils serveur intégrés de la passerelle sont gateway:datetime, gateway:web_search et gateway:web_fetch.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
Show child attributes
Show child attributes
0 <= x <= 1auto, disabled text, image, audio Show child attributes
Show child attributes
Options propres au fournisseur, facultatives.
Show child attributes
Show child attributes
Options de débogage de la passerelle. Ces indicateurs ne sont jamais transmis au fournisseur.
Show child attributes
Show child attributes
Préférences de routage des fournisseurs pour la sélection par la passerelle.
Show child attributes
Show child attributes
Réponse
Réponse
completed, failed, incomplete Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Cette page vous a-t-elle été utile ?