Files, URLs & retention
File IDs vs URL expiry vs retention, refreshing delivery URLs, deletion semantics and exporting data.
Three different clocks
| Field | Meaning |
|---|---|
id | Durable file ID. Store it with your record. Valid until the file is deleted. |
urlExpiresAt | When the temporary url stops working (minutes). Request a new one whenever you need it. |
expiresAt | Retention deadline. After this the file is deleted automatically. |
Getting a fresh URL
curl -X POST https://app.crossupload.com/v1/files/file_123/url -H "Authorization: Bearer $CROSSUPLOAD_SECRET_KEY"
Never persist signed URLs; persist IDs. Each issued URL counts toward your delivery estimate.
Retention by plan
- Free: 7 days
- Starter: 30 days
- Pro: 90 days
- Business: 180 days
Projects can set a shorter retention. To keep a file longer, download it with a fresh URL and store it in your own storage before expiresAt. You can export metadata from Dashboard → Files or iterate with GET /v1/files?sessionId=. CrossUpload is not permanent hosting.
Removing vs deleting
- Removing a file in the widget only removes it from that form’s selection.
- Deleting (
DELETE /v1/files/{id}or the dashboard) is permanent: new URLs stop immediately, the stored object and every version are removed, then live storage is released. The accepted monthly upload is not refunded. - Already-issued signed URLs remain valid until they expire and may be cached by the CDN. Pass
?invalidateCdn=trueto queue a CloudFront invalidation when immediate removal matters.
Supported formats (V1)
PDF, JPEG, PNG, HEIC, HEIF, WebP, GIF, DOCX, XLSX, TXT and CSV. HTML, SVG and executables are always rejected. Files are never converted. Formats without previews still show name, type and size.
Something unclear or wrong? Email [email protected].