barcode
Runs in your own browser. Covers EAN/UPC, Code 128, GS1-128, ITF-14, Data Matrix and the rest. Separate from `qr-code`: a QR is one symbology, this is the rest of them, and the check digits differ per family.
v2 beta browser · 1 tokens
Call it
POST https://timbrica.com/v1/tools/barcode/runs
Authorization: Bearer $TIMBRICA_KEY
Idempotency-Key: <your retry-safe key>
Content-Type: application/json
Input
| Field | Type | Required | Notes |
|---|---|---|---|
value | string | yes |
The data to encode. Must satisfy the chosen symbology — EAN-13 wants 12 or 13 digits, Code 128 takes free text.
max length: 2000 |
type | string | no |
Barcode symbology, as the page names it.
one of: ean13, ean8, upca, upce, code128, gs1_128, itf14, datamatrix default: code128 |
format | string | no |
Export format. SVG stays sharp at print size.
one of: png, svg default: png |
Browser recipe
This tool runs in your own browser. The work order you receive carries this recipe with the placeholders filled in; the selectors below are a versioned contract, not implementation detail — they do not change without a version bump.
{
"engine": "dom",
"steps": [
{
"action": "select",
"selector": "[data-tmb-api=\"type\"]",
"value": "{{type}}"
},
{
"action": "fill",
"selector": "[data-tmb-api=\"value\"]",
"value": "{{value}}"
},
{
"action": "wait",
"selector": "[data-tmb-api=\"download\"][data-tmb-format=\"{{format}}\"]",
"timeout_s": 60
},
{
"action": "click",
"selector": "[data-tmb-api=\"download\"][data-tmb-format=\"{{format}}\"]"
}
],
"result": {
"kind": "download",
"settles": "automatically"
}
}
What each action obliges you to do — recipes use nothing else:
upload | Put the input file into the file input matched by `selector` (it may be visually hidden: set it directly, e.g. Playwright setInputFiles). The file must match `accept`. |
click | Click the element once it is visible AND enabled. A control that stays disabled means an earlier step did not take effect. |
fill | Replace the value of a text input with `value`, firing input/change events as typing would. |
select | Choose the option whose value is `value` in a <select>. |
wait | Wait until the element is visible, up to `timeout_s` seconds (default 30). |
Race every step against the work order's abort_when selector
(html[data-tmb-run="failed"]). If it matches, the tool
refused the job — for example a video that would not get any smaller. Stop, and GET the run:
error.detail says why. Nothing is charged.
Errors it can return
validation_failed
insufficient_tokens
History
- v2 — 2026-09-11 — The value step uses the documented `fill` action instead of the undocumented `set`. Same control, same effect; an agent implementing only documented actions now types the value.
- v1 — 2026-08-02 — Initial release (browser lane).
This contract cannot change without a new version and a line above: a test compares the published schema, pricing and limits against a committed lockfile and fails the build otherwise. Subscribe to /v1/changelog to be told when something moves.