Scan analytics for a dynamic QR code: totals, daily series and
top breakdowns. Requires the analytics:read scope. Static codes
have no scan tracking and return 422.
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"QRKit API","colors":{"primary":"#005ae0","light":"#2563EB","dark":"#004bb8"},"logo":{"light":"https://mintcdn.com/qrkit/qrQ9pgs0aTwgkPAw/logo/light.png?fit=max\u0026auto=format\u0026n=qrQ9pgs0aTwgkPAw\u0026q=85\u0026s=3e58fbcc4c845236b5698ed0cf1ec21c","dark":"https://mintcdn.com/qrkit/qrQ9pgs0aTwgkPAw/logo/dark.png?fit=max\u0026auto=format\u0026n=qrQ9pgs0aTwgkPAw\u0026q=85\u0026s=71d33fea6810ec66d6f8db505892cd73"},"favicon":"https://mintcdn.com/qrkit/qrQ9pgs0aTwgkPAw/favicon.ico?fit=max\u0026auto=format\u0026n=qrQ9pgs0aTwgkPAw\u0026q=85\u0026s=3cd8a7d80e56c39207523aad8e84c3b5","api":{"playground":{"display":"interactive"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"qrkit","hasAudioNarration":false,"actualSubdomain":"qrkit","customDomains":["docs.useqrkit.com"],"gitSource":{"type":"github","owner":"claudiuwork","repo":"qrkit-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad3d69ed3ef82bf1d596acc","collectionId":"04c3d933-6304-4f3e-972b-ada4cebcc53d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad3d69ed3ef82bf1d596acc"},"entitlements":{},"buildId":"6ad3d69ed3ef82bf1d596acc","clientVersion":"0.0.3964","searchFilterCounts":[{"language":"default","tag":"API Reference","count":54},{"language":"default","tag":"QR Codes","count":17},{"language":"default","tag":"Documentation","count":9},{"language":"default","tag":"Batches","count":8},{"language":"default","tag":"Folders","count":8},{"language":"default","tag":"Tokens","count":8},{"language":"default","tag":"Webhooks","count":8},{"language":"default","tag":"Guides","count":6},{"language":"default","tag":"Getting Started","count":3},{"language":"default","tag":"Account","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/qr-codes/qr-code-analytics","slug":"/api-reference/qr-codes/qr-code-analytics","pageMetadata":{"title":"QR Code Analytics","description":"Scan analytics for a dynamic QR code: totals, daily series and\ntop breakdowns. Requires the `analytics:read` scope. Static codes\nhave no scan tracking and return `422`.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml get /qr-codes/{id}/analytics","href":"/api-reference/qr-codes/qr-code-analytics","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Scan analytics for a dynamic QR code: totals, daily series and\\ntop breakdowns. Requires the \", _jsx(_components.code, {\n children: \"analytics:read\"\n }), \" scope. Static codes\\nhave no scan tracking and return \", _jsx(_components.code, {\n children: \"422\"\n }), \".\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"QR Code Analytics","description":"Scan analytics for a dynamic QR code: totals, daily series and\ntop breakdowns. Requires the `analytics:read` scope. Static codes\nhave no scan tracking and return `422`.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml get /qr-codes/{id}/analytics","href":"/api-reference/qr-codes/qr-code-analytics","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"QR Code Analytics","description":"Scan analytics for a dynamic QR code: totals, daily series and\ntop breakdowns. Requires the `analytics:read` scope. Static codes\nhave no scan tracking and return `422`.\n","operationId":"getQrCodeAnalytics","tags":["QR Codes"],"parameters":["aa20bbf0-e455-4344-aea3-e7edeae88a9b","8e331727-67c6-4232-bbca-4d4457abad49","bb995b52-9dd3-49be-9f95-717312e739a7"],"responses":{"200":"ea90f952-ef5d-4bba-85b5-2d15c9d03484","401":"bccac56b-0e92-45f6-9db6-71abc3d3a176","404":"a663e9b2-dd4e-4126-8d36-1c1503c576ab","422":"bd567f16-f53c-44f4-8b0b-170ce1d44960","429":"2b4045db-e142-41ca-932e-7c99a2f84d9d"},"method":"get","type":"path","servers":["aa6ca5af-dcf4-4523-a221-6a1f0c45701c","47461fe5-7010-4edd-b354-d8f475ba61ea"],"security":["55a46e2a-2cc9-49e0-9a17-83ee78dff490"],"path":"/qr-codes/{id}/analytics","baseUrlOptions":["https://api.useqrkit.com/v1","http://localhost:3001/v1"],"title":"QR Code Analytics","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"aa20bbf0-e455-4344-aea3-e7edeae88a9b":{"name":"id","in":"path","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"8e331727-67c6-4232-bbca-4d4457abad49":{"name":"from","in":"query","schema":{"type":"string","format":"date","description":"Include scans on/after this date.","uniqueKey":"","typeLabel":"string\u003cdate>"},"description":"Include scans on/after this date."},"bb995b52-9dd3-49be-9f95-717312e739a7":{"name":"to","in":"query","schema":{"type":"string","format":"date","description":"Include scans on/before this date.","uniqueKey":"","typeLabel":"string\u003cdate>"},"description":"Include scans on/before this date."}},"responses":{"ea90f952-ef5d-4bba-85b5-2d15c9d03484":{"description":"Analytics summary","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","example":"analytics","uniqueKey":"object","typeLabel":"string"},"qr_code_id":{"type":"string","example":"qr_123","uniqueKey":"qr_code_id","typeLabel":"string"},"total_scans":{"type":"integer","uniqueKey":"total_scans","typeLabel":"integer"},"first_scan_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"first_scan_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"first_scan_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"first_scan_at","typeLabel":"string\u003cdate-time> | null"},"last_scan_at":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"last_scan_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"last_scan_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"last_scan_at","typeLabel":"string\u003cdate-time> | null"},"scans_by_day":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","example":"2026-06-01","uniqueKey":"scans_by_day.items.[INDEX].date","typeLabel":"string"},"count":{"type":"integer","uniqueKey":"scans_by_day.items.[INDEX].count","typeLabel":"integer"}},"uniqueKey":"scans_by_day.items.[INDEX]","typeLabel":"object"},"uniqueKey":"scans_by_day","typeLabel":"object[]"},"countries":{"type":"array","description":"Top 10 values with scan counts.","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"countries.items.[INDEX].name","typeLabel":"string"},"count":{"type":"integer","uniqueKey":"countries.items.[INDEX].count","typeLabel":"integer"}},"uniqueKey":"countries.items.[INDEX]","typeLabel":"object"},"uniqueKey":"countries","typeLabel":"object[]"},"cities":{"type":"array","description":"Top 10 values with scan counts.","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"cities.items.[INDEX].name","typeLabel":"string"},"count":{"type":"integer","uniqueKey":"cities.items.[INDEX].count","typeLabel":"integer"}},"uniqueKey":"cities.items.[INDEX]","typeLabel":"object"},"uniqueKey":"cities","typeLabel":"object[]"},"devices":{"type":"array","description":"Top 10 values with scan counts.","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"devices.items.[INDEX].name","typeLabel":"string"},"count":{"type":"integer","uniqueKey":"devices.items.[INDEX].count","typeLabel":"integer"}},"uniqueKey":"devices.items.[INDEX]","typeLabel":"object"},"uniqueKey":"devices","typeLabel":"object[]"},"operating_systems":{"type":"array","description":"Top 10 values with scan counts.","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"operating_systems.items.[INDEX].name","typeLabel":"string"},"count":{"type":"integer","uniqueKey":"operating_systems.items.[INDEX].count","typeLabel":"integer"}},"uniqueKey":"operating_systems.items.[INDEX]","typeLabel":"object"},"uniqueKey":"operating_systems","typeLabel":"object[]"},"browsers":{"type":"array","description":"Top 10 values with scan counts.","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"browsers.items.[INDEX].name","typeLabel":"string"},"count":{"type":"integer","uniqueKey":"browsers.items.[INDEX].count","typeLabel":"integer"}},"uniqueKey":"browsers.items.[INDEX]","typeLabel":"object"},"uniqueKey":"browsers","typeLabel":"object[]"},"referrers":{"type":"array","description":"Top 10 values with scan counts.","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"referrers.items.[INDEX].name","typeLabel":"string"},"count":{"type":"integer","uniqueKey":"referrers.items.[INDEX].count","typeLabel":"integer"}},"uniqueKey":"referrers.items.[INDEX]","typeLabel":"object"},"uniqueKey":"referrers","typeLabel":"object[]"},"languages":{"type":"array","description":"Top 10 values with scan counts.","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"languages.items.[INDEX].name","typeLabel":"string"},"count":{"type":"integer","uniqueKey":"languages.items.[INDEX].count","typeLabel":"integer"}},"uniqueKey":"languages.items.[INDEX]","typeLabel":"object"},"uniqueKey":"languages","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"analytics","qr_code_id":"qr_123","total_scans":123,"first_scan_at":"2023-11-07T05:31:56Z","last_scan_at":"2023-11-07T05:31:56Z","scans_by_day":[{"date":"2026-06-01","count":123}],"countries":[{"name":"\u003cstring>","count":123}],"cities":[{"name":"\u003cstring>","count":123}],"devices":[{"name":"\u003cstring>","count":123}],"operating_systems":[{"name":"\u003cstring>","count":123}],"browsers":[{"name":"\u003cstring>","count":123}],"referrers":[{"name":"\u003cstring>","count":123}],"languages":[{"name":"\u003cstring>","count":123}]}}},"exampleType":"generated"}},"exampleType":"generated"},"bccac56b-0e92-45f6-9db6-71abc3d3a176":{"description":"Missing or invalid credentials — including a revoked or expired key, and a key whose workspace has been deleted.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","forbidden","not_found","conflict","target_not_editable","destination_unsafe","unprocessable_entity","payload_too_large","rate_limit_exceeded","internal_error"],"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","description":"Machine-readable reason, where the HTTP code alone is\nambiguous. `NOT_IN_TRASH` (409): a restore of a code that is\nlive. `DEACTIVATED` (409): a restore of a code that is\nswitched off but was never deleted — re-activate it with\n`PATCH is_active: true`. `DOMAIN_RETIRED` (409): a restore or\nre-activation of a GS1 code whose custom domain was removed.\n`PLAN_LIMIT` (422): a create, batch, restore, or `PATCH` with\n`is_active: true` the plan has no room for. Parallel API\nrequests are serialized per workspace, so they cannot\ntogether go past the limit.\n","enum":["NOT_IN_TRASH","DEACTIVATED","DOMAIN_RETIRED","PLAN_LIMIT"],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring>"},"gs1_code":{"type":"string","description":"Machine-readable reason for a GS1 failure, where the HTTP code\nalone is ambiguous. Present only on GS1 requests.\n","enum":["NOT_ENTITLED","PLAN_LIMIT","INVALID_KEY","INVALID_DESTINATION","INVALID_LINKS","INVALID_OVERRIDES","GS1_KEY_TAKEN","GS1_KEY_IN_TRASH","GS1_KEY_RETIRED","GS1_IDENTIFIER_IMMUTABLE","GS1_METADATA_MISSING","GS1_STATIC_HAS_NO_LINKSET","GS1_NOT_A_GS1_CODE","GS1_ERROR_CORRECTION_TOO_LOW","CREATE_FAILED"],"uniqueKey":"error.gs1_code","typeLabel":"enum\u003cstring>"},"field":{"type":"string","description":"The input to blame, e.g. `primary_key.value`, `destination`, `links[2].href`.","uniqueKey":"error.field","typeLabel":"string"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"error.fields.items.[INDEX]","typeLabel":"string"},"description":"The immutable identifier fields a PATCH tried to change (GS1_IDENTIFIER_IMMUTABLE).","uniqueKey":"error.fields","typeLabel":"string[]"},"limit":{"type":"integer","description":"PLAN_LIMIT only — the plan's allowance for the kind of code involved: GS1 codes when `gs1_code` is set, otherwise dynamic QR codes (`-1` = unlimited).","uniqueKey":"error.limit","typeLabel":"integer"},"current_count":{"type":"integer","description":"PLAN_LIMIT only — codes of that kind the workspace already holds (active, not deleted).","uniqueKey":"error.current_count","typeLabel":"integer"},"requested":{"type":"integer","description":"PLAN_LIMIT on a batch only — the dynamic (or dynamic GS1) items the batch asked for.","uniqueKey":"error.requested","typeLabel":"integer"},"plan_id":{"type":"string","description":"PLAN_LIMIT only — the plan the limit was read from.","uniqueKey":"error.plan_id","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"request_id":{"type":"string","uniqueKey":"error.request_id","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>","reason":"NOT_IN_TRASH","gs1_code":"NOT_ENTITLED","field":"\u003cstring>","fields":["\u003cstring>"],"limit":123,"current_count":123,"requested":123,"plan_id":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"a663e9b2-dd4e-4126-8d36-1c1503c576ab":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","forbidden","not_found","conflict","target_not_editable","destination_unsafe","unprocessable_entity","payload_too_large","rate_limit_exceeded","internal_error"],"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","description":"Machine-readable reason, where the HTTP code alone is\nambiguous. `NOT_IN_TRASH` (409): a restore of a code that is\nlive. `DEACTIVATED` (409): a restore of a code that is\nswitched off but was never deleted — re-activate it with\n`PATCH is_active: true`. `DOMAIN_RETIRED` (409): a restore or\nre-activation of a GS1 code whose custom domain was removed.\n`PLAN_LIMIT` (422): a create, batch, restore, or `PATCH` with\n`is_active: true` the plan has no room for. Parallel API\nrequests are serialized per workspace, so they cannot\ntogether go past the limit.\n","enum":["NOT_IN_TRASH","DEACTIVATED","DOMAIN_RETIRED","PLAN_LIMIT"],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring>"},"gs1_code":{"type":"string","description":"Machine-readable reason for a GS1 failure, where the HTTP code\nalone is ambiguous. Present only on GS1 requests.\n","enum":["NOT_ENTITLED","PLAN_LIMIT","INVALID_KEY","INVALID_DESTINATION","INVALID_LINKS","INVALID_OVERRIDES","GS1_KEY_TAKEN","GS1_KEY_IN_TRASH","GS1_KEY_RETIRED","GS1_IDENTIFIER_IMMUTABLE","GS1_METADATA_MISSING","GS1_STATIC_HAS_NO_LINKSET","GS1_NOT_A_GS1_CODE","GS1_ERROR_CORRECTION_TOO_LOW","CREATE_FAILED"],"uniqueKey":"error.gs1_code","typeLabel":"enum\u003cstring>"},"field":{"type":"string","description":"The input to blame, e.g. `primary_key.value`, `destination`, `links[2].href`.","uniqueKey":"error.field","typeLabel":"string"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"error.fields.items.[INDEX]","typeLabel":"string"},"description":"The immutable identifier fields a PATCH tried to change (GS1_IDENTIFIER_IMMUTABLE).","uniqueKey":"error.fields","typeLabel":"string[]"},"limit":{"type":"integer","description":"PLAN_LIMIT only — the plan's allowance for the kind of code involved: GS1 codes when `gs1_code` is set, otherwise dynamic QR codes (`-1` = unlimited).","uniqueKey":"error.limit","typeLabel":"integer"},"current_count":{"type":"integer","description":"PLAN_LIMIT only — codes of that kind the workspace already holds (active, not deleted).","uniqueKey":"error.current_count","typeLabel":"integer"},"requested":{"type":"integer","description":"PLAN_LIMIT on a batch only — the dynamic (or dynamic GS1) items the batch asked for.","uniqueKey":"error.requested","typeLabel":"integer"},"plan_id":{"type":"string","description":"PLAN_LIMIT only — the plan the limit was read from.","uniqueKey":"error.plan_id","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"request_id":{"type":"string","uniqueKey":"error.request_id","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>","reason":"NOT_IN_TRASH","gs1_code":"NOT_ENTITLED","field":"\u003cstring>","fields":["\u003cstring>"],"limit":123,"current_count":123,"requested":123,"plan_id":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"bd567f16-f53c-44f4-8b0b-170ce1d44960":{"description":"Request understood but cannot be processed (e.g. plan limit reached)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","forbidden","not_found","conflict","target_not_editable","destination_unsafe","unprocessable_entity","payload_too_large","rate_limit_exceeded","internal_error"],"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","description":"Machine-readable reason, where the HTTP code alone is\nambiguous. `NOT_IN_TRASH` (409): a restore of a code that is\nlive. `DEACTIVATED` (409): a restore of a code that is\nswitched off but was never deleted — re-activate it with\n`PATCH is_active: true`. `DOMAIN_RETIRED` (409): a restore or\nre-activation of a GS1 code whose custom domain was removed.\n`PLAN_LIMIT` (422): a create, batch, restore, or `PATCH` with\n`is_active: true` the plan has no room for. Parallel API\nrequests are serialized per workspace, so they cannot\ntogether go past the limit.\n","enum":["NOT_IN_TRASH","DEACTIVATED","DOMAIN_RETIRED","PLAN_LIMIT"],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring>"},"gs1_code":{"type":"string","description":"Machine-readable reason for a GS1 failure, where the HTTP code\nalone is ambiguous. Present only on GS1 requests.\n","enum":["NOT_ENTITLED","PLAN_LIMIT","INVALID_KEY","INVALID_DESTINATION","INVALID_LINKS","INVALID_OVERRIDES","GS1_KEY_TAKEN","GS1_KEY_IN_TRASH","GS1_KEY_RETIRED","GS1_IDENTIFIER_IMMUTABLE","GS1_METADATA_MISSING","GS1_STATIC_HAS_NO_LINKSET","GS1_NOT_A_GS1_CODE","GS1_ERROR_CORRECTION_TOO_LOW","CREATE_FAILED"],"uniqueKey":"error.gs1_code","typeLabel":"enum\u003cstring>"},"field":{"type":"string","description":"The input to blame, e.g. `primary_key.value`, `destination`, `links[2].href`.","uniqueKey":"error.field","typeLabel":"string"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"error.fields.items.[INDEX]","typeLabel":"string"},"description":"The immutable identifier fields a PATCH tried to change (GS1_IDENTIFIER_IMMUTABLE).","uniqueKey":"error.fields","typeLabel":"string[]"},"limit":{"type":"integer","description":"PLAN_LIMIT only — the plan's allowance for the kind of code involved: GS1 codes when `gs1_code` is set, otherwise dynamic QR codes (`-1` = unlimited).","uniqueKey":"error.limit","typeLabel":"integer"},"current_count":{"type":"integer","description":"PLAN_LIMIT only — codes of that kind the workspace already holds (active, not deleted).","uniqueKey":"error.current_count","typeLabel":"integer"},"requested":{"type":"integer","description":"PLAN_LIMIT on a batch only — the dynamic (or dynamic GS1) items the batch asked for.","uniqueKey":"error.requested","typeLabel":"integer"},"plan_id":{"type":"string","description":"PLAN_LIMIT only — the plan the limit was read from.","uniqueKey":"error.plan_id","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"request_id":{"type":"string","uniqueKey":"error.request_id","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>","reason":"NOT_IN_TRASH","gs1_code":"NOT_ENTITLED","field":"\u003cstring>","fields":["\u003cstring>"],"limit":123,"current_count":123,"requested":123,"plan_id":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"2b4045db-e142-41ca-932e-7c99a2f84d9d":{"description":"Rate limit or monthly quota exceeded — see Retry-After header","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","forbidden","not_found","conflict","target_not_editable","destination_unsafe","unprocessable_entity","payload_too_large","rate_limit_exceeded","internal_error"],"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"reason":{"type":"string","description":"Machine-readable reason, where the HTTP code alone is\nambiguous. `NOT_IN_TRASH` (409): a restore of a code that is\nlive. `DEACTIVATED` (409): a restore of a code that is\nswitched off but was never deleted — re-activate it with\n`PATCH is_active: true`. `DOMAIN_RETIRED` (409): a restore or\nre-activation of a GS1 code whose custom domain was removed.\n`PLAN_LIMIT` (422): a create, batch, restore, or `PATCH` with\n`is_active: true` the plan has no room for. Parallel API\nrequests are serialized per workspace, so they cannot\ntogether go past the limit.\n","enum":["NOT_IN_TRASH","DEACTIVATED","DOMAIN_RETIRED","PLAN_LIMIT"],"uniqueKey":"error.reason","typeLabel":"enum\u003cstring>"},"gs1_code":{"type":"string","description":"Machine-readable reason for a GS1 failure, where the HTTP code\nalone is ambiguous. Present only on GS1 requests.\n","enum":["NOT_ENTITLED","PLAN_LIMIT","INVALID_KEY","INVALID_DESTINATION","INVALID_LINKS","INVALID_OVERRIDES","GS1_KEY_TAKEN","GS1_KEY_IN_TRASH","GS1_KEY_RETIRED","GS1_IDENTIFIER_IMMUTABLE","GS1_METADATA_MISSING","GS1_STATIC_HAS_NO_LINKSET","GS1_NOT_A_GS1_CODE","GS1_ERROR_CORRECTION_TOO_LOW","CREATE_FAILED"],"uniqueKey":"error.gs1_code","typeLabel":"enum\u003cstring>"},"field":{"type":"string","description":"The input to blame, e.g. `primary_key.value`, `destination`, `links[2].href`.","uniqueKey":"error.field","typeLabel":"string"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"error.fields.items.[INDEX]","typeLabel":"string"},"description":"The immutable identifier fields a PATCH tried to change (GS1_IDENTIFIER_IMMUTABLE).","uniqueKey":"error.fields","typeLabel":"string[]"},"limit":{"type":"integer","description":"PLAN_LIMIT only — the plan's allowance for the kind of code involved: GS1 codes when `gs1_code` is set, otherwise dynamic QR codes (`-1` = unlimited).","uniqueKey":"error.limit","typeLabel":"integer"},"current_count":{"type":"integer","description":"PLAN_LIMIT only — codes of that kind the workspace already holds (active, not deleted).","uniqueKey":"error.current_count","typeLabel":"integer"},"requested":{"type":"integer","description":"PLAN_LIMIT on a batch only — the dynamic (or dynamic GS1) items the batch asked for.","uniqueKey":"error.requested","typeLabel":"integer"},"plan_id":{"type":"string","description":"PLAN_LIMIT only — the plan the limit was read from.","uniqueKey":"error.plan_id","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"request_id":{"type":"string","uniqueKey":"error.request_id","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>","reason":"NOT_IN_TRASH","gs1_code":"NOT_ENTITLED","field":"\u003cstring>","fields":["\u003cstring>"],"limit":123,"current_count":123,"requested":123,"plan_id":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"55a46e2a-2cc9-49e0-9a17-83ee78dff490":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key in the Authorization header: `Bearer qr_live_…` or `Bearer qr_test_…`. Token endpoints take a Clerk session JWT instead.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"aa6ca5af-dcf4-4523-a221-6a1f0c45701c":{"url":"https://api.useqrkit.com/v1","description":"Production"},"47461fe5-7010-4edd-b354-d8f475ba61ea":{"url":"http://localhost:3001/v1","description":"Local development"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"API key in the Authorization header: `Bearer qr_live_…` or `Bearer qr_test_…`. Token endpoints take a Clerk session JWT instead.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key in the Authorization header: `Bearer qr_live_…` or `Bearer qr_test_…`. Token endpoints take a Clerk session JWT instead.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"qrkit","siteName":"QRKit API","title":"QR Code Analytics - QRKit API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-17T20:12:18.959Z","originalFileLocation":"api-reference/qr-codes/qr-code-analytics.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Scan analytics for a dynamic QR code: totals, daily series and top breakdowns. Requires the analytics:read scope. Static codes have no scan tracking and return 422.\">\u003cmeta data-mint-head name=\"application-name\" content=\"QRKit API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/qrkit/XAxoR7_XNonsJwfS/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/qrkit/XAxoR7_XNonsJwfS/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/qrkit/XAxoR7_XNonsJwfS/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/qrkit/XAxoR7_XNonsJwfS/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/qrkit/XAxoR7_XNonsJwfS/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/qrkit/XAxoR7_XNonsJwfS/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/qrkit/XAxoR7_XNonsJwfS/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/qrkit/XAxoR7_XNonsJwfS/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/qrkit/XAxoR7_XNonsJwfS/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"QR Code Analytics - QRKit API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Scan analytics for a dynamic QR code: totals, daily series and top breakdowns. Requires the analytics:read scope. Static codes have no scan tracking and return 422.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"QRKit API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.useqrkit.com/api-reference/qr-codes/qr-code-analytics\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://qrkit.mintlify.app/_mintlify/api/og/v2?division=QR+Codes\u0026amp;title=QR+Code+Analytics\u0026amp;description=Scan+analytics+for+a+dynamic+QR+code%3A+totals%2C+daily+series+and%0Atop+breakdowns.+Requires+the+%60analytics%3Aread%60+scope.+Static+codes%0Ahave+no+scan+tracking+and+retur\u0026amp;theme=19f3ee5af3c4683c6442e41c\u0026amp;signature=ea84d2014b40ded5c8a5d77e48f615f584b07dde25fc477c45178be0b01c1bf3\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"QR Code Analytics - QRKit API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Scan analytics for a dynamic QR code: totals, daily series and top breakdowns. Requires the analytics:read scope. Static codes have no scan tracking and return 422.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://qrkit.mintlify.app/_mintlify/api/og/v2?division=QR+Codes\u0026amp;title=QR+Code+Analytics\u0026amp;description=Scan+analytics+for+a+dynamic+QR+code%3A+totals%2C+daily+series+and%0Atop+breakdowns.+Requires+the+%60analytics%3Aread%60+scope.+Static+codes%0Ahave+no+scan+tracking+and+retur\u0026amp;theme=19f3ee5af3c4683c6442e41c\u0026amp;signature=ea84d2014b40ded5c8a5d77e48f615f584b07dde25fc477c45178be0b01c1bf3\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/qrkit/XAxoR7_XNonsJwfS/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"QRKit API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#005ae0\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.useqrkit.com/api-reference/qr-codes/qr-code-analytics\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/qr-codes/qr-code-analytics.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.useqrkit.com/#organization\",\"name\":\"QRKit API\",\"url\":\"https://docs.useqrkit.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/qrkit/qrQ9pgs0aTwgkPAw/logo/light.png?fit=max\u0026auto=format\u0026n=qrQ9pgs0aTwgkPAw\u0026q=85\u0026s=3e58fbcc4c845236b5698ed0cf1ec21c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.useqrkit.com#website\",\"name\":\"QRKit API\",\"url\":\"https://docs.useqrkit.com\",\"publisher\":{\"@id\":\"https://docs.useqrkit.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.useqrkit.com/api-reference/qr-codes/qr-code-analytics#webpage\",\"url\":\"https://docs.useqrkit.com/api-reference/qr-codes/qr-code-analytics\",\"name\":\"QR Code Analytics\",\"description\":\"Scan analytics for a dynamic QR code: totals, daily series and top breakdowns. Requires the analytics:read scope. Static codes have no scan tracking and return 422.\",\"dateModified\":\"2026-10-17T20:12:18.959Z\",\"isPartOf\":{\"@id\":\"https://docs.useqrkit.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.useqrkit.com/api-reference/qr-codes/qr-code-analytics#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.useqrkit.com/api-reference/qr-codes/qr-code-analytics#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"QR Codes\",\"item\":\"https://docs.useqrkit.com/api-reference/qr-codes/list-qr-codes\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"QR Code Analytics\",\"item\":\"https://docs.useqrkit.com/api-reference/qr-codes/qr-code-analytics\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.useqrkit.com/api-reference/qr-codes/qr-code-analytics#apireference\",\"headline\":\"QR Code Analytics\",\"name\":\"QR Code Analytics\",\"description\":\"Scan analytics for a dynamic QR code: totals, daily series and top breakdowns. Requires the analytics:read scope. Static codes have no scan tracking and return 422.\",\"url\":\"https://docs.useqrkit.com/api-reference/qr-codes/qr-code-analytics\",\"mainEntityOfPage\":{\"@id\":\"https://docs.useqrkit.com/api-reference/qr-codes/qr-code-analytics#webpage\"},\"dateModified\":\"2026-10-17T20:12:18.959Z\",\"publisher\":{\"@id\":\"https://docs.useqrkit.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.useqrkit.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"QRKit API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"QRKit API","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API Reference","href":"/api-reference/overview"}]},{"group":"Account","pages":[{"title":"Retrieve Account","openapi":"GET /me","href":"/api-reference/account/retrieve"}]},{"group":"QR Codes","pages":[{"title":"Create QR Code","openapi":"POST /qr-codes","href":"/api-reference/qr-codes/create"},{"title":"List QR Codes","openapi":"GET /qr-codes","href":"/api-reference/qr-codes/list"},{"title":"Retrieve QR Code","openapi":"GET /qr-codes/{id}","href":"/api-reference/qr-codes/retrieve"},{"title":"Update QR Code","openapi":"PATCH /qr-codes/{id}","href":"/api-reference/qr-codes/update"},{"title":"Delete QR Code","openapi":"DELETE /qr-codes/{id}","href":"/api-reference/qr-codes/delete"},{"title":"Restore QR Code","openapi":"POST /qr-codes/{id}/restore","href":"/api-reference/qr-codes/restore"},{"title":"Download QR Image","openapi":"GET /qr-codes/{id}/download","href":"/api-reference/qr-codes/download"},{"title":"QR Code Analytics","openapi":"GET /qr-codes/{id}/analytics","href":"/api-reference/qr-codes/analytics"}]},{"group":"Batches","pages":[{"title":"Create Batch","openapi":"POST /batches","href":"/api-reference/batches/create"},{"title":"List Batches","openapi":"GET /batches","href":"/api-reference/batches/list"},{"title":"Get Batch","openapi":"GET /batches/{id}","href":"/api-reference/batches/retrieve"},{"title":"Download Batch","openapi":"GET /batches/{id}/download","href":"/api-reference/batches/download"}]},{"group":"Folders","pages":[{"title":"Create Folder","openapi":"POST /folders","href":"/api-reference/folders/create"},{"title":"List Folders","openapi":"GET /folders","href":"/api-reference/folders/list"},{"title":"Update Folder","openapi":"PATCH /folders/{id}","href":"/api-reference/folders/update"},{"title":"Delete Folder","openapi":"DELETE /folders/{id}","href":"/api-reference/folders/delete"}]},{"group":"Tokens","pages":[{"title":"Create API Key","openapi":"POST /tokens","href":"/api-reference/tokens/create"},{"title":"List API Keys","openapi":"GET /tokens","href":"/api-reference/tokens/list"},{"title":"Revoke API Key","openapi":"DELETE /tokens/{id}","href":"/api-reference/tokens/revoke"},{"title":"Rotate API Key","openapi":"POST /tokens/rotate","href":"/api-reference/tokens/rotate"}]},{"group":"Account","pages":[{"title":"Retrieve Account","deprecated":null,"version":null,"openapi":"/openapi.yaml get /me","href":"/api-reference/account/retrieve-account"}]},{"group":"QR Codes","pages":[{"title":"List QR Codes","deprecated":null,"version":null,"openapi":"/openapi.yaml get /qr-codes","href":"/api-reference/qr-codes/list-qr-codes"},{"title":"Create QR Code","deprecated":null,"version":null,"openapi":"/openapi.yaml post /qr-codes","href":"/api-reference/qr-codes/create-qr-code"},{"title":"Retrieve QR Code","deprecated":null,"version":null,"openapi":"/openapi.yaml get /qr-codes/{id}","href":"/api-reference/qr-codes/retrieve-qr-code"},{"title":"Delete QR Code","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /qr-codes/{id}","href":"/api-reference/qr-codes/delete-qr-code"},{"title":"Update QR Code","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /qr-codes/{id}","href":"/api-reference/qr-codes/update-qr-code"},{"title":"Restore QR Code","deprecated":null,"version":null,"openapi":"/openapi.yaml post /qr-codes/{id}/restore","href":"/api-reference/qr-codes/restore-qr-code"},{"title":"Download QR Image","deprecated":null,"version":null,"openapi":"/openapi.yaml get /qr-codes/{id}/download","href":"/api-reference/qr-codes/download-qr-image"},{"title":"GS1 Linkset","description":"The RFC 9264 linkset for a dynamic GS1 Digital Link code: every link the\nresolver would serve for this identifier, with one anchor per lot/serial\noverride. Requires the `qr:read` scope.\n\nReturned as `application/linkset+json` **without** this API's `{ data }`\nenvelope, and with a `Link` header pointing at the GS1 JSON-LD context —\nthe bytes are the same ones QRKit's resolver serves, so you can hand\nthem straight to a validator or stand the record up on your own\nresolver. Link relations are full GS1 vocabulary IRIs.\n\nEvery anchor carries the links registered ON it plus everything\ninherited from the level above (section 2.5.10): an override for\n`10/LOT1` publishes the GTIN's links as well as its own, most general\nfirst, with a repeated `href` listed once per relation. The default\nlink is published twice — under `gs1:defaultLink`, and under the\ndescriptive `gs1:pip` relation a client can ask for by name. Non-https\ndestinations are dropped rather than served.\n\nStatic GS1 codes resolve on your own host and QRKit holds no link record\nfor them, so they return `422`; so does a non-GS1 code.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml get /qr-codes/{id}/linkset","href":"/api-reference/qr-codes/gs1-linkset"},{"title":"QR Code Analytics","deprecated":null,"version":null,"openapi":"/openapi.yaml get /qr-codes/{id}/analytics","href":"/api-reference/qr-codes/qr-code-analytics"}]},{"group":"Batches","pages":[{"title":"List Batches","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml get /batches","href":"/api-reference/batches/list-batches"},{"title":"Create Batch","deprecated":null,"version":null,"openapi":"/openapi.yaml post /batches","href":"/api-reference/batches/create-batch"},{"title":"Get Batch","deprecated":null,"version":null,"openapi":"/openapi.yaml get /batches/{id}","href":"/api-reference/batches/get-batch"},{"title":"Download Batch as ZIP","deprecated":null,"version":null,"openapi":"/openapi.yaml get /batches/{id}/download","href":"/api-reference/batches/download-batch-as-zip"}]},{"group":"Folders","pages":[{"title":"List Folders","deprecated":null,"version":null,"openapi":"/openapi.yaml get /folders","href":"/api-reference/folders/list-folders"},{"title":"Create Folder","deprecated":null,"version":null,"openapi":"/openapi.yaml post /folders","href":"/api-reference/folders/create-folder"},{"title":"Delete Folder","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /folders/{id}","href":"/api-reference/folders/delete-folder"},{"title":"Update Folder","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /folders/{id}","href":"/api-reference/folders/update-folder"}]},{"group":"Tokens","pages":[{"title":"List API Keys","deprecated":null,"version":null,"openapi":"/openapi.yaml get /tokens","href":"/api-reference/tokens/list-api-keys"},{"title":"Create API Key","deprecated":null,"version":null,"openapi":"/openapi.yaml post /tokens","href":"/api-reference/tokens/create-api-key"},{"title":"Revoke API Key","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /tokens/{id}","href":"/api-reference/tokens/revoke-api-key"},{"title":"Rotate API Key","deprecated":null,"version":null,"openapi":"/openapi.yaml post /tokens/rotate","href":"/api-reference/tokens/rotate-api-key"}]},{"group":"Webhooks","pages":[{"title":"List Webhook Endpoints","deprecated":null,"version":null,"openapi":"/openapi.yaml get /webhooks","href":"/api-reference/webhooks/list-webhook-endpoints"},{"title":"Create Webhook Endpoint","deprecated":null,"version":null,"openapi":"/openapi.yaml post /webhooks","href":"/api-reference/webhooks/create-webhook-endpoint"},{"title":"Retrieve Webhook Endpoint","deprecated":null,"version":null,"openapi":"/openapi.yaml get /webhooks/{id}","href":"/api-reference/webhooks/retrieve-webhook-endpoint"},{"title":"Delete Webhook Endpoint","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /webhooks/{id}","href":"/api-reference/webhooks/delete-webhook-endpoint"},{"title":"Update Webhook Endpoint","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /webhooks/{id}","href":"/api-reference/webhooks/update-webhook-endpoint"},{"title":"Rotate Webhook Secret","deprecated":null,"version":null,"openapi":"/openapi.yaml post /webhooks/{id}/rotate-secret","href":"/api-reference/webhooks/rotate-webhook-secret"},{"title":"Send Test Webhook","deprecated":null,"version":null,"openapi":"/openapi.yaml post /webhooks/{id}/test","href":"/api-reference/webhooks/send-test-webhook"},{"title":"List Webhook Deliveries","deprecated":null,"version":null,"openapi":"/openapi.yaml get /webhooks/{id}/deliveries","href":"/api-reference/webhooks/list-webhook-deliveries"}]},{"group":"Events","pages":[{"title":"List Events","deprecated":null,"version":null,"openapi":"/openapi.yaml get /events","href":"/api-reference/events/list-events"},{"title":"Retrieve Event","deprecated":null,"version":null,"openapi":"/openapi.yaml get /events/{id}","href":"/api-reference/events/retrieve-event"}]}]}]},"title":"QR Code Analytics - QRKit API","buildId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","deploymentId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-BRm_l__d.js","utils-f1l1Oc-G.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BlhqDhJO.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DHCB7rsC.js","snippetPresets-CYXLx6Hv.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-kQh739Uz.js","ApiExamples-B78P2dEq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C4YLPVAh.js","shallow-vlLnTDkQ.js","getApiPlaygroundDisplay-D_98hhvf.js","CodeSnippet-DtnZHGqq.js","CodeSnippets-CLFb8KJt.js","getPastedJson-Cq-zlbnU.js","icon-sN3t983t.js","MethodPill-P_YQ2s09.js","DuplicateIcon-BVzyNsGJ.js","createIcon-B3jqgqC6.js","DynamicMarkdown-Crwq6WG_.js","SectionHeading-C7pGS2Bb.js","axios-vUo_bRtp.js","Markdown-BuPH8yuW.js","clsx-CCOYKgaU.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BnkC_6oA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BM4S31-f.js"]}