Files over 100 MB: upload first, then send the file_id

Files larger than 100 MB do not fit in a JSON request. Upload them once with a presigned PUT, then send the returned file_id in your compression request.

A large file goes up first, and the job then uses the returned file_id

Files over 100 MB do not go in the JSON body. Create an upload with POST /v1/uploads, send the bytes to the presigned URL, then pass the returned file_id as the source of your job.

A base64 body adds a third to the file size, and the request grows past what a single JSON call should carry. The upload route moves the bytes out of the request. Your job then points at the stored file.

The three steps

  1. Create the upload. Call POST /v1/uploads with your API key. The response includes a presigned PUT URL and a file_id.
  2. Send the bytes. Send the file as the body of a PUT to the presigned URL. The URL is signed, so it does not need your API key.
  3. Start the job. Pass the file_id as the source of your compression request, in place of source.base64 or source.url.
{
  "source": { "file_id": "fil_…" },
  "options": { "output": "url" }
}

The fil_… value is a placeholder. Use the file_id from your own upload response.

Limits to check first

  • Size. Use the upload route for files over 100 MB. The plan table lists the maximum size for each plan, from 25 MB on the free plan to 2 GB on enterprise. Read the limits.
  • Source. A job takes one source: a file_id, a URL, or base64. Do not send two.

Test it with one large file

Upload a file of about 120 MB. Start the compression job with its file_id. Check that the job completes and the output is smaller than the input. Then confirm the job returns a result link with an expires_at value.

Next step

Copy the result into your own storage as soon as the job finishes. The retention guide explains why.