Skip to content

Integrations / n8n

Vectorize images in n8n

Send a PNG or JPG from any n8n workflow and get back a clean SVG, plus a DXF for laser and CNC machines or PDF and EPS files for print, in the same call. It works today with the built-in HTTP Request node: nothing to install.

1. Get an API key

  1. Create a free account on vectosolve.com, then a key on the API keys page. It starts with vs_.
  2. New accounts include 10 free API calls, enough to build and test the workflow. After that, each call uses credits from your account.
  3. In n8n, create a credential of type Header Auth: Name Authorization, Value Bearer vs_your_key.

2. Configure the HTTP Request node

Place it after the node that provides the image as binary data (Google Drive download, Gmail attachment, Read/Write Files, Form Trigger with a file field). The binary field is usually named data.

FieldValue
MethodPOST
URLhttps://vectosolve.com/api/v1/vectorize
AuthenticationGeneric Credential Type, then Header Auth, then your VectoSolve credential
Send BodyOn. Body Content Type: Form-Data
Body parameter 1Type n8n Binary File, Name file, Input Data Field Name data
Body parameter 2Type Form Data, Name mode, Value standard, laser, cricut, embroidery or centerline
Body parameter 3 (optional)Name output_format, Value dxf to also get a DXF file (default svg)
Body parameter 4 (optional)Name exports, Value pdf,eps (any of pdf, eps, ai, png)
Header (recommended)Idempotency-Key = {{ $execution.id }}-{{ $itemIndex }}
SettingsRetry On Fail on, Wait Between Tries 5000 ms

Already have a public link to the image? Replace the file parameter with a Form Data parameter image_url: VectoSolve downloads the image itself.

The Idempotency-Key header makes retries safe: if a call succeeded but the answer was lost, the retry returns the stored result instead of converting and charging a second time.

The same request from a terminal, to check your key before building the workflow:

curl -X POST https://vectosolve.com/api/v1/vectorize \
  -H "Authorization: Bearer vs_your_key" \
  -F "file=@logo.png" \
  -F "mode=laser" \
  -F "output_format=dxf"

3. Turn the response into files

The node returns JSON. Each file sits in its own field; a Convert to File node turns it into a real file for the next steps (Google Drive, Dropbox, email, FTP).

FieldContentNext node
data.svgThe SVG markupConvert to File, Convert to Text File, File Name logo.svg
data.dxfThe DXF, when output_format=dxfConvert to File, Convert to Text File, File Name logo.dxf
data.files.pdf.content_base64The PDF, when exports includes pdfConvert to File, Move Base64 String to File, MIME type application/pdf
data.files.png.content_base64A high-resolution PNG, when exports includes pngConvert to File, Move Base64 String to File, MIME type image/png
data.files.eps.contentThe EPS (text), when exports includes epsConvert to File, Convert to Text File, File Name logo.eps
data.files.ai.contentThe AI file (text), when exports includes aiConvert to File, Convert to Text File, File Name logo.ai
data.source_qualityA report on the source image: flags files a person should check before productionIF node, to route doubtful files to a human
credits.used, credits.remainingWhat the call used and what is leftIF node, to alert you before the balance runs out

Each print file is billed on its own. If one fails, it is refunded and its entry carries an error field instead of content; the SVG is still returned.

Workflows people build with it

  • Artwork intake for a print or sign shop

    Gmail Trigger on new attachments, HTTP Request to VectoSolve with exports=pdf,eps, Google Drive upload into the job folder, Slack message to production.

  • Laser and CNC files from online orders

    Webhook from your shop with the customer upload link, HTTP Request with image_url, mode laser and output_format dxf, then email the DXF to the workshop.

  • Cut files for a Cricut or sticker store

    Google Drive Trigger on a folder of designs, HTTP Request in cricut mode, upload the SVG next to the original.

Errors

HTTPMeaningCharged
400A field is missing or invalid (no file or image_url, an output_format other than svg or dxf, a file over the limit). The message names the problem.No
401The API key is missing or wrong. Check the Header Auth value: Bearer, a space, then the key.No
402No credits left, or the free trial calls are used up. The response carries top_up_url.No
409The same Idempotency-Key is already being processed. Retry a few seconds later.No
422The image produced an empty result. refunded: true confirms the refund.No, refunded
429Rate limit. Retry On Fail handles it.No

Every error body has the same shape: { "success": false, "error": "..." }. In the HTTP Request node, turn on Include Response Headers and Status or Never Error if you want to branch on the status code instead of stopping the workflow.

Limits

  • Input: PNG, JPG, WebP or GIF. Uploaded files up to 10 MB; image links up to 25 MB, public http(s) only.
  • 60 requests per minute per key by default. GET https://vectosolve.com/api/v1/credits returns your balance and your key's limits, free of charge.
  • A vectorization usually takes a few seconds. Set the node timeout to at least 120 seconds for large images with print files.

More

Full reference for every endpoint and parameter: API documentation and the OpenAPI spec. Using Make instead? See the Make guide. Questions: support@vectosolve.com.