{
  "info": {
    "name": "QRBold API",
    "description": "Every endpoint of the QRBold REST API. Set the collection variable \"apiKey\" to your key before sending.\n\nThere is no sandbox: requests act on your live account, and the ids in these requests are examples to replace.\n\nhttps://qrbold.com/developers",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.qrbold.com/api/public/v1",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "Account",
      "description": "Check that a key works and see what it is allowed to do.\n\nGET /me needs no scope, which makes it the right first request: it can only fail for a reason that is about the key itself.",
      "item": [
        {
          "name": "Check a key — GET /me",
          "request": {
            "method": "GET",
            "description": "Returns the key’s name, its scopes, the account it belongs to and its rate limit.\n\nRead-only and free of side effects, so it is safe to call from a health check.\n\nhttps://qrbold.com/developers/api-reference/account#me",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/me",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "me"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Digital business cards",
      "description": "Create, read, update and delete digital business cards.\n\nAn update replaces the card’s scalar fields rather than merging them. Read the card, change what you need, and send the whole fields object back.",
      "item": [
        {
          "name": "Create a card — POST /cards",
          "request": {
            "method": "POST",
            "description": "Creates one digital business card and returns it, including its public URL.\n\nThe template’s design is copied onto the card when it is created. Editing the template later does not change cards that already exist.\n\nCheck paused in the response before printing a QR code: a paused card exists but its URL does not open.\n\nhttps://qrbold.com/developers/api-reference/cards#cards-create",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/cards",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cards"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Ada Lovelace\",\n  \"templateId\": \"cmf3k1p7d0002\",\n  \"shortCode\": \"ada-lovelace\",\n  \"status\": \"published\",\n  \"fields\": {\n    \"firstName\": \"Ada\",\n    \"lastName\": \"Lovelace\",\n    \"title\": \"Head of Engineering\",\n    \"company\": \"Analytical Engines Ltd\",\n    \"photoUrl\": \"https://example.com/photos/ada.jpg\",\n    \"companyLogoUrl\": \"https://example.com/brand/logo.png\",\n    \"bio\": \"Builds calculating machines and the teams around them.\",\n    \"emails\": [\n      {\n        \"label\": \"Work\",\n        \"value\": \"ada@example.com\"\n      }\n    ],\n    \"phones\": [\n      {\n        \"label\": \"Mobile\",\n        \"value\": \"+44 20 7946 0958\"\n      }\n    ],\n    \"links\": [\n      {\n        \"type\": \"website\",\n        \"url\": \"example.com\"\n      },\n      {\n        \"type\": \"linkedin\",\n        \"url\": \"linkedin.com/in/ada-lovelace\"\n      }\n    ],\n    \"address\": {\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "List cards — GET /cards",
          "request": {
            "method": "GET",
            "description": "Returns the account’s cards, newest first, one page at a time.\n\nhttps://qrbold.com/developers/api-reference/cards#cards-list",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/cards?limit=25&offset=0",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cards"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "25"
                },
                {
                  "key": "offset",
                  "value": "0"
                }
              ]
            }
          }
        },
        {
          "name": "Retrieve a card — GET /cards/:id",
          "request": {
            "method": "GET",
            "description": "Returns one card by id.\n\nhttps://qrbold.com/developers/api-reference/cards#cards-get",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/cards/cmf3k2a9x0001",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cards",
                "cmf3k2a9x0001"
              ]
            }
          }
        },
        {
          "name": "Update a card — PATCH /cards/:id",
          "request": {
            "method": "PATCH",
            "description": "Replaces the card’s data, and optionally moves it to another template.\n\nThe public URL and the QR code do not change when a card is updated, so nothing has to be reprinted.\n\nhttps://qrbold.com/developers/api-reference/cards#cards-update",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/cards/cmf3k2a9x0001",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cards",
                "cmf3k2a9x0001"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"fields\": {\n    \"firstName\": \"Ada\",\n    \"lastName\": \"Lovelace\",\n    \"title\": \"Chief Technology Officer\",\n    \"company\": \"Analytical Engines Ltd\",\n    \"photoUrl\": \"https://example.com/photos/ada.jpg\",\n    \"companyLogoUrl\": \"https://example.com/brand/logo.png\",\n    \"bio\": \"Builds calculating machines and the teams around them.\",\n    \"emails\": [\n      {\n        \"label\": \"Work\",\n        \"value\": \"ada@example.com\"\n      }\n    ],\n    \"phones\": [\n      {\n        \"label\": \"Mobile\",\n        \"value\": \"+44 20 7946 0958\"\n      }\n    ],\n    \"links\": [\n      {\n        \"type\": \"website\",\n        \"url\": \"example.com\"\n      },\n      {\n        \"type\": \"linkedin\",\n        \"url\": \"linkedin.com/in/ada-lovelace\"\n      }\n    ],\n    \"address\": {\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete a card — DELETE /cards/:id",
          "request": {
            "method": "DELETE",
            "description": "Moves the card to the account’s Trash. Its public URL stops opening immediately.\n\nThe card can be restored from Trash in the dashboard for the retention period. There is no restore endpoint in the REST API.\n\nAny printed QR code that points at the card leads to an “unavailable” page until it is restored.\n\nhttps://qrbold.com/developers/api-reference/cards#cards-delete",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/cards/cmf3k2a9x0001",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cards",
                "cmf3k2a9x0001"
              ]
            }
          }
        },
        {
          "name": "Get wallet links — GET /cards/:id/wallet",
          "request": {
            "method": "GET",
            "description": "Returns the links that add the card to Apple Wallet and Google Wallet, and how many passes are installed.\n\nRead-only. The pass design is edited on the card’s Wallet tab in the dashboard.\n\nhttps://qrbold.com/developers/api-reference/cards#cards-wallet",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/cards/cmf3k2a9x0001/wallet",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "cards",
                "cmf3k2a9x0001",
                "wallet"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Card templates",
      "description": "Read the templates a card can be created from, and the field rules each one imposes.\n\nRead-only. Templates are designed in the dashboard; an integration only refers to one by id.",
      "item": [
        {
          "name": "List templates — GET /templates",
          "request": {
            "method": "GET",
            "description": "Returns the card templates in the account.\n\nhttps://qrbold.com/developers/api-reference/templates#templates-list",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/templates",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "templates"
              ]
            }
          }
        },
        {
          "name": "Retrieve a template — GET /templates/:id",
          "request": {
            "method": "GET",
            "description": "Returns one template, including the field policy it applies to its cards.\n\npolicy.fields lists a mode per field: locked, prefilled, required, optional or hidden. Writing to a locked or hidden field, or leaving a required one empty, answers 422.\n\nhttps://qrbold.com/developers/api-reference/templates#templates-get",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/templates/cmf3k1p7d0002",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "templates",
                "cmf3k1p7d0002"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "QR codes",
      "description": "Create and manage dynamic QR codes that redirect to a URL, and list every other code in the account.\n\nOnly URL codes can be created or re-pointed here. File, page and GS1 codes are made in the dashboard and appear in lists read-only.",
      "item": [
        {
          "name": "Create a QR code — POST /qr-codes",
          "request": {
            "method": "POST",
            "description": "Creates a dynamic QR code that redirects to a URL you choose.\n\nStyling (colours, shapes, logo, frame) is not set through the REST API. A new code starts black on white; design it in the dashboard and the image endpoint returns that design.\n\nhttps://qrbold.com/developers/api-reference/qr-codes#qr-create",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/qr-codes",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "qr-codes"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Spring menu\",\n  \"destinationUrl\": \"https://example.com/menu/spring\",\n  \"shortCode\": \"spring-menu\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "List QR codes — GET /qr-codes",
          "request": {
            "method": "GET",
            "description": "Returns every QR code in the account that is not a digital business card, newest first.\n\nhttps://qrbold.com/developers/api-reference/qr-codes#qr-list",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/qr-codes?type=url&limit=25",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "qr-codes"
              ],
              "query": [
                {
                  "key": "type",
                  "value": "url"
                },
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            }
          }
        },
        {
          "name": "Retrieve a QR code — GET /qr-codes/:id",
          "request": {
            "method": "GET",
            "description": "Returns one QR code by id.\n\nA card id answers 404 here. Cards are read through /cards.\n\nhttps://qrbold.com/developers/api-reference/qr-codes#qr-get",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/qr-codes/cmf3k4c2e0003",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "qr-codes",
                "cmf3k4c2e0003"
              ]
            }
          }
        },
        {
          "name": "Update a QR code — PATCH /qr-codes/:id",
          "request": {
            "method": "PATCH",
            "description": "Renames a code, points it at a new destination, or changes its status.\n\nChanging destinationUrl does not change the printed code. That is what makes it dynamic.\n\nhttps://qrbold.com/developers/api-reference/qr-codes#qr-update",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/qr-codes/cmf3k4c2e0003",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "qr-codes",
                "cmf3k4c2e0003"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"destinationUrl\": \"https://example.com/menu/summer\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete a QR code — DELETE /qr-codes/:id",
          "request": {
            "method": "DELETE",
            "description": "Moves the code to the account’s Trash. It stops redirecting immediately.\n\nRestorable from Trash in the dashboard. Works for any non-card code, including ones made in the dashboard.\n\nhttps://qrbold.com/developers/api-reference/qr-codes#qr-delete",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/qr-codes/cmf3k4c2e0003",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "qr-codes",
                "cmf3k4c2e0003"
              ]
            }
          }
        }
      ]
    },
    {
      "name": "QR images",
      "description": "Download the QR image for a QR code or a digital business card.\n\nThe one endpoint that answers with a file rather than JSON. It accepts a card id as well as a QR code id.",
      "item": [
        {
          "name": "Download a QR image — GET /qr-codes/:id/image",
          "request": {
            "method": "GET",
            "description": "Returns the rendered QR image for a QR code or a digital business card.\n\nThe image encodes exactly the url reported by the card or QR code object, drawn with the design saved in the dashboard.\n\nThis link needs your API key, so it cannot be used as an image address in a web page or an email. Download the file and host it, or generate the image yourself from url.\n\nhttps://qrbold.com/developers/api-reference/images#image-get",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/qr-codes/cmf3k2a9x0001/image?format=png&size=1024",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "qr-codes",
                "cmf3k2a9x0001",
                "image"
              ],
              "query": [
                {
                  "key": "format",
                  "value": "png"
                },
                {
                  "key": "size",
                  "value": "1024"
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Analytics",
      "description": "Read scan totals, a daily timeline and, on plans that include them, country and device breakdowns.\n\nAggregates only. No IP addresses, precise locations or per-visitor records are returned.",
      "item": [
        {
          "name": "Account scan statistics — GET /analytics/overview",
          "request": {
            "method": "GET",
            "description": "Returns scan statistics for the whole account, with the five busiest codes in the period.\n\nhttps://qrbold.com/developers/api-reference/analytics#analytics-overview",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/analytics/overview?range=30d&timeZone=Europe/London",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "analytics",
                "overview"
              ],
              "query": [
                {
                  "key": "range",
                  "value": "30d"
                },
                {
                  "key": "timeZone",
                  "value": "Europe/London"
                }
              ]
            }
          }
        },
        {
          "name": "Scan statistics for one code or card — GET /analytics/:id",
          "request": {
            "method": "GET",
            "description": "Returns scan statistics for a single QR code or digital business card.\n\nhttps://qrbold.com/developers/api-reference/analytics#analytics-one",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/analytics/cmf3k2a9x0001?range=7d",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "analytics",
                "cmf3k2a9x0001"
              ],
              "query": [
                {
                  "key": "range",
                  "value": "7d"
                }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Campaign ingestion",
      "description": "Create one card per request from your own JSON shape, using a template and mapping configured once in the dashboard.\n\nA campaign has to be configured and switched on in the dashboard (Bulk → the group → API) before these endpoints accept anything.",
      "item": [
        {
          "name": "List campaigns — GET /campaigns",
          "request": {
            "method": "GET",
            "description": "Returns the account’s digital business card campaigns.\n\nhttps://qrbold.com/developers/api-reference/campaigns#campaigns-list",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/campaigns",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "campaigns"
              ]
            }
          }
        },
        {
          "name": "Retrieve a campaign — GET /campaigns/:campaignId",
          "request": {
            "method": "GET",
            "description": "Returns one campaign, including whether its API is switched on.\n\nhttps://qrbold.com/developers/api-reference/campaigns#campaigns-get",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/campaigns/cmf3k0b5q0004",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "campaigns",
                "cmf3k0b5q0004"
              ]
            }
          }
        },
        {
          "name": "Get a campaign’s payload schema — GET /campaigns/:campaignId/schema",
          "request": {
            "method": "GET",
            "description": "Returns the JSON shape this campaign accepts, derived from its template, with a ready-to-post sample.\n\nstale: true means the template changed after the configuration was activated. Requests still work; re-read the schema.\n\nhttps://qrbold.com/developers/api-reference/campaigns#campaigns-schema",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/campaigns/cmf3k0b5q0004/schema",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "campaigns",
                "cmf3k0b5q0004",
                "schema"
              ]
            }
          }
        },
        {
          "name": "Dry-run a campaign card — POST /campaigns/:campaignId/cards/test",
          "request": {
            "method": "POST",
            "description": "Runs a payload through the campaign exactly as the real endpoint would, and creates nothing.\n\nhttps://qrbold.com/developers/api-reference/campaigns#campaigns-test",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/campaigns/cmf3k0b5q0004/cards/test",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "campaigns",
                "cmf3k0b5q0004",
                "cards",
                "test"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"employee\": {\n    \"id\": \"EMP-1001\",\n    \"name\": {\n      \"first\": \"Ada\",\n      \"last\": \"Lovelace\"\n    },\n    \"contact\": {\n      \"email\": \"ada@example.com\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Create a card in a campaign — POST /campaigns/:campaignId/cards",
          "request": {
            "method": "POST",
            "description": "Creates one card from a single record, using the campaign’s template, mapping and short-link rule.\n\nYour identifier is unique inside the campaign, so a repeated export cannot create a second card for the same person.\n\nhttps://qrbold.com/developers/api-reference/campaigns#campaigns-create",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/campaigns/cmf3k0b5q0004/cards",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "campaigns",
                "cmf3k0b5q0004",
                "cards"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"employee\": {\n    \"id\": \"EMP-1001\",\n    \"name\": {\n      \"first\": \"Ada\",\n      \"last\": \"Lovelace\"\n    },\n    \"contact\": {\n      \"email\": \"ada@example.com\",\n      \"mobile\": \"+44 20 7946 0958\"\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    }
  ]
}