Developer docs
Omni Links REST API
Create scoped API keys in the product dashboard, then call the REST API with a Bearer token. API keys are workspace-scoped and can be revoked at any time. Link mutations enforce the workspace UTM policy.
Authentication
curl https://your-domain.com/api/v1/links \ -H "Authorization: Bearer $OMNI_LINKS_API_KEY"
Create a link
curl https://your-domain.com/api/v1/links \
-H "Authorization: Bearer $OMNI_LINKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"destinationUrl": "https://example.com/landing",
"slug": "launch",
"title": "Launch campaign",
"password": "at-least-8-characters",
"tags": ["launch", "paid"],
"utmParameters": {
"utm_source": "newsletter",
"utm_medium": "email"
}
}'Passwords are write-only and must be 8–128 characters. Link responses expose only passwordProtected; password hashes are never returned or included in workspace exports. If you provide a slug, it must contain at least two URL-safe characters. Omit the field to generate one automatically.
Bulk create links
curl https://your-domain.com/api/v1/links/bulk \
-H "Authorization: Bearer $OMNI_LINKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"links": [
{
"destinationUrl": "https://example.com/launch",
"slug": "launch",
"title": "Launch campaign"
}
]
}'Create a webhook
curl https://your-domain.com/api/v1/webhook-endpoints \
-H "Authorization: Bearer $OMNI_LINKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/webhooks/omni-links",
"events": ["link.created", "link.clicked"]
}'Export analytics
curl "https://your-domain.com/api/v1/exports/analytics?format=csv&days=30" \ -H "Authorization: Bearer $OMNI_LINKS_API_KEY"
Create a scheduled report
curl https://your-domain.com/api/v1/reports/analytics \
-H "Authorization: Bearer $OMNI_LINKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Weekly growth report",
"frequency": "weekly",
"format": "csv",
"rangeDays": 30,
"recipients": ["growth@example.com"],
"webhookUrl": "https://example.com/omni-reports"
}'Create a route rule
curl https://your-domain.com/api/v1/links/link_uuid/route-rules \
-H "Authorization: Bearer $OMNI_LINKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "country",
"operator": "equals",
"matchValue": "DE",
"destinationUrl": "https://example.com/de",
"priority": 10
}'Create a QR code
curl https://your-domain.com/api/v1/qr-codes \
-H "Authorization: Bearer $OMNI_LINKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"linkId": "link_uuid",
"name": "Launch poster",
"customization": {
"foregroundColor": "#111827",
"backgroundColor": "#ffffff",
"errorCorrectionLevel": "H",
"margin": 3,
"patternStyle": "rounded"
}
}'Endpoints
/api/v1/linksList links in the API key workspace.
links:read/api/v1/linksCreate a short link.
links:write/api/v1/links/{id}Fetch one link.
links:read/api/v1/links/{id}Update destination, slug, status, UTMs, metadata, or domain.
links:write/api/v1/links/{id}Delete a link.
links:write/api/v1/links/bulkCreate up to 100 links with per-row success and error details.
links:write/api/v1/links/bulkBulk update status, campaign, or tags for up to 100 links.
links:write/api/v1/links/bulkBulk delete up to 100 links.
links:write/api/v1/links/{id}/clicksExport recent click events for a link.
analytics:read/api/v1/links/{id}/route-rulesList dynamic routing rules for a link.
route_rules:read/api/v1/links/{id}/route-rulesCreate a device, geo, referrer, language, OS, or split rule.
route_rules:write/api/v1/links/{id}/route-rules/{ruleId}Fetch one route rule.
route_rules:read/api/v1/links/{id}/route-rules/{ruleId}Update a route rule.
route_rules:write/api/v1/links/{id}/route-rules/{ruleId}Delete a route rule.
route_rules:write/api/v1/domainsList branded domains.
domains:read/api/v1/domainsRegister a branded domain.
domains:write/api/v1/domains/{id}Fetch one branded domain.
domains:read/api/v1/domains/{id}Set default, enable, or disable a domain.
domains:write/api/v1/domains/{id}Delete a domain.
domains:write/api/v1/domains/{id}/verifyCheck the required TXT verification record.
domains:write/api/v1/bio-pagesList bio pages.
bio_pages:read/api/v1/bio-pagesCreate a bio page.
bio_pages:write/api/v1/bio-pages/{id}Fetch one bio page.
bio_pages:read/api/v1/bio-pages/{id}Update page metadata, theme, domain, or publish state.
bio_pages:write/api/v1/bio-pages/{id}Delete a bio page.
bio_pages:write/api/v1/bio-pages/{id}/itemsList bio page items.
bio_pages:read/api/v1/bio-pages/{id}/itemsCreate a bio page item.
bio_pages:write/api/v1/bio-pages/{id}/items/{itemId}Update item content, type, position, or visibility.
bio_pages:write/api/v1/bio-pages/{id}/items/{itemId}Delete a bio page item.
bio_pages:write/api/v1/utm-templatesList UTM templates.
utm_templates:read/api/v1/utm-templatesCreate a UTM template with workspace policy validation.
utm_templates:write/api/v1/utm-templates/{id}Fetch one UTM template.
utm_templates:read/api/v1/utm-templates/{id}Update a UTM template.
utm_templates:write/api/v1/utm-templates/{id}Delete a UTM template.
utm_templates:write/api/v1/webhook-endpointsList webhook endpoints.
webhooks:read/api/v1/webhook-endpointsCreate a webhook endpoint and return its signing secret once.
webhooks:write/api/v1/webhook-endpoints/{id}Fetch one webhook endpoint.
webhooks:read/api/v1/webhook-endpoints/{id}Update webhook URL, events, or active state.
webhooks:write/api/v1/webhook-endpoints/{id}Delete a webhook endpoint.
webhooks:write/api/v1/webhook-deliveriesList webhook delivery attempts.
webhooks:read/api/v1/webhook-deliveries/{id}/retryRetry a failed or pending webhook delivery.
webhooks:write/api/v1/analyticsFetch workspace-level analytics groupings.
analytics:read/api/v1/reports/analyticsList scheduled analytics reports.
reports:read/api/v1/reports/analyticsCreate a scheduled analytics report.
reports:write/api/v1/reports/analytics/{id}Fetch one scheduled analytics report.
reports:read/api/v1/reports/analytics/{id}Update a scheduled analytics report.
reports:write/api/v1/reports/analytics/{id}Delete a scheduled analytics report.
reports:write/api/v1/reports/analytics/{id}/runsList generated report runs.
reports:read/api/v1/reports/analytics/{id}/runsGenerate a scheduled analytics report immediately.
reports:write/api/v1/exports/analyticsExport enriched click analytics as JSON or CSV.
exports:read/api/v1/exports/workspaceDownload a redacted full workspace JSON export.
exports:read/api/v1/qr-codesCreate a QR code for an existing link.
qr_codes:writeWebhooks
Create webhook endpoints in the Developers dashboard. Omni Links queues deliveries for link lifecycle events, link clicks, QR scans, and bio page item clicks.
Signature header
omni-signature: t=...,v1=...Signing base
HMAC_SHA256(secret, timestamp + "." + rawBody)