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/v1Authentication
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/tagsSession 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',
});API Capabilities
Tag Management
Create, update, and manage NFC/QR tags programmatically. Bulk operations, status transitions, and profile management.
Scan Intelligence
Access scan events with location, device, and context data. Build notifications and real-time dashboards.
Company & Team
Manage companies, memberships, and roles. Invite team members, configure solutions, and handle B2B workflows.
Webhooks
Receive real-time notifications when tags are scanned, lost mode is toggled, or ownership transfers.
Batch Operations
Provision tag batches, track production pipeline, generate QR codes, and export label sheets.
Commerce
Orders, checkout sessions, invoices, and cart validation. Full commerce lifecycle via API.
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" }
]
}
}