Zumik
v1 · OpenAI-compatible

Files

POST /v1/files (multipart upload) and GET /v1/files/{id}/content. The OpenAI-compatible file store that Batch jobs read from and write to.

The file store holds the input files Batch jobs read, and the output files the batch executor writes back. Uploads are multipart, matching OpenAI. Files are tenant-scoped and transient: they are batch I/O, not durable customer state, and old files expire automatically.

Upload a file

POST https://api.zumik.ai/v1/files

Send multipart/form-data with a file part and an optional purpose part.

filefilerequired

The file contents. For a batch input, this is JSONL with one chat-completion request per line. Required.

purposestringdefault: batch

The file's purpose. Defaults to batch.

Request

curl
curl https://api.zumik.ai/v1/files \
  -H "Authorization: Bearer zk_live_..." \
  -F purpose=batch \
  -F [email protected]

Response

{
  "id": "file-9f2a3c1e7b4d8a6f2c1e7b4d",
  "object": "file",
  "bytes": 412,
  "created_at": 1750000123,
  "filename": "requests.jsonl",
  "purpose": "batch"
}
idstring

The file id, file-.... Pass this as input_file_id when creating a batch.

objectstring

Always "file".

bytesinteger

Size of the stored content in bytes.

filenamestring

The uploaded filename.

purposestring

The purpose, for example batch or batch_output (for executor-written outputs).

Retrieve file metadata

GET https://api.zumik.ai/v1/files/{file_id}
file_idstringpathrequired

The file-... id.

Returns the file object (metadata, no content). 404 if it does not exist for this project.

Download file content

GET https://api.zumik.ai/v1/files/{file_id}/content

Returns the raw stored bytes (for a batch output, the JSONL results). 404 if it does not exist for this project.

curl
curl https://api.zumik.ai/v1/files/file-9f2a.../content \
  -H "Authorization: Bearer zk_live_..."

Limits

Per project: at most 200 files and 256 MiB total. An upload that would exceed either is rejected with 400. Individual request bodies are capped at 2 MiB. Output files expire after a day; uploaded files are reclaimed alongside their batch.

Errors

HTTPcodeWhen
400(none)The multipart upload is malformed, the file part is missing, or the project storage quota would be exceeded.
401invalid_api_keyMissing or invalid bearer key.
404(none)The file id does not exist for this project.

See the full error reference.

On this page