SDK API reference
The SDK API is what apps call. It is separate from the dashboard and uses an app's SDK key, never your account.
Base URL
https://api.unolink.dev/v1
Authentication
Create a key in the dashboard under your app's SDK tab (Pro plan and up), and send it in a header:
X-Unolink-Key: ulk_…
The key goes inside your app, so treat it as public. It can only look up and report data for the one app it belongs to, and you can revoke it at any time. Use one key per environment or build so you can revoke them separately. The full key is shown once, when you create it; Unolink stores only a hash.
Errors
Errors are JSON problem details with a status, a title, a detail
and, where useful, a stable code.
| Status | When |
|---|---|
401 | The key is missing, malformed, unknown or revoked (code: invalid_key). |
403 | The app's owner is not on a plan that includes the SDK API. |
404 | The resource doesn't exist, or belongs to another app. |
429 | Too many requests from one IP address. Retry later, with backoff. |
GET /v1/clicks/{clickId}
Resolves a click ID from the Google Play install referrer to its link.
curl https://api.unolink.dev/v1/clicks/clk_01JA9Q3F6Z8W2K4N7R5T1V0X3Y -H "X-Unolink-Key: ulk_…"
{
"clickId": "clk_01JA9Q3F6Z8W2K4N7R5T1V0X3Y",
"occurredAt": "2026-10-08T09:41:12.512+00:00",
"link": { "slug": "tiktok", "name": "TikTok", "isDefault": false },
"deepLink": "/promo/3for2",
"params": { "offer": "3for2" },
"utm": { "source": "tiktok", "medium": "paid", "campaign": "launch", "term": null, "content": "ad7" }
}
link.slugisnullfor the app's main link.deepLinkandparamsare the link's current values, so an edit made after the click still reaches the app.- The UTM tags are the ones on the link that was tapped.