n8n image upload self-hosted, no op fees.
n8n is the self-hostable alternative to Zapier/Make. Its HTTP Request node handles multipart uploads with binary data from any previous node — webhooks, email triggers, database rows, file watches.
// n8n "HTTP Request" node configuration
// Method: POST
// URL: https://imagetourl.cloud/api/upload
// Authentication: Generic Credential → Header Auth
// Name: Authorization
// Value: Bearer YOUR_IMAGETOURL_KEY
// Body Content Type: Form-Data Multipart
// Body Parameters:
// Name: Type: Value:
// file n8n Binary data (from previous node's binary property)
// Options → Response → Response Format: JSON
// After this node runs, the URL is at: {{$json.data.url}} Why use ImageToURL's API
No per-op costs
Self-host n8n for $5–20/month on a VPS and run millions of workflow executions. Zapier/Make charge per task — n8n is free once hosted.
Binary data handling
n8n tracks file bytes as first-class 'binary' properties across nodes. The HTTP Request node binds them directly to multipart form fields.
Code nodes for complex logic
When the built-in nodes don't cover your case, drop in a Function node with the raw fetch snippet — same code as the Node.js example.
Community-built integrations
n8n's marketplace has hundreds of community nodes. If ImageToURL gets an official n8n node later, it'll land there.
FAQ
How do I pass a binary file to the HTTP Request node?
The previous node must have a binary property (e.g. 'data' from a Read Binary File node or webhook with binary upload). In the HTTP node's multipart form, set the field type to 'n8n Binary' and reference that property name.
Do I need n8n Pro?
No — self-hosted Community Edition is free and covers this use case fully. Pro adds SSO, audit logs, and hosted service.
Where do I store the API key?
Create a Credential in n8n (Generic → Header Auth). Attach it to the HTTP Request node. Credentials are encrypted at rest.
How do I handle errors?
Enable 'Continue On Fail' on the HTTP node and add an IF node checking for a non-success response. Route errors to Slack, email, or a retry queue.
Rate-limit retries?
Add a Wait node + IF loop with exponential backoff. Or use the community 'Retry' node package.
Webhook trigger → upload flow?
Webhook Trigger (receives file) → HTTP Request (uploads to ImageToURL) → Respond to Webhook (returns the hosted URL). Classic n8n pattern.
Docker / Railway / Render deploy?
All three have one-click n8n templates. Railway and Render free tiers run small n8n instances comfortably.
Can I trigger n8n from GitHub Actions?
Yes — expose an n8n webhook from Actions via curl. Useful for upload-as-part-of-CI-pipeline workflows.