Identifiers and scanning
Identifiers map exact barcode or QR payloads to assets, locations, and parts inside an organization. Customer part barcodes may be shared by multiple parts; asset, location, and Canary-generated labels remain unique. The public API supports customer-owned labels and Canary-generated QR values.Choose a workflow
Attach an existing label
Send the identifier’s business system and value with its Canary target.payload defaults to value.
scan_values when one physical label has several exact scanner representations. Preserve each raw payload, including a GS1 group separator when present.
Resolve scanner output
Send the scanner’s raw output unchanged:alternate_payloads accepts up to three additional exact values when a scanner library emits multiple candidates. The resolver is organization-scoped and omits archived records and unavailable modules.
The response data.status is resolved for one target, unclaimed for no admitted match, or ambiguous when multiple parts share a customer barcode. An ambiguous result includes up to 20 candidates, each with target, name, partNumber, and identifier metadata. Require the user to choose a candidate; never automatically use the first. hasMore: true means additional matches exist and the user should search the parts catalog.
Generate a Canary identifier
POST /identifiers/generate. Store and render the returned scan value exactly.
Import in two phases
For bulk migrations, send up to 1,000 rows to/identifiers/import/preview. Resolve every reported validation or conflict before sending the same row shape to /identifiers/import/apply.
The apply operation is atomic: any conflict prevents the batch from being committed. A 409 identifier_conflict can indicate a duplicate payload or a conflicting primary assignment.
Payload rules
- Payload identity is exact and case-sensitive.
valueandpayloadaccept up to 4,096 UTF-8 bytes.systemaccepts up to 255 bytes.format_hintaccepts up to 64 bytes.- Resolve within the organization associated with the API key.
- Retiring an identifier removes its active scan values from resolution.