Skip to content

Perceptron Files API

Upload an image or video once and reference it by id across as many requests as you want

The default way to send an image or video to Perceptron Mk1 is to attach it to the request, either as a URL you host yourself or as a base64 blob pasted directly into the payload. That works for a one-off model call, but it's inefficient the moment you send the same media more than once:

  • Re-sending the bytes means every request that touches a file pays the full transfer cost again, even when you're only adjusting the prompt around an image or video.

  • Base64 inlining pushes large media straight into the request body, where big files bump into body-size limits long before the model’s context window is the bottleneck.

  • Self-hosting URLs means standing up a bucket, managing access, and keeping it alive for as long as the model might need to read from it.

Perceptron Files API removes all of that. You upload the bytes one time, get back a stable id, and point at the id from then on.

Upload a file as multipart/form-data with a purpose and you get back a file object with an id like file-abc123:

curl https://api.perceptron.inc/v1/files \
  -H "Authorization: Bearer $PERCEPTRON_API_KEY" \
  -F purpose=vision \
  -F 'file=@scene.mp4;type=video/mp4'

From there, reference it in any chat completion. You can pass it as a typed content part with an image_file_id / video_file_id, or hand its content URL to a standard image_file_id / video_file_id. All four forms are equivalent:

{ "type": "video_file_id", "video_file_id": { "file_id": "file-abc123" } }
{ "type": "video_url",
  "video_url": { "url": "https://api.perceptron.inc/v1/files/file-abc123/content" 
} }

That id now stands in for the media on any call to Mk1. Upload a clip once, then put the model's video reasoning to work against it. Here’s an example asking for temporal grounding:

curl https://api.perceptron.inc/v1/chat/completions \
  -H "Authorization: Bearer $PERCEPTRON_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "perceptron-mk1",
    "messages": [
      { "role": "user", "content": [
        { "type": "video_file_id", "video_file_id": { "file_id": "file-abc123" } },
        { "type": "text", "text": "Find every grasp attempt and return the start/end timecodes." }
      ] }
    ]
  }'

The Perceptron Files API is available today on the Perceptron Platform.

API Endpoint: api.perceptron.inc/v1/files

Need higher limits? Reach out at support@perceptron.inc.

The Road Ahead

The Files API is one step in a broader push to make the Perceptron Platform the easiest place to build agentic workflows and apps with image and video understanding. Perceptron Mk1 brings frontier video and embodied reasoning into a single API call. We're investing in the capabilities around the model: storage, agents, and the tooling that makes physical intelligence easy to use. More to come.

The Perceptron Files API is available today on the Perceptron Platform.

API Endpoint: api.perceptron.inc/v1/files

Need higher limits? Reach out at support@perceptron.inc.