Files, URLs & retention

File IDs vs URL expiry vs retention, refreshing delivery URLs, deletion semantics and exporting data.

Three different clocks

FieldMeaning
idDurable file ID. Store it with your record. Valid until the file is deleted.
urlExpiresAtWhen the temporary url stops working (minutes). Request a new one whenever you need it.
expiresAtRetention 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=true to 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 master@crossupload.com.