GET /api/v1/inference/status/{request_id}
API version: v1.2.4
Check a MiniMax H3 Standard or Turbo generation request using the request_id returned by Submit Request. Text-to-video, image-to-video and reference-to-video use the same status endpoint. Other Model API generation requests also use this endpoint.
For model selection, see MiniMax H3, Standard text-to-video and Turbo text-to-video.
Endpoint
GET /api/v1/inference/status/{request_id}Include X-API-Key in the header and use the account that owns the request. Keep API keys on your application backend; do not put them in browser code or URL parameters.
Parameters
| Parameter | Location | Type | Description |
|---|---|---|---|
request_id | Path | string | Required. Preserve the ID returned by submission so you can resume checking the same request. |
logs | Query | boolean | Optional, default true. Request available log entries; entries may still be absent. Use false for a smaller response. |
details | Query | boolean | Optional, default false. Request additional task information when available. The basic workflow below does not require it. |
The ID belongs in the path: /api/v1/inference/status/{request_id}. A query parameter does not replace it.
Response
Status available (200 OK)
An illustrative processing response:
{
"status": "processing",
"queue_position": 0,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"progress": 50,
"logs": [
{
"message": "Task submitted successfully",
"timestamp": "2026-10-21T10:30:00Z"
}
]
}Progress and logs are optional. A progress value is not a completion-time estimate.
| Field | Type | Description |
|---|---|---|
request_id | string | The submitted request's identifier. |
status | string | queued, processing, completed or failed for a known request. |
queue_position | integer | Queue indicator; 0 means no waiting position is reported, including terminal states. |
progress | number | Optional progress indicator, when available. It can also appear in terminal responses. |
logs | array | Optional entries with message and timestamp; do not require them to be present. |
error | string | Optional error explanation. For terminal failure, check status == "failed". |
result_url | string | Optional completed-result preview URL. Use Get Generation Result for the media result. |
message | string | Optional status explanation. |
details | object | Optional additional information when requested and available. |
Status updating (202 Accepted)
{
"status": "processing",
"queue_position": 0,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"message": "Task is being processed, status information is being updated"
}No terminal outcome is available in this response. Preserve the same request_id and check again later.
What to do next
| Status | Action |
|---|---|
queued | Keep the request ID; the request is waiting. |
processing | Keep the request ID; completion has not been confirmed. |
completed | Fetch /api/v1/inference/result/{request_id}. |
failed | Read the available error; stop waiting for this request. A new generation is a separate submission. |
not_found | May accompany HTTP404. Check the ID and account; do not assume every404 body contains this field. |
Examples
cURL
Set PHOSOR_API_KEY to your API key and REQUEST_ID to an existing request ID.
curl --fail-with-body --connect-timeout 10 --max-time 40 \
"https://phosor.ai/api/v1/inference/status/${REQUEST_ID}?logs=false" \
-H "X-API-Key: ${PHOSOR_API_KEY}"Python: one status check
This function checks an existing request once. The timeout bounds each connection/read wait; it is not a generation deadline. Call it from your backend when you need an update.
import requests
def check_status(api_key, request_id):
response = requests.get(
f"https://phosor.ai/api/v1/inference/status/{request_id}",
headers={"X-API-Key": api_key},
params={"logs": False},
timeout=(10, 40),
)
response.raise_for_status()
return response.json() # Both 200 and transitional 202 are handled.JavaScript: one status check
Use this on your backend. HTTP failures throw; they are not converted into a generation failure.
async function checkStatus(apiKey, requestId) {
const response = await fetch(
`https://phosor.ai/api/v1/inference/status/${encodeURIComponent(requestId)}?logs=false`,
{
headers: { 'X-API-Key': apiKey },
signal: AbortSignal.timeout(40000),
},
);
if (!response.ok) throw new Error(`Status lookup HTTP ${response.status}`);
return response.json();
}HTTP errors and recovery
| HTTP response | Meaning and action |
|---|---|
401 | Authentication is required or invalid. Check the API key. |
403 | Access is forbidden. Use the account that owns this request. |
404 | The request cannot be found. Check the ID and account; it may no longer be available. |
502 | Status lookup failed. This does not establish that generation failed. Retry the lookup later using the same ID. |
| Network timeout | The lookup outcome is unknown. Retain the ID and resume checking it; do not automatically submit another generation. |
Error bodies may differ; inspect the HTTP code before reading status fields. For example, an ownership check can return {"error":"Not found"} without status or request_id. This reference does not promise a fixed task-retention period.
Related resources
- Quick Start — select H3 Standard or Turbo and submit a request.
- Submit Request — model-specific generation parameters.
- Get Generation Result — retrieve and download completed media.
- Video Limits — current input and output requirements.