# Beepable > Drawing a barcode for a valid GTIN or an http(s) URL needs an account and a key. A picture key goes in k on an image address. An All routes key goes in Authorization: Bearer for JSON, batch, CSV, and label files, and never in an image address. Every route is described in /openapi.json. Automatic mode: 8, 12, 13, or 14 digits with a valid GS1 check digit become EAN-8, UPC-A, EAN-13, or ITF-14. A 10-character value starting with X00 becomes an Amazon FNSKU. An http or https URL, including a GS1 Digital Link, becomes a QR code. Keys 01, 00, 414, 415, and 417 must have a valid check digit, and 8006 must have one on its first 14 digits. A bad digit says: The GS1 identifier in this Digital Link has an invalid check digit. Name qr to encode the URL anyway. Name datamatrix for a Data Matrix of that URL. Anything else is an error until the caller names a symbology. A named symbology that cannot encode the value fails. It does not switch. A bad check digit is not a scannable barcode. The sentence is: Check digit is invalid for this GTIN. Name code128 to encode it anyway. /b/ returns that sentence as text. /i/ draws it so IMAGE can show it. Barcode, batch, and CSV routes need an API key. Sign in and create one. Send Authorization: Bearer, or k= on a URL. A picture key draws pictures and cannot call the batch or the CSV. Put that key in Z1. A missing picture key is a PNG of: This barcode needs an API key. Google Docs has no IMAGE formula. Insert the PNG address with Insert, Image, By URL. ## Routes - GET https://beepable.app/i/{symbology}.png?v=&k= the IMAGE formula for Excel and Google Sheets. No add-in. Failure is HTTP 200 and a PNG of the sentence. - Formula: =IMAGE("https://beepable.app/i/auto.png?v="&ENCODEURL(A2)&"&k="&$B$1) - GET https://beepable.app/b/{symbology}.png?v=&k= and GET https://beepable.app/b/{symbology}.json?v= with Bearer. Add hrt=1 to a picture to print the digits under EAN-8, EAN-13, and UPC-A. - GET https://beepable.app/excel?v=&s= always HTTP 200, image address or the error sentence - GET https://beepable.app/sheets?v=&s= same contract, used by the Apps Script - GET https://beepable.app/sheets/barcode.gs - POST https://beepable.app/api/batch JSON { items: [{ value, symbology? }] } up to 10,000 - POST https://beepable.app/csv text/csv or multipart field file, up to 10,000 rows - GET https://beepable.app/api index - GET https://beepable.app/docs human reference - GET https://beepable.app/openapi.json the OpenAPI 3.1 description of every route, with examples - GET https://beepable.app/l/fnsku.png?v=&t=&c=&set=&tpl=&k= one FNSKU label. Failure is HTTP 200 and a PNG of the sentence. - Formula: =IMAGE("https://beepable.app/l/fnsku.png?v="&ENCODEURL(A2)&"&t="&ENCODEURL(B2)&"&c=New&tpl=avery-5160&k="&$Z$1) - GET https://beepable.app/l/fnsku.pdf?v=&t=&c=&qty=&start=&tpl= one PDF, private, no-store - POST https://beepable.app/labels/fnsku.pdf one PDF of the good rows, header x-label-errors - POST https://beepable.app/labels/fnsku.csv the rows plus label_url, image_formula, and error - GET https://beepable.app/sample/fnsku-label.png the open sample label - GET https://beepable.app/fnsku the label page. The checker is https://beepable.app/fnsku#checker. Downloads need an account. - GET https://beepable.app/digital-link the Digital Link page. Downloads need an account. - GET https://beepable.app/sample/dl-qr.png the open sample QR for 09506000134352. - GET https://beepable.app/dl.json?gtin=&lot=&serial=&cpv=&exp=&bb=&domain= builds a GS1 Digital Link. Needs an All routes key. - GET https://beepable.app/i/dl.png?gtin=&k= the QR code of that link. Failure is HTTP 200 and a PNG of the sentence. - Formula: =IMAGE("https://beepable.app/i/dl.png?gtin="&ENCODEURL(A2)&"&lot="&ENCODEURL(B2)&"&exp="&ENCODEURL(C2)&"&domain="&ENCODEURL($Z$2)&"&k="&$Z$1) - GET https://beepable.app/dl/pack.zip?gtin= a ZIP of the retail barcode, the QR code, and README.txt. Needs a picture key. - POST https://beepable.app/dl.csv the rows plus digital_link, element_string, qr_url, ean_url, and error. Optional pk adds k to the image addresses. - POST https://beepable.app/api/batch also accepts {"digitalLink":{"gtin":"..."}} and returns uri. Symbology names: auto, ean8, upca, ean13, itf14, code128, qr, datamatrix, gs1datamatrix, fnsku. Encode a space as %20, not a plus sign. Send a leading zero as text. ## Guides - [Barcode generator for Excel](https://beepable.app/guides/excel): How to create a barcode in Excel from a GTIN or a URL. One IMAGE formula draws the picture. An invalid code shows the error sentence. No add-in. - [Barcode generator for Google Sheets](https://beepable.app/guides/google-sheets): How to generate barcodes in Google Sheets with IMAGE. No add-on. A bad GTIN shows the error sentence. - [Barcode generator for Google Docs](https://beepable.app/guides/google-docs): How to add a barcode to Google Docs. Docs has no IMAGE formula. Insert a PNG address that includes your picture key with Image, By URL. - [Barcode generator for a CSV catalog](https://beepable.app/guides/csv): How to add a barcode image address to every row of a product CSV. Invalid rows keep the error sentence and no image. - [Barcode generator for a PIM or an API](https://beepable.app/guides/api): How to generate barcode image addresses from a PIM. One request can resolve up to 10,000 values. The request needs an API key. - [EAN-13 barcode generator](https://beepable.app/guides/ean-13): EAN-13 barcode generator for a 13-digit GTIN with a valid check digit. The result is a PNG address that includes your picture key. - [UPC-A barcode generator](https://beepable.app/guides/upc-a): UPC-A barcode generator for a 12-digit GTIN with a valid check digit. Keep the leading zero. The picture needs a picture key. - [EAN-8 barcode generator](https://beepable.app/guides/ean-8): EAN-8 barcode generator for an 8-digit GTIN with a valid check digit. The result is a PNG address that includes your picture key. - [ITF-14 barcode generator](https://beepable.app/guides/itf-14): ITF-14 barcode generator for a 14-digit GTIN with a valid check digit. A leading zero stays ITF-14. The picture includes the bearer bars. - [Code 128 barcode generator](https://beepable.app/guides/code-128): Code 128 barcode generator for a SKU or other basic Latin text. Name code128. Automatic mode will not guess it. - [QR code generator](https://beepable.app/guides/qr-code): QR code generator for a web address. An http or https URL, including a GS1 Digital Link, becomes a QR code. The picture needs a picture key. - [Data Matrix barcode generator](https://beepable.app/guides/data-matrix): Data Matrix barcode generator. Name datamatrix. Automatic mode draws a QR code for every http or https URL. - [GS1 Digital Link barcode](https://beepable.app/guides/gs1-digital-link): How a GS1 Digital Link URL becomes a QR code. Build the link from a GTIN on /digital-link. Automatic mode checks the check digit inside the link. - [Amazon FNSKU label generator](https://beepable.app/guides/amazon-fnsku-label): What an Amazon FNSKU is, and how to print a Code 128 label with the title and condition. Since 31 March 2026 a reseller labels every unit. - [Do I need FNSKU labels after Amazon ended commingling?](https://beepable.app/guides/do-i-need-fnsku-labels): Who still uses a manufacturer barcode, and who must label every unit with an FNSKU after 31 March 2026. - [FNSKU labels in Excel and Google Sheets](https://beepable.app/guides/fnsku-labels-in-excel-and-google-sheets): The IMAGE formula for an FNSKU label, the column layout, and how to export a CSV and download a PDF. - [Print FNSKU labels from a Seller Central export](https://beepable.app/guides/print-fnsku-labels-from-seller-central-csv): Upload a file with an fnsku column, add quantity, and download a PDF. The upload accepts common Amazon header names. - [GS1 Sunrise 2027: what changes for barcodes at checkout](https://beepable.app/guides/gs1-sunrise-2027): Sunrise 2027 is a voluntary target for retail scanners to read a GTIN from a 2D code. Linear barcodes stay. This page says what to do now. - [How to dual-code a pack with EAN-13 and a GS1 QR code](https://beepable.app/guides/dual-coding-ean-13-and-qr): Place an EAN-13 and a GS1 Digital Link QR code on one pack. The QR centre stays within 50 mm of the linear barcode. The GTIN is printed once. - [Create GS1 Digital Link QR codes from a GTIN column in Excel or Google Sheets](https://beepable.app/guides/digital-link-from-a-gtin-column): Build GS1 Digital Link QR codes from a GTIN column. The IMAGE formula calls /i/dl.png and checks the check digit. A TEXT formula that only pads zeros does not. - [QR code or GS1 DataMatrix: which 2D barcode for retail?](https://beepable.app/guides/qr-or-gs1-datamatrix): Retail checkout uses a QR code of a GS1 Digital Link. GS1 DataMatrix holds an element string for healthcare and fresh food. A plain Data Matrix of a URL is neither.