---
name: "qr_create"
area: "links"
title: "Make a QR code"
price: "$0.01"
method: "POST"
url: "https://api.conecto.chat/v1/tools/qr_create"
mcp_server: "https://api.conecto.chat/mcp/links"
auth: "Authorization: Bearer <conecto_sk_ key>"
docs_url: "https://conecto.chat/tools/links/qr_create"
---

# Make a QR code (`qr_create`)

A QR code for a link or any text, saved in the file store as a PNG or SVG with a download link.

A QR code for a link or any text (a payment link, a booking page, Wi-Fi details), saved in the file store as PNG or SVG with a download link. Dark modules must contrast with the background so phones can read it.

Price: $0.01 a call. A call that fails costs nothing.

## Use it when

Something printed (a price tag, a flyer, a receipt) should open a page or hold text.

## Say this to your agent

> Make a QR code for our price tags that opens the bike fitting booking page.

## Inputs

| Name | Type | Required | Description | Allowed values | Default |
|---|---|---|---|---|---|
| `data` | string | yes | 1 to 2,000 characters. |  |  |
| `name` | string | no | File name; defaults to "QR code". Up to 200 characters. |  |  |
| `format` | string | no |  | `"png"`, `"svg"` | `"png"` |
| `size` | integer | no | PNG width and height in pixels. 128 to 2,048. |  | `1024` |
| `dark` | string | no | Matches ^#[0-9a-fA-F]{6}$. |  | `"#171717"` |
| `light` | string | no | Matches ^#[0-9a-fA-F]{6}$. |  | `"#ffffff"` |
| `error_correction` | string | no | Higher survives damage or a logo on top, at the cost of density. | `"low"`, `"medium"`, `"quartile"`, `"high"` | `"medium"` |

## Example

Written for Halverson Cycle & Repair, a bike shop with a repair workshop in Portland, Oregon.

MCP: call `qr_create` on the MCP server `https://api.conecto.chat/mcp/links` with these arguments:

```json
{
  "data": "https://cncto.co/book/halverson-cycle/bike-fitting",
  "name": "Price tag QR code",
  "format": "png",
  "size": 1024,
  "dark": "#1f4d3a"
}
```

REST:

```bash
curl https://api.conecto.chat/v1/tools/qr_create \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"data": "https://cncto.co/book/halverson-cycle/bike-fitting", "name": "Price tag QR code", "format": "png", "size": 1024, "dark": "#1f4d3a"}'
```

## Response

```json
{
  "call_id": "5f0c8a2e-3b7d-4c1e-9a64-2d8e1f7b0c93",
  "tool": "qr_create",
  "status": "succeeded",
  "replayed": false,
  "cost_usd": "$0.01",
  "balance_usd": "$19.75",
  "result": {
    "file": {
      "file_id": "62fe7ad2-f22c-4eea-a42f-2b0f665a2304",
      "name": "Price tag QR code.png",
      "content_type": "image/png",
      "size": "5.4 KB",
      "size_bytes": 5564,
      "sha256": "7bdc9eefa58f52bc4c215ded3b65ccf077ac9f12fb243bbbd17bf4c403cca3b9",
      "created_at": "2026-10-14T08:00:00+00:00",
      "download_url": "https://cncto.co/d/62fe7ad2-f22c-4eea-a42f-2b0f665a2304?t=eyJmIjoiNjJmZTdhZDItZjIyYy00ZWVhLWE0MmYtMmIwZjY2NWEyMzA0IiwiZXhwIjoxNzkyMTU5NTE0fQ:1xHM54:DgdCsnH7Z9dfOPh-FPGj4yJGu9mRj_jn2Xc3ebCCzkE",
      "link_expires_in_hours": 24
    },
    "modules": 33
  }
}
```

`result`: The file (file_id, name, type, size, download link and when the link expires) and the number of modules across the code.

## Errors

| Code | Status | When | Fix |
|---|---|---|---|
| `low_contrast` | 400 | The dark and light colours are too close for phones to read. | Use a darker dark colour or a lighter light one. |
| `too_long` | 400 | There is too much data for one QR code. | Shorten it, for example with links_shorten. |
| `storage_full` | 409 | The file store has no room for the image. | Delete files with files_delete, or add room with files_add_storage. |

The refusals every tool can give (401 key, 402 balance, 429 limits) are on the errors page: https://conecto.chat/docs/errors.md

## Related

- [links_shorten](https://conecto.chat/tools/links/links_shorten.md): A short link at cncto.co/<code> that sends people on and counts the clicks. $0.01 a call.
- [links_list](https://conecto.chat/tools/links/links_list.md): The business's short links, newest first, with their clicks. Free up to 1,000,000 reads a month.
- [links_get](https://conecto.chat/tools/links/links_get.md): One short link: where it goes, its clicks and the last click. Free up to 1,000,000 reads a month.
- [links_update](https://conecto.chat/tools/links/links_update.md): Sends a short link somewhere else, retitles it, or pauses and resumes it. $0.01 a call.
- [links_delete](https://conecto.chat/tools/links/links_delete.md): Deletes a short link for good; its code never opens anything again. Free.
