Links API
Create, read, update, and delete short links. The Links API supports custom slugs, UTM parameters, device targeting, password protection, expiration, and tags.
# The link object
Fields
idstringUnique link identifier (e.g. lnk_abc123)urlstringThe destination URLshort_urlstringThe full short URL including domainslugstringThe slug portion of the short URLdomainstringThe domain used for the short linktitlestring | nullOptional title for the linktagsstring[]Array of tag stringsclicksnumberTotal click countutm_sourcestring | nullUTM source parameterutm_mediumstring | nullUTM medium parameterutm_campaignstring | nullUTM campaign parameterutm_termstring | nullUTM term parameterutm_contentstring | nullUTM content parameterexpires_atstring | nullISO 8601 expiration timestamppasswordstring | nullPassword protection (write-only)ios_targetstring | nulliOS-specific redirect URLandroid_targetstring | nullAndroid-specific redirect URLcreated_atstringISO 8601 creation timestampupdated_atstringISO 8601 last update timestamp# Query parameters
Filtering and pagination
The following query parameters are available on the GET /v1/links endpoint.
pagenumber1Page number for paginationper_pagenumber50Items per page (max 100)searchstring-Search links by URL, slug, or titletagstring-Filter by tag namedomainstring-Filter by domainsortstringcreated_atSort field: created_at, clicks, updated_atorderstringdescSort order: asc or desccreated_afterstring-ISO 8601 date filtercreated_beforestring-ISO 8601 date filter/v1/linksCreate a link
Create a new short link. If no slug is provided, a random one is generated. If no domain is specified, the workspace default domain is used.
Request body
{
"url": "https://example.com/my-page",
"slug": "my-link",
"domain": "go.yourbrand.com",
"title": "My Campaign Link",
"tags": ["campaign-q1", "social"],
"utm_source": "twitter",
"utm_medium": "social",
"expires_at": "2026-12-31T23:59:59Z"
}Response
{
"id": "lnk_abc123",
"url": "https://example.com/my-page",
"short_url": "https://go.yourbrand.com/my-link",
"slug": "my-link",
"domain": "go.yourbrand.com",
"title": "My Campaign Link",
"tags": ["campaign-q1", "social"],
"clicks": 0,
"created_at": "2026-03-13T10:00:00Z",
"updated_at": "2026-03-13T10:00:00Z"
}/v1/linksList links
Retrieve a paginated list of links in the workspace. Supports filtering by tag, domain, search query, and date range.
Response
{
"data": [
{
"id": "lnk_abc123",
"url": "https://example.com/my-page",
"short_url": "https://go.yourbrand.com/my-link",
"slug": "my-link",
"clicks": 142,
"created_at": "2026-03-13T10:00:00Z"
}
],
"pagination": {
"page": 1,
"per_page": 50,
"total": 234,
"total_pages": 5
}
}/v1/links/:idGet a link
Retrieve a single link by its ID. Returns all link fields including UTM parameters and device targets.
Response
{
"id": "lnk_abc123",
"url": "https://example.com/my-page",
"short_url": "https://go.yourbrand.com/my-link",
"slug": "my-link",
"domain": "go.yourbrand.com",
"tags": ["campaign-q1"],
"clicks": 142,
"created_at": "2026-03-13T10:00:00Z",
"updated_at": "2026-03-13T10:00:00Z"
}/v1/links/:idUpdate a link
Update one or more fields on an existing link. Only the fields you include in the request body are updated. The slug and domain cannot be changed after creation.
Request body
{
"url": "https://example.com/updated-page",
"tags": ["campaign-q2", "email"],
"expires_at": "2027-06-30T23:59:59Z"
}Response
{
"id": "lnk_abc123",
"url": "https://example.com/updated-page",
"short_url": "https://go.yourbrand.com/my-link",
"slug": "my-link",
"tags": ["campaign-q2", "email"],
"expires_at": "2027-06-30T23:59:59Z",
"updated_at": "2026-03-13T12:00:00Z"
}/v1/links/:idDelete a link
Permanently delete a link. The short URL will stop redirecting immediately. This action cannot be undone.
Response
{
"deleted": true,
"id": "lnk_abc123"
}Start creating links via the API.
Generate your API key and create your first short link in seconds.
Get Started