Skip to main content
POST
Checks what arrived for an upload ticket and reports its state. The call is idempotent: repeat it while status is pending, and stop once it is ready. rejected and expired are final, so create a new ticket instead of calling again. On the first successful check the file is verified by content (a PNG declared as JPEG is rejected), PDFs are sanitized, and the verified type and size are recorded. Only a ready ticket can be used as asset.upload_id on a question.
string
required
The ticket id from Create asset upload.

Response

string
pending while no file has been uploaded; ready once verified; rejected when the bytes failed verification (the file is deleted, create a new ticket); expired when completion is requested after the two-hour window; a file uploaded in time but completed late is not registered either, so create a new ticket.
string | null
image, video, or pdf once ready.
string | null
The asset’s stable identifier once ready, the same url List questions returns for existing assets.
string
A one-hour signed link to preview the verified file. Present only when ready. It grants access to the file on its own, so do not log or share it; use asset_url as the identifier.
string
When download_url stops working.
string | null
The verified media type once ready.
integer | null
The verified size once ready.
string | null
Why the upload was rejected or expired.
asset_url is the stable, unsigned identifier of the file; download_url is the only link that can fetch it. Only the caller that created the ticket can complete it: the same user for an MCP ticket, the same API key for an organization key’s ticket. Anyone else, another organization, or an unknown id gets 404.