API documentation
Everything you need to make a barcode from FileMaker, curl or code.
Quick start
Create a key on your dashboard, then:
curl "https://barcode.fmdeploy.com/v2/barcode/code128?text=ABC-12345&label=true" \ -H "Authorization: Bearer bc_live_your_key" -o barcode.png
Authentication
Send your key one of these ways. The first is best.
Authorization: Bearer bc_live_…X-API-Key: bc_live_…- HTTP Basic auth with the key as the username (password ignored)
?key=bc_live_…on the URL — only if you can’t set headers, because URLs end up in logs
Make a barcode
GET https://barcode.fmdeploy.com/v2/barcode/{format}?text=...
POST https://barcode.fmdeploy.com/v2/barcode/{format} JSON or form body, for long QR/PDF417 data| Parameter | Applies to | Default | Notes |
|---|---|---|---|
text | all | — | Required. Up to 4,000 characters. |
output | all | png | png or svg |
scale | all | 1 · 3 · 2 | Pixels per module, 1–20. Defaults: 1D · QR and Data Matrix · PDF417 |
thickness | 1D | 30 | Bar height in pixels at scale 1 |
label | all | false | Print the text under the barcode |
fontsize | all | 8 | Label size. 1D labels max out at 24. |
rotation | all | 0 | 0, 90, 180 or 270, clockwise |
dpi | PNG | 72 | Stored in the file. Changes print size, not pixels. |
errorlevel | QR, PDF417 | M · 2 | QR: L, M, Q, H. PDF417: 0–8. |
quietzone | 2D | true | White margin around the symbol |
size qrsize | QR | 3 · -1 | size 1 or 2 gives Micro QR. qrsize is the version (-1 = auto). |
columns compact | PDF417 | -1 · false | Data columns (-1 = auto). compact gives truncated PDF417. |
Errors and limits
Errors are JSON with a 400, 401, 404 or 429 status:
{ "error": { "code": "invalid_data", "message": "EAN-13 must be 12 or 13 digits" } }Free-plan responses carry X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. GET /v2/usage returns your plan, this month’s count and the reset date. GET /v2/formats lists the formats.
Formats
| format | Name | Example text |
|---|---|---|
code128 | Code 128 | ABC-12345 |
gs1128 | GS1-128 | (01)09501101530003(10)ABC123 |
code39 | Code 39 | ABC123 |
code39extended | Code 39 Extended | Abc-123 |
code93 | Code 93 | ABC123 |
code11 | Code 11 | 0123-4567 |
codabar | Codabar | A40156B |
ean13 | EAN-13 | 590123412345 |
ean8 | EAN-8 | 9638507 |
upca | UPC-A | 01234567890 |
upce | UPC-E | 0123456 |
upcextension2 | UPC/EAN 2-digit extension | 05 |
upcextension5 | UPC/EAN 5-digit extension | 90200 |
isbn | ISBN (as EAN-13) | 978-1-56581-231-4 |
interleaved2of5 | Interleaved 2 of 5 | 1234567890 |
standard2of5 | Standard 2 of 5 | 1234567 |
msi | MSI Plessey | 0123456 |
postnet | POSTNET | 01234 |
qrcode | QR Code | https://barcode.fmdeploy.com |
pdf417 | PDF417 | Hello from FileMaker |
datamatrix | Data Matrix | SN-0001234 |
FileMaker
Insert from URL [ Select ; With dialog: Off ; Target: Items::Barcode ; "https://barcode.fmdeploy.com/v2/barcode/code128?label=true&text=" & GetAsURLEncoded ( Items::SKU ) ; cURL options: "--header \"Authorization: Bearer " & $$BARCODE_KEY & "\"" ]
For long QR or PDF417 data, POST it instead of putting it in the URL:
Set Variable [ $data ; "text=" & GetAsURLEncoded ( Items::Payload ) ] Insert from URL [ Select ; With dialog: Off ; Target: Items::Barcode ; "https://barcode.fmdeploy.com/v2/barcode/pdf417" ; cURL options: "--data @$data --header \"Authorization: Bearer " & $$BARCODE_KEY & "\"" ]
Migrating from 1.0
Your existing /barcode/1.0/?c=… URLs keep working on both api.fmsdb.com and barcode.fmdeploy.com, with the same parameters and PNG output.
- Create a free account and an API key.
- Wherever your solution sends the old shared username and password, send your new key as the username and leave the password empty. Nothing else changes.
- Optionally move to
/v2/barcode/{format}for SVG, POST and JSON errors.
The shared 1.0 credential stops working on 2027-02-15. On 1.0 URLs, problems come back as an image that says what’s wrong, so you see it in the container field.