# TheQRCode

> Make styled QR codes with TheQRCode.io: a link, any text, a ready-written email, a Wi-Fi code that joins the network when a guest scans it, or a contact card a phone saves to its address book. Choose the colours, the shape of the dots and corners, a gradient background, a frame with a caption such as SCAN ME, and put your logo in the middle. Each code is saved as a PNG for later steps and comes with a link to share it. No account or API key required.

App · 5 actions. Web page: https://docs.lodol.com/docs/integrations/theqrcode

## Actions

### Create a contact QR code

Turn someone's contact details into a QR code that a phone offers to save straight to its address book. The one for a business card, an email signature or a conference badge. No account or API key required.

**Inputs**

- First name (`first_name`, text): Optional. Their first name. Fill in at least one of first name, last name or company.
- Last name (`last_name`, text): Optional. Their family name.
- Phone (`phone`, text): Optional. Include the country code so the number dials from anywhere.
- Email (`emails`, text): Optional. Their email address. Separate several with commas.
- Company (`company`, text): Optional. Where they work.
- Job title (`job_title`, text): Optional. Their role.
- Address (`address`, text): Optional. A postal address, written as one line.
- Website (`websites`, text): Optional. A web address to save with the contact. Separate several with commas.
- Size (`size`, number): How many pixels across the code is, between 100 and 2048. A frame and caption add to this. From 100 to 2048. Default: `512`.
- Code colour (`code_color`, text): The colour of the code itself, as a hex colour. It has to be clearly darker than the background or scanners will not read it. Default: `#000000`.
- Background colour (`background_color`, text): The colour behind the code, as a hex colour. Keep it light so the code stands out. Default: `#ffffff`.
- Dot style (`dot_style`, text): The shape of the small squares that make up the code. One of: `square`, `dots`, `rounded`, `extra-rounded` (Extra rounded), `classy`, `classy-rounded` (Classy rounded). Default: `square`.
- Corner style (`corner_style`, text): The shape of the three large squares in the code's corners. One of: `square`, `dot` (Round), `extra-rounded` (Rounded square). Default: `square`.
- Corner centre style (`corner_dot_style`, text): The shape of the solid centre inside each corner square. One of: `square`, `dot` (Round). Default: `square`.
- Background style (`background_style`, text): A plain background, or one that blends the background colour into a second colour. One of: `solid` (Plain colour), `linear-gradient` (Gradient, side to side), `radial-gradient` (Gradient, from the centre out). Default: `solid`.
- Gradient colour (`gradient_color`, text): The colour the background blends into, as a hex colour. Keep it light too, so the whole code stays readable. Only when Background style is Gradient, side to side or Gradient, from the centre out. Default: `#dbeafe`.
- Frame (`frame_style`, text): A border drawn around the code. One of: `square` (No frame), `rounded`, `circle`, `dashed`. Default: `square`.
- Frame colour (`frame_color`, text): The colour of the frame and of the band a caption sits on, as a hex colour. Default: `#000000`.
- Frame thickness (`frame_thickness`, number): How thick the frame is, in pixels, between 5 and 50. Only when Frame is Rounded, Circle or Dashed. From 5 to 50. Default: `20`.
- Caption (`caption`, text): Optional. A short call to action printed with the code, such as SCAN ME, up to 40 characters. Latin, Cyrillic and Greek letters work; other scripts and emoji do not.
- Caption position (`caption_position`, text): Where the caption goes, if there is one. One of: `bottom` (Under the code), `top` (Over the code). Default: `bottom`.
- Caption font (`caption_font`, text): The typeface for the caption, if there is one. One of: `inter` (Inter, clean and modern), `oswald` (Oswald, tall and bold), `bebas-neue` (Bebas Neue, all capitals), `fredoka` (Fredoka, round and friendly), `playfair-display` (Playfair Display, elegant serif), `roboto-slab` (Roboto Slab, sturdy serif), `pacifico` (Pacifico, brush script), `dancing-script` (Dancing Script, handwriting), `permanent-marker` (Permanent Marker, marker pen), `space-mono` (Space Mono, typewriter). Default: `inter`.
- Caption colour (`caption_color`, text): The colour of the caption's letters, as a hex colour. It sits on the frame colour, so pick one that stands out against it. Default: `#ffffff`.
- Logo (`logo`, text): Optional. An image to place in the middle of the code: upload one, paste a link to one, or use a file from an earlier step. The code is made sturdier automatically so it still scans.
- Logo size (`logo_size`, text): How much of the code the logo covers, if there is one. One of: `small`, `medium`, `large`. Default: `medium`.
- Save as (`filename`, text): Optional. The name to save the image under, e.g. jane-doe-card.png.

