How ko-di works.
Barcodes carry critical data with no rules attached. You write the rules once. Every scan after that comes back structured, validated and explained.
- 01
Send the raw payload
Post the scan exactly as the reader produced it. No trimming, no cleanup. Spacing is data and we treat it that way.
POST /v1/decode
- 02
Match a ruleset
Your ruleset is your standard: required fields, blocked fields, aliases, carrier allow-lists and validations. Lower priority wins when two match.
ruleset_id: bcbp-airline-alliance
- 03
Apply intelligence
Each field is parsed, renamed and checked against your rules. Nothing is silently dropped — a failing field still comes back, flagged.
seat_number matches ^[0-9]{3}[A-K]$
- 04
Output and analyze
One response shape whether the scan passed or failed, with every violation named. Volume, failure rates and rule hits land in analytics.
violations[0].severity: error
Straight answers.
- What is a ruleset?
- A written version of the standard you already enforce by hand. Fields you require, fields you refuse to store, names you use internally, and the patterns a value must match.
- What happens to a bad scan?
- It is returned, not rejected. You get the parsed data plus the rule that failed, the severity and a message you can put in front of an operator.
- Which formats are supported?
- IATA BCBP, QR, Code 128, Data Matrix and PDF417. Omit barcode_type and the format is detected from the payload.
- How fast is it?
- 42 ms median decode, 99.9% uptime. Sandbox and prod hold separate rulesets and separate keys.
