const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'openai/gpt-5-nano',
stream: false,
messages: [{role: 'user', content: 'What is the current datetime in Europe/London?'}],
tools: [{type: 'gateway:datetime', parameters: {timezone: 'Europe/London'}}],
tool_choice: 'auto'
})
};
fetch('https://api.phaseo.app/v1/chat/completions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.phaseo.app/v1/chat/completions"
payload = {
"model": "openai/gpt-5-nano",
"stream": False,
"messages": [
{
"role": "user",
"content": "What is the current datetime in Europe/London?"
}
],
"tools": [
{
"type": "gateway:datetime",
"parameters": { "timezone": "Europe/London" }
}
],
"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/chat/completions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "openai/gpt-5-nano",
"stream": false,
"messages": [
{
"role": "user",
"content": "What is the current datetime in Europe/London?"
}
],
"tools": [
{
"type": "gateway:datetime",
"parameters": {
"timezone": "Europe/London"
}
}
],
"tool_choice": "auto"
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.phaseo.app/v1/chat/completions"
payload := strings.NewReader("{\n \"model\": \"openai/gpt-5-nano\",\n \"stream\": false,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"What is the current datetime in Europe/London?\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"gateway:datetime\",\n \"parameters\": {\n \"timezone\": \"Europe/London\"\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/chat/completions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"openai/gpt-5-nano\",\n \"stream\": false,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"What is the current datetime in Europe/London?\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"gateway:datetime\",\n \"parameters\": {\n \"timezone\": \"Europe/London\"\n }\n }\n ],\n \"tool_choice\": \"auto\"\n}")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.phaseo.app/v1/chat/completions",
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,
'messages' => [
[
'role' => 'user',
'content' => 'What is the current datetime in Europe/London?'
]
],
'tools' => [
[
'type' => 'gateway:datetime',
'parameters' => [
'timezone' => 'Europe/London'
]
]
],
'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/chat/completions")
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 \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"What is the current datetime in Europe/London?\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"gateway:datetime\",\n \"parameters\": {\n \"timezone\": \"Europe/London\"\n }\n }\n ],\n \"tool_choice\": \"auto\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"nativeResponseId": "<string>",
"object": "<string>",
"created": 123,
"model": "<string>",
"provider": "<string>",
"choices": [
{
"index": 123,
"message": {
"role": "system",
"content": "<string>",
"name": "<string>",
"tool_calls": [
{
"id": "<string>",
"type": "function",
"function": {
"name": "<string>",
"arguments": "<string>",
"description": "<string>",
"parameters": {}
}
}
],
"images": [
{
"type": "image_url",
"image_url": {
"url": "<string>"
},
"mime_type": "<string>"
}
],
"audios": [
{
"type": "audio_url",
"audio_url": {
"url": "<string>"
},
"mime_type": "<string>",
"format": "wav"
}
],
"tool_call_id": "<string>"
},
"finish_reason": "stop"
}
],
"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": [
{}
]
}Criar uma conclusão de chat
Gere conclusões de chat usando o endpoint compatível com a API da OpenAI.
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'openai/gpt-5-nano',
stream: false,
messages: [{role: 'user', content: 'What is the current datetime in Europe/London?'}],
tools: [{type: 'gateway:datetime', parameters: {timezone: 'Europe/London'}}],
tool_choice: 'auto'
})
};
fetch('https://api.phaseo.app/v1/chat/completions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.phaseo.app/v1/chat/completions"
payload = {
"model": "openai/gpt-5-nano",
"stream": False,
"messages": [
{
"role": "user",
"content": "What is the current datetime in Europe/London?"
}
],
"tools": [
{
"type": "gateway:datetime",
"parameters": { "timezone": "Europe/London" }
}
],
"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/chat/completions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "openai/gpt-5-nano",
"stream": false,
"messages": [
{
"role": "user",
"content": "What is the current datetime in Europe/London?"
}
],
"tools": [
{
"type": "gateway:datetime",
"parameters": {
"timezone": "Europe/London"
}
}
],
"tool_choice": "auto"
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.phaseo.app/v1/chat/completions"
payload := strings.NewReader("{\n \"model\": \"openai/gpt-5-nano\",\n \"stream\": false,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"What is the current datetime in Europe/London?\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"gateway:datetime\",\n \"parameters\": {\n \"timezone\": \"Europe/London\"\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/chat/completions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"openai/gpt-5-nano\",\n \"stream\": false,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"What is the current datetime in Europe/London?\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"gateway:datetime\",\n \"parameters\": {\n \"timezone\": \"Europe/London\"\n }\n }\n ],\n \"tool_choice\": \"auto\"\n}")
.asString();<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.phaseo.app/v1/chat/completions",
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,
'messages' => [
[
'role' => 'user',
'content' => 'What is the current datetime in Europe/London?'
]
],
'tools' => [
[
'type' => 'gateway:datetime',
'parameters' => [
'timezone' => 'Europe/London'
]
]
],
'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/chat/completions")
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 \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"What is the current datetime in Europe/London?\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"gateway:datetime\",\n \"parameters\": {\n \"timezone\": \"Europe/London\"\n }\n }\n ],\n \"tool_choice\": \"auto\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"nativeResponseId": "<string>",
"object": "<string>",
"created": 123,
"model": "<string>",
"provider": "<string>",
"choices": [
{
"index": 123,
"message": {
"role": "system",
"content": "<string>",
"name": "<string>",
"tool_calls": [
{
"id": "<string>",
"type": "function",
"function": {
"name": "<string>",
"arguments": "<string>",
"description": "<string>",
"parameters": {}
}
}
],
"images": [
{
"type": "image_url",
"image_url": {
"url": "<string>"
},
"mime_type": "<string>"
}
],
"audios": [
{
"type": "audio_url",
"audio_url": {
"url": "<string>"
},
"mime_type": "<string>",
"format": "wav"
}
],
"tool_call_id": "<string>"
},
"finish_reason": "stop"
}
],
"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": [
{}
]
}Ferramentas do servidor
/v1/chat/completions aceita ferramentas de função comuns e estas ferramentas de servidor gerenciadas pelo Gateway:
gateway:datetimephaseo:web_searchphaseo:web_fetchphaseo:advisorphaseo:image_generation
Exemplo de data e hora
curl https://api.phaseo.app/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5-nano",
"stream": false,
"messages": [
{ "role": "user", "content": "What is the current datetime in Europe/London?" }
],
"tools": [
{
"type": "gateway:datetime",
"parameters": { "timezone": "Europe/London" }
}
],
"tool_choice": "auto"
}'
{
"usage": {
"prompt_tokens": 12,
"completion_tokens": 34,
"total_tokens": 46,
"server_tool_use": {
"datetime_requests": 1
}
}
}
phaseo:web_search adiciona server_tool_use.web_search_requests, server_tool_use.web_search_results e server_tool_use.web_search_extra_results. phaseo:web_fetch adiciona server_tool_use.web_fetch_requests.
Nota sobre streaming
stream: true também é compatível. Para ferramentas de servidor gerenciadas pelo Gateway, a Phaseo pode materializar o turno de chamada à ferramenta upstream, continuar o ciclo e emitir novamente um stream sintético.Autorizações
Autenticação com token Bearer
Corpo
1Show child attributes
Show child attributes
Show child attributes
Show child attributes
Alias compatível com OpenAI para reasoning.effort.
none, instant, minimal, low, medium, high, xhigh, max -2 <= x <= 2Show child attributes
Show child attributes
x >= 1x >= 1Show child attributes
Show child attributes
Identificador exclusivo para agrupar solicitações relacionadas (por exemplo, uma conversa ou um fluxo de trabalho de agente) para observabilidade.
256-2 <= x <= 2-9223372036854776000 <= x <= 92233720368547760000 <= x <= 2Definições de ferramentas para chamadas de função do modelo e ferramentas de servidor do gateway. As ferramentas integradas incluem data e hora, busca na web, busca de páginas, Advisor, Subagent, Fusion, busca de modelos, geração de imagens e criação de patches.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
Show child attributes
Show child attributes
x >= 1Estratégia de seleção de ferramentas. Os tipos de ferramentas de servidor do Phaseo são aceitos e convertidos em destinos de função ou ferramenta do provedor upstream.
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 0 <= x <= 200 <= x <= 1text, image, audio Show child attributes
Show child attributes
Seletor de provedor. Use uma string para um único provedor ou opções de roteamento como { "only": ["groq"] }.
openai, anthropic, google-ai-studio, gemini, mistral, x-ai, xai, groq, together Opções específicas do provedor, se necessário.
Show child attributes
Show child attributes
standard, default, fast, ultrafast, priority, flex, batch Controles de depuração do gateway. Essas opções nunca são encaminhadas ao provedor.
Show child attributes
Show child attributes
Esta página foi útil?