**Outputs**

- `content_type` (text): File type of the saved QR code.
- `document_ref` (text): Reference to the saved QR code, for use by a later step.
- `documents` (list): The QR code image, in the shape steps that send or upload files expect.
- `filename` (text): Name the QR code was saved under.
- `share_link` (text): A public link that shows the QR code image, ready to paste into a message. It stops working after 24 hours; the saved file does not.
- `share_link_expires_at` (text): When the share link stops working (UTC).
- `size_bytes` (number): Size of the saved QR code in bytes.
- `url` (text): Download link for the saved QR code.

**Example output**

```json
{
  "content_type": "image/png",
  "document_ref": "doc_92a3b4c5d6e7f8099a3b4c5d6e7f8090",
  "documents": [
    {
      "content_type": "image/png",
      "document_ref": "doc_92a3b4c5d6e7f8099a3b4c5d6e7f8090",
      "filename": "jane-doe-qr-code.png",
      "size_bytes": 5233,
      "url": "/actions/core/serve-document/doc_92a3b4c5d6e7f8099a3b4c5d6e7f8090?teamId=6512a1b2c3d4e5f600000001"
    }
  ],
  "filename": "jane-doe-qr-code.png",
  "share_link": "https://theqrcode.io/api/public/qr-codes/view/tuFjyigTMMyw",
  "share_link_expires_at": "2026-10-16T21:33:43Z",
  "size_bytes": 5233,
  "url": "/actions/core/serve-document/doc_92a3b4c5d6e7f8099a3b4c5d6e7f8090?teamId=6512a1b2c3d4e5f600000001"
}
```

### Create a link QR code

Turn a web address into a styled QR code that opens it when scanned, with your colours, dot shapes, a frame and caption, and your logo in the middle if you like. The image is saved so later steps can attach or upload it. No account or API key required.

**Inputs**

