← All articles

Create QR Codes in Make, n8n or Zapier With One HTTP Step

2026-10-12 api automation make n8n zapier no-code

To create a QR code inside a Make, n8n or Zapier workflow, add one HTTP request step that sends a POST to the QR Maker REST API with the destination link and an ID from the record that triggered the workflow. The response contains the short link to print and, if you ask for it, the SVG image. Because the ID makes the request retry-safe, a workflow that runs twice for the same record does not create two codes.

There is no dedicated QR Maker app in these tools. You do not need one: all three have a generic HTTP step, and the request is the same in each.

The request

{
  "target_url": "https://shop.example.com/orders/10492",
  "external_id": "order-10492",
  "name": "Order 10492",
  "folder": "orders"
}

Map target_url and external_id from the trigger. The ID can be an order number, a CRM record ID or an event registration ID, anything that is stable and unique for that record.

In the response, data.short_link is the link the printed code encodes and data.svg is the image as SVG text. data.id identifies the code if you want to store it.

The API is part of the Business plan; the REST API guide walks through every call. Create a token under Settings, API Tokens, and store it in your automation tool's credential or secret store, not in the body of a step.

In Make

Add the HTTP module "Make a request". Set the method to POST, paste the URL, add the two headers, choose "Raw" as body type with content type JSON, and build the body from the fields of the previous module. Turn on "Parse response" so data.short_link is available to later modules. To keep the token out of the scenario, use the module's API key authentication instead of typing the header by hand: create a keychain entry with header name Authorization and value Bearer qrs_.... Depending on your version of the HTTP app, this is an authentication option on the same module or a separate module called "Make an API Key Auth request".

In n8n

Add an HTTP Request node. Choose POST and the URL, set Authentication to "Generic Credential Type" with "Header Auth" (name Authorization, value Bearer qrs_...), switch "Send Body" on with JSON, and use expressions such as {{ $json.order_id }} for the fields. The parsed response is available as {{ $json.data.short_link }} in the next node.

In Zapier

Use "Webhooks by Zapier" with the "Custom Request" action, which is available on paid Zapier plans. Choose POST, paste the URL, put the JSON in the Data field with fields mapped from the trigger, and add the two headers. Later steps can use data short_link from the response.

Doing something with the result

Why the ID matters

Automations retry. A trigger can fire twice, or a failed run can be replayed by hand. If you send the same external_id with the same link, the API returns the code it already made, with status 200 instead of 201. If the same ID arrives with a different link, the API answers 409 and changes nothing. A code that has already been printed is never moved by accident.

To change where a code goes, add a separate step that sends PATCH https://qrmaker.ai/api/v1/qrcodes/by-external-id/order-10492 with { "target_url": "..." }.

Reacting to scans

There are no webhooks. To start a workflow when a code is scanned, use a scheduled trigger that calls GET https://qrmaker.ai/api/v1/scans?since_id=... every minute, stores next_since_id from the response, and passes it as since_id next time. Each event includes the code, your external_id, the time, the country and the device. Responses with no new scans do not count against the monthly quota.

Limits

The Business plan includes 50,000 successful requests a month and allows 120 a minute. A workflow that creates one code per order uses one request per order. A scan poll every minute uses at most about 43,000 requests a month if scans arrive constantly, and far fewer otherwise.

FAQ

Is there a Zapier, Make or n8n app for QR Maker?

No. The generic HTTP step in each tool does everything a dedicated app would, and the request is a single POST.

Can I get a PNG instead of SVG?

The API returns SVG only. Convert it in a later step if a destination needs PNG, for example with an image conversion module or a small code step.

The API returns an error with a stable code: a 400 with INVALID_TARGET_URL for a link that is not a valid http or https address, or a 403 with a code starting with URL_BLOCKED_ when the destination is refused by the safety checks, for example a link to another URL shortener. Route on that code in an error-handling branch instead of on the message text.

Create a free dynamic QR code — change the destination anytime and track every scan.

Make your QR code →