Skip to main content

Links API

Operations​

MethodPathKey scope
POST/api/v1/linkslinks:write
GET/api/v1/linkslinks:read
GET/api/v1/links/{identifier}links:read
PUT/api/v1/links/{identifier}links:write
DELETE/api/v1/links/{identifier}links:write, links:delete
GET/api/v1/links/{shortCode}/qrlinks:read

Use the link identifier or short code accepted by the server's identifier resolver. For authentication, see project scope.

Create​

{
"originalUrl": "https://example.com/offer",
"behavior": "STANDARD",
"utmSource": "newsletter",
"utmMedium": "email",
"utmCampaign": "example"
}

originalUrl and behavior are required. Other documented fields include customAlias, expiresAt (ISO 8601), ogTitle, ogDescription, ogImageUrl, targeting, deep-link configuration and the five UTM values. Only use advanced fields after checking the current schema. tags and title are not creation fields.

Creation returns 201; listing returns a page with content, totalElements, totalPages, number and size. page is zero-based. Supported list filters include search, status, behavior, from, to, campaignId and hasCampaign.

Update and expiry​

Use PUT on an existing identifier. To remove an expiry, send clearExpiresAt: true; an omitted expiry preserves the existing value. A transition to STANDARD or ROUTING clears mobile deep-link configuration and structured payload. Do not combine an explicit expiry and a request to clear it.

The expiry fallback, when configured, applies after expiry. Without a fallback the expired-link response is used. Do not treat link deletion as an analytics privacy erasure.

QR code​

GET renders a QR code for the existing short code. For a logo image, prefer POST on the same QR path with the documented render request. Only supported PNG/JPEG logo input and server size limits are accepted.