Download OpenAPI specification:Download
RESTful API for tagd-ai tag management system. Create, manage, and share digital tags with automatic QR code generation.
All API requests require authentication using an API key. Include your API key in the X-API-Key header:
X-API-Key: your_api_key_here
Get your API key from the tagd-ai Dashboard.
Get a paginated list of tags owned by the authenticated user. Supports search, category filtering, and permission-based filtering.
| page | integer >= 1 Default: 1 Page number for pagination |
| limit | integer [ 1 .. 100 ] Default: 20 Number of items per page |
| search | string <= 100 characters Search term for title and description |
| category | string Filter by category |
| permission | string Enum: "public" "domain" "owner" Filter by read permission level |
| success | boolean Whether the request was successful |
object | |
Array of objects (Tag) | |
object |
{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}, - "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "shortId": "string",
- "title": "string",
- "description": "string",
- "content": "string",
- "readPermission": "public",
- "writePermission": "public",
- "ownerId": "string",
- "category": "string",
- "tags": [
- "string"
], - "location": {
- "latitude": -90,
- "longitude": -180,
- "accuracy": 0,
- "timestamp": "2019-08-24T14:15:22Z"
}, - "dynamicContentEnabled": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "page": 0,
- "limit": 0,
- "total": 0,
- "hasMore": true
}
}Create a new tag with title, content, and permissions. A QR code is automatically generated for the tag.
| title required | string [ 1 .. 200 ] characters |
| readPermission required | string Enum: "public" "domain" "owner" |
| writePermission required | string Enum: "public" "domain" "owner" |
| description | string <= 2000 characters |
| content | string HTML content |
| category | string |
| tags | Array of strings |
object |
| success | boolean Whether the request was successful |
object | |
object |
{- "title": "My First Tag",
- "content": "<p>Hello World!</p>",
- "readPermission": "public",
- "writePermission": "owner"
}{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}, - "data": {
- "id": "string",
- "shortId": "string",
- "url": "string"
}
}Retrieve a specific tag by ID or shortId. Returns full tag details including content and metadata.
| id required | string Tag ID (UUID) or shortId (6 characters) |
| success | boolean Whether the request was successful |
object | |
object (Tag) |
{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}, - "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "shortId": "string",
- "title": "string",
- "description": "string",
- "content": "string",
- "readPermission": "public",
- "writePermission": "public",
- "ownerId": "string",
- "category": "string",
- "tags": [
- "string"
], - "location": {
- "latitude": -90,
- "longitude": -180,
- "accuracy": 0,
- "timestamp": "2019-08-24T14:15:22Z"
}, - "dynamicContentEnabled": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Update an existing tag. Only fields provided in the request body will be updated.
| id required | string Tag ID or shortId |
| title | string [ 1 .. 200 ] characters |
| description | string <= 2000 characters |
| content | string |
| readPermission | string Enum: "public" "domain" "owner" |
| writePermission | string Enum: "public" "domain" "owner" |
| category | string |
| tags | Array of strings |
| success | boolean Whether the request was successful |
object |
{- "title": "string",
- "description": "string",
- "content": "string",
- "readPermission": "public",
- "writePermission": "public",
- "category": "string",
- "tags": [
- "string"
]
}{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}
}Delete a tag. This action is permanent and cannot be undone.
| id required | string Tag ID or shortId |
| success | boolean Whether the request was successful |
object |
{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}
}Access a public tag without authentication. This endpoint is used when scanning QR codes or accessing shared tags. Only works for tags with public read permission.
| id required | string Tag shortId |
| success | boolean Whether the request was successful |
object | |
object (Tag) |
{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}, - "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "shortId": "string",
- "title": "string",
- "description": "string",
- "content": "string",
- "readPermission": "public",
- "writePermission": "public",
- "ownerId": "string",
- "category": "string",
- "tags": [
- "string"
], - "location": {
- "latitude": -90,
- "longitude": -180,
- "accuracy": 0,
- "timestamp": "2019-08-24T14:15:22Z"
}, - "dynamicContentEnabled": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Generate a QR code for any URL or data string. Supports PDF, PNG, and SVG formats with customization options.
| data required | string <= 2953 characters URL or data to encode |
| format | string Default: "pdf" Enum: "pdf" "png" "svg" |
string or integer Default: "medium" Size preset or pixel value | |
| errorCorrectionLevel | string Default: "M" Enum: "L" "M" "Q" "H" |
| margin | integer [ 0 .. 10 ] Default: 2 |
| darkColor | string^#[0-9A-Fa-f]{6}$ Default: "#000000" |
| lightColor | string^#[0-9A-Fa-f]{6}$ Default: "#FFFFFF" |
| topText | string <= 100 characters Text above QR code |
| bottomText | string <= 100 characters Text below QR code |
{- "format": "png",
- "size": "medium"
}{- "success": false,
- "error": {
- "code": "VALIDATION_ERROR",
- "message": "Invalid request parameters",
- "details": {
- "title": "Title is required"
}
}
}Generate a QR code using query parameters. Simpler interface for basic use cases.
| data required | string <= 2953 characters Data to encode in QR code |
| format | string Default: "png" Enum: "pdf" "png" "svg" Output format |
| size | string Size preset (small/medium/large/xlarge) or pixels (100-2000) |
| dark | string Default: "000000" Dark color (hex without #) |
| light | string Default: "FFFFFF" Light color (hex without #) |
{- "success": false,
- "error": {
- "code": "VALIDATION_ERROR",
- "message": "Invalid request parameters",
- "details": {
- "title": "Title is required"
}
}
}Get all webhooks configured for the authenticated user.
| success | boolean Whether the request was successful |
object | |
Array of objects (Webhook) |
{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}, - "data": [
- {
- "id": "string",
- "name": "string",
- "events": [
- "tag_read"
], - "enabled": true,
- "secret": "string",
- "retryConfig": {
- "maxRetries": 10,
- "timeoutMs": 1000,
- "backoffMultiplier": 1
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new webhook to receive event notifications.
| name required | string [ 1 .. 100 ] characters |
| url required | string <uri> |
| events required | Array of strings non-empty |
| description | string |
| enabled | boolean Default: true |
| secret | string Shared secret for HMAC signatures |
| success | boolean Whether the request was successful |
object | |
object (Webhook) |
{- "name": "Slack Notifications",
- "events": [
- "tag_read",
- "tag_updated"
], - "enabled": true
}{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}, - "data": {
- "id": "string",
- "name": "string",
- "events": [
- "tag_read"
], - "enabled": true,
- "secret": "string",
- "retryConfig": {
- "maxRetries": 10,
- "timeoutMs": 1000,
- "backoffMultiplier": 1
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Retrieve a specific webhook by ID.
| id required | string Webhook ID |
| success | boolean Whether the request was successful |
object | |
object (Webhook) |
{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}, - "data": {
- "id": "string",
- "name": "string",
- "events": [
- "tag_read"
], - "enabled": true,
- "secret": "string",
- "retryConfig": {
- "maxRetries": 10,
- "timeoutMs": 1000,
- "backoffMultiplier": 1
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Update an existing webhook.
| id required | string Webhook ID |
| name | string <= 100 characters |
| url | string <uri> |
| events | Array of strings |
| enabled | boolean |
| success | boolean Whether the request was successful |
object |
{- "name": "string",
- "events": [
- "string"
], - "enabled": true
}{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}
}Delete a webhook.
| id required | string Webhook ID |
| success | boolean Whether the request was successful |
object |
{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}
}Send a test payload to a webhook endpoint to verify it's working correctly.
| id required | string Webhook ID |
| success | boolean Whether the request was successful |
object | |
object |
{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}, - "data": {
- "success": true,
- "statusCode": 0,
- "responseTime": 0
}
}Get all API keys for the authenticated user.
| success | boolean Whether the request was successful |
object | |
Array of objects (ApiKey) |
{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}, - "data": [
- {
- "id": "string",
- "name": "string",
- "permissions": [
- "tags:read"
], - "enabled": true,
- "lastUsed": "2019-08-24T14:15:22Z",
- "rateLimit": {
- "requestsPerMinute": 0,
- "requestsPerHour": 0,
- "requestsPerDay": 0
}, - "createdAt": "2019-08-24T14:15:22Z"
}
]
}Create a new API key with specified permissions.
| name required | string [ 1 .. 100 ] characters |
| permissions required | Array of strings non-empty List of permissions for this API key |
| success | boolean Whether the request was successful |
object | |
object |
{- "name": "Production Integration",
- "permissions": [
- "tags:read",
- "tags:write",
- "qrcode:create"
]
}{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}, - "data": {
- "id": "string",
- "name": "string",
- "key": "string",
- "permissions": [
- "string"
]
}
}Update an API key's name, permissions, or enabled status.
| id required | string API Key ID |
| name | string <= 100 characters |
| permissions | Array of strings |
| enabled | boolean |
| success | boolean Whether the request was successful |
object |
{- "name": "string",
- "permissions": [
- "string"
], - "enabled": true
}{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}
}Delete an API key. This action is permanent.
| id required | string API Key ID |
| success | boolean Whether the request was successful |
object |
{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}
}Advanced search for tags using natural language queries, categories, and sorting options.
| q required | string Search query |
| category | string Filter by category |
| sortBy | string Enum: "createdAt" "updatedAt" "title" "relevance" Sort field |
| sortOrder | string Default: "desc" Enum: "asc" "desc" Sort order |
| page | integer Default: 1 Page number |
| limit | integer <= 100 Default: 20 Items per page |
| success | boolean Whether the request was successful |
object | |
Array of objects (Tag) | |
object |
{- "success": true,
- "meta": {
- "timestamp": "2019-08-24T14:15:22Z",
- "version": "string",
- "requestId": "string"
}, - "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "shortId": "string",
- "title": "string",
- "description": "string",
- "content": "string",
- "readPermission": "public",
- "writePermission": "public",
- "ownerId": "string",
- "category": "string",
- "tags": [
- "string"
], - "location": {
- "latitude": -90,
- "longitude": -180,
- "accuracy": 0,
- "timestamp": "2019-08-24T14:15:22Z"
}, - "dynamicContentEnabled": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "page": 0,
- "limit": 0,
- "total": 0,
- "hasMore": true
}
}Create multiple tags in a single request. Supports up to 50 tags per request.
required | Array of objects (CreateTagRequest) [ 1 .. 50 ] items |
object |
| success | boolean |
| created | Array of objects |
| failed | Array of objects |
| skipped | Array of objects |
object |
{- "tags": [
- {
- "title": "Conference Room A",
- "readPermission": "public",
- "writePermission": "owner"
}, - {
- "title": "Conference Room B",
- "readPermission": "public",
- "writePermission": "owner"
}
], - "options": {
- "skipDuplicates": true,
- "continueOnError": true
}
}{- "success": true,
- "created": [
- { }
], - "failed": [
- { }
], - "skipped": [
- { }
], - "summary": {
- "total": 0,
- "successful": 0,
- "failed": 0,
- "skipped": 0
}
}