- Link (`link`, text, required): The web address the code opens. https:// is added if you leave it off.
- Size (`size`, number): How many pixels across the code is, between 100 and 2048. A frame and caption add to this. From 100 to 2048. Default: `512`.
- Code colour (`code_color`, text): The colour of the code itself, as a hex colour. It has to be clearly darker than the background or scanners will not read it. Default: `#000000`.
- Background colour (`background_color`, text): The colour behind the code, as a hex colour. Keep it light so the code stands out. Default: `#ffffff`.
- Dot style (`dot_style`, text): The shape of the small squares that make up the code. One of: `square`, `dots`, `rounded`, `extra-rounded` (Extra rounded), `classy`, `classy-rounded` (Classy rounded). Default: `square`.
- Corner style (`corner_style`, text): The shape of the three large squares in the code's corners. One of: `square`, `dot` (Round), `extra-rounded` (Rounded square). Default: `square`.
- Corner centre style (`corner_dot_style`, text): The shape of the solid centre inside each corner square. One of: `square`, `dot` (Round). Default: `square`.
- Background style (`background_style`, text): A plain background, or one that blends the background colour into a second colour. One of: `solid` (Plain colour), `linear-gradient` (Gradient, side to side), `radial-gradient` (Gradient, from the centre out). Default: `solid`.
- Gradient colour (`gradient_color`, text): The colour the background blends into, as a hex colour. Keep it light too, so the whole code stays readable. Only when Background style is Gradient, side to side or Gradient, from the centre out. Default: `#dbeafe`.
- Frame (`frame_style`, text): A border drawn around the code. One of: `square` (No frame), `rounded`, `circle`, `dashed`. Default: `square`.
- Frame colour (`frame_color`, text): The colour of the frame and of the band a caption sits on, as a hex colour. Default: `#000000`.
- Frame thickness (`frame_thickness`, number): How thick the frame is, in pixels, between 5 and 50. Only when Frame is Rounded, Circle or Dashed. From 5 to 50. Default: `20`.
- Caption (`caption`, text): Optional. A short call to action printed with the code, such as SCAN ME, up to 40 characters. Latin, Cyrillic and Greek letters work; other scripts and emoji do not.
- Caption position (`caption_position`, text): Where the caption goes, if there is one. One of: `bottom` (Under the code), `top` (Over the code). Default: `bottom`.
- Caption font (`caption_font`, text): The typeface for the caption, if there is one. One of: `inter` (Inter, clean and modern), `oswald` (Oswald, tall and bold), `bebas-neue` (Bebas Neue, all capitals), `fredoka` (Fredoka, round and friendly), `playfair-display` (Playfair Display, elegant serif), `roboto-slab` (Roboto Slab, sturdy serif), `pacifico` (Pacifico, brush script), `dancing-script` (Dancing Script, handwriting), `permanent-marker` (Permanent Marker, marker pen), `space-mono` (Space Mono, typewriter). Default: `inter`.
- Caption colour (`caption_color`, text): The colour of the caption's letters, as a hex colour. It sits on the frame colour, so pick one that stands out against it. Default: `#ffffff`.
- Logo (`logo`, text): Optional. An image to place in the middle of the code: upload one, paste a link to one, or use a file from an earlier step. The code is made sturdier automatically so it still scans.
- Logo size (`logo_size`, text): How much of the code the logo covers, if there is one. One of: `small`, `medium`, `large`. Default: `medium`.
- Save as (`filename`, text): Optional. The name to save the image under, e.g. menu-qr-code.png.

**Outputs**

- `content_type` (text): File type of the saved QR code.
- `document_ref` (text): Reference to the saved QR code, for use by a later step.
- `documents` (list): The QR code image, in the shape steps that send or upload files expect.
- `encoded_text` (text): The exact text stored in the code: the web address, with https:// added if needed.
- `filename` (text): Name the QR code was saved under.
- `share_link` (text): A public link that shows the QR code image, ready to paste into a message. It stops working after 24 hours; the saved file does not.
- `share_link_expires_at` (text): When the share link stops working (UTC).
- `size_bytes` (number): Size of the saved QR code in bytes.
- `url` (text): Download link for the saved QR code.

**Example output**

```json
{
  "content_type": "image/png",
  "document_ref": "doc_5e6f708192a3b4c55e6f708192a3b4c5",
  "documents": [
    {
      "content_type": "image/png",
      "document_ref": "doc_5e6f708192a3b4c55e6f708192a3b4c5",
      "filename": "qr-code.png",
      "size_bytes": 4306,
      "url": "/actions/core/serve-document/doc_5e6f708192a3b4c55e6f708192a3b4c5?teamId=6512a1b2c3d4e5f600000001"
    }
  ],
  "encoded_text": "https://lodol.ai",
  "filename": "qr-code.png",
  "share_link": "https://theqrcode.io/api/public/qr-codes/view/erOIcOmgCZpS",
  "share_link_expires_at": "2026-10-16T21:31:47Z",
  "size_bytes": 4306,
  "url": "/actions/core/serve-document/doc_5e6f708192a3b4c55e6f708192a3b4c5?teamId=6512a1b2c3d4e5f600000001"
}
```

### Create a text QR code

Turn any text into a QR code that shows it when scanned: a message, a serial number, a short set of instructions. Styled the way you choose and saved for later steps. No account or API key required.

**Inputs**

