QR / Data Matrix

GET/v0/qr

Validates and parses the content typically encoded in QR codes and Data Matrix barcodes. Automatically detects the format based on well-known prefixes (URL, vCard, WiFi, etc.) and validates the structure. Returns the detected format along with parsed fields. If no known format is detected, falls back to plain text.

Try it

Query Parameters

ParameterTypeRequiredDescription
valuestringYesThe QR / Data Matrix content to validate and parse

Supported Formats

FormatPrefix / PatternReturned format
URLhttp:// or https://url
vCardBEGIN:VCARDvcard
WiFi NetworkWIFI:wifi
Email (MATMSG)MATMSG: or mailto:email
SMSsmsto: or sms:sms
Phonetel:tel
Geo Locationgeo:geo
MeCardMECARD:mecard
Calendar EventBEGIN:VEVENTvevent
Plain Text(fallback)text

Example Request

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.isvalid.dev/v0/qr?value=WIFI%3AT%3AWPA%3BS%3AMyNetwork%3BP%3Asecret123%3B%3B"

Response Fields

FieldTypeDescription
validbooleanWhether the content is valid for the detected format
formatstringDetected format: url, vcard, wifi, email, sms, tel, geo, mecard, vevent, or text
dataobjectParsed fields (varies by format). Present when valid is true
errorstringError message when valid is false

Example Response — WiFi

{
  "valid": true,
  "format": "wifi",
  "data": {
    "encryption": "WPA",
    "ssid": "MyNetwork",
    "password": "secret123",
    "hidden": false
  }
}

Example Response — URL

{
  "valid": true,
  "format": "url",
  "data": {
    "protocol": "https",
    "host": "example.com",
    "path": "/page",
    "query": "id=42",
    "fragment": ""
  }
}

Example Response — vCard

{
  "valid": true,
  "format": "vcard",
  "data": {
    "version": "3.0",
    "name": "Jan Kowalski",
    "phones": ["+48123456789"],
    "emails": ["jan@example.com"],
    "org": "Firma Sp. z o.o."
  }
}

Example Response — Geo

{
  "valid": true,
  "format": "geo",
  "data": {
    "lat": 52.2297,
    "lon": 21.0122
  }
}

Example Response — plain text (fallback)

{
  "valid": true,
  "format": "text",
  "data": {
    "content": "Hello world",
    "length": 11
  }
}

Example Response — invalid WiFi

{
  "valid": false,
  "format": "wifi",
  "error": "Missing required field: ssid"
}