Use the returned task ID to query the task for the final result.
Documentation Index
Fetch the complete documentation index at: https://docs.foxapi.cc/llms.txt
Use this file to discover all available pages before exploring further.
All endpoints require Bearer Token authentication. Add to the request header:
Authorization: Bearer YOUR_API_KEY
YOUR_API_KEY is the API Token (sk-... format).
Request body in messages[] form (OpenAI Chat compatible). Apart from the fields listed below, other OpenAI-compatible parameters (temperature, top_p, stop, frequency_penalty, etc.) are used per the OpenAI Chat spec.
Model name. Strict whitelist; unlisted values return 422 model_not_supported.
Special behaviors:
| Model | Notes |
|---|---|
gpt-5.4 | When provided, max_tokens must be ≥ 16 |
gpt-5.5 | When provided, max_tokens must be ≥ 16 |
kimi-k2.6 | Thinking model: SSE correctly passes through delta.reasoning_content, but GET /v1/tasks/{task_id}'s results[0].message.content does not accumulate reasoning_content |
claude-opus-4-6 / claude-opus-4-7 / claude-sonnet-4-6 | max_tokens is required |
gemini-3-pro-preview / gemini-3.1-pro-preview | — |
gpt-5.4, gpt-5.5, kimi-k2.6, claude-opus-4-6, claude-opus-4-7, claude-sonnet-4-6, gemini-3-pro-preview, gemini-3.1-pro-preview "claude-opus-4-7"
Conversation messages array. messages[*].content may be a string (plain text) or array (multimodal blocks). Multimodal block type ∈ {text, image_url, video_url, audio_url, file_url}; not all models support all types — unsupported types return 422 unsupported_content_type.
Content type support:
| Model | text | image_url | video_url | audio_url | file_url |
|---|---|---|---|---|---|
gpt-5.4 / gpt-5.5 / kimi-k2.6 | ✓ | ✓ | ✗ | ✗ | ✗ |
claude-* | ✓ | ✓ | ✗ | ✗ | ✓ |
gemini-* | ✓ | ✓ | ✓ | ✓ | ✓ |
[
{ "role": "user", "content": "count 1 to 3" }
]Whether to stream.
Behavior differences:
| Value | Submit response stream field | SSE endpoint |
|---|---|---|
false | null | Not available |
true | {"url": "/v1/llm/generations/{task_id}/stream"} | Available; meanwhile task.data accumulates the full response |
false
Generation token limit. Model constraints:
gpt-5.4 / gpt-5.5, when provided, must be ≥ 16, otherwise 422claude-* requires it; otherwise 422kimi-k2.6 / gemini-*64
Sampling temperature.
Nucleus sampling.
Stop sequences.
Task created
Submit response, conforming to the unified task standard shape. results / error are fixed at null during submit; they are returned via GET /v1/tasks/{task_id} after the task completes or fails
Task ID, formatted as task-llm-{timestamp}-{8random}. Used for GET /v1/tasks/{task_id} queries or GET /v1/llm/generations/{task_id}/stream SSE subscriptions
"task-llm-1776874565-yq3szvcu"
Object type, fixed at llm.generation.task
llm.generation.task "llm.generation.task"
Media type, fixed at llm
llm "llm"
The model name submitted by the client (echoed verbatim)
"claude-opus-4-7"
Task status, fixed at pending during submit
pending "pending"
Progress 0-100, fixed at 0 during submit
0
Creation time (Unix seconds)
1776874565
Returns {url: ...} when stream=true; null when stream=false. The client uses this to decide whether to connect to SSE
Fixed at null during submit; returned via GET /v1/tasks/{task_id} after the task completes — results[0] is the full OpenAI ChatCompletion response.
Known limitation: for model=kimi-k2.6 (a thinking model), reasoning_content is not accumulated into the final message.content, so results[0].message.content may be an empty string
null
Fixed at null during submit; returned via GET /v1/tasks/{task_id} when the task fails
null