- Text (`text`, text, required): What the code shows when scanned, up to about 2,953 characters. The longer it is, the denser and harder to scan the code gets.
- Size (`size`, number): How many pixels across the code is, between 100 and 2048. A frame and caption add to this. From 100 to 2048. Default: `512`.
- Code colour (`code_color`, text): The colour of the code itself, as a hex colour. It has to be clearly darker than the background or scanners will not read it. Default: `#000000`.
- Background colour (`background_color`, text): The colour behind the code, as a hex colour. Keep it light so the code stands out. Default: `#ffffff`.
- Dot style (`dot_style`, text): The shape of the small squares that make up the code. One of: `square`, `dots`, `rounded`, `extra-rounded` (Extra rounded), `classy`, `classy-rounded` (Classy rounded). Default: `square`.
- Corner style (`corner_style`, text): The shape of the three large squares in the code's corners. One of: `square`, `dot` (Round), `extra-rounded` (Rounded square). Default: `square`.
- Corner centre style (`corner_dot_style`, text): The shape of the solid centre inside each corner square. One of: `square`, `dot` (Round). Default: `square`.
- Background style (`background_style`, text): A plain background, or one that blends the background colour into a second colour. One of: `solid` (Plain colour), `linear-gradient` (Gradient, side to side), `radial-gradient` (Gradient, from the centre out). Default: `solid`.
- Gradient colour (`gradient_color`, text): The colour the background blends into, as a hex colour. Keep it light too, so the whole code stays readable. Only when Background style is Gradient, side to side or Gradient, from the centre out. Default: `#dbeafe`.
- Frame (`frame_style`, text): A border drawn around the code. One of: `square` (No frame), `rounded`, `circle`, `dashed`. Default: `square`.
- Frame colour (`frame_color`, text): The colour of the frame and of the band a caption sits on, as a hex colour. Default: `#000000`.
- Frame thickness (`frame_thickness`, number): How thick the frame is, in pixels, between 5 and 50. Only when Frame is Rounded, Circle or Dashed. From 5 to 50. Default: `20`.
- Caption (`caption`, text): Optional. A short call to action printed with the code, such as SCAN ME, up to 40 characters. Latin, Cyrillic and Greek letters work; other scripts and emoji do not.
- Caption position (`caption_position`, text): Where the caption goes, if there is one. One of: `bottom` (Under the code), `top` (Over the code). Default: `bottom`.
- Caption font (`caption_font`, text): The typeface for the caption, if there is one. One of: `inter` (Inter, clean and modern), `oswald` (Oswald, tall and bold), `bebas-neue` (Bebas Neue, all capitals), `fredoka` (Fredoka, round and friendly), `playfair-display` (Playfair Display, elegant serif), `roboto-slab` (Roboto Slab, sturdy serif), `pacifico` (Pacifico, brush script), `dancing-script` (Dancing Script, handwriting), `permanent-marker` (Permanent Marker, marker pen), `space-mono` (Space Mono, typewriter). Default: `inter`.
- Caption colour (`caption_color`, text): The colour of the caption's letters, as a hex colour. It sits on the frame colour, so pick one that stands out against it. Default: `#ffffff`.
- Logo (`logo`, text): Optional. An image to place in the middle of the code: upload one, paste a link to one, or use a file from an earlier step. The code is made sturdier automatically so it still scans.
- Logo size (`logo_size`, text): How much of the code the logo covers, if there is one. One of: `small`, `medium`, `large`. Default: `medium`.
- Save as (`filename`, text): Optional. The name to save the image under, e.g. asset-tag.png.

**Outputs**

- `content_type` (text): File type of the saved QR code.
- `document_ref` (text): Reference to the saved QR code, for use by a later step.
- `documents` (list): The QR code image, in the shape steps that send or upload files expect.
- `encoded_text` (text): The exact text stored in the code: the text you gave it.
- `filename` (text): Name the QR code was saved under.
- `share_link` (text): A public link that shows the QR code image, ready to paste into a message. It stops working after 24 hours; the saved file does not.
- `share_link_expires_at` (text): When the share link stops working (UTC).
- `size_bytes` (number): Size of the saved QR code in bytes.
- `url` (text): Download link for the saved QR code.

**Example output**

