← Back to blog

11 Types of QR Codes You Can Create with an API

QR codes do more than open URLs. vCard, WiFi, calendar events, and 8 other types that encode structured data your users' devices already know how to handle.

The QR code spec has 11 different data types, but 99% of codes you see in the wild are just URLs. Open a website, that’s it.

Which is fine. URLs are flexible. But if you’re building something where the user’s intent is specific—connect to WiFi, add a contact, dial a number—you can encode that action directly. No landing page, no extra tap. Scan and done.

Here’s the full list of what you can encode, starting with the ones that actually get used.

URL

This is the baseline. Encode a web address, user scans it, browser opens. You already know how this works.

The reason URL codes dominate is they’re easy to generate and they work everywhere. When you want analytics or the ability to change the destination without reprinting, you use a dynamic URL (short redirect link). When you just need a static pointer to a page, you encode the full URL directly.

If you’re not sure which type to use, default to URL. You can always serve other data types (vCard, iCal) from a URL endpoint if you want the flexibility later.

vCard (Contact Cards)

Encodes contact info in vCard format. Scan it and your phone offers to save the contact with name, email, phone, company, title—whatever fields you included. No typing.

This is the best upgrade from paper business cards. Print a vCard QR code on your card and people can import your contact in one scan instead of manually entering 6 fields. Conference badges, email signatures, real estate signs—anywhere you’d hand out contact info.

The data lives in the code, so it works offline. Most phones parse vCard 3.0 and 4.0 without needing an app.

WiFi

Guest network credentials encoded in a WIFI: format your phone knows how to read. Scan the code, phone connects. No “what’s the password?” conversation.

Coffee shops, hotels, Airbnbs, coworking spaces—this is the easiest WiFi onboarding you can offer. Print the code on the wall or on table tents. Guests connect without asking staff or digging through a welcome email.

Works offline in the sense that the credentials are embedded in the code. But obviously you need the network to be in range.

The Communication Triad: Email, SMS, Phone

These three types do basically the same thing: pre-fill an action in your phone’s default app.

Email codes encode a mailto: link with recipient, subject, and body. Scan it and your mail app opens with everything filled in. Useful for “contact us” buttons on flyers or feedback forms where you want to reduce typing friction.

SMS codes encode an sms: link with a phone number and optional message. Used a lot for contest entries (“text JOIN to 12345”) or campaign opt-ins. The user still has to tap send, but you control what message they start with.

Phone codes just encode a tel: link. Tap to dial. That’s it. Business cards, support hotlines, “call now” ads. You can make them dynamic if you want to route calls to different numbers based on time or location, but most are static.

None of these work offline—they need cellular or internet to actually send the message or complete the call. But they’re dead simple to implement and they do what they say.

Calendar Events (iCal)

Encodes event details in iCalendar format. Scan it and your phone offers to add the event to your calendar with title, time, location, description.

This one is huge for conferences and webinars. Instead of hoping people manually add your session to their calendar, you generate a QR code for each session and print it on the program or badge. They scan it, event is saved.

Restaurants use this for reservation confirmations. Concert venues put them on tickets. Anywhere you’re scheduling something and you want it to show up in the user’s calendar without them typing anything.

Works offline—the event data is in the code. If you need to update the venue or time after printing, you can make it dynamic by encoding a URL that serves an .ics file instead of embedding the event directly. But most people just embed it.

Plain Text

This one is just raw text. Scan the code and your phone displays the string. No action, no app launch, just text on screen.

Why would you use this? Serial numbers, product IDs, multi-language instructions, passwords for initial setup. Anything where you need machine-readable data but don’t want the code to do anything interactive.

It’s basically a barcode that humans can also read if they have a QR scanner. Always static.

Location (Geo Coordinates)

Encodes latitude and longitude in a geo: URL scheme. Scan it and your maps app opens with the location pinned, ready for navigation.

Event venues, retail stores, real estate listings, hiking trailheads—anywhere you want to make it easy to navigate to a physical location without typing an address.

