Links

List links

Returns your links, newest first by default, with pagination. Filter by type, domain, folder, tag, or free-text search across slug, destination, and title.

GET https://u2l.ai/api/v1/links

Authorizations

Authorizationstringrequired

Bearer authentication header of the form Bearer <token>, where <token> is your U2L API key (u2l_live_...). Create one in the dashboard under Settings > API.

Query Parameters

pageinteger

Page number (1-based). Defaults to 1.

limitinteger

Results per page (max 100). Defaults to 25.

typestring

Filter by link type. One of: SL, QR.

domainstring

Filter by domain.

folderIdstring

Filter by folder ID.

tagstring

Filter by tag.

searchstring

Free-text search across slug, destination, and title.

sortstring

Sort field. One of: createdAt, title, clicks. Defaults to "createdAt".

orderstring

Sort direction. One of: asc, desc. Defaults to "desc".

Response 200

linksobject[]
links[].idstring

Link ID (UUID).

links[].slugstring

The part after the domain.

links[].domainstring

The link's domain.

links[].destinationstring

Where the link redirects to.

links[].titlestring

Optional title.

links[].tagsstring[]
links[].hasPasswordboolean
links[].expiresAtstring

Expiration time, if set.

links[].permanentboolean

true = 301 redirect, false = 302.

links[].typestring

SL = short link, QR = QR code, PG = link-in-bio page. One of: SL, QR, PG.

links[].createdAtstring
links[].updatedAtstring
links[].folderIdstring
links[].clicksinteger

Total clicks.

links[].ogTitlestring

Custom social preview title.

links[].ogDescriptionstring
links[].ogImagestring
links[].abTestEnabledboolean
links[].destinationBstring

A/B variant destination.

links[].splitPercentageinteger

Traffic percentage to destination A.

links[].qrStyleobject

QR styling options (QR links only).

links[].externalBrowserboolean

Open in the phone's default browser when tapped inside in-app browsers (Android).

paginationobject
pagination.pageinteger
pagination.limitinteger
pagination.totalinteger
pagination.totalPagesinteger
pagination.hasMoreboolean

Errors

401 Missing or invalid API key.
429 Rate limit exceeded. Check X-RateLimit-Reset for when the window resets.

See Rate Limits & Errors for the error envelope and per-plan limits.

curl https://u2l.ai/api/v1/links \
  -H "Authorization: Bearer u2l_live_your_api_key"
const response = await fetch("https://u2l.ai/api/v1/links", {
  headers: {
    "Authorization": "Bearer u2l_live_your_api_key",
  },
});

const data = await response.json();
console.log(data);
import requests

response = requests.get(
    "https://u2l.ai/api/v1/links",
    headers={"Authorization": "Bearer u2l_live_your_api_key"},
)

print(response.json())
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://u2l.ai/api/v1/links", nil)
	req.Header.Set("Authorization", "Bearer u2l_live_your_api_key")
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()

	data, _ := io.ReadAll(res.Body)
	fmt.Println(string(data))
}
{
  "links": [
    {
      "id": "9f0c2f9e-3b7a-4c1d-8e5f-2a6b7c8d9e0f",
      "slug": "my-link",
      "domain": "u.gy",
      "destination": "https://example.com/my-page",
      "title": "My example link",
      "tags": [
        "campaign"
      ],
      "hasPassword": false,
      "expiresAt": null,
      "permanent": true,
      "type": "SL",
      "createdAt": "2026-07-20T10:30:00.000Z",
      "updatedAt": "2026-07-20T10:30:00.000Z",
      "folderId": null,
      "clicks": 128
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 42,
    "totalPages": 2,
    "hasMore": true
  }
}