{"info":{"_postman_id":"c82ef910-1845-4290-b187-qrnaly-api-v1","name":"QRnaly Public REST API","description":"Official Postman Collection for QRnaly.com REST API v1. Includes workspace identity, dynamic QR lifecycle, campaign folders, hosted campaign assets, digital catalogue sync, and telemetry analytics.","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://qrnaly.com/api/v1","type":"string"},{"key":"apiKey","value":"qr_live_replace_with_your_api_key","type":"string"}],"item":[{"name":"Identity & Quotas","description":"Endpoints to inspect authenticated identity, workspace scopes, active limits, and remaining balance.","item":[{"name":"Get Identity & Workspace (/me)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/me","host":["{{baseUrl}}"],"path":["me"]},"description":"Returns caller identity, workspace ID, role, and active permissions."},"response":[]},{"name":"Get Usage & Quotas (/usage)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/usage","host":["{{baseUrl}}"],"path":["usage"]},"description":"Returns live dynamic QR counts, monthly dynamic updates used/remaining, asset storage, and rate limits."},"response":[]}]},{"name":"QR Codes","description":"Full dynamic and static QR code management, lifecycle state transitions, destination versions, and vector exports.","item":[{"name":"List QR Codes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/qr?page=1&limit=20","host":["{{baseUrl}}"],"path":["qr"],"query":[{"key":"page","value":"1"},{"key":"limit","value":"20"},{"key":"folderId","value":"","disabled":true}]},"description":"Retrieve paginated list of QR codes."},"response":[]},{"name":"Create Dynamic QR Code","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"req_unique_id_123"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Summer Campaign 2026\",\n  \"type\": \"url\",\n  \"targetUrl\": \"https://example.com/summer-promo\",\n  \"isDynamic\": true,\n  \"design\": {\n    \"fgColor\": \"#0f172a\",\n    \"bgColor\": \"#ffffff\",\n    \"dotType\": \"rounded\",\n    \"cornerSquareType\": \"extra-rounded\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/qr","host":["{{baseUrl}}"],"path":["qr"]},"description":"Generates a dynamic trackable QR code with server-side shortlink."},"response":[]},{"name":"Create Static QR Code","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Direct WiFi QR\",\n  \"type\": \"url\",\n  \"targetUrl\": \"https://example.com/direct-landing\",\n  \"isDynamic\": false,\n  \"design\": {\n    \"fgColor\": \"#0f172a\",\n    \"bgColor\": \"#ffffff\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/qr","host":["{{baseUrl}}"],"path":["qr"]},"description":"Generates a pure static directly encoded QR code (0 credits consumed, scans not tracked)."},"response":[]},{"name":"Get QR Code Details","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/qr/:id","host":["{{baseUrl}}"],"path":["qr",":id"],"variable":[{"key":"id","value":"qr_id_here"}]},"description":"Retrieve complete QR details, SVG download link, and current destination."},"response":[]},{"name":"Update QR Code","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Updated Campaign Name\",\n  \"targetUrl\": \"https://example.com/updated-summer-landing\",\n  \"folderId\": \"fol_12345\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/qr/:id","host":["{{baseUrl}}"],"path":["qr",":id"],"variable":[{"key":"id","value":"qr_id_here"}]},"description":"Updates destination URL (consumes 1 update), name, design, or folder assignment."},"response":[]},{"name":"Delete QR Code","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/qr/:id","host":["{{baseUrl}}"],"path":["qr",":id"],"variable":[{"key":"id","value":"qr_id_here"}]},"description":"Permanently deletes or archives a QR code."},"response":[]},{"name":"Pause QR Code","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/qr/:id/pause","host":["{{baseUrl}}"],"path":["qr",":id","pause"],"variable":[{"key":"id","value":"qr_id_here"}]},"description":"Halts redirects for this dynamic QR code."},"response":[]},{"name":"Resume QR Code","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/qr/:id/resume","host":["{{baseUrl}}"],"path":["qr",":id","resume"],"variable":[{"key":"id","value":"qr_id_here"}]},"description":"Resumes redirects for a paused dynamic QR code."},"response":[]},{"name":"Duplicate QR Code","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/qr/:id/duplicate","host":["{{baseUrl}}"],"path":["qr",":id","duplicate"],"variable":[{"key":"id","value":"qr_id_here"}]},"description":"Duplicates an existing QR code into an independent new record."},"response":[]},{"name":"Get Destination History","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/qr/:id/history","host":["{{baseUrl}}"],"path":["qr",":id","history"],"variable":[{"key":"id","value":"qr_id_here"}]},"description":"Audit trail of every destination change for this dynamic QR code."},"response":[]},{"name":"Restore Destination Version","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"versionNumber\": 1\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/qr/:id/history/restore","host":["{{baseUrl}}"],"path":["qr",":id","history","restore"],"variable":[{"key":"id","value":"qr_id_here"}]},"description":"Rolls back destination URL to a previously recorded version (consumes 1 dynamic update)."},"response":[]}]},{"name":"Campaign Folders","description":"Group and organize QR codes into logical workspaces and campaign folders.","item":[{"name":"List Folders","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/folders","host":["{{baseUrl}}"],"path":["folders"]},"description":"List all campaign folders in the workspace."},"response":[]},{"name":"Create Folder","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Q3 Retail Promotions\",\n  \"color\": \"#059669\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/folders","host":["{{baseUrl}}"],"path":["folders"]},"description":"Create a new campaign folder."},"response":[]},{"name":"Get Folder by ID","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/folders/:id","host":["{{baseUrl}}"],"path":["folders",":id"],"variable":[{"key":"id","value":"folder_id_here"}]},"description":"Get details and QR code counts for a specific folder."},"response":[]},{"name":"Update Folder","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Q3 Updated Promotions\",\n  \"color\": \"#2563eb\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/folders/:id","host":["{{baseUrl}}"],"path":["folders",":id"],"variable":[{"key":"id","value":"folder_id_here"}]},"description":"Update folder name or theme color."},"response":[]},{"name":"Delete Folder","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/folders/:id","host":["{{baseUrl}}"],"path":["folders",":id"],"variable":[{"key":"id","value":"folder_id_here"}]},"description":"Delete folder. Contained QR codes remain safe in workspace root."},"response":[]}]},{"name":"Design Templates","description":"Reusable QR code visual themes, styling palettes, and branding presets.","item":[{"name":"List Templates","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/templates","host":["{{baseUrl}}"],"path":["templates"]},"description":"List all design templates available to the workspace."},"response":[]},{"name":"Create Template","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Brand Dark Minimal\",\n  \"config\": {\n    \"fgColor\": \"#0f172a\",\n    \"bgColor\": \"#ffffff\",\n    \"dotType\": \"rounded\",\n    \"cornerSquareType\": \"extra-rounded\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/templates","host":["{{baseUrl}}"],"path":["templates"]},"description":"Save a new QR design template."},"response":[]},{"name":"Get Template by ID","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/templates/:id","host":["{{baseUrl}}"],"path":["templates",":id"],"variable":[{"key":"id","value":"template_id_here"}]},"description":"Get styling details of a design template."},"response":[]},{"name":"Update Template","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Brand Dark Vibrant\",\n  \"config\": {\n    \"fgColor\": \"#1e1b4b\",\n    \"bgColor\": \"#ffffff\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/templates/:id","host":["{{baseUrl}}"],"path":["templates",":id"],"variable":[{"key":"id","value":"template_id_here"}]},"description":"Update template name or styling configuration."},"response":[]},{"name":"Delete Template","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/templates/:id","host":["{{baseUrl}}"],"path":["templates",":id"],"variable":[{"key":"id","value":"template_id_here"}]},"description":"Delete a custom design template."},"response":[]}]},{"name":"Digital Catalogues & Menus","description":"Hierarchical catalogue system with sections, items, variants, add-ons, and stock availability toggles.","item":[{"name":"List Catalogues","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/catalogs","host":["{{baseUrl}}"],"path":["catalogs"]},"description":"List workspace catalogues."},"response":[]},{"name":"Create Catalogue","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"title\": \"Bistro Menu\",\n  \"businessName\": \"The Corner Bistro\",\n  \"template\": \"restaurant\",\n  \"currency\": \"INR\",\n  \"contactCtaLabel\": \"Order on WhatsApp\",\n  \"whatsapp\": \"919876543210\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/catalogs","host":["{{baseUrl}}"],"path":["catalogs"]},"description":"Create a new digital catalogue or menu."},"response":[]},{"name":"Get Catalogue Details","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/catalogs/:id","host":["{{baseUrl}}"],"path":["catalogs",":id"],"variable":[{"key":"id","value":"cat_id_here"}]},"description":"Get full hierarchical catalogue object including sections and items."},"response":[]},{"name":"Update Catalogue","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"title\": \"Updated Bistro Menu\",\n  \"businessName\": \"The Corner Bistro & Bar\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/catalogs/:id","host":["{{baseUrl}}"],"path":["catalogs",":id"],"variable":[{"key":"id","value":"cat_id_here"}]},"description":"Update catalogue metadata and settings."},"response":[]},{"name":"Delete Catalogue","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/catalogs/:id","host":["{{baseUrl}}"],"path":["catalogs",":id"],"variable":[{"key":"id","value":"cat_id_here"}]},"description":"Permanently delete catalogue, sections, and items."},"response":[]},{"name":"Publish Catalogue","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/catalogs/:id/publish","host":["{{baseUrl}}"],"path":["catalogs",":id","publish"],"variable":[{"key":"id","value":"cat_id_here"}]},"description":"Publishes catalogue and binds public routing."},"response":[]},{"name":"Unpublish Catalogue","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/catalogs/:id/unpublish","host":["{{baseUrl}}"],"path":["catalogs",":id","unpublish"],"variable":[{"key":"id","value":"cat_id_here"}]},"description":"Reverts catalogue to draft status."},"response":[]},{"name":"Duplicate Catalogue","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/catalogs/:id/duplicate","host":["{{baseUrl}}"],"path":["catalogs",":id","duplicate"],"variable":[{"key":"id","value":"cat_id_here"}]},"description":"Deep-clones catalogue, categories, items, and variants to a draft copy."},"response":[]},{"name":"List Catalogue Sections","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/catalogs/:id/sections","host":["{{baseUrl}}"],"path":["catalogs",":id","sections"],"variable":[{"key":"id","value":"cat_id_here"}]},"description":"List all categories/sections in catalogue."},"response":[]},{"name":"Create Catalogue Section","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Signature Desserts\",\n  \"description\": \"Handcrafted daily\",\n  \"sortOrder\": 1\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/catalogs/:id/sections","host":["{{baseUrl}}"],"path":["catalogs",":id","sections"],"variable":[{"key":"id","value":"cat_id_here"}]},"description":"Add a category/section to catalogue."},"response":[]},{"name":"List Catalogue Items","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/catalogs/:id/items","host":["{{baseUrl}}"],"path":["catalogs",":id","items"],"variable":[{"key":"id","value":"cat_id_here"}]},"description":"List all items in catalogue."},"response":[]},{"name":"Create Catalogue Item","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Belgian Chocolate Truffle Cake\",\n  \"sectionId\": \"sec_12345\",\n  \"price\": 450,\n  \"pricingType\": \"starting_from\",\n  \"badge\": \"Bestseller\",\n  \"metadata\": {\n    \"schemaVersion\": 1,\n    \"dietary\": [\n      \"Eggless\"\n    ],\n    \"variants\": [\n      {\n        \"name\": \"500g\",\n        \"price\": 450,\n        \"isDefault\": true,\n        \"isAvailable\": true\n      },\n      {\n        \"name\": \"1kg\",\n        \"price\": 850,\n        \"isDefault\": false,\n        \"isAvailable\": true\n      }\n    ],\n    \"addOns\": [\n      {\n        \"name\": \"Acrylic Topper\",\n        \"price\": 120,\n        \"maxQuantity\": 1,\n        \"isAvailable\": true\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/catalogs/:id/items","host":["{{baseUrl}}"],"path":["catalogs",":id","items"],"variable":[{"key":"id","value":"cat_id_here"}]},"description":"Create item with variants and add-ons."},"response":[]},{"name":"Update Catalogue Item","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"price\": 480,\n  \"badge\": \"Chef Special\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/catalogs/:id/items/:itemId","host":["{{baseUrl}}"],"path":["catalogs",":id","items",":itemId"],"variable":[{"key":"id","value":"cat_id_here"},{"key":"itemId","value":"item_id_here"}]},"description":"Update item details, variants, or add-ons."},"response":[]},{"name":"Delete Catalogue Item","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/catalogs/:id/items/:itemId","host":["{{baseUrl}}"],"path":["catalogs",":id","items",":itemId"],"variable":[{"key":"id","value":"cat_id_here"},{"key":"itemId","value":"item_id_here"}]},"description":"Permanently delete an item from catalogue."},"response":[]},{"name":"Toggle Item Availability (1-Click)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"isAvailable\": false\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/catalogs/:id/items/:itemId/toggle-availability","host":["{{baseUrl}}"],"path":["catalogs",":id","items",":itemId","toggle-availability"],"variable":[{"key":"id","value":"cat_id_here"},{"key":"itemId","value":"item_id_here"}]},"description":"Atomic 1-click toggle for in-stock vs sold-out state."},"response":[]}]},{"name":"Social Profiles","description":"Manage multi-link social landing pages and branded biolink cards.","item":[{"name":"List Social Profiles","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/social-profiles","host":["{{baseUrl}}"],"path":["social-profiles"]},"description":"List all social profiles in workspace."},"response":[]},{"name":"Create Social Profile","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"title\": \"Official Brand Links\",\n  \"bio\": \"Welcome to our brand profile\",\n  \"links\": [\n    {\n      \"label\": \"Website\",\n      \"url\": \"https://example.com\"\n    },\n    {\n      \"label\": \"Instagram\",\n      \"url\": \"https://instagram.com/example\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/social-profiles","host":["{{baseUrl}}"],"path":["social-profiles"]},"description":"Create a new social biolink profile."},"response":[]},{"name":"Get Social Profile by ID","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/social-profiles/:id","host":["{{baseUrl}}"],"path":["social-profiles",":id"],"variable":[{"key":"id","value":"profile_id_here"}]},"description":"Get details and links of a social profile."},"response":[]},{"name":"Update Social Profile","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"title\": \"Updated Brand Links\",\n  \"bio\": \"Explore our latest releases\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/social-profiles/:id","host":["{{baseUrl}}"],"path":["social-profiles",":id"],"variable":[{"key":"id","value":"profile_id_here"}]},"description":"Update social profile content and links."},"response":[]},{"name":"Delete Social Profile","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/social-profiles/:id","host":["{{baseUrl}}"],"path":["social-profiles",":id"],"variable":[{"key":"id","value":"profile_id_here"}]},"description":"Delete a social profile."},"response":[]}]},{"name":"Hosted Documents","description":"PDF and asset hosting linked directly to dynamic campaign QRs.","item":[{"name":"List Documents","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/documents","host":["{{baseUrl}}"],"path":["documents"]},"description":"List hosted PDF and image documents."},"response":[]},{"name":"Upload Document","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"title\": \"Product Catalog PDF\",\n  \"fileType\": \"pdf\",\n  \"fileUrl\": \"https://example.com/uploads/brochure.pdf\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/documents","host":["{{baseUrl}}"],"path":["documents"]},"description":"Register a hosted document (deducts 2 QR credits)."},"response":[]},{"name":"Get Document by ID","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/documents/:id","host":["{{baseUrl}}"],"path":["documents",":id"],"variable":[{"key":"id","value":"doc_id_here"}]},"description":"Get hosted document details and download URL."},"response":[]},{"name":"Delete Document","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/documents/:id","host":["{{baseUrl}}"],"path":["documents",":id"],"variable":[{"key":"id","value":"doc_id_here"}]},"description":"Delete a hosted document from workspace storage."},"response":[]}]},{"name":"Scan Analytics","description":"Real-time, privacy-preserving scan telemetry and demographic exports.","item":[{"name":"Workspace Analytics","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/analytics/workspace?days=30","host":["{{baseUrl}}"],"path":["analytics","workspace"],"query":[{"key":"days","value":"30"}]},"description":"Aggregated scan metrics across all QR codes in workspace."},"response":[]},{"name":"Folder Analytics","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/analytics/folders/:id?days=30","host":["{{baseUrl}}"],"path":["analytics","folders",":id"],"variable":[{"key":"id","value":"folder_id_here"}],"query":[{"key":"days","value":"30"}]},"description":"Aggregated scan metrics across QR codes within a specific folder."},"response":[]},{"name":"Single QR Scan Analytics","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/analytics/:id","host":["{{baseUrl}}"],"path":["analytics",":id"],"variable":[{"key":"id","value":"qr_id_here"}]},"description":"Detailed 30-day metrics, devices, OS, and city rollups for a single QR code."},"response":[]},{"name":"Export Scan Logs (CSV / JSON)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/analytics/:id/export?format=csv&limit=1000","host":["{{baseUrl}}"],"path":["analytics",":id","export"],"variable":[{"key":"id","value":"qr_id_here"}],"query":[{"key":"format","value":"csv"},{"key":"limit","value":"1000"}]},"description":"Export privacy-preserving scan records (ip_hash, user_agent, timestamp) in CSV or JSON."},"response":[]}]}]}