{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["code-tabs","code-tab","admonition"]},"type":"markdown"},"seo":{"title":"Create a Zimarker","description":"Comprehensive API documentation for Zimark Integration platform. Learn how to seamlessly integrate and leverage Zimark's powerful features into your warehouse operations.","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"__idx":0,"id":"create-a-zimarker"},"children":["Create a Zimarker"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Get a ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/key-concepts#zimarker"},"children":["Zimarker"]}," for a ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/key-concepts#pallet"},"children":["pallet"]},". You send a pallet's WMS ID and get back an image of the Zimarker, already linked to that pallet. Use this image to print onto the actual label."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"__idx":1,"id":"prerequisites"},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["An API key (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ZIM.…"]},"). See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/rest-api/authentication"},"children":["Authentication"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A pallet's WMS ID."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"__idx":2,"id":"get-a-zimarker-for-your-pallet"},"children":["Get a Zimarker for your pallet"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Send the pallet's WMS ID. The response comes back with the Zimarker image."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api#operation/getAndCouple"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /integration/rest/api/v1/track/get-and-couple"]}]}]},{"$$mdtype":"Tag","name":"CodeTabs","attributes":{},"children":[{"$$mdtype":"Tag","name":"CodeTab","attributes":{"label":"cURL"},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X POST \"https://api.zimark.link/integration/rest/api/v1/track/get-and-couple\" \\\n  -H \"X-AUTH-KEY: ZIM.your-api-key-here\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"wmsId\": \"LPN00012345\"\n  }'\n","lang":"bash"},"children":[]}]},{"$$mdtype":"Tag","name":"CodeTab","attributes":{"label":"JavaScript"},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","header":{"controls":{"copy":{}}},"source":"const response = await fetch(\n  'https://api.zimark.link/integration/rest/api/v1/track/get-and-couple',\n  {\n    method: 'POST',\n    headers: {\n      'X-AUTH-KEY': 'ZIM.your-api-key-here',\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({ wmsId: 'LPN00012345' })\n  }\n);\n\nconst result = await response.json();\nconsole.log(result.markerCode);\n","lang":"javascript"},"children":[]}]},{"$$mdtype":"Tag","name":"CodeTab","attributes":{"label":"Python"},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"import requests\n\nresponse = requests.post(\n    'https://api.zimark.link/integration/rest/api/v1/track/get-and-couple',\n    headers={\n        'X-AUTH-KEY': 'ZIM.your-api-key-here',\n        'Content-Type': 'application/json'\n    },\n    json={'wmsId': 'LPN00012345'}\n)\n\nresult = response.json()\nprint(result['markerCode'])\n","lang":"python"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"__idx":3,"id":"request-fields"},"children":["Request fields"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Required"},"children":["Required"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["wmsId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The pallet's WMS ID."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"__idx":4,"id":"success-response"},"children":["Success response"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["200 OK"]}," returns the marker, its printable image, and the pallet it was linked to:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"markerCode\": \"68\",\n  \"markerImage\": \"iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYAQAAAACWHaVxAAABqUlEQVR4Xu3MsU0EMBAAwe+A/rukA0js5GS/WPgA6WeTk+3zPL5e12Ne/CFWi9VitVgtVovVYrVYLVaL1WK1WC1Wi9X679bn4/d9sFKsFqvFarFarBarxWqxWqwWq8VqsVqs1jtbz+nzK2tu786vrLm9O7+y5vbu/Mqa27vzK2tu786vrLm9O7+y5vbu/Mqa27vzK2tu786vrLm9O7+y5vbu/Mqa27vzK2tu786vrLm9O7+yrtvPj2uybp/HcU3W7fM4rsm6fR7HNVm3z+O4Juv2eRzXZN0+j+OarNvncVyTdfs8jmuybp/HcU3W7fM4rsm6fR7HNVm3z+O4Juv2eRzXZN0+j+Oa72T9KBZrxmLNWKwZizVjsWYs1ozFmrFYM9a0xvbzWKwZizVjsWYs1ozFmrFYMxZrxmLNWC1Wi9VitVgtVovVYrVYLVaL1WK1WC1Wi9VitVgtVovVYrVYLVaL1WK1WC1Wi9VitVgtVovVYrVYLVaL1WK1WC1Wi9VitVgtVovVYrVYrXe0XhGrxWqxWqwWq8VqsVqsFqvFarFarBarxWq9g/UN4g40ck/G8nEAAAAASUVORK5CYII=\",\n   \"track\": {\n        \"uuid\": \"91f97808-9dab-4bcd-b619-d97d6de2131a\",\n        \"createDate\": 1783164318293,\n        \"updateDate\": 1783164318293,\n        \"deepLink\": \"https://67uo7.app.link/LBMPRRKWu4b\",\n        \"trackCode\": \"001-109\",\n        \"wmsId\": \"LPN00012345\",\n        \"status\": \"ACTIVE\",\n        \"zimarkCodes\": [\n            {\n                \"uuid\": \"401f6d6d-e155-4a64-b23b-ea9eb405fe04\",\n                \"zimarkMarkerValue\": \"68\",\n                \"markerType\": \"ZMARKER\",\n                \"coupledAt\": 1783164318353\n            }\n        ]\n    }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["markerCode"]},": the Zimarker value, unique and never reused. This is what prints on the label."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["markerImage"]},": the marker as a base64-encoded PNG (1-bit, 600×600 black-and-white), ready to print."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["track"]},": the pallet it was linked to. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["wmsId"]}," is your pallet ID; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["zimarkCodes"]}," lists the Zimarker(s) it now carries (the coupled marker also appears here as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["zimarkCodes[].zimarkMarkerValue"]},", the same value as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["markerCode"]},")."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"__idx":5,"id":"turn-it-into-an-image"},"children":["Turn it into an image"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["markerImage"]}," is a base64-encoded PNG. To display it, wrap it in a data URI and set it as an image source, with no decoding step and no extra request:"]},{"$$mdtype":"Tag","name":"CodeTabs","attributes":{},"children":[{"$$mdtype":"Tag","name":"CodeTab","attributes":{"label":"HTML"},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"html","header":{"controls":{"copy":{}}},"source":"<img src=\"data:image/png;base64,{markerImage}\" alt=\"Zimarker\" />\n","lang":"html"},"children":[]}]},{"$$mdtype":"Tag","name":"CodeTab","attributes":{"label":"JavaScript"},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","header":{"controls":{"copy":{}}},"source":"const img = document.createElement('img');\nimg.src = `data:image/png;base64,${result.markerImage}`;\ndocument.body.appendChild(img);\n","lang":"javascript"},"children":[]}]},{"$$mdtype":"Tag","name":"CodeTab","attributes":{"label":"Python"},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"# Save the PNG to a file\nimport base64\n\nwith open(f\"marker-{result['markerCode']}.png\", 'wb') as f:\n    f.write(base64.b64decode(result['markerImage']))\n","lang":"python"},"children":[]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["That's the whole marker. Here's the one returned above (code ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["68"]},"), rendered straight from its base64:"]},{"$$mdtype":"Tag","name":"img","attributes":{"src":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYAQAAAACWHaVxAAABqUlEQVR4Xu3MsU0EMBAAwe+A/rukA0js5GS/WPgA6WeTk+3zPL5e12Ne/CFWi9VitVgtVovVYrVYLVaL1WK1WC1Wi9X679bn4/d9sFKsFqvFarFarBarxWqxWqwWq8VqsVqs1jtbz+nzK2tu786vrLm9O7+y5vbu/Mqa27vzK2tu786vrLm9O7+y5vbu/Mqa27vzK2tu786vrLm9O7+y5vbu/Mqa27vzK2tu786vrLm9O7+yrtvPj2uybp/HcU3W7fM4rsm6fR7HNVm3z+O4Juv2eRzXZN0+j+OarNvncVyTdfs8jmuybp/HcU3W7fM4rsm6fR7HNVm3z+O4Juv2eRzXZN0+j+Oa72T9KBZrxmLNWKwZizVjsWYs1ozFmrFYM9a0xvbzWKwZizVjsWYs1ozFmrFYMxZrxmLNWC1Wi9VitVgtVovVYrVYLVaL1WK1WC1Wi9VitVgtVovVYrVYLVaL1WK1WC1Wi9VitVgtVovVYrVYLVaL1WK1WC1Wi9VitVgtVovVYrVYrXe0XhGrxWqxWqwWq8VqsVqsFqvFarFarBarxWq9g/UN4g40ck/G8nEAAAAASUVORK5CYII=","alt":"Zimarker for code 68","width":"240","height":"240","style":{"display":"block","margin":"0 auto"}},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Prefer a URL over inline bytes? Add ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["?imageDelivery=URL"]}," to the request. The response then returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["markerImageUrl"]},", a public PNG URL (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["…/zmarker-code/image/{markerCode}.png"]},") you can use in your label, instead of a base64-encoded PNG."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Getting the image onto a physical label (printer setup, label layout, and print formats) happens outside Zimark's APIs. See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/zimarkers/printing"},"children":["Printing Zimarkers"]}," for how to do it right."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"__idx":6,"id":"confirm-it-worked"},"children":["Confirm it worked"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The response was ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["200 OK"]}," with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["markerCode"]}," and a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["markerImage"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The returned ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["track.wmsId"]}," matches the pallet ID you sent."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The decoded image prints as a Zimarker. Once the label is on the pallet, a camera can read it."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If a call fails, check ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/rest-api/troubleshoot"},"children":["Troubleshooting"]},". A ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]}," from this endpoint usually means a duplicate WMS ID, an unknown custom-field key, or insufficient Zimarker inventory."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["High volume and offline printing"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide couples one pallet synchronously: the result contains everything you need for this specific pallet."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For higher throughput, or to generate Zimarkers for offline printing, the Coupling API offers variants this guide doesn't cover: asynchronous batch generation."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"__idx":7,"id":"related"},"children":["Related"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/zimarkers/coupling-api"},"children":["Coupling API"]},": the concepts behind allocation, coupling, banks, and sync vs. async."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/guides/create-update-manifest"},"children":["Create and update a Manifest"]},": group coupled pallets into a manifest for gate verification."]}]}]},"headings":[{"value":"Create a Zimarker","id":"create-a-zimarker","depth":1},{"value":"Prerequisites","id":"prerequisites","depth":2},{"value":"Get a Zimarker for your pallet","id":"get-a-zimarker-for-your-pallet","depth":2},{"value":"Request fields","id":"request-fields","depth":3},{"value":"Success response","id":"success-response","depth":3},{"value":"Turn it into an image","id":"turn-it-into-an-image","depth":2},{"value":"Confirm it worked","id":"confirm-it-worked","depth":2},{"value":"Related","id":"related","depth":2}],"frontmatter":{"seo":{"title":"Create a Zimarker"}},"lastModified":"2026-07-07T18:25:08.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/sync-coupling","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}