Skip to main content
All endpoints are POST requests to https://api.linkrunner.io with a JSON body and Content-Type: application/json.

Authentication

Send your project token in the body of every request as token. That is the only credential these endpoints need.

Common fields

These fields appear on most requests. Send them on every call once your install is registered.

Rules

  • Rate limit: 25 requests per second per token. Over the limit returns 429.
  • Response envelope: most endpoints return { "msg": string, "status": number, "data": object }. init is the exception (see below).
  • Call from the device so Linkrunner sees the device IP.
This reference uses Android examples. On iOS, send "platform": "IOS" and a different device_data shape (IDFA, IDFV, and adservices_attribution_token instead of GAID and the install referrer). The init, trigger, capture-event, and capture-payment responses may also include SKAdNetwork values (fine_conversion_value, coarse_conversion_value, lock_postback). See iOS device data.

init

Registers an install or app open and starts attribution. Call once on app start. Returns 202. Attribution runs in the background, so the response only acknowledges receipt.
To read the attribution result, poll attribution-data with the same install_instance_id.

attribution-data

Returns the attribution result for an install. Safe to poll. The result is cached for 24 hours.
For an organic install, campaign_data is null and attribution_source is "ORGANIC".

trigger (signup)

Identifies the user and ties the install to your user ID. Call when the user signs up or logs in. user_data fields (only id is needed):

set-user-data

Updates user details after signup, for example when the user adds a phone number. Not a replacement for signup.

capture-event

Tracks a custom event. Events are only stored for attributed users, so call signup first.

capture-payment

Tracks revenue. Like events, the user must be attributed via signup. type values: FIRST_PAYMENT, SECOND_PAYMENT, ONE_TIME, RECURRING, WALLET_TOPUP, FUNDS_WITHDRAWAL, SUBSCRIPTION_CREATED, SUBSCRIPTION_RENEWED, SUBSCRIPTION_CANCELLED, SUBSCRIPTION_REFUNDED, SUBSCRIPTION_BILLING_ISSUE, DEFAULT. status values: PAYMENT_INITIATED, PAYMENT_COMPLETED, PAYMENT_FAILED, PAYMENT_CANCELLED.

remove-captured-payment

Removes a captured payment, for a refund. Provide payment_id or user_id.

update-push-token

Stores the device push token, used for uninstall tracking.

integrations

Sends third-party IDs, such as a CleverTap ID.
Reports a deeplink open for remarketing and reattribution. Call when your app opens from a deeplink.

Errors

Need help? Contact support@linkrunner.io