You can make these dynamic if you run a multi-location business or pop-up shop and need to update the coordinates. But usually you just hardcode the lat/long.

Requires internet to load the map tiles, so not offline.

This is technically just a URL, but the intent is different enough that most people call it out separately. You’re encoding a link to a social profile (Instagram, Twitter, LinkedIn) or an action link (follow, message, share).

Influencer marketing, event badges, storefront signage—anywhere you want to drive follows or engagement. You can encode platform-specific URLs like https://instagram.com/username or intent URLs like https://twitter.com/intent/follow?screen_name=username.

If you’re running a campaign where you might switch platforms or test different accounts, make it dynamic so you can update the destination without reprinting.

Opens the App Store (iOS) or Play Store (Android) to your app’s listing. The smart way to do this is to use a dynamic URL that detects the user’s OS and routes accordingly—one QR code works for both platforms.

In-store displays, product packaging, event check-in apps, retail loyalty programs. Anywhere your goal is driving installs.

You can encode direct store URLs like https://apps.apple.com/app/idXXXXXX, but that only works on iOS. Better to use a service or API that handles cross-platform routing.

Summary Table

Here’s the full list with key details:

TypeEncodingWorks Offline?Primary Use Case
URLPlain URL or redirectNoMarketing, campaigns, menus
vCardvCard 3.0/4.0YesBusiness cards, contacts
WiFiSSID + passwordYes (credentials)Guest network access
Emailmailto: schemeNoSupport, feedback forms
SMSsms: schemeNoCampaign opt-ins, contests
Phonetel: schemePartialCall-to-action ads, hotlines
EventiCalendar formatYesConference sessions, RSVPs
TextPlain stringYesSerial numbers, instructions
Locationgeo: schemeNoVenue directions, real estate
SocialPlatform URLsNoFollow campaigns, profiles
App StoreStore URLsNoApp install campaigns

Generating These with an API

Most QR libraries only support URLs. If you want a vCard or WiFi code, you’re responsible for formatting the data correctly according to the spec. Which means reading the vCard RFC or the WiFi QR format docs and hoping you got the syntax right.

QR for Agent handles the encoding for all 11 types. You pass structured JSON, the API formats it, returns a scannable image.

Here’s a vCard example:

curl -X POST https://api.qrforagent.com/api/qr \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "vcard",
    "data": {
      "firstName": "Jane",
      "lastName": "Doe",
      "email": "[email protected]",
      "phone": "+1-555-0100",
      "company": "Acme Corp",
      "title": "VP of Engineering"
    }
  }'

WiFi credentials:

curl -X POST https://api.qrforagent.com/api/qr \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "wifi",
    "data": {
      "ssid": "Guest_Network",
      "password": "welcome123",
      "encryption": "WPA"
    }
  }'

Calendar event:

curl -X POST https://api.qrforagent.com/api/qr \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "event",
    "data": {
      "title": "Product Launch",
      "start": "2026-04-15T10:00:00Z",
      "end": "2026-04-15T12:00:00Z",
      "location": "Convention Center",
      "description": "Join us for the unveiling of our new product line."
    }
  }'

The API validates your data, formats it to spec, and returns the QR code. You don’t memorize vCard syntax or figure out how to escape special characters in WiFi passwords.

Which Type to Use

Default to URL for most things. It’s flexible, trackable (if dynamic), and works everywhere.

Use specialized types when they directly match what the user is trying to do:

  • Handing out your contact info? vCard.
  • Sharing WiFi credentials? WiFi code.
  • Promoting an event? Calendar code.
  • Driving app installs? App Store link with OS detection.

If you’re not sure, start with a URL. You can always serve vCard or iCal data from a URL endpoint if you want dynamic control.

All 11 types are available through QR for Agent’s API and MCP server. Free tier is 10 codes and 1,000 scans per month—enough to test everything and see what fits your use case.

Try it free and start generating codes that do more than open a webpage.

Ready to get started?

Create your first dynamic QR code in seconds. Free, no credit card required.