Turn ClickUp file outputs into direct URLs
The file is already inside ClickUp. The next system cannot fetch that private object. Add one upload step, map the returned URL, and keep the file ID for cleanup.
- Reviewed by
- GetFileURL technical team
- Updated
- Source
- ClickUp task attachment
- Output
- url, file_id, content_type, expires_at
- Next step
- client portal, OCR, AI, webhook, CRM
What this page answers
Upload the ClickUp file to GetFileURL, parse the JSON response, and pass the returned direct URL to the next step.
- Reviewed by
- GetFileURL technical team
- Last updated
ClickUp has the file. The next API needs a URL.
ClickUp task attachments are useful inside a workspace, but external APIs often need a direct public URL instead of an authenticated app attachment.
Upload the actual file
Send the file bytes or exported file to GetFileURL rather than passing a private platform object onward.
Map the URL field
Use the returned `url` as the value for the next API, webhook, OCR service, AI step, or publishing action.
Keep the cleanup handle
Store `file_id` when the workflow should delete public access after the downstream step finishes.
Add one relay step and leave the workflow shape alone.
Download the ClickUp attachment in a trusted automation step, upload the file to GetFileURL, then store the returned `url` and `file_id` on the task or next workflow step.
Multipart upload
Use multipart form data for files already present in the workflow runtime.
Retention window
Use returned expiry metadata that survives queue delays and retries without creating permanent public storage by default.
Structured response
Map `url`, `content_type`, `size`, and `expires_at` into logs or later workflow steps.
When the next step fails, inspect the URL it received.
If the destination cannot fetch the file, confirm it received the GetFileURL CDN URL rather than the original ClickUp attachment URL or a signed workspace link.
Exact field
Confirm the destination receives `response.url`, not the whole upload response or a source app attachment.
No preview pages
The URL should resolve to file bytes, not an HTML page, redirect chain, or permission screen.
Expiry timing
Keep the URL alive through delayed branches, retries, and async destination fetches.
Copy the same upload shape into code
curl -X POST https://api.getfileurl.com/v1/files \
-H 'Authorization: Bearer $GETFILEURL_KEY' \
-F 'file=@clickup-task-attachment.pdf' \
-F 'visibility=public'Common questions
How do I turn a ClickUp file into a URL?
Upload the ClickUp file to GetFileURL, parse the JSON response, and pass the returned direct URL to the next step.
Why not pass the original ClickUp file link?
Original platform links can be private, temporary, or redirecting. External APIs usually need a URL that returns the file bytes directly.
What should I store from the response?
Store `url` for the next API call, `file_id` or `delete_url` for cleanup, and `expires_at` so delayed workflow branches know when the URL stops working.