API Reference
Complete reference for all Snipy API endpoints. All requests require authentication via Bearer token or API key.
https://api.snipy.comResponse format
All responses follow a consistent JSON format with an error field indicating success (0) or failure (1).
{
"error": 0,
"data": {
"id": 123,
"alias": "my-link",
"url": "https://example.com"
}
}{
"error": 1,
"message": "Error description"
}{
"error": 0,
"data": {
"result": 42,
"perpage": 15,
"currentpage": 1,
"nextpage": 2,
"maxpage": 3,
"urls": [...]
}
}Links
Create, manage, and track shortened URLs.
/api/urlsList all links for the authenticated user. Supports pagination, search, and filtering.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
page | number | No | Page number (default: 1) |
limit | number | No | Results per page (default: 15, max: 100) |
search | string | No | Search by alias or target URL |
sort | string | No | Sort field: date, clicks (default: date) |
order | string | No | Sort order: asc, desc (default: desc) |
curl -X GET "https://api.snipy.com/api/urls?page=1&limit=15" \
-H "Authorization: Bearer YOUR_TOKEN"{
"error": 0,
"data": {
"result": 42,
"perpage": 15,
"currentpage": 1,
"nextpage": 2,
"maxpage": 3,
"urls": [
{
"id": 1,
"alias": "my-link",
"shorturl": "https://snipy.to/my-link",
"longurl": "https://example.com/very/long/path",
"clicks": 150,
"date": "2026-01-15T10:30:00Z"
}
]
}
}/api/url/addCreate a new shortened link. Returns the created link object.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Target URL to shorten |
alias | string | No | Custom alias (plan: custom_alias) |
domain | string | No | Domain to use (e.g. snipy.to) |
password | string | No | Password-protect the link (plan: password_protection) |
expiry | string | No | Expiration date ISO 8601 (plan: link_expiry) |
maxClicks | number | No | Max clicks before link expires (Snipy Drops) |
utm_source | string | No | UTM source parameter (plan: utm_params) |
utm_medium | string | No | UTM medium parameter (plan: utm_params) |
utm_campaign | string | No | UTM campaign parameter (plan: utm_params) |
deepLinks | object | No | Deep link configuration (plan: deep_links) |
geo | object | No | Geo-targeting rules (plan: geo_targeting) |
device | object | No | Device-targeting rules (plan: device_targeting) |
ppvPrice | number | No | Pay-per-view price in cents (plan: ppv, min 100, max 50000) |
campaignId | number | No | Campaign to assign the link to |
pixels | array | No | Tracking pixel IDs (plan: pixels) |
curl -X POST https://api.snipy.com/api/url/add \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/page",
"alias": "my-link",
"domain": "snipy.to"
}'{
"error": 0,
"data": {
"id": 456,
"alias": "my-link",
"shorturl": "https://snipy.to/my-link",
"longurl": "https://example.com/page",
"clicks": 0,
"domain": "snipy.to",
"date": "2026-03-04T12:00:00Z"
}
}/api/url/:idGet full details for a specific link including click count, settings, and targeting rules.
Bearer tokencurl -X GET https://api.snipy.com/api/url/456 \
-H "Authorization: Bearer YOUR_TOKEN"/api/url/:id/updateUpdate an existing link. Only the provided fields will be modified.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | No | New target URL |
password | string | No | Set or update password |
expiry | string | No | Update expiration date |
maxClicks | number | No | Update max clicks |
deepLinks | object | No | Update deep link config |
geo | object | No | Update geo-targeting |
device | object | No | Update device-targeting |
pixels | array | No | Update tracking pixels |
curl -X PUT https://api.snipy.com/api/url/456/update \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/new-page"}'/api/url/:id/deletePermanently delete a link. This action cannot be undone.
Bearer tokencurl -X DELETE https://api.snipy.com/api/url/456/delete \
-H "Authorization: Bearer YOUR_TOKEN"/api/urls/bulkPerform bulk actions on multiple links at once. Maximum 100 links per request.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | Action: delete, archive, tag |
ids | number[] | Yes | Array of link IDs (max 100) |
data | object | No | Additional data depending on action |
curl -X POST https://api.snipy.com/api/urls/bulk \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"action": "delete", "ids": [1, 2, 3]}'QR Codes
Generate, customize, and manage QR codes linked to your short URLs.
/api/qrsList all QR codes for the authenticated user with pagination.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
page | number | No | Page number (default: 1) |
limit | number | No | Results per page (default: 15) |
search | string | No | Search by name or linked URL |
curl -X GET "https://api.snipy.com/api/qrs?page=1" \
-H "Authorization: Bearer YOUR_TOKEN"/api/qr/addCreate a new QR code. You can link it to an existing URL or provide a new one.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the QR code |
url | string | Yes | Target URL |
foreground | string | No | Foreground color hex (default: #000000) |
background | string | No | Background color hex (default: #FFFFFF) |
errorCorrection | string | No | Error correction level: L, M, Q, H (default: M) |
size | number | No | Size in pixels (default: 300) |
margin | number | No | Quiet zone margin (default: 4) |
logo | string | No | Logo image URL to embed |
curl -X POST https://api.snipy.com/api/qr/add \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Product Page QR",
"url": "https://example.com/product",
"foreground": "#1a1a1a",
"size": 400
}'{
"error": 0,
"data": {
"id": 78,
"name": "Product Page QR",
"url": "https://snipy.to/abc123",
"scans": 0,
"date": "2026-03-04T12:00:00Z"
}
}/api/qr/:idGet full details for a specific QR code.
Bearer tokencurl -X GET https://api.snipy.com/api/qr/78 \
-H "Authorization: Bearer YOUR_TOKEN"/api/qr/:id/updateUpdate QR code settings including colors, size, and linked URL.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | No | Update display name |
foreground | string | No | Update foreground color |
background | string | No | Update background color |
size | number | No | Update size |
curl -X PUT https://api.snipy.com/api/qr/78/update \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Updated QR Name"}'/api/qr/:id/deletePermanently delete a QR code.
Bearer tokencurl -X DELETE https://api.snipy.com/api/qr/78/delete \
-H "Authorization: Bearer YOUR_TOKEN"/api/qr/:id/downloadDownload a QR code image as PNG, SVG, or PDF. Returns binary data.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
format | string | Yes | Output format: png, svg, pdf |
size | number | No | Image size in pixels (default: 300) |
curl -X GET "https://api.snipy.com/api/qr/78/download?format=png&size=600" \
-H "Authorization: Bearer YOUR_TOKEN" \
-o qr-code.png/api/qr/:id/artisticGenerate an AI-powered artistic QR code with custom styling.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
style | string | Yes | Art style: abstract, watercolor, pixel, etc. |
prompt | string | No | Custom style prompt |
curl -X POST https://api.snipy.com/api/qr/78/artistic \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"style": "watercolor"}'/api/qr/bulkBulk generate QR codes. Create multiple QR codes in a single request.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
qrs | array | Yes | Array of QR code objects with name and url |
curl -X POST https://api.snipy.com/api/qr/bulk \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"qrs": [
{"name": "QR 1", "url": "https://example.com/1"},
{"name": "QR 2", "url": "https://example.com/2"}
]}'Bio Profiles
Create and manage bio link pages with customizable blocks, themes, and subscriber collection.
/api/biosList all bio profiles for the authenticated user.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
page | number | No | Page number (default: 1) |
limit | number | No | Results per page (default: 15) |
curl -X GET "https://api.snipy.com/api/bios?page=1" \
-H "Authorization: Bearer YOUR_TOKEN"/api/bio/addCreate a new bio profile page.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Profile display name |
slug | string | Yes | URL slug (unique) |
bio | string | No | Profile bio text |
avatar | string | No | Avatar image URL |
theme | string | No | Theme preset name |
curl -X POST https://api.snipy.com/api/bio/add \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "John Doe",
"slug": "johndoe",
"bio": "Full-stack developer"
}'{
"error": 0,
"data": {
"id": 12,
"name": "John Doe",
"slug": "johndoe",
"bio": "Full-stack developer",
"url": "https://snipy.bio/johndoe",
"views": 0,
"date": "2026-03-04T12:00:00Z"
}
}/api/bio/:idGet full details for a bio profile.
Bearer tokencurl -X GET https://api.snipy.com/api/bio/12 \
-H "Authorization: Bearer YOUR_TOKEN"/api/bio/:id/updateUpdate bio profile settings.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | No | Update display name |
bio | string | No | Update bio text |
theme | string | No | Update theme |
avatar | string | No | Update avatar URL |
seo | object | No | SEO settings (title, description) |
curl -X PUT https://api.snipy.com/api/bio/12/update \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"bio": "Senior full-stack developer"}'/api/bio/:id/deletePermanently delete a bio profile.
Bearer tokencurl -X DELETE https://api.snipy.com/api/bio/12/delete \
-H "Authorization: Bearer YOUR_TOKEN"/api/bio/:id/blockAdd a new block to a bio profile. Blocks are widgets like links, text, images, embeds, etc.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Block type (link, text, image, header, divider, social, embed, newsletter, etc.) |
content | object | Yes | Block content (varies by type) |
position | number | No | Position in the block list (appended if omitted) |
curl -X POST https://api.snipy.com/api/bio/12/block \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "link",
"content": {
"title": "My Website",
"url": "https://example.com",
"icon": "globe"
}
}'/api/bio/:id/block/:keyUpdate an existing block by its key.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
content | object | Yes | Updated block content |
curl -X PUT https://api.snipy.com/api/bio/12/block/abc123 \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"content": {"title": "Updated Title"}}'/api/bio/:id/block/:keyDelete a block from a bio profile.
Bearer tokencurl -X DELETE https://api.snipy.com/api/bio/12/block/abc123 \
-H "Authorization: Bearer YOUR_TOKEN"/api/bio/:id/reorderReorder blocks on a bio profile.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
order | string[] | Yes | Array of block keys in desired order |
curl -X PUT https://api.snipy.com/api/bio/12/reorder \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"order": ["key3", "key1", "key2"]}'/api/bio/:id/ai-generateUse the AI bio builder to generate content and blocks from a prompt.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
prompt | string | Yes | Description of the bio profile to generate |
curl -X POST https://api.snipy.com/api/bio/12/ai-generate \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"prompt": "A freelance photographer portfolio with social links"}'/api/bio/:id/domainSet a custom domain for a bio profile.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Custom domain (e.g. bio.yourdomain.com) |
curl -X PUT https://api.snipy.com/api/bio/12/domain \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domain": "bio.example.com"}'/api/bio/:id/domain/verifyVerify DNS configuration for a custom bio domain.
Bearer tokencurl -X GET https://api.snipy.com/api/bio/12/domain/verify \
-H "Authorization: Bearer YOUR_TOKEN"{
"error": 0,
"data": {
"verified": true,
"domain": "bio.example.com",
"dns_records": [
{ "type": "CNAME", "name": "bio", "value": "bio.snipy.com", "status": "valid" }
]
}
}/api/bio/:id/subscribersList email subscribers collected through the bio newsletter block.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
page | number | No | Page number (default: 1) |
limit | number | No | Results per page (default: 50) |
curl -X GET "https://api.snipy.com/api/bio/12/subscribers?page=1" \
-H "Authorization: Bearer YOUR_TOKEN"/api/bio/:id/subscribers/exportExport all subscribers as a CSV file.
Bearer tokencurl -X GET https://api.snipy.com/api/bio/12/subscribers/export \
-H "Authorization: Bearer YOUR_TOKEN" \
-o subscribers.csv/api/bio/widgetsList all available widget/block types and their configuration schemas.
Bearer tokencurl -X GET https://api.snipy.com/api/bio/widgets \
-H "Authorization: Bearer YOUR_TOKEN"/api/bio/public/:slugGet publicly visible bio profile data. No authentication required.
Nonecurl -X GET https://api.snipy.com/api/bio/public/johndoeAnalytics
Access detailed click statistics and analytics for your links.
/api/url/:id/statsGet summary statistics for a link including total clicks, unique visitors, and top referrers.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
from | string | No | Start date ISO 8601 |
to | string | No | End date ISO 8601 |
curl -X GET "https://api.snipy.com/api/url/456/stats?from=2026-01-01&to=2026-03-01" \
-H "Authorization: Bearer YOUR_TOKEN"{
"error": 0,
"data": {
"totalClicks": 1250,
"uniqueVisitors": 980,
"topCountry": "US",
"topReferrer": "twitter.com",
"topBrowser": "Chrome"
}
}/api/url/:id/stats/clicksGet time-series click data for charting. Supports hourly, daily, weekly, and monthly granularity.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
from | string | No | Start date ISO 8601 |
to | string | No | End date ISO 8601 |
granularity | string | No | hour, day, week, month (default: day) |
curl -X GET "https://api.snipy.com/api/url/456/stats/clicks?granularity=day" \
-H "Authorization: Bearer YOUR_TOKEN"/api/url/:id/stats/countriesGet click breakdown by country.
Bearer tokencurl -X GET https://api.snipy.com/api/url/456/stats/countries \
-H "Authorization: Bearer YOUR_TOKEN"{
"error": 0,
"data": {
"countries": [
{ "code": "US", "name": "United States", "clicks": 450 },
{ "code": "GB", "name": "United Kingdom", "clicks": 200 },
{ "code": "DE", "name": "Germany", "clicks": 150 }
]
}
}/api/url/:id/stats/referrersGet click breakdown by referrer source.
Bearer tokencurl -X GET https://api.snipy.com/api/url/456/stats/referrers \
-H "Authorization: Bearer YOUR_TOKEN"/api/url/:id/stats/browsersGet click breakdown by browser.
Bearer tokencurl -X GET https://api.snipy.com/api/url/456/stats/browsers \
-H "Authorization: Bearer YOUR_TOKEN"/api/url/:id/stats/platformsGet click breakdown by operating system / platform.
Bearer tokencurl -X GET https://api.snipy.com/api/url/456/stats/platforms \
-H "Authorization: Bearer YOUR_TOKEN"/api/url/:id/stats/variantsGet A/B testing variant breakdown with clicks per variant.
Bearer tokencurl -X GET https://api.snipy.com/api/url/456/stats/variants \
-H "Authorization: Bearer YOUR_TOKEN"{
"error": 0,
"data": {
"variants": [
{ "name": "A", "url": "https://example.com/a", "clicks": 300, "percentage": 60 },
{ "name": "B", "url": "https://example.com/b", "clicks": 200, "percentage": 40 }
]
}
}/api/url/:id/stats/activityGet a chronological log of individual clicks with IP, user agent, country, and referrer.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
page | number | No | Page number (default: 1) |
limit | number | No | Results per page (default: 50) |
curl -X GET "https://api.snipy.com/api/url/456/stats/activity?page=1&limit=25" \
-H "Authorization: Bearer YOUR_TOKEN"Domains
Manage custom domains for your shortened links.
/api/domainsList all domains available to the authenticated user, including system domains.
Bearer tokencurl -X GET https://api.snipy.com/api/domains \
-H "Authorization: Bearer YOUR_TOKEN"{
"error": 0,
"data": {
"domains": [
{ "id": 1, "domain": "snipy.to", "system": true, "verified": true },
{ "id": 50, "domain": "links.mysite.com", "system": false, "verified": true }
]
}
}/api/domain/addAdd a custom domain. You will need to configure DNS records to verify ownership.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | The custom domain to add |
curl -X POST https://api.snipy.com/api/domain/add \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domain": "links.mysite.com"}'{
"error": 0,
"data": {
"id": 50,
"domain": "links.mysite.com",
"verified": false,
"dns_records": [
{ "type": "CNAME", "name": "links", "value": "domains.snipy.com" }
]
}
}/api/domain/:idGet domain details including DNS verification status.
Bearer tokencurl -X GET https://api.snipy.com/api/domain/50 \
-H "Authorization: Bearer YOUR_TOKEN"/api/domain/:id/deleteRemove a custom domain. Links using this domain will stop resolving.
Bearer tokencurl -X DELETE https://api.snipy.com/api/domain/50/delete \
-H "Authorization: Bearer YOUR_TOKEN"Campaigns
Group links into campaigns for organized tracking and analytics.
/api/campaignsList all campaigns.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
page | number | No | Page number (default: 1) |
limit | number | No | Results per page (default: 15) |
curl -X GET "https://api.snipy.com/api/campaigns?page=1" \
-H "Authorization: Bearer YOUR_TOKEN"/api/campaign/addCreate a new campaign.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Campaign name |
description | string | No | Campaign description |
curl -X POST https://api.snipy.com/api/campaign/add \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Q1 Launch", "description": "Product launch campaign"}'/api/campaign/:idGet campaign details.
Bearer tokencurl -X GET https://api.snipy.com/api/campaign/5 \
-H "Authorization: Bearer YOUR_TOKEN"/api/campaign/:id/updateUpdate campaign name or description.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | No | Updated campaign name |
description | string | No | Updated description |
curl -X PUT https://api.snipy.com/api/campaign/5/update \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Q1 Launch (Updated)"}'/api/campaign/:id/deleteDelete a campaign. Links will be unassigned but not deleted.
Bearer tokencurl -X DELETE https://api.snipy.com/api/campaign/5/delete \
-H "Authorization: Bearer YOUR_TOKEN"/api/campaign/:id/statsGet aggregated analytics for all links in a campaign.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
from | string | No | Start date ISO 8601 |
to | string | No | End date ISO 8601 |
curl -X GET "https://api.snipy.com/api/campaign/5/stats?from=2026-01-01" \
-H "Authorization: Bearer YOUR_TOKEN"Webhooks
Subscribe to real-time event notifications.
/api/webhooksList all active webhook subscriptions.
Bearer tokencurl -X GET https://api.snipy.com/api/webhooks \
-H "Authorization: Bearer YOUR_TOKEN"{
"error": 0,
"data": {
"webhooks": [
{
"id": 1,
"url": "https://example.com/webhook",
"events": ["link.clicked", "link.created"],
"active": true,
"createdAt": "2026-01-15T10:00:00Z"
}
]
}
}/api/webhooks/subscribeCreate a new webhook subscription for one or more events.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Endpoint URL to receive webhook payloads |
events | string[] | Yes | Array of event types to subscribe to |
secret | string | No | Signing secret for payload verification |
curl -X POST https://api.snipy.com/api/webhooks/subscribe \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/webhook",
"events": ["link.clicked", "link.created"],
"secret": "whsec_abc123..."
}'/api/webhooks/subscribe/:idDelete a webhook subscription.
Bearer tokencurl -X DELETE https://api.snipy.com/api/webhooks/subscribe/1 \
-H "Authorization: Bearer YOUR_TOKEN"/api/webhooks/eventsList all available webhook event types.
Bearer tokencurl -X GET https://api.snipy.com/api/webhooks/events \
-H "Authorization: Bearer YOUR_TOKEN"Account
Manage your account settings, API keys, and usage statistics.
/api/accountGet the authenticated user's account details.
Bearer tokencurl -X GET https://api.snipy.com/api/account \
-H "Authorization: Bearer YOUR_TOKEN"{
"error": 0,
"data": {
"id": 42,
"name": "John Doe",
"email": "john@example.com",
"avatarUrl": "https://...",
"planId": 2,
"plan": "Pro",
"status": "active",
"createdAt": "2025-06-15T10:00:00Z"
}
}/api/account/updateUpdate account profile settings.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | No | Update display name |
email | string | No | Update email address (requires verification) |
curl -X PUT https://api.snipy.com/api/account/update \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Jane Doe"}'/api/account/passwordChange your account password.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
current | string | Yes | Current password |
password | string | Yes | New password (min 8 characters) |
confirmPassword | string | Yes | Confirm new password |
curl -X PUT https://api.snipy.com/api/account/password \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"current": "old-password",
"password": "new-secure-password",
"confirmPassword": "new-secure-password"
}'/api/account/statsGet account usage statistics (links created, clicks used, etc.).
Bearer tokencurl -X GET https://api.snipy.com/api/account/stats \
-H "Authorization: Bearer YOUR_TOKEN"{
"error": 0,
"data": {
"urls": { "used": 150, "limit": 5000 },
"clicks": { "used": 25000, "limit": 500000 },
"qrs": { "used": 30, "limit": 100 },
"bios": { "used": 5, "limit": 25 },
"domains": { "used": 3, "limit": 10 }
}
}/api/account/apikeysList all API keys for the authenticated user.
Bearer tokencurl -X GET https://api.snipy.com/api/account/apikeys \
-H "Authorization: Bearer YOUR_TOKEN"{
"error": 0,
"data": {
"keys": [
{
"id": 1,
"name": "Production Key",
"prefix": "snpy_a1b2",
"scopes": ["qr:read", "qr:write"],
"lastUsed": "2026-03-03T18:00:00Z",
"createdAt": "2026-01-01T10:00:00Z"
}
]
}
}/api/account/apikeys/addCreate a new API key. The full key is only returned once.
Bearer token| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the key |
scopes | string[] | No | Array of scopes (empty = full access) |
curl -X POST https://api.snipy.com/api/account/apikeys/add \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "My Integration", "scopes": ["qr:read"]}'{
"error": 0,
"data": {
"id": 2,
"name": "My Integration",
"key": "snpy_a1b2c3d4e5f6789...",
"scopes": ["qr:read"],
"createdAt": "2026-03-04T12:00:00Z"
}
}