```json
{
  "content_type": "image/png",
  "document_ref": "doc_6f708192a3b4c5d66f708192a3b4c5d6",
  "documents": [
    {
      "content_type": "image/png",
      "document_ref": "doc_6f708192a3b4c5d66f708192a3b4c5d6",
      "filename": "text-qr-code.png",
      "size_bytes": 4298,
      "url": "/actions/core/serve-document/doc_6f708192a3b4c5d66f708192a3b4c5d6?teamId=6512a1b2c3d4e5f600000001"
    }
  ],
  "encoded_text": "Hello, World!",
  "filename": "text-qr-code.png",
  "share_link": "https://theqrcode.io/api/public/qr-codes/view/FTV9QpSDPQk4",
  "share_link_expires_at": "2026-10-16T21:33:42Z",
  "size_bytes": 4298,
  "url": "/actions/core/serve-document/doc_6f708192a3b4c5d66f708192a3b4c5d6?teamId=6512a1b2c3d4e5f600000001"
}
```

### Create a Wi-Fi QR code

Turn a Wi-Fi network's name and password into a QR code that joins the network when a phone scans it, with no typing. Add a frame and a caption such as Free Wi-Fi for a reception desk, a café table or a rental. No account or API key required.

**Inputs**

- Network name (`network_name`, text, required): The network's name exactly as it appears in the Wi-Fi list, capitals and spaces included.
- Security (`security`, text): How the network is protected. Almost every modern network uses a WPA password. One of: `WPA` (WPA, WPA2 or WPA3 password), `WEP` (WEP password), `nopass` (No password, open network). Default: `WPA`.
- Password (`password`, text): The network's password. Needed for every network except an open one. Only when Security is WPA, WPA2 or WPA3 password or WEP password.
- Hidden network (`hidden_network`, true/false): Turn on only if this network does not appear in the Wi-Fi list until you type its name. Default: `false`.
- Size (`size`, number): How many pixels across the code is, between 100 and 2048. A frame and caption add to this. From 100 to 2048. Default: `512`.
- Code colour (`code_color`, text): The colour of the code itself, as a hex colour. It has to be clearly darker than the background or scanners will not read it. Default: `#000000`.
- Background colour (`background_color`, text): The colour behind the code, as a hex colour. Keep it light so the code stands out. Default: `#ffffff`.
- Dot style (`dot_style`, text): The shape of the small squares that make up the code. One of: `square`, `dots`, `rounded`, `extra-rounded` (Extra rounded), `classy`, `classy-rounded` (Classy rounded). Default: `square`.
- Corner style (`corner_style`, text): The shape of the three large squares in the code's corners. One of: `square`, `dot` (Round), `extra-rounded` (Rounded square). Default: `square`.
- Corner centre style (`corner_dot_style`, text): The shape of the solid centre inside each corner square. One of: `square`, `dot` (Round). Default: `square`.
- Background style (`background_style`, text): A plain background, or one that blends the background colour into a second colour. One of: `solid` (Plain colour), `linear-gradient` (Gradient, side to side), `radial-gradient` (Gradient, from the centre out). Default: `solid`.
- Gradient colour (`gradient_color`, text): The colour the background blends into, as a hex colour. Keep it light too, so the whole code stays readable. Only when Background style is Gradient, side to side or Gradient, from the centre out. Default: `#dbeafe`.
- Frame (`frame_style`, text): A border drawn around the code. One of: `square` (No frame), `rounded`, `circle`, `dashed`. Default: `square`.
- Frame colour (`frame_color`, text): The colour of the frame and of the band a caption sits on, as a hex colour. Default: `#000000`.
- Frame thickness (`frame_thickness`, number): How thick the frame is, in pixels, between 5 and 50. Only when Frame is Rounded, Circle or Dashed. From 5 to 50. Default: `20`.
- Caption (`caption`, text): Optional. A short call to action printed with the code, such as SCAN ME, up to 40 characters. Latin, Cyrillic and Greek letters work; other scripts and emoji do not.
- Caption position (`caption_position`, text): Where the caption goes, if there is one. One of: `bottom` (Under the code), `top` (Over the code). Default: `bottom`.
- Caption font (`caption_font`, text): The typeface for the caption, if there is one. One of: `inter` (Inter, clean and modern), `oswald` (Oswald, tall and bold), `bebas-neue` (Bebas Neue, all capitals), `fredoka` (Fredoka, round and friendly), `playfair-display` (Playfair Display, elegant serif), `roboto-slab` (Roboto Slab, sturdy serif), `pacifico` (Pacifico, brush script), `dancing-script` (Dancing Script, handwriting), `permanent-marker` (Permanent Marker, marker pen), `space-mono` (Space Mono, typewriter). Default: `inter`.
- Caption colour (`caption_color`, text): The colour of the caption's letters, as a hex colour. It sits on the frame colour, so pick one that stands out against it. Default: `#ffffff`.
- Logo (`logo`, text): Optional. An image to place in the middle of the code: upload one, paste a link to one, or use a file from an earlier step. The code is made sturdier automatically so it still scans.
- Logo size (`logo_size`, text): How much of the code the logo covers, if there is one. One of: `small`, `medium`, `large`. Default: `medium`.
- Save as (`filename`, text): Optional. The name to save the image under, e.g. guest-wifi.png.

