---
title: "Validate check digits: Luhn card numbers (with brand), IBAN mod-97, ISBN-10/13 and EAN/UPC barcodes. Format only — nothing is looked up or stored."
method: POST
path: "/api/v1/luhn"
tags: ["Formatters & Validators"]
---

# Validate check digits: Luhn card numbers (with brand), IBAN mod-97, ISBN-10/13 and EAN/UPC barcodes. Format only — nothing is looked up or stored.

`POST /api/v1/luhn`

## Request

- Base URL: `https://programmes.net`
- URL: `https://programmes.net/api/v1/luhn`
- Auth: none declared

Luhn, IBAN & ISBN Validator. Operations: `validate` — Validate a number, auto-detecting its type or using the one you choose. `check-digit` — Compute the Luhn or GS1 (EAN/UPC) check digit to append to a payload.

## Request body

- union
  - LuhnValidate: Validate a number, auto-detecting its type or using the one you choose.
    - `operation` 'validate', required
    - `input` string: A card number, IBAN, ISBN or EAN/UPC (spaces and dashes are ignored).
    - `options` object
      - `type` 'auto' | 'card' | 'iban' | 'isbn' | 'gtin' | 'luhn': Which check to run.
  - LuhnCheckDigit: Compute the Luhn or GS1 (EAN/UPC) check digit to append to a payload.
    - `operation` 'check-digit', required
    - `input` string: The digits without their check digit.
    - `options` object
      - `algorithm` 'luhn' | 'gs1': luhn (cards, IMEI) or gs1 (EAN/UPC/GTIN).

## Response `200`

The operation ran.

- object
  - `ok` unknown, required
  - `tool` 'luhn', required
  - `operation` 'validate' | 'check-digit', required
  - `result` unknown, required

## Other responses

- `400`: The request is not valid (https://programmes.net/api#invalid-request); The tool has no such operation (https://programmes.net/api#unknown-operation)
- `404`: No such tool (https://programmes.net/api#unknown-tool)
- `413`: The request or its input is too large (https://programmes.net/api#content-too-large)
- `415`: The body must be JSON (https://programmes.net/api#unsupported-media-type)
- `422`: An option is missing, of the wrong type or out of range (https://programmes.net/api#invalid-options); This call needs more CPU than one API call may use (https://programmes.net/api#refused); The operation could not process the input (https://programmes.net/api#tool-error)
- `429`: Too many requests (https://programmes.net/api#rate-limited)
- `500`: Internal error (https://programmes.net/api#internal-error)

---

[API](https://skmtc.dev/programmes/apis/programmes-net-api.md) · [All operations](https://skmtc.dev/programmes/apis/programmes-net-api/llms.txt) · [OpenAPI document](https://skmtc.dev/programmes/apis/programmes-net-api/revisions/aa939784a2e6?raw)
