Uploads and Artifacts
Uploads happen directly to presigned storage URLs. Completed outputs become retained artifacts with refreshable download links.
https://api.filemorf.com/api/public
Bearer API key created from the workspace.
Signed uploads, queued jobs, retained artifacts, refreshable URLs.
Lifecycle
Uploads happen directly to signed storage URLs
FileMorf returns presigned upload URLs instead of accepting large binary uploads through the job endpoint itself. That keeps the public API stable while allowing larger server-side processing.
- POST /jobs returns one uploadUrl for single-input jobs.
- POST /merge returns one uploadUrl per input file and a single merge jobId.
- Upload with HTTP PUT and the content type used during job creation.
- Only call POST /jobs/:id/start after every required upload succeeds.
Retention
Outputs become retained artifacts
Completed results remain in retained storage for the configured retention window. Signed download URLs are time-limited and refreshable.
| Behavior | What to expect |
|---|---|
| Result URLs | Signed download links expire and can be refreshed with POST /jobs/:id/refresh-url once the job is completed. |
| Artifact retention | Completed server outputs are retained and can be reused as inputs for recipe runs during the retention window. |
| Multi-output jobs | Jobs like pdf-split return result.files[] and also create retained output artifacts per file. |
Local testing
Keep upload handling explicit in your client
Your client should store the returned jobId and uploadUrl immediately, then promote the job to 'ready to start' only after the binary PUT succeeds.
curl -X PUT "$UPLOAD_URL" \
-H "Content-Type: application/pdf" \
--upload-file ./contract.pdf