**Outputs**

- `content_type` (text): File type of the saved QR code.
- `document_ref` (text): Reference to the saved QR code, for use by a later step.
- `documents` (list): The QR code image, in the shape steps that send or upload files expect.
- `encoded_text` (text): The exact text stored in the code: the network's joining details, in the format phones read.
- `filename` (text): Name the QR code was saved under.
- `share_link` (text): A public link that shows the QR code image, ready to paste into a message. It stops working after 24 hours; the saved file does not.
- `share_link_expires_at` (text): When the share link stops working (UTC).
- `size_bytes` (number): Size of the saved QR code in bytes.
- `url` (text): Download link for the saved QR code.

**Example output**

```json
{
  "content_type": "image/png",
  "document_ref": "doc_8192a3b4c5d6e7f88192a3b4c5d6e7f8",
  "documents": [
    {
      "content_type": "image/png",
      "document_ref": "doc_8192a3b4c5d6e7f88192a3b4c5d6e7f8",
      "filename": "acme-guest-wifi-qr-code.png",
      "size_bytes": 15190,
      "url": "/actions/core/serve-document/doc_8192a3b4c5d6e7f88192a3b4c5d6e7f8?teamId=6512a1b2c3d4e5f600000001"
    }
  ],
  "encoded_text": "WIFI:T:WPA;S:Acme Guest;P:hunter2;H:false;;",
  "filename": "acme-guest-wifi-qr-code.png",
  "share_link": "https://theqrcode.io/api/public/qr-codes/view/okKOVuFGrzhu",
  "share_link_expires_at": "2026-10-16T21:31:47Z",
  "size_bytes": 15190,
  "url": "/actions/core/serve-document/doc_8192a3b4c5d6e7f88192a3b4c5d6e7f8?teamId=6512a1b2c3d4e5f600000001"
}
```

### Create an email QR code

Turn an email address into a QR code that opens a new email to it when scanned, with the subject and message already written if you give them. Handy for feedback, support and sign-up posters. No account or API key required.

**Inputs**

