When a user clicks a DynaLink, the Dynalink fingerprint page runs in the browser before the redirect. It:
gclid, fbclid, ttclid, etc.).{IP}-{OS}-{OSVersion}-{ScreenResolution}.After the user installs and opens the app, the SDK re-generates the fingerprint (or reads the Android install referrer), finds the matching record, marks it as confirmed (confirmed_at), and calls the attribution API to retrieve the captured click IDs.
The attribution API is therefore only useful after the SDK has called mark-as-processed. Unconfirmed fingerprints return 404.
All attribution endpoints require the x-project-key header.
GET https://dynalink.app/api/attribution/fingerprint/{fingerprint}
Returns attribution data for a specific device fingerprint string ({IP}-{OS}-{Version}-{Resolution}).
curl https://dynalink.app/api/attribution/fingerprint/203.0.113.5-iOS-17.4-390x840 \
-H "x-project-key: YOUR_PROJECT_KEY"
GET https://dynalink.app/api/attribution/code/{code}
Returns the most recent confirmed attribution for a given short code. Useful when the deep link opens an already-installed app — the click IDs may not be in the URI params but are retrievable here.
curl https://dynalink.app/api/attribution/code/SUMR99 \
-H "x-project-key: YOUR_PROJECT_KEY"
Both endpoints return the same shape.
Success (HTTP 200)
{
"matched": true,
"dyna_code": "SUMR99",
"gclid": "Cj0KCQjw...",
"gbraid": null,
"fbclid": "FB.AbCdEfGh...",
"fbclid_captured_at": 1716211200,
"ttclid": null,
"twclid": null,
"li_fat_id": null,
"campaign_id": 4,
"campaign_name": "Summer 2026",
"utm_source": "google",
"utm_medium": "cpc",
"utm_campaign": "summer_2026",
"utm_term": null,
"utm_content": null,
"attributed_at": "2026-05-21T10:05:00Z"
}
Not found (HTTP 404)
{ "matched": false }
| Field | Type | Description |
|---|---|---|
matched |
boolean | Whether a confirmed attribution was found |
dyna_code |
string | Short code of the matched link |
gclid |
string | Google Ads click ID |
gbraid |
string | Google Ads enhanced click ID (iOS 14.5+) |
fbclid |
string | Meta (Facebook/Instagram) click ID |
fbclid_captured_at |
integer | Unix timestamp when fbclid was first captured |
ttclid |
string | TikTok click ID |
twclid |
string | X (Twitter) click ID |
li_fat_id |
string | LinkedIn first-party ad tracking ID |
campaign_id |
integer | Associated campaign ID |
campaign_name |
string | Campaign display name |
utm_source |
string | UTM source |
utm_medium |
string | UTM medium |
utm_campaign |
string | UTM campaign slug |
utm_term |
string | UTM term |
utm_content |
string | UTM content |
attributed_at |
string | ISO 8601 UTC timestamp when the install was confirmed |
| Field | Ad Network | What to do with it |
|---|---|---|
gclid |
Google Ads | Import as a conversion via the Google Ads API |
gbraid |
Google Ads (iOS 14.5+) | Use with Google Enhanced Conversions |
fbclid |
Meta (Facebook / Instagram) | Send as an install event to the Facebook CAPI |
ttclid |
TikTok | Send to the TikTok Events API |
twclid |
X (Twitter) | Send to the X Ads conversion API |
li_fat_id |
Pass to the LinkedIn Insight Tag |
{tip} The Dynalink Flutter SDK handles the full attribution flow automatically and exposes all click IDs on the
DynalinkEvent. You only need this API directly if you are building a custom integration.