Skip to main content

Build with the TAGVU API

Integrate NFC/QR tag management, scan intelligence, and ownership workflows into your applications. RESTful API with OpenAPI 3.1 spec, Zod-validated inputs, and cursor-based pagination.

// Resolve a tag by its code
const response = await fetch('https://api.tag.vu/v1/tags/resolve/A1B2-C3D4-EF', {
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
});

const tag = await response.json();
console.log(tag.data.status); // "active"
console.log(tag.data.name);   // "Office Laptop #42"

Getting Started

Base URL

https://api.tag.vu/v1

Authentication

Bearer token via Authorization header, or session cookie for browser-based access.

Rate Limits

100 requests/minute for standard keys, 1000/minute for enterprise. Rate limit headers included in every response.

Authentication

Bearer Token (API Key)

For server-to-server and B2B integrations. Generate an API key from your company dashboard at app.tag.vu/dashboard/settings/api.

curl -H "Authorization: Bearer tvk_live_abc123..." \
  https://api.tag.vu/v1/tags

Session Cookie

For browser-based access. Authenticate via Supabase Auth and include credentials in requests. Used by the App Portal and Backstage.

fetch('https://api.tag.vu/v1/tags', {
  credentials: 'include',
});

Response Format

All API responses follow a consistent envelope format with cursor-based pagination.

Success

{
  "data": { ... },
  "meta": {
    "cursor": "eyJpZCI6MTIzfQ",
    "hasMore": true,
    "count": 25
  }
}

Error

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid tag ID format",
    "details": [
      { "path": "tagId", "message": "Expected XXXX-XXXX-XX" }
    ]
  }
}
TAGVU Developers — API Overview | TAGVU Developers