Skip to main content

Files API

Generic file storage for everything that needs an attachment — MMS images, WhatsApp media, agent-side documents, message templates, campaign assets. Files live in Cloud Storage; URLs are signed and time-limited. Base path: /api/v1/files Authentication: API key (X-API-Key) or session JWT. Upload limits: 25 MB per file (multipart form data).

Example — upload an image for an MMS

The response includes the file ID and a signed URL; pass the file ID to POST /api/v1/messages/sms (with media_url set to the signed URL) to send an MMS.

Presigned download URLs

The signed URL returned on upload (and from GET /api/v1/files/{id}) is short-lived. When you need a fresh download link — or one with a different lifetime — call GET /api/v1/files/{id}/presign to mint a new S3-style presigned read URL for an existing object. Use the optional ttl_ms query parameter to control how long the URL stays valid:
The response returns the presigned url along with expires_at (ISO 8601 UTC) and the effective ttl_ms after clamping. A request for a file ID that does not exist in your tenant namespace responds 404.

See also