Browse documentationRequest Status

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

Plain text
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

ParameterLocationTypeDescription
request_idPathstringRequired. Preserve the ID returned by submission so you can resume checking the same request.
logsQuerybooleanOptional, default true. Request available log entries; entries may still be absent. Use false for a smaller response.
detailsQuerybooleanOptional, 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:

JSON
{
  "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.

FieldTypeDescription
request_idstringThe submitted request's identifier.
statusstringqueued, processing, completed or failed for a known request.
queue_positionintegerQueue indicator; 0 means no waiting position is reported, including terminal states.
progressnumberOptional progress indicator, when available. It can also appear in terminal responses.
logsarrayOptional entries with message and timestamp; do not require them to be present.
errorstringOptional error explanation. For terminal failure, check status == "failed".
result_urlstringOptional completed-result preview URL. Use Get Generation Result for the media result.
messagestringOptional status explanation.
detailsobjectOptional additional information when requested and available.

Status updating (202 Accepted)

JSON
{
  "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

StatusAction
queuedKeep the request ID; the request is waiting.
processingKeep the request ID; completion has not been confirmed.
completedFetch /api/v1/inference/result/{request_id}.
failedRead the available error; stop waiting for this request. A new generation is a separate submission.
not_foundMay 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
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.

Python
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.

JavaScript
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 responseMeaning and action
401Authentication is required or invalid. Check the API key.
403Access is forbidden. Use the account that owns this request.
404The request cannot be found. Check the ID and account; it may no longer be available.
502Status lookup failed. This does not establish that generation failed. Retry the lookup later using the same ID.
Network timeoutThe 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.