GS1 print export
Render your GS1 Digital Links to print-ready artwork — vector, prepress-ready, with a manifest — and download it as a zip. Rendering happens server-side and asynchronously: you create a job, poll it, then fetch a presigned download URL.
Requires gs1:write to create and delete jobs, gs1:read to list and fetch
them.
Create a job
Section titled “Create a job”POST /v1/gs1/exports — scope gs1:write
curl -X POST https://api.neon.xengo.io/v1/gs1/exports \ -H "Authorization: Bearer $XENGO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Spring 2026 — spirits", "tags": ["spring-2026"], "formats": ["pdf", "eps"], "sizeMode": "xdim", "xdimMm": 0.495, "bleedMm": 3, "marks": true }'{ "jobId": "2fc9f31d8e92e94d", "name": "Spring 2026 — spirits", "status": "pending", "createdAt": "2026-07-20T14:00:00+00:00"}Returns 202 immediately. Nothing is rendered yet.
Which codes get exported
Section titled “Which codes get exported”| Field | Type | Notes |
|---|---|---|
name |
string | Label for the job list |
query |
string | Free-text match on code, destination, title and tags |
tags |
array of strings | Only records carrying all of these tags |
Send neither and you export every GS1 Digital Link you have.
Symbol and sizing
Section titled “Symbol and sizing”| Field | Type | Notes |
|---|---|---|
symbologies |
array | qr, dm (GS1 DataMatrix), or both. Default ["qr"] |
sizeMode |
string | total (default) fixes overall size; xdim fixes the module |
sizeMm |
number | Overall printed size when sizeMode is total. Default 25 |
xdimMm |
number | Module size when sizeMode is xdim. Default 0.495 |
ec |
string | Error correction L/M/Q/H. Default H |
hri |
boolean | Human-readable interpretation beneath the code. Default true |
ean13 |
boolean | Also render a linear EAN-13 from each GTIN |
The GS1 retail-POS X-dimension range is 0.396–0.990 mm. Fix the module
(sizeMode: "xdim") when the code must scan at POS — the overall size then
varies with each code’s data, and every code’s real dimensions land in the
manifest.
Output and prepress
Section titled “Output and prepress”| Field | Type | Notes |
|---|---|---|
formats |
array | svg, pdf, eps, ai. Default ["svg"] |
raster |
string | png300, png600, tiff300, tiff600 — adds a raster copy |
sheet |
string | a4, avery-l7160 or roll-100 — adds an imposed sheet PDF |
bleedMm |
number | 0–10 mm beyond trim |
marks |
boolean | Crop marks + registration crosshairs outside the bleed |
ink |
string | k100 (default) or spot |
spotName |
string | Separation name when ink is spot, e.g. PANTONE 3005 C |
iccIntent |
string | Print condition as a PDF output intent, e.g. FOGRA39 |
PDF, EPS and AI are CMYK 100% K with overprint on — never rich black. See Print & prepress export for what the printer actually needs.
Poll the job
Section titled “Poll the job”GET /v1/gs1/exports/{id} — scope gs1:read
curl https://api.neon.xengo.io/v1/gs1/exports/2fc9f31d8e92e94d \ -H "Authorization: Bearer $XENGO_API_KEY"{ "jobId": "2fc9f31d8e92e94d", "status": "ready", "count": 412, "sizeBytes": 5883201, "truncated": false, "createdAt": "2026-07-20T14:00:00+00:00", "finishedAt": "2026-07-20T14:00:06+00:00", "downloadUrl": "https://…s3.eu-west-2.amazonaws.com/…", "urlExpiresIn": 604800}Status runs pending → rendering → ready, or failed with an error.
Most jobs finish in seconds; poll every few seconds rather than tightly.
downloadUrl is minted fresh on each GET and is valid for 7 days — fetch a
new one rather than storing it. truncated is true if the job hit the
5,000-code cap; narrow the filter and run it again.
List and delete
Section titled “List and delete”GET /v1/gs1/exports — scope gs1:read
{ "jobs": [{ "jobId": "2fc9f31d8e92e94d", "status": "ready", "count": 412 }] }DELETE /v1/gs1/exports/{id} — scope gs1:write
Removes the job and its zip, and returns 204. Jobs and zips expire
automatically after 30 days — exports are regenerable, so nothing is kept
that you can’t recreate.
What’s in the zip
Section titled “What’s in the zip”01_09506000134352_10_LOT01.pdf one file per code, per format01_09506000134352_10_LOT01.eps01_09506000134352_10_LOT01.dm.pdf GS1 DataMatrix (when requested)01_09506000134352_10_LOT01.ean13.pdfsheet-a4.pdf imposed sheet (when requested)manifest.csvREADME.txt hand-off notes for the printermanifest.csv carries one row per code: code, gtin, cpv, batch,
serial, dl_url, destination, link_types, size_mm, module_mm,
checks and the files produced — enough for a repro house to place artwork
programmatically.
