One workflow for intake, review, and delivery
Agencies repeatedly receive logos, screenshots, contracts, exports, and review files. FilePost gives the project a durable file boundary without making every client create an account or sending an API key by email.
Collect
Create a hosted intake link with allowed extensions, a size limit, a file count, and a short expiry.
Review
Store a public URL for a client preview and let the storage layer remove it after the review window.
Deliver
Keep approved assets at stable URLs and map them into a CMS, project record, email, or downstream automation.
Create a constrained client upload link
Make the authenticated request from your server. Return only the hosted upload URL to the client.
curl -X POST https://filepost.dev/v1/intake-links \
-H "X-API-Key: fh_your_server_side_key" \
-H "Content-Type: application/json" \
-d '{
"label": "Northwind homepage review",
"allowed_types": ["pdf", "png", "jpg", "zip"],
"max_file_size_mb": 50,
"max_files": 10,
"expires_in": "7d"
}'
The response includes upload_url. Open that hosted page for the client, or send files to the public intake endpoint from a permitted browser origin. Keep the API key on your server.
Use expiry where the job is temporary
For a design review or handoff, set expires_in to the shortest useful period. For approved campaign assets or a CMS record, omit expiry and retain the returned URL until the project no longer needs it.
FilePost URLs are public by link. Do not use them as identity-based access control, and do not upload confidential material unless the public-link boundary is appropriate for that project.
Connect it to the agency stack
Send intake events to your server with the optional webhook, then store the returned file URL in the project record. For ready-made automation paths, see the n8n workflow starters, Zapier app, or Pipedream guide.
Read the full secure browser upload guide and the intake-link API reference.