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.

  1. 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

  2. 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

  3. 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]$

  4. 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.
Start decodingRequest a demo