Both use minimal/low/medium/high/xhigh/max; thinking remains enabled when omitted. none returns 400
max_completion_tokens
Thinking and visible answers share the budget; the old max_tokens alias is accepted, not Responses max_output_tokens
temperature/top_p
Ranges: 0~2 and (0,1]; both default to 1. Usually keep defaults or adjust just one; top_p: 0 returns 400
n
Only 1 is supported; above 1 returns 400
Incompatible settings
stop, verbosity, logit_bias, prediction, modalities, audio and web_search_options are unsupported; do not reuse these from general examples
Penalties and Logprobs
frequency_penalty/presence_penalty is unsupported and may return an error; logprobs: true returns 400
tool_choice
Only auto is supported; none, required and named functions return 400. Function names may contain at most one period
reasoning_content
The vendor's external API does not return readable original thinking; this field cannot preserve it across turns. Use Responses or Messages for continuity
strict
Function tools and structured output both default to false. When enabled, every object needs additionalProperties: false and all properties listed in required; the root must be a plain object, without oneOf/allOf
Uses Chat's six levels; none is unsupported. reasoning.summary requests a summary, which cannot replace encrypted history
max_output_tokens
Minimum: 16; includes thinking and visible answers. Input plus requested output budget must fit the model's context window
include
Request encrypted thinking with reasoning.encrypted_content; omitted by default. With store: false, manually replay complete output items without modifying encrypted content
previous_response_id
Continues saved history and thinking server-side; choose this or manual replay, not final-text-only history as a substitute for thinking replay
truncation
Only default disabled is supported; auto returns 400. Manage long histories yourself
background/stream
A create request cannot set both to true, or it returns 400. After creation, background jobs can be polled or streamed
tool_choice
Also only auto; web_search and tool_search provide server-side search and tool discovery, unavailable in Chat
text.format/strict
Use Responses' own structured-output settings; top-level response_format, even if accepted for compatibility, does not configure the output format. Strict-mode defaults and constraints are as above
Logprobs and streaming usage
Requesting message.output_text.logprobs returns 400. Final streamed responses include usage; Chat's stream_options.include_usage has no effect here
Required; minimum: 1. Budget for thinking and answers; do not reuse Responses' field name or minimum
thinking/output_config.effort
Prefer thinking.type: adaptive with low/medium/high/xhigh/max; neither minimal nor disabled can disable thinking
thinking.budget_tokens
Old enabled is accepted but does not map to effort levels. Budget must be at least 1024 and less than max_tokens; adjust depth through output_config.effort
thinking.display
summarized returns a summary; omitted retains only encrypted thinking. Replay returned thinking blocks unchanged, especially redacted_thinking
temperature
Range: 0~1, unlike Chat / Responses; usually omit sampling settings
Incompatible fields
top_k, stop_sequences and inference_geo are explicitly unsupported and rejected
tool_choice
Accepts auto/any/none, but not {type: "tool"} to select a named tool; disable_parallel_tool_use: true limits parallel calls
output_config.format
Use {type: "json_schema", schema: ...} for structured output; document-block citations.enabled: true is unsupported
Search and history
Search uses web_search; allowed_domains/blocked_domains/max_uses returns 400. Native Messages stores no conversation; replay full messages and tool results each turn. There is no equivalent to previous_response_id
No switch needed; put stable instructions, examples and reference material first, variable content last, and keep reusable prefixes identical
prompt_cache_key
Optional grouping identifier for Chat / Responses; set by shared prompt prefix rather than generating one per user or request, which would scatter identical-prefix routing
prompt_cache_retention
Responses uses in_memory/24h as a retention hint, managed by the server. Do not reuse newer OpenAI cache fields or assume this setting is deprecated
cache_control
Messages accepts cache markers at request level, on content blocks and on tools; ttl only supports 5m, not Claude's 1h
Cache usage
Chat: inspect usage.prompt_tokens_details.cached_tokens; Responses: usage.input_tokens_details.cached_tokens; Messages: usage.cache_read_input_tokens. Setting an identifier does not prove a hit
Chat uses image_url.url; Responses uses input_image with a string image_url. Public URLs and Base64 are supported; native file references require the corresponding Files service
Video
input_video
Responses uses video_url or file_id; uploaded videos can also use input_file. Chat uses its own video_url block; do not mix the structures
Audio
input_audio
Chat / Responses: pass raw Base64 in input_audio.data and fill in input_audio.format. Responses also accepts an audio_url Base64 Data URL or native file_id
PDF
file
Chat uses file.file_data/file_id, Responses input_file, and Messages document; do not reuse image fields
Media
image/video
Messages uses base64/url/file sources inside source; video is a Meta extension
Limit
Description
Image
Inline images: maximum 50 MB (50000000 bytes) each, at most 50 per request, also subject to body and context limits. Put images in user messages
Spark 1.3 audio
Audio understanding is not fully supported; audio input may reduce quality
Output
Both output text; accepting images, audio or video does not imply media generation support
Replace MODEL_ID with the full platform model ID. Group cache identifiers by shared application prompt prefix. All three examples use low effort and an explicit budget.
curl 'https://api.agtcloud.ai/v1/chat/completions' \ -H 'Authorization: Bearer your-api-key' \ -H 'Content-Type: application/json' \ --data '{ "model": "MODEL_ID", "messages": [{"role": "user", "content": "Explain how to troubleshoot an API timeout in three points"}], "reasoning_effort": "low", "max_completion_tokens": 4096, "prompt_cache_key": "YOUR_SHARED_PREFIX" }'