- Email address (`to`, text, required): Who the email goes to.
- Subject (`subject`, text): Optional. The subject line, already filled in.
- Message (`message`, text): Optional. The start of the message, already written. The person scanning can change it before sending.
- Size (`size`, number): How many pixels across the code is, between 100 and 2048. A frame and caption add to this. From 100 to 2048. Default: `512`.
- Code colour (`code_color`, text): The colour of the code itself, as a hex colour. It has to be clearly darker than the background or scanners will not read it. Default: `#000000`.
- Background colour (`background_color`, text): The colour behind the code, as a hex colour. Keep it light so the code stands out. Default: `#ffffff`.
- Dot style (`dot_style`, text): The shape of the small squares that make up the code. One of: `square`, `dots`, `rounded`, `extra-rounded` (Extra rounded), `classy`, `classy-rounded` (Classy rounded). Default: `square`.
- Corner style (`corner_style`, text): The shape of the three large squares in the code's corners. One of: `square`, `dot` (Round), `extra-rounded` (Rounded square). Default: `square`.
- Corner centre style (`corner_dot_style`, text): The shape of the solid centre inside each corner square. One of: `square`, `dot` (Round). Default: `square`.
- Background style (`background_style`, text): A plain background, or one that blends the background colour into a second colour. One of: `solid` (Plain colour), `linear-gradient` (Gradient, side to side), `radial-gradient` (Gradient, from the centre out). Default: `solid`.
- Gradient colour (`gradient_color`, text): The colour the background blends into, as a hex colour. Keep it light too, so the whole code stays readable. Only when Background style is Gradient, side to side or Gradient, from the centre out. Default: `#dbeafe`.
- Frame (`frame_style`, text): A border drawn around the code. One of: `square` (No frame), `rounded`, `circle`, `dashed`. Default: `square`.
- Frame colour (`frame_color`, text): The colour of the frame and of the band a caption sits on, as a hex colour. Default: `#000000`.
- Frame thickness (`frame_thickness`, number): How thick the frame is, in pixels, between 5 and 50. Only when Frame is Rounded, Circle or Dashed. From 5 to 50. Default: `20`.
- Caption (`caption`, text): Optional. A short call to action printed with the code, such as SCAN ME, up to 40 characters. Latin, Cyrillic and Greek letters work; other scripts and emoji do not.
- Caption position (`caption_position`, text): Where the caption goes, if there is one. One of: `bottom` (Under the code), `top` (Over the code). Default: `bottom`.
- Caption font (`caption_font`, text): The typeface for the caption, if there is one. One of: `inter` (Inter, clean and modern), `oswald` (Oswald, tall and bold), `bebas-neue` (Bebas Neue, all capitals), `fredoka` (Fredoka, round and friendly), `playfair-display` (Playfair Display, elegant serif), `roboto-slab` (Roboto Slab, sturdy serif), `pacifico` (Pacifico, brush script), `dancing-script` (Dancing Script, handwriting), `permanent-marker` (Permanent Marker, marker pen), `space-mono` (Space Mono, typewriter). Default: `inter`.
- Caption colour (`caption_color`, text): The colour of the caption's letters, as a hex colour. It sits on the frame colour, so pick one that stands out against it. Default: `#ffffff`.
- Logo (`logo`, text): Optional. An image to place in the middle of the code: upload one, paste a link to one, or use a file from an earlier step. The code is made sturdier automatically so it still scans.
- Logo size (`logo_size`, text): How much of the code the logo covers, if there is one. One of: `small`, `medium`, `large`. Default: `medium`.
- Save as (`filename`, text): Optional. The name to save the image under, e.g. feedback-qr-code.png.

**Outputs**

- `content_type` (text): File type of the saved QR code.
- `document_ref` (text): Reference to the saved QR code, for use by a later step.
- `documents` (list): The QR code image, in the shape steps that send or upload files expect.
- `encoded_text` (text): The exact text stored in the code: the address, subject and message, in the format phones read.
- `filename` (text): Name the QR code was saved under.
- `share_link` (text): A public link that shows the QR code image, ready to paste into a message. It stops working after 24 hours; the saved file does not.
- `share_link_expires_at` (text): When the share link stops working (UTC).
- `size_bytes` (number): Size of the saved QR code in bytes.
- `url` (text): Download link for the saved QR code.

**Example output**

```json
{
  "content_type": "image/png",
  "document_ref": "doc_708192a3b4c5d6e7708192a3b4c5d6e7",
  "documents": [
    {
      "content_type": "image/png",
      "document_ref": "doc_708192a3b4c5d6e7708192a3b4c5d6e7",
      "filename": "hello-email-qr-code.png",
      "size_bytes": 4410,
      "url": "/actions/core/serve-document/doc_708192a3b4c5d6e7708192a3b4c5d6e7?teamId=6512a1b2c3d4e5f600000001"
    }
  ],
  "encoded_text": "mailto:hello@example.com?subject=Order%20question&body=Hi%20there",
  "filename": "hello-email-qr-code.png",
  "share_link": "https://theqrcode.io/api/public/qr-codes/view/UoBfzT4fm548",
  "share_link_expires_at": "2026-10-16T21:33:55Z",
  "size_bytes": 4410,
  "url": "/actions/core/serve-document/doc_708192a3b4c5d6e7708192a3b4c5d6e7?teamId=6512a1b2c3d4e5f600000001"
}
```
