curl --request POST \
--url https://polza.ai/api/v1/responses \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"input": "Hello, how are you?",
"model": "openai/gpt-4o@provider=google&reasoning_effort=high&allow_fallbacks=false",
"instructions": "You are a helpful assistant",
"metadata": {},
"tools": [
"<unknown>"
],
"tool_choice": "auto",
"parallel_tool_calls": false,
"background": true,
"include": [
"reasoning.encrypted_content"
],
"models": [
"<string>"
],
"text": {
"format": "text",
"verbosity": "medium"
},
"reasoning": {
"type": "adaptive",
"effort": "medium",
"effort_level": "max",
"summary": "auto",
"max_tokens": 5000,
"enabled": true
},
"max_output_tokens": 1000,
"temperature": 0.7,
"top_p": 1,
"top_logprobs": 5,
"max_tool_calls": 5,
"stop_server_tools_when": [
{
"type": "step_count",
"value": 5,
"value_rub": 20
}
],
"prompt": {},
"presence_penalty": 0,
"frequency_penalty": 0,
"top_k": 40,
"image_config": {},
"modalities": [],
"prompt_cache_key": "<string>",
"previous_response_id": "<string>",
"conversation": {},
"context_management": "<array>",
"moderation": {},
"stream": false,
"stream_options": {
"include_obfuscation": false,
"hide_intermediate_text": false
},
"provider": {
"require_parameters": true,
"allow_fallbacks": true,
"order": [
"OpenAI",
"Anthropic"
],
"only": [
"OpenAI",
"Google"
],
"ignore": [
"DeepInfra"
],
"sort": "price",
"data_residency": "ru",
"max_price": {
"prompt": 10,
"completion": 20,
"image": 5,
"audio": 15,
"request": 1,
"video_per_second": 50,
"stt_per_minute": 5,
"tts_per_million_characters": 1500
}
},
"user": "user-123",
"safety_identifier": "sha256-user-id",
"store": true,
"session_id": "<string>",
"plugins": [
"<string>"
]
}
'import requests
url = "https://polza.ai/api/v1/responses"
payload = {
"input": "Hello, how are you?",
"model": "openai/gpt-4o@provider=google&reasoning_effort=high&allow_fallbacks=false",
"instructions": "You are a helpful assistant",
"metadata": {},
"tools": ["<unknown>"],
"tool_choice": "auto",
"parallel_tool_calls": False,
"background": True,
"include": ["reasoning.encrypted_content"],
"models": ["<string>"],
"text": {
"format": "text",
"verbosity": "medium"
},
"reasoning": {
"type": "adaptive",
"effort": "medium",
"effort_level": "max",
"summary": "auto",
"max_tokens": 5000,
"enabled": True
},
"max_output_tokens": 1000,
"temperature": 0.7,
"top_p": 1,
"top_logprobs": 5,
"max_tool_calls": 5,
"stop_server_tools_when": [
{
"type": "step_count",
"value": 5,
"value_rub": 20
}
],
"prompt": {},
"presence_penalty": 0,
"frequency_penalty": 0,
"top_k": 40,
"image_config": {},
"modalities": [],
"prompt_cache_key": "<string>",
"previous_response_id": "<string>",
"conversation": {},
"context_management": "<array>",
"moderation": {},
"stream": False,
"stream_options": {
"include_obfuscation": False,
"hide_intermediate_text": False
},
"provider": {
"require_parameters": True,
"allow_fallbacks": True,
"order": ["OpenAI", "Anthropic"],
"only": ["OpenAI", "Google"],
"ignore": ["DeepInfra"],
"sort": "price",
"data_residency": "ru",
"max_price": {
"prompt": 10,
"completion": 20,
"image": 5,
"audio": 15,
"request": 1,
"video_per_second": 50,
"stt_per_minute": 5,
"tts_per_million_characters": 1500
}
},
"user": "user-123",
"safety_identifier": "sha256-user-id",
"store": True,
"session_id": "<string>",
"plugins": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
input: 'Hello, how are you?',
model: 'openai/gpt-4o@provider=google&reasoning_effort=high&allow_fallbacks=false',
instructions: 'You are a helpful assistant',
metadata: {},
tools: ['<unknown>'],
tool_choice: 'auto',
parallel_tool_calls: false,
background: true,
include: ['reasoning.encrypted_content'],
models: ['<string>'],
text: {format: 'text', verbosity: 'medium'},
reasoning: {
type: 'adaptive',
effort: 'medium',
effort_level: 'max',
summary: 'auto',
max_tokens: 5000,
enabled: true
},
max_output_tokens: 1000,
temperature: 0.7,
top_p: 1,
top_logprobs: 5,
max_tool_calls: 5,
stop_server_tools_when: [{type: 'step_count', value: 5, value_rub: 20}],
prompt: {},
presence_penalty: 0,
frequency_penalty: 0,
top_k: 40,
image_config: {},
modalities: [],
prompt_cache_key: '<string>',
previous_response_id: '<string>',
conversation: {},
context_management: '<array>',
moderation: {},
stream: false,
stream_options: {include_obfuscation: false, hide_intermediate_text: false},
provider: {
require_parameters: true,
allow_fallbacks: true,
order: ['OpenAI', 'Anthropic'],
only: ['OpenAI', 'Google'],
ignore: ['DeepInfra'],
sort: 'price',
data_residency: 'ru',
max_price: {
prompt: 10,
completion: 20,
image: 5,
audio: 15,
request: 1,
video_per_second: 50,
stt_per_minute: 5,
tts_per_million_characters: 1500
}
},
user: 'user-123',
safety_identifier: 'sha256-user-id',
store: true,
session_id: '<string>',
plugins: ['<string>']
})
};
fetch('https://polza.ai/api/v1/responses', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://polza.ai/api/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([
'input' => 'Hello, how are you?',
'model' => 'openai/gpt-4o@provider=google&reasoning_effort=high&allow_fallbacks=false',
'instructions' => 'You are a helpful assistant',
'metadata' => [
],
'tools' => [
'<unknown>'
],
'tool_choice' => 'auto',
'parallel_tool_calls' => false,
'background' => true,
'include' => [
'reasoning.encrypted_content'
],
'models' => [
'<string>'
],
'text' => [
'format' => 'text',
'verbosity' => 'medium'
],
'reasoning' => [
'type' => 'adaptive',
'effort' => 'medium',
'effort_level' => 'max',
'summary' => 'auto',
'max_tokens' => 5000,
'enabled' => true
],
'max_output_tokens' => 1000,
'temperature' => 0.7,
'top_p' => 1,
'top_logprobs' => 5,
'max_tool_calls' => 5,
'stop_server_tools_when' => [
[
'type' => 'step_count',
'value' => 5,
'value_rub' => 20
]
],
'prompt' => [
],
'presence_penalty' => 0,
'frequency_penalty' => 0,
'top_k' => 40,
'image_config' => [
],
'modalities' => [
],
'prompt_cache_key' => '<string>',
'previous_response_id' => '<string>',
'conversation' => [
],
'context_management' => '<array>',
'moderation' => [
],
'stream' => false,
'stream_options' => [
'include_obfuscation' => false,
'hide_intermediate_text' => false
],
'provider' => [
'require_parameters' => true,
'allow_fallbacks' => true,
'order' => [
'OpenAI',
'Anthropic'
],
'only' => [
'OpenAI',
'Google'
],
'ignore' => [
'DeepInfra'
],
'sort' => 'price',
'data_residency' => 'ru',
'max_price' => [
'prompt' => 10,
'completion' => 20,
'image' => 5,
'audio' => 15,
'request' => 1,
'video_per_second' => 50,
'stt_per_minute' => 5,
'tts_per_million_characters' => 1500
]
],
'user' => 'user-123',
'safety_identifier' => 'sha256-user-id',
'store' => true,
'session_id' => '<string>',
'plugins' => [
'<string>'
]
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://polza.ai/api/v1/responses"
payload := strings.NewReader("{\n \"input\": \"Hello, how are you?\",\n \"model\": \"openai/gpt-4o@provider=google&reasoning_effort=high&allow_fallbacks=false\",\n \"instructions\": \"You are a helpful assistant\",\n \"metadata\": {},\n \"tools\": [\n \"<unknown>\"\n ],\n \"tool_choice\": \"auto\",\n \"parallel_tool_calls\": false,\n \"background\": true,\n \"include\": [\n \"reasoning.encrypted_content\"\n ],\n \"models\": [\n \"<string>\"\n ],\n \"text\": {\n \"format\": \"text\",\n \"verbosity\": \"medium\"\n },\n \"reasoning\": {\n \"type\": \"adaptive\",\n \"effort\": \"medium\",\n \"effort_level\": \"max\",\n \"summary\": \"auto\",\n \"max_tokens\": 5000,\n \"enabled\": true\n },\n \"max_output_tokens\": 1000,\n \"temperature\": 0.7,\n \"top_p\": 1,\n \"top_logprobs\": 5,\n \"max_tool_calls\": 5,\n \"stop_server_tools_when\": [\n {\n \"type\": \"step_count\",\n \"value\": 5,\n \"value_rub\": 20\n }\n ],\n \"prompt\": {},\n \"presence_penalty\": 0,\n \"frequency_penalty\": 0,\n \"top_k\": 40,\n \"image_config\": {},\n \"modalities\": [],\n \"prompt_cache_key\": \"<string>\",\n \"previous_response_id\": \"<string>\",\n \"conversation\": {},\n \"context_management\": \"<array>\",\n \"moderation\": {},\n \"stream\": false,\n \"stream_options\": {\n \"include_obfuscation\": false,\n \"hide_intermediate_text\": false\n },\n \"provider\": {\n \"require_parameters\": true,\n \"allow_fallbacks\": true,\n \"order\": [\n \"OpenAI\",\n \"Anthropic\"\n ],\n \"only\": [\n \"OpenAI\",\n \"Google\"\n ],\n \"ignore\": [\n \"DeepInfra\"\n ],\n \"sort\": \"price\",\n \"data_residency\": \"ru\",\n \"max_price\": {\n \"prompt\": 10,\n \"completion\": 20,\n \"image\": 5,\n \"audio\": 15,\n \"request\": 1,\n \"video_per_second\": 50,\n \"stt_per_minute\": 5,\n \"tts_per_million_characters\": 1500\n }\n },\n \"user\": \"user-123\",\n \"safety_identifier\": \"sha256-user-id\",\n \"store\": true,\n \"session_id\": \"<string>\",\n \"plugins\": [\n \"<string>\"\n ]\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://polza.ai/api/v1/responses")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"input\": \"Hello, how are you?\",\n \"model\": \"openai/gpt-4o@provider=google&reasoning_effort=high&allow_fallbacks=false\",\n \"instructions\": \"You are a helpful assistant\",\n \"metadata\": {},\n \"tools\": [\n \"<unknown>\"\n ],\n \"tool_choice\": \"auto\",\n \"parallel_tool_calls\": false,\n \"background\": true,\n \"include\": [\n \"reasoning.encrypted_content\"\n ],\n \"models\": [\n \"<string>\"\n ],\n \"text\": {\n \"format\": \"text\",\n \"verbosity\": \"medium\"\n },\n \"reasoning\": {\n \"type\": \"adaptive\",\n \"effort\": \"medium\",\n \"effort_level\": \"max\",\n \"summary\": \"auto\",\n \"max_tokens\": 5000,\n \"enabled\": true\n },\n \"max_output_tokens\": 1000,\n \"temperature\": 0.7,\n \"top_p\": 1,\n \"top_logprobs\": 5,\n \"max_tool_calls\": 5,\n \"stop_server_tools_when\": [\n {\n \"type\": \"step_count\",\n \"value\": 5,\n \"value_rub\": 20\n }\n ],\n \"prompt\": {},\n \"presence_penalty\": 0,\n \"frequency_penalty\": 0,\n \"top_k\": 40,\n \"image_config\": {},\n \"modalities\": [],\n \"prompt_cache_key\": \"<string>\",\n \"previous_response_id\": \"<string>\",\n \"conversation\": {},\n \"context_management\": \"<array>\",\n \"moderation\": {},\n \"stream\": false,\n \"stream_options\": {\n \"include_obfuscation\": false,\n \"hide_intermediate_text\": false\n },\n \"provider\": {\n \"require_parameters\": true,\n \"allow_fallbacks\": true,\n \"order\": [\n \"OpenAI\",\n \"Anthropic\"\n ],\n \"only\": [\n \"OpenAI\",\n \"Google\"\n ],\n \"ignore\": [\n \"DeepInfra\"\n ],\n \"sort\": \"price\",\n \"data_residency\": \"ru\",\n \"max_price\": {\n \"prompt\": 10,\n \"completion\": 20,\n \"image\": 5,\n \"audio\": 15,\n \"request\": 1,\n \"video_per_second\": 50,\n \"stt_per_minute\": 5,\n \"tts_per_million_characters\": 1500\n }\n },\n \"user\": \"user-123\",\n \"safety_identifier\": \"sha256-user-id\",\n \"store\": true,\n \"session_id\": \"<string>\",\n \"plugins\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://polza.ai/api/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 \"input\": \"Hello, how are you?\",\n \"model\": \"openai/gpt-4o@provider=google&reasoning_effort=high&allow_fallbacks=false\",\n \"instructions\": \"You are a helpful assistant\",\n \"metadata\": {},\n \"tools\": [\n \"<unknown>\"\n ],\n \"tool_choice\": \"auto\",\n \"parallel_tool_calls\": false,\n \"background\": true,\n \"include\": [\n \"reasoning.encrypted_content\"\n ],\n \"models\": [\n \"<string>\"\n ],\n \"text\": {\n \"format\": \"text\",\n \"verbosity\": \"medium\"\n },\n \"reasoning\": {\n \"type\": \"adaptive\",\n \"effort\": \"medium\",\n \"effort_level\": \"max\",\n \"summary\": \"auto\",\n \"max_tokens\": 5000,\n \"enabled\": true\n },\n \"max_output_tokens\": 1000,\n \"temperature\": 0.7,\n \"top_p\": 1,\n \"top_logprobs\": 5,\n \"max_tool_calls\": 5,\n \"stop_server_tools_when\": [\n {\n \"type\": \"step_count\",\n \"value\": 5,\n \"value_rub\": 20\n }\n ],\n \"prompt\": {},\n \"presence_penalty\": 0,\n \"frequency_penalty\": 0,\n \"top_k\": 40,\n \"image_config\": {},\n \"modalities\": [],\n \"prompt_cache_key\": \"<string>\",\n \"previous_response_id\": \"<string>\",\n \"conversation\": {},\n \"context_management\": \"<array>\",\n \"moderation\": {},\n \"stream\": false,\n \"stream_options\": {\n \"include_obfuscation\": false,\n \"hide_intermediate_text\": false\n },\n \"provider\": {\n \"require_parameters\": true,\n \"allow_fallbacks\": true,\n \"order\": [\n \"OpenAI\",\n \"Anthropic\"\n ],\n \"only\": [\n \"OpenAI\",\n \"Google\"\n ],\n \"ignore\": [\n \"DeepInfra\"\n ],\n \"sort\": \"price\",\n \"data_residency\": \"ru\",\n \"max_price\": {\n \"prompt\": 10,\n \"completion\": 20,\n \"image\": 5,\n \"audio\": 15,\n \"request\": 1,\n \"video_per_second\": 50,\n \"stt_per_minute\": 5,\n \"tts_per_million_characters\": 1500\n }\n },\n \"user\": \"user-123\",\n \"safety_identifier\": \"sha256-user-id\",\n \"store\": true,\n \"session_id\": \"<string>\",\n \"plugins\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "gen_581761234567890123",
"object": "response",
"created_at": 1234567890,
"model": "openai/gpt-4",
"status": "completed",
"output_text": "Hello! How can I help you today?",
"output": "<array>",
"completed_at": {},
"error": {
"code": "invalid_request",
"message": "Invalid input format",
"metadata": {}
},
"incomplete_details": {},
"usage": {
"input_tokens": 10,
"output_tokens": 20,
"total_tokens": 30,
"prompt_tokens": 10,
"completion_tokens": 20,
"input_tokens_details": {
"cached_tokens": 0,
"cache_write_tokens": 0,
"audio_tokens": 0,
"video_tokens": 0
},
"output_tokens_details": {
"reasoning_tokens": 100,
"audio_tokens": 0,
"image_tokens": 0,
"accepted_prediction_tokens": 0,
"rejected_prediction_tokens": 0
},
"prompt_tokens_details": {
"cached_tokens": 0,
"cache_write_tokens": 0,
"audio_tokens": 0,
"video_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 100,
"audio_tokens": 0,
"image_tokens": 0,
"accepted_prediction_tokens": 0,
"rejected_prediction_tokens": 0
},
"server_tool_use": {
"web_search_requests": 1
},
"cost_rub": 0.04131306,
"cost": 0.04131306,
"cost_details": {
"inference_cost_rub": 1.2,
"server_tools_cost_rub": 0.4
},
"server_tool_use_details": {
"web_search_requests": 1,
"tool_calls_requested": 2,
"tool_calls_executed": 2,
"steps": 2
},
"plugins": {
"masker": {
"operations": [
{
"operation": "mask",
"latency_ms": 15,
"cost_rub": 0.001
},
{
"operation": "unmask",
"latency_ms": 8,
"cost_rub": 0
}
],
"total_cost_rub": 0.001
}
},
"plugin_post_process_error": true
},
"metadata": {},
"polza": {}
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}POST Responses
Responses API — OpenAI-совместимый формат запросов с tool calling и streaming
curl --request POST \
--url https://polza.ai/api/v1/responses \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"input": "Hello, how are you?",
"model": "openai/gpt-4o@provider=google&reasoning_effort=high&allow_fallbacks=false",
"instructions": "You are a helpful assistant",
"metadata": {},
"tools": [
"<unknown>"
],
"tool_choice": "auto",
"parallel_tool_calls": false,
"background": true,
"include": [
"reasoning.encrypted_content"
],
"models": [
"<string>"
],
"text": {
"format": "text",
"verbosity": "medium"
},
"reasoning": {
"type": "adaptive",
"effort": "medium",
"effort_level": "max",
"summary": "auto",
"max_tokens": 5000,
"enabled": true
},
"max_output_tokens": 1000,
"temperature": 0.7,
"top_p": 1,
"top_logprobs": 5,
"max_tool_calls": 5,
"stop_server_tools_when": [
{
"type": "step_count",
"value": 5,
"value_rub": 20
}
],
"prompt": {},
"presence_penalty": 0,
"frequency_penalty": 0,
"top_k": 40,
"image_config": {},
"modalities": [],
"prompt_cache_key": "<string>",
"previous_response_id": "<string>",
"conversation": {},
"context_management": "<array>",
"moderation": {},
"stream": false,
"stream_options": {
"include_obfuscation": false,
"hide_intermediate_text": false
},
"provider": {
"require_parameters": true,
"allow_fallbacks": true,
"order": [
"OpenAI",
"Anthropic"
],
"only": [
"OpenAI",
"Google"
],
"ignore": [
"DeepInfra"
],
"sort": "price",
"data_residency": "ru",
"max_price": {
"prompt": 10,
"completion": 20,
"image": 5,
"audio": 15,
"request": 1,
"video_per_second": 50,
"stt_per_minute": 5,
"tts_per_million_characters": 1500
}
},
"user": "user-123",
"safety_identifier": "sha256-user-id",
"store": true,
"session_id": "<string>",
"plugins": [
"<string>"
]
}
'import requests
url = "https://polza.ai/api/v1/responses"
payload = {
"input": "Hello, how are you?",
"model": "openai/gpt-4o@provider=google&reasoning_effort=high&allow_fallbacks=false",
"instructions": "You are a helpful assistant",
"metadata": {},
"tools": ["<unknown>"],
"tool_choice": "auto",
"parallel_tool_calls": False,
"background": True,
"include": ["reasoning.encrypted_content"],
"models": ["<string>"],
"text": {
"format": "text",
"verbosity": "medium"
},
"reasoning": {
"type": "adaptive",
"effort": "medium",
"effort_level": "max",
"summary": "auto",
"max_tokens": 5000,
"enabled": True
},
"max_output_tokens": 1000,
"temperature": 0.7,
"top_p": 1,
"top_logprobs": 5,
"max_tool_calls": 5,
"stop_server_tools_when": [
{
"type": "step_count",
"value": 5,
"value_rub": 20
}
],
"prompt": {},
"presence_penalty": 0,
"frequency_penalty": 0,
"top_k": 40,
"image_config": {},
"modalities": [],
"prompt_cache_key": "<string>",
"previous_response_id": "<string>",
"conversation": {},
"context_management": "<array>",
"moderation": {},
"stream": False,
"stream_options": {
"include_obfuscation": False,
"hide_intermediate_text": False
},
"provider": {
"require_parameters": True,
"allow_fallbacks": True,
"order": ["OpenAI", "Anthropic"],
"only": ["OpenAI", "Google"],
"ignore": ["DeepInfra"],
"sort": "price",
"data_residency": "ru",
"max_price": {
"prompt": 10,
"completion": 20,
"image": 5,
"audio": 15,
"request": 1,
"video_per_second": 50,
"stt_per_minute": 5,
"tts_per_million_characters": 1500
}
},
"user": "user-123",
"safety_identifier": "sha256-user-id",
"store": True,
"session_id": "<string>",
"plugins": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
input: 'Hello, how are you?',
model: 'openai/gpt-4o@provider=google&reasoning_effort=high&allow_fallbacks=false',
instructions: 'You are a helpful assistant',
metadata: {},
tools: ['<unknown>'],
tool_choice: 'auto',
parallel_tool_calls: false,
background: true,
include: ['reasoning.encrypted_content'],
models: ['<string>'],
text: {format: 'text', verbosity: 'medium'},
reasoning: {
type: 'adaptive',
effort: 'medium',
effort_level: 'max',
summary: 'auto',
max_tokens: 5000,
enabled: true
},
max_output_tokens: 1000,
temperature: 0.7,
top_p: 1,
top_logprobs: 5,
max_tool_calls: 5,
stop_server_tools_when: [{type: 'step_count', value: 5, value_rub: 20}],
prompt: {},
presence_penalty: 0,
frequency_penalty: 0,
top_k: 40,
image_config: {},
modalities: [],
prompt_cache_key: '<string>',
previous_response_id: '<string>',
conversation: {},
context_management: '<array>',
moderation: {},
stream: false,
stream_options: {include_obfuscation: false, hide_intermediate_text: false},
provider: {
require_parameters: true,
allow_fallbacks: true,
order: ['OpenAI', 'Anthropic'],
only: ['OpenAI', 'Google'],
ignore: ['DeepInfra'],
sort: 'price',
data_residency: 'ru',
max_price: {
prompt: 10,
completion: 20,
image: 5,
audio: 15,
request: 1,
video_per_second: 50,
stt_per_minute: 5,
tts_per_million_characters: 1500
}
},
user: 'user-123',
safety_identifier: 'sha256-user-id',
store: true,
session_id: '<string>',
plugins: ['<string>']
})
};
fetch('https://polza.ai/api/v1/responses', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://polza.ai/api/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([
'input' => 'Hello, how are you?',
'model' => 'openai/gpt-4o@provider=google&reasoning_effort=high&allow_fallbacks=false',
'instructions' => 'You are a helpful assistant',
'metadata' => [
],
'tools' => [
'<unknown>'
],
'tool_choice' => 'auto',
'parallel_tool_calls' => false,
'background' => true,
'include' => [
'reasoning.encrypted_content'
],
'models' => [
'<string>'
],
'text' => [
'format' => 'text',
'verbosity' => 'medium'
],
'reasoning' => [
'type' => 'adaptive',
'effort' => 'medium',
'effort_level' => 'max',
'summary' => 'auto',
'max_tokens' => 5000,
'enabled' => true
],
'max_output_tokens' => 1000,
'temperature' => 0.7,
'top_p' => 1,
'top_logprobs' => 5,
'max_tool_calls' => 5,
'stop_server_tools_when' => [
[
'type' => 'step_count',
'value' => 5,
'value_rub' => 20
]
],
'prompt' => [
],
'presence_penalty' => 0,
'frequency_penalty' => 0,
'top_k' => 40,
'image_config' => [
],
'modalities' => [
],
'prompt_cache_key' => '<string>',
'previous_response_id' => '<string>',
'conversation' => [
],
'context_management' => '<array>',
'moderation' => [
],
'stream' => false,
'stream_options' => [
'include_obfuscation' => false,
'hide_intermediate_text' => false
],
'provider' => [
'require_parameters' => true,
'allow_fallbacks' => true,
'order' => [
'OpenAI',
'Anthropic'
],
'only' => [
'OpenAI',
'Google'
],
'ignore' => [
'DeepInfra'
],
'sort' => 'price',
'data_residency' => 'ru',
'max_price' => [
'prompt' => 10,
'completion' => 20,
'image' => 5,
'audio' => 15,
'request' => 1,
'video_per_second' => 50,
'stt_per_minute' => 5,
'tts_per_million_characters' => 1500
]
],
'user' => 'user-123',
'safety_identifier' => 'sha256-user-id',
'store' => true,
'session_id' => '<string>',
'plugins' => [
'<string>'
]
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://polza.ai/api/v1/responses"
payload := strings.NewReader("{\n \"input\": \"Hello, how are you?\",\n \"model\": \"openai/gpt-4o@provider=google&reasoning_effort=high&allow_fallbacks=false\",\n \"instructions\": \"You are a helpful assistant\",\n \"metadata\": {},\n \"tools\": [\n \"<unknown>\"\n ],\n \"tool_choice\": \"auto\",\n \"parallel_tool_calls\": false,\n \"background\": true,\n \"include\": [\n \"reasoning.encrypted_content\"\n ],\n \"models\": [\n \"<string>\"\n ],\n \"text\": {\n \"format\": \"text\",\n \"verbosity\": \"medium\"\n },\n \"reasoning\": {\n \"type\": \"adaptive\",\n \"effort\": \"medium\",\n \"effort_level\": \"max\",\n \"summary\": \"auto\",\n \"max_tokens\": 5000,\n \"enabled\": true\n },\n \"max_output_tokens\": 1000,\n \"temperature\": 0.7,\n \"top_p\": 1,\n \"top_logprobs\": 5,\n \"max_tool_calls\": 5,\n \"stop_server_tools_when\": [\n {\n \"type\": \"step_count\",\n \"value\": 5,\n \"value_rub\": 20\n }\n ],\n \"prompt\": {},\n \"presence_penalty\": 0,\n \"frequency_penalty\": 0,\n \"top_k\": 40,\n \"image_config\": {},\n \"modalities\": [],\n \"prompt_cache_key\": \"<string>\",\n \"previous_response_id\": \"<string>\",\n \"conversation\": {},\n \"context_management\": \"<array>\",\n \"moderation\": {},\n \"stream\": false,\n \"stream_options\": {\n \"include_obfuscation\": false,\n \"hide_intermediate_text\": false\n },\n \"provider\": {\n \"require_parameters\": true,\n \"allow_fallbacks\": true,\n \"order\": [\n \"OpenAI\",\n \"Anthropic\"\n ],\n \"only\": [\n \"OpenAI\",\n \"Google\"\n ],\n \"ignore\": [\n \"DeepInfra\"\n ],\n \"sort\": \"price\",\n \"data_residency\": \"ru\",\n \"max_price\": {\n \"prompt\": 10,\n \"completion\": 20,\n \"image\": 5,\n \"audio\": 15,\n \"request\": 1,\n \"video_per_second\": 50,\n \"stt_per_minute\": 5,\n \"tts_per_million_characters\": 1500\n }\n },\n \"user\": \"user-123\",\n \"safety_identifier\": \"sha256-user-id\",\n \"store\": true,\n \"session_id\": \"<string>\",\n \"plugins\": [\n \"<string>\"\n ]\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://polza.ai/api/v1/responses")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"input\": \"Hello, how are you?\",\n \"model\": \"openai/gpt-4o@provider=google&reasoning_effort=high&allow_fallbacks=false\",\n \"instructions\": \"You are a helpful assistant\",\n \"metadata\": {},\n \"tools\": [\n \"<unknown>\"\n ],\n \"tool_choice\": \"auto\",\n \"parallel_tool_calls\": false,\n \"background\": true,\n \"include\": [\n \"reasoning.encrypted_content\"\n ],\n \"models\": [\n \"<string>\"\n ],\n \"text\": {\n \"format\": \"text\",\n \"verbosity\": \"medium\"\n },\n \"reasoning\": {\n \"type\": \"adaptive\",\n \"effort\": \"medium\",\n \"effort_level\": \"max\",\n \"summary\": \"auto\",\n \"max_tokens\": 5000,\n \"enabled\": true\n },\n \"max_output_tokens\": 1000,\n \"temperature\": 0.7,\n \"top_p\": 1,\n \"top_logprobs\": 5,\n \"max_tool_calls\": 5,\n \"stop_server_tools_when\": [\n {\n \"type\": \"step_count\",\n \"value\": 5,\n \"value_rub\": 20\n }\n ],\n \"prompt\": {},\n \"presence_penalty\": 0,\n \"frequency_penalty\": 0,\n \"top_k\": 40,\n \"image_config\": {},\n \"modalities\": [],\n \"prompt_cache_key\": \"<string>\",\n \"previous_response_id\": \"<string>\",\n \"conversation\": {},\n \"context_management\": \"<array>\",\n \"moderation\": {},\n \"stream\": false,\n \"stream_options\": {\n \"include_obfuscation\": false,\n \"hide_intermediate_text\": false\n },\n \"provider\": {\n \"require_parameters\": true,\n \"allow_fallbacks\": true,\n \"order\": [\n \"OpenAI\",\n \"Anthropic\"\n ],\n \"only\": [\n \"OpenAI\",\n \"Google\"\n ],\n \"ignore\": [\n \"DeepInfra\"\n ],\n \"sort\": \"price\",\n \"data_residency\": \"ru\",\n \"max_price\": {\n \"prompt\": 10,\n \"completion\": 20,\n \"image\": 5,\n \"audio\": 15,\n \"request\": 1,\n \"video_per_second\": 50,\n \"stt_per_minute\": 5,\n \"tts_per_million_characters\": 1500\n }\n },\n \"user\": \"user-123\",\n \"safety_identifier\": \"sha256-user-id\",\n \"store\": true,\n \"session_id\": \"<string>\",\n \"plugins\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://polza.ai/api/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 \"input\": \"Hello, how are you?\",\n \"model\": \"openai/gpt-4o@provider=google&reasoning_effort=high&allow_fallbacks=false\",\n \"instructions\": \"You are a helpful assistant\",\n \"metadata\": {},\n \"tools\": [\n \"<unknown>\"\n ],\n \"tool_choice\": \"auto\",\n \"parallel_tool_calls\": false,\n \"background\": true,\n \"include\": [\n \"reasoning.encrypted_content\"\n ],\n \"models\": [\n \"<string>\"\n ],\n \"text\": {\n \"format\": \"text\",\n \"verbosity\": \"medium\"\n },\n \"reasoning\": {\n \"type\": \"adaptive\",\n \"effort\": \"medium\",\n \"effort_level\": \"max\",\n \"summary\": \"auto\",\n \"max_tokens\": 5000,\n \"enabled\": true\n },\n \"max_output_tokens\": 1000,\n \"temperature\": 0.7,\n \"top_p\": 1,\n \"top_logprobs\": 5,\n \"max_tool_calls\": 5,\n \"stop_server_tools_when\": [\n {\n \"type\": \"step_count\",\n \"value\": 5,\n \"value_rub\": 20\n }\n ],\n \"prompt\": {},\n \"presence_penalty\": 0,\n \"frequency_penalty\": 0,\n \"top_k\": 40,\n \"image_config\": {},\n \"modalities\": [],\n \"prompt_cache_key\": \"<string>\",\n \"previous_response_id\": \"<string>\",\n \"conversation\": {},\n \"context_management\": \"<array>\",\n \"moderation\": {},\n \"stream\": false,\n \"stream_options\": {\n \"include_obfuscation\": false,\n \"hide_intermediate_text\": false\n },\n \"provider\": {\n \"require_parameters\": true,\n \"allow_fallbacks\": true,\n \"order\": [\n \"OpenAI\",\n \"Anthropic\"\n ],\n \"only\": [\n \"OpenAI\",\n \"Google\"\n ],\n \"ignore\": [\n \"DeepInfra\"\n ],\n \"sort\": \"price\",\n \"data_residency\": \"ru\",\n \"max_price\": {\n \"prompt\": 10,\n \"completion\": 20,\n \"image\": 5,\n \"audio\": 15,\n \"request\": 1,\n \"video_per_second\": 50,\n \"stt_per_minute\": 5,\n \"tts_per_million_characters\": 1500\n }\n },\n \"user\": \"user-123\",\n \"safety_identifier\": \"sha256-user-id\",\n \"store\": true,\n \"session_id\": \"<string>\",\n \"plugins\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "gen_581761234567890123",
"object": "response",
"created_at": 1234567890,
"model": "openai/gpt-4",
"status": "completed",
"output_text": "Hello! How can I help you today?",
"output": "<array>",
"completed_at": {},
"error": {
"code": "invalid_request",
"message": "Invalid input format",
"metadata": {}
},
"incomplete_details": {},
"usage": {
"input_tokens": 10,
"output_tokens": 20,
"total_tokens": 30,
"prompt_tokens": 10,
"completion_tokens": 20,
"input_tokens_details": {
"cached_tokens": 0,
"cache_write_tokens": 0,
"audio_tokens": 0,
"video_tokens": 0
},
"output_tokens_details": {
"reasoning_tokens": 100,
"audio_tokens": 0,
"image_tokens": 0,
"accepted_prediction_tokens": 0,
"rejected_prediction_tokens": 0
},
"prompt_tokens_details": {
"cached_tokens": 0,
"cache_write_tokens": 0,
"audio_tokens": 0,
"video_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 100,
"audio_tokens": 0,
"image_tokens": 0,
"accepted_prediction_tokens": 0,
"rejected_prediction_tokens": 0
},
"server_tool_use": {
"web_search_requests": 1
},
"cost_rub": 0.04131306,
"cost": 0.04131306,
"cost_details": {
"inference_cost_rub": 1.2,
"server_tools_cost_rub": 0.4
},
"server_tool_use_details": {
"web_search_requests": 1,
"tool_calls_requested": 2,
"tool_calls_executed": 2,
"steps": 2
},
"plugins": {
"masker": {
"operations": [
{
"operation": "mask",
"latency_ms": 15,
"cost_rub": 0.001
},
{
"operation": "unmask",
"latency_ms": 8,
"cost_rub": 0
}
],
"total_cost_rub": 0.001
}
},
"plugin_post_process_error": true
},
"metadata": {},
"polza": {}
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Недопустимое значение параметра",
"trace_id": "550e8400-e29b-41d4-a716-446655440000",
"details": {},
"metadata": {
"reason": "noProvidersForModel",
"raw": "The parameter `duration` specified in the request is not valid",
"provider_name": "alibaba"
}
},
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}О Responses API
client.responses.create(...)), Codex CLI и другими каноничными клиентами. Внутри запрос
трансформируется в Chat Completions и уходит выбранному провайдеру.
Эндпоинты:
| Метод | Путь | Назначение |
|---|---|---|
POST | /v1/responses | Создание ответа (обычный и streaming) |
POST | /v1/responses/compact | Компактизация истории диалога |
/v2/responses и /v2/responses/compact — алиасы, поведение идентично.
previous_response_id, conversation и store
не поддерживаются. Всю историю диалога — включая вызовы инструментов — передавайте в input
каждым запросом. Методов GET /v1/responses/{id}, DELETE и /cancel нет.Основные параметры
| Параметр | Тип | Описание |
|---|---|---|
model | string | ID модели. Поддерживает alias-формат <model>@<key>=<value> (см. ниже) |
input | string / array | Текст или массив input items |
instructions | string | Системные инструкции (эквивалент system-сообщения) |
stream | boolean | Потоковая передача через SSE |
Alias-формат модели
К имени модели можно дописать параметры маршрутизации через@:
openai/gpt-4o@provider=azure&reasoning_effort=high&allow_fallbacks=false
provider, reasoning_effort, allow_fallbacks. При конфликте alias
и одноимённого поля в теле запроса API вернёт 400.
Дополнительные параметры
| Параметр | Тип | Описание |
|---|---|---|
tools | array | Определения инструментов (см. раздел Tool calling) |
tool_choice | string / object | none, auto, required или {"type":"function","name":"..."} |
parallel_tool_calls | boolean | Разрешить параллельные вызовы инструментов |
max_tool_calls | integer | Ограничение на количество вызовов |
reasoning | object | Настройки reasoning: effort (max/xhigh/high/medium/low/minimal/none), summary, max_tokens, type: adaptive для Claude 4.6+ |
text | object | Формат вывода: {"format": {"type": "text" | "json_object" | "json_schema", ...}} |
max_output_tokens | integer | Максимум выходных токенов |
temperature | float (0–2) | Температура генерации |
top_p | float (0–1) | Nucleus sampling |
top_k | integer | Top-K sampling |
top_logprobs | integer (0–20) | Количество log probabilities |
frequency_penalty / presence_penalty | float (−2…2) | Штрафы за повторы |
include | array | Дополнительные поля вывода, например ["reasoning.encrypted_content"] |
prompt_cache_key | string | Ключ кеширования промпта |
prompt_cache_retention | string | in_memory или 24h |
modalities | array | ["text"], ["text","image"] — для моделей с генерацией изображений |
image_config | object | Параметры генерации изображений |
provider | object | Предпочтения по провайдерам (см. Выбор провайдера) |
plugins | array | Серверные плагины: web, file-parser, moderation, masker, response-healing |
metadata | object | Произвольные key-value данные |
user / safety_identifier | string | Идентификатор конечного пользователя |
Не поддерживаются
Эти поля принимаются ради совместимости с OpenAI SDK, но не влияют на результат:| Параметр | Что использовать вместо |
|---|---|
previous_response_id | Передавайте всю историю в input |
conversation | То же |
store | Ответы не сохраняются, истории через API нет |
background | Асинхронного режима у Responses API нет |
prompt (reusable prompt templates) | Передавайте текст инструкций в instructions |
models (массив fallback) | Alias model@allow_fallbacks=true |
session_id | metadata или user |
Примеры
curl -X POST "https://polza.ai/api/v1/responses" \
-H "Authorization: Bearer <POLZA_AI_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o",
"input": "Расскажи о квантовых компьютерах"
}'
from openai import OpenAI
client = OpenAI(
base_url="https://polza.ai/api/v1",
api_key="<POLZA_AI_API_KEY>",
)
response = client.responses.create(
model="openai/gpt-4o",
input=[{"role": "user", "content": "Привет!"}],
instructions="Отвечай кратко и по делу",
)
print(response.output_text)
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://polza.ai/api/v1',
apiKey: '<POLZA_AI_API_KEY>',
});
const response = await client.responses.create({
model: 'openai/gpt-4o',
input: [{ role: 'user', content: 'Привет!' }],
instructions: 'Отвечай кратко и по делу',
});
console.log(response.output_text);
Структура ответа
{
"id": "gen_581761234567890123",
"object": "response",
"created_at": 1785312000,
"completed_at": 1785312003,
"model": "openai/gpt-4o",
"status": "completed",
"error": null,
"output_text": "Квантовые компьютеры — это...",
"output": [
{
"type": "message",
"id": "msg_1785312000_0",
"status": "completed",
"role": "assistant",
"content": [{ "type": "output_text", "text": "Квантовые компьютеры — это...", "annotations": [] }]
}
],
"incomplete_details": null,
"usage": {
"input_tokens": 12,
"output_tokens": 148,
"total_tokens": 160,
"cost_rub": 0.0413
}
}
status — completed, incomplete или failed. При incomplete заполняется
incomplete_details.reason (max_output_tokens или content_filter).
В usage поля продублированы в двух неймингах: input_tokens/output_tokens (Responses API)
и prompt_tokens/completion_tokens (Chat Completions) — используйте любой. cost_rub —
фактическая стоимость запроса, списанная с баланса.
Tool calling
Поддерживается полный цикл: передачаtools → получение function_call → отправка результата
через function_call_output → финальный ответ модели.
Типы инструментов
type | Поддержка |
|---|---|
function | Оба формата: плоский Responses ({"type":"function","name":...}) и вложенный ({"type":"function","function":{...}}) |
custom | Free-form инструмент. Внутри приводится к функции с единственным строковым полем input, в ответе приходит как function_call с arguments = {"input": "..."} |
web_search, web_search_preview | Включает серверный веб-поиск (эквивалент plugins: [{"id": "web"}]) |
Прочие (code_interpreter, file_search, local_shell) | Не поддерживаются — модель их не увидит |
1. Запрос с инструментами
{
"model": "openai/gpt-4o",
"input": [{ "role": "user", "content": "Какая погода в Москве?" }],
"tools": [
{
"type": "function",
"name": "get_weather",
"description": "Получить текущую погоду в городе",
"parameters": {
"type": "object",
"properties": { "location": { "type": "string", "description": "Название города" } },
"required": ["location"]
}
}
],
"tool_choice": "auto"
}
2. Ответ с вызовом инструмента
{
"id": "gen_581761234567890123",
"object": "response",
"status": "completed",
"output_text": "",
"output": [
{
"type": "function_call",
"id": "fc_call_abc123",
"call_id": "call_abc123",
"name": "get_weather",
"arguments": "{\"location\":\"Москва\"}",
"status": "completed"
}
]
}
3. Возврат результата инструмента
Выполните функцию на своей стороне и отправьте новый запрос со всей историей: исходное сообщение пользователя, itemfunction_call и item function_call_output с тем же call_id.
{
"model": "openai/gpt-4o",
"input": [
{ "role": "user", "content": "Какая погода в Москве?" },
{
"type": "function_call",
"call_id": "call_abc123",
"name": "get_weather",
"arguments": "{\"location\":\"Москва\"}"
},
{
"type": "function_call_output",
"call_id": "call_abc123",
"output": "{\"temp_c\": -3, \"condition\": \"снег\"}"
}
],
"tools": []
}
tools второго запроса передайте те же определения инструментов, что и в первом.
function_call обязателен. Если прислать только function_call_output — например,
рассчитывая, что историю подтянет previous_response_id, — модель получит результат инструмента
без самого вызова и вернёт ошибку вида
messages with role 'tool' must be a response to a preceding message with 'tool_calls'.
API stateless, историю нужно передавать полностью.Типы input items
type | Описание |
|---|---|
message (или объект с role) | Сообщение с ролью user, assistant, system или developer |
function_call | Эхо ранее полученного вызова: call_id, name, arguments (JSON-строка) |
function_call_output | Результат вызова: call_id и output (строка или произвольный JSON) |
reasoning | Reasoning-блок предыдущего хода: content, summary, encrypted_content |
Мультимодальный input
Вcontent сообщения можно передать массив частей:
type | Поле с данными |
|---|---|
input_text | text |
input_image | image_url (URL или data-URI), опционально detail |
input_audio | input_audio: { data, format } либо плоские audio и format |
input_file | file_url, file_data (base64) или file_id, плюс filename |
input_video | video_url |
{
"role": "user",
"content": [
{ "type": "input_text", "text": "Что изображено на картинке?" },
{ "type": "input_image", "image_url": "https://example.com/photo.jpg", "detail": "auto" }
]
}
Streaming
Приstream: true ответ приходит в формате SSE. Имена и порядок событий соответствуют
спецификации OpenAI Responses API, поэтому работают официальный OpenAI SDK и Codex CLI.
События
| Событие | Когда приходит |
|---|---|
response.created | Ответ создан (первое событие) |
response.output_item.added | Начался новый output item (message, reasoning или function_call) |
response.content_part.added | Начата текстовая часть сообщения |
response.output_text.delta | Инкремент текста |
response.output_text.done | Полный текст части |
response.content_part.done | Часть завершена, здесь же annotations |
response.output_item.done | Output item завершён |
response.function_call_arguments.delta | Инкремент JSON-аргументов вызова инструмента |
response.function_call_arguments.done | Полные аргументы вызова |
response.reasoning_text.delta / .done | Reasoning-текст модели |
response.reasoning_summary_part.added | Начало summary reasoning |
response.reasoning_summary_text.delta / .done | Summary reasoning |
response.completed | Ответ завершён, содержит полный output и usage |
response.incomplete | Ответ оборван по лимиту токенов или фильтру контента |
response.failed | Ошибка в процессе генерации |
response.created
response.output_item.added (item.type = "message")
response.content_part.added
response.output_text.delta × N
response.output_text.done
response.content_part.done
response.output_item.done
response.completed
data: [DONE]
response.created
response.output_item.added (item.type = "function_call")
response.function_call_arguments.delta × N
response.function_call_arguments.done
response.output_item.done (item.type = "function_call")
response.completed
data: [DONE]
response.output_item.done с
item.type = "function_call": в нём полные name, arguments и call_id.
Особенности
- Каждое событие несёт монотонный
sequence_number— используйте его для упорядочивания. - Стрим завершается строкой
data: [DONE]. Она нужна ChatCompletion-подобным клиентам, каноничные клиенты Responses API её игнорируют. - При долгом ожидании ответа провайдера сервер шлёт SSE-комментарии
: processing— игнорируйте строки, начинающиеся с:. - Если модель вызывает несколько инструментов параллельно, у каждого свой
output_index. - При ошибке посреди стрима приходит терминальное
response.failed, стрим не обрывается молча.
curl -N -X POST "https://polza.ai/api/v1/responses" \
-H "Authorization: Bearer <POLZA_AI_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o",
"input": "Расскажи о квантовых компьютерах",
"stream": true
}'
Компактизация истории
POST /v1/responses/compact укорачивает историю диалога, когда она перестаёт помещаться в
контекст. Полезно агентским клиентам с длинными сессиями.
Сервер сохраняет все инструкции (system и developer), последние keep_last сообщений и все
структурные items (function_call, function_call_output, reasoning), а вытесненные текстовые
сообщения сворачивает в один summary-плейсхолдер. Обращения к модели не происходит — метод
бесплатный и синхронный.
{
"model": "openai/gpt-4o",
"input": [],
"keep_last": 6
}
input передайте полную историю input items. Ответ содержит укороченную историю, которую нужно
передать в следующий POST /v1/responses:
{
"object": "response.compact",
"model": "openai/gpt-4o",
"input": []
}
keep_last по умолчанию — 6.
Следующие шаги
Вызов функций
Codex CLI
Структурный вывод
Выбор провайдера
Авторизации
API ключ передаётся в заголовке: Authorization: Bearer <POLZA_AI_API_KEY>
Тело
Input for response - can be string or array of input items
"Hello, how are you?"
Идентификатор модели. Для Responses API поддерживается alias-формат @=&=. Поддерживаемые ключи: provider, reasoning_effort, allow_fallbacks, data_residency. При конфликте alias и обычных полей body API возвращает 400. Для некоторых провайдеров и моделей допустимые значения reasoning_effort отличаются; например, Yandex AI Studio поддерживает только low, medium и high.
"openai/gpt-4o@provider=google&reasoning_effort=high&allow_fallbacks=false"
System instructions
"You are a helpful assistant"
Metadata key-value pairs
Tools available for the model
Tool choice strategy
none, auto, required "auto"
Enable parallel tool calls
Запуск response в background-режиме OpenAI. В Polza provider path не запускает отдельную async job и игнорируется.
Дополнительные поля output, которые OpenAI может включить в ответ. Поддерживается как входной параметр совместимости; конкретные include зависят от провайдера.
["reasoning.encrypted_content"]
НЕ РЕАЛИЗОВАНО. Массив fallback-моделей пока не поддерживается Responses API и игнорируется. Для fallback используйте alias-формат в model: @allow_fallbacks=true.
Text output configuration
Show child attributes
Show child attributes
Reasoning configuration
Show child attributes
Show child attributes
Maximum output tokens
1000
Temperature (0-2)
0 <= x <= 20.7
Top P (nucleus sampling)
0 <= x <= 11
Top logprobs
0 <= x <= 205
Максимум вызовов серверных инструментов за запрос (по умолчанию 10, потолок 30; без polza:* — лимит вызовов провайдера)
5
Условия остановки цикла серверных инструментов: step_count заменяет max_tool_calls (потолок 30), spend_cap добавляет мягкий потолок расходов на запрос: он проверяется перед каждым шагом модели, поэтому итог может превысить spend_cap на шаг, на котором потолок пройден, его инструменты и финальный ответ
Show child attributes
Show child attributes
Конфигурация reusable prompt OpenAI. В текущем provider path Polza не загружает prompt templates и игнорирует поле.
Presence penalty (-2 to 2)
-2 <= x <= 2Frequency penalty (-2 to 2)
-2 <= x <= 2Top K sampling
40
Image configuration options
Output modalities
text, image Prompt cache key
Prompt cache retention policy
in_memory, 24h НЕ РЕАЛИЗОВАНО. Продолжение по previous_response_id пока не поддерживается и игнорируется. Для мультитёрн-сессий передавайте историю целиком в input.
Conversation ID/object OpenAI Responses API. В Polza stateless path не подтягивает историю по conversation; передавайте историю целиком в input.
Context management OpenAI Responses API. Локальная компактизация доступна через /v1/responses/compact; поле принимается для совместимости.
Input/output moderation configuration
Enable streaming
Опции стриминга
Show child attributes
Show child attributes
Provider preferences
Show child attributes
Show child attributes
Уникальный идентификатор конечного пользователя для отслеживания и предотвращения злоупотреблений
"user-123"
Stable hashed end-user identifier from OpenAI Responses API. Если user не указан, используется как user для downstream provider.
"sha256-user-id"
OpenAI service tier
auto, default, flex, scale, priority Whether to store generated response for later retrieval
Truncation strategy
auto, disabled НЕ РЕАЛИЗОВАНО. session_id не пробрасывается провайдеру (OpenRouter Chat Completions API не поддерживает это поле) и игнорируется. Для отслеживания сессий используйте metadata или user.
Плагины для расширения функциональности (web search, file parser и др.)
Ответ
Response ID
"gen_581761234567890123"
response "response"
Created timestamp
1234567890
Model used
"openai/gpt-4"
completed, incomplete, in_progress, failed, cancelled, queued "completed"
Full output text (convenience field)
"Hello! How can I help you today?"
Output items array
Completed timestamp
Error information
Show child attributes
Show child attributes
Details about incomplete response
Usage information
Show child attributes
Show child attributes
Metadata key-value pairs
Есть, если модель вызывала серверные инструменты: parent_generation_id — id запроса в истории (GET /v1/history/generations/{id}), шаги — /children
Была ли эта страница полезной?