material
field takes one of the following.
A public https URL (simplest)
Pass a publichttps:// URL as material and we fetch it server-side (with
SSRF guards). No upload step needed:
An upload ticket (for local files)
Uploading is two calls: mint a one-time ticket, then post the file to it. The file call needs no API key, because the ticket is its own single-use credential.material handle (mat_…) as the run’s material.
(The uploadUrl in the ticket response is a browser path for humans to drop
a file in; from a shell, ignore it and use the /file endpoint above.)
Poll a ticket any time with GET /v1/uploads/{ticket}; its status goes
pending → uploaded, and material is set once the file lands.