Documentation
Resolver & Enterprise API
isbn.link implements the GS1 Digital Link URI Syntax and GS1-Conformant Resolver standards.
URI syntax
ISBN-13 is treated as GTIN. Values are normalized to 14 digits with a leading zero. Canonical form uses numeric Application Identifiers:
https://isbn.link/01/{GTIN-14}
https://isbn.link/01/{GTIN}/10/{lot}
https://isbn.link/01/{GTIN}/10/{lot}/21/{serial}
https://isbn.link/01/{GTIN}/22/{cpv}/10/{lot}/21/{serial}
# Qualifier order (required): CPV (22) → lot (10) → serial (21)
# Legacy alpha /gtin/... is accepted and mapped to AI 01Resolution behaviour
- Default — HTTP 307 to the link typed
gs1:defaultLink. - linkType —
?linkType=gs1:pipredirects to that type; missing type returns404. - Invalid URI —
400 Bad Requestwith structured error body. - Unknown GTIN —
404 Not Found(never200on error). - CORS — enabled for GET, HEAD, OPTIONS as required by the resolver standard.
- Link headers — available resources exposed via HTTP
Link.
Linksets
Request the full set of links without redirecting:
GET /01/{GTIN}?linkType=linkset
GET /01/{GTIN}?linkType=all
Accept: application/linkset+json
# Response: application/linkset+json (RFC 9264 profile)Enterprise API
Authenticate with Authorization: Bearer il_… keys from the portal (Pro+).
/api/v1/itemsList/search catalog formats. Query: q, isbn, gtin, titleId, limit (1–500), offset. Returns work_name when linked to a title.
/api/v1/itemsCreate item. Body: { "isbn": "978…", "title": "…", "defaultLink": { "href": "…" } }
/api/v1/links?gtin=List links for a GTIN.
/api/v1/linksRegister link. Body: { "isbn", "linkType", "href", "isDefault?" }
/api/v1/barcodesGenerate barcode. Body: { "isbn", "symbology": "qrcode|datamatrix|ean13|composite", "format": "svg|png", "baseUrl"?, "includeSrp"?, "srp": "$19.99"?, "layout"?, "scale"?, "overlay": "none|scan-me|learn-more|interactive|more-info|custom"?, "overlayText"?, "overlayArrowStyle": "arc|brush|chevron|curve-down"?, "overlayTextStyle": "script|bold|sans|serif"?, "overlayArrowColor"?, "overlayTextColor"?, "overlayArrowWeight"?, "overlayPhoneIcon"?, "overlayPhoneIconScale"?, "overlayLayout"? }. Callouts sit in a band above the symbols (never cover QR/UPC). PNG matches SVG (sharp). Responses include X-Digital-Link-URI headers.
Barcodes
2D symbols encode the full Digital Link URI (scan → resolve). 1D EAN-13 encodes the GTIN for POS. Optional SRP expands the linear symbol with a Bookland EAN-5 price add-on ($19.99 → 51999) and encodes amount payable with ISO currency on the Digital Link (AI 3912, e.g. ?3912=8401999). Contrast analysis flags low-contrast and risky red/brown foregrounds per GS1 print guidance.
Optional consumer overlays bake a callout (e.g. “Scan me!”, “Interactive!”) with a curved arrow and optional phone glyph into SVG/PNG. Graphics live in a band above the barcode only — they never cover QR or UPC modules. PNG is a sharp raster of the same SVG as the studio preview. Options: overlay, overlayText, overlayArrowStyle (arc|brush|chevron|curve-down), overlayTextStyle (script|bold|sans|serif), overlayArrowColor / overlayTextColor, overlayArrowWeight, overlayPhoneIcon + overlayPhoneIconScale (0.25–1 of QR height), and overlayLayout (normalized drag handles for text + arrow tip).
InDesign plugin
Cover designers can search the publisher catalog and place dual-mark (QR + EAN), QR, EAN-13, or Data Matrix symbols from inside Adobe InDesign without leaving the layout. The panel calls the Enterprise API with a Pro+ API key; barcodes are generated on the server so quiet zones and Digital Link URIs match the portal Barcode Studio.
- Source —
indesign-plugin/(UXP panel, InDesign 2024+) - Install — sideload with Adobe UXP Developer Tools; Marketplace packaging is planned later
- Auth — portal Settings → API key → paste into plugin Settings
- Guide —
docs/indesign-plugin.md
Affinity script
Affinity by Canva does not yet offer a dockable third-party panel SDK comparable to Adobe UXP. isbn.link ships a Scripts panel tool that uses the same Enterprise catalog and barcode APIs as the InDesign plugin. Host place APIs are confirmed via a Phase 0 SPIKE on real Affinity builds.
- Source —
affinity-plugin/(single-file JS for Window → Scripts) - Auth — same Pro+
il_…API keys - Guide —
docs/affinity-plugin.md
Resolver description
Machine-readable capability document required by the Conformant Resolver standard:
/.well-known/gs1resolverTry it
Demo titles are seeded for local exploration. After adding your own ISBNs in the portal:
curl -i https://isbn.link/01/09780201616224 curl -H 'Accept: application/linkset+json' \ https://isbn.link/01/09780201616224