Tracking Link

    An Airbridge tracking link is an all-in-one link that serves as both a linking tool to redirect users and a tracking tool for attribution.

    When they are clicked on, tracking links enable users to reach their desired destination in the app regardless of the platform, channel, or device operating system. It also helps to analyze and attribute the source of user conversions such as link click, post-click install, and post-install purchase.

    It is advised to use the "Tracking link API token" when creating tracking links from the client server.


    POST

    https://api.airbridge.io/v1/tracking-links

    Request to create Tracking Link.

    rate limit : 50 tracking link per second

    Accept-Language
    string

    You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.

    Content-Type
    string

    Represents the media type of the resource. Defaults to application/json.

    Authorization
    string

    The key value to use for API requests. Instructions for getting API keys are in "how to generate API Keys".

    channel
    必須string
    campaignParams
    object
    campaignParams.campaign
    string
    campaignParams.ad_group
    string
    campaignParams.ad_creative
    string
    campaignParams.content
    string
    campaignParams.term
    string
    campaignParams.sub_id
    string
    campaignParams.sub_id_1
    string
    campaignParams.sub_id_2
    string
    campaignParams.sub_id_3
    string
    isReengagement
    enum
    ENUM VALUES
    OFF

    OFF is the default setting. The touchpoint can be attributed to both install events and post-install events (in-app events).

    ON-TRUE

    ON-TRUE is used for re-engagement campaigns for installed users. The touchpoint generated by the tracking link is attributed only to the deeplink open and the following in-app events, not to the install event.

    ON-FALSE

    ON-FALSE is used for user acquisition campaigns targeting uninstalled users. The touchpoint generated by the tracking link is attributed only to the install event and the following in-app events, not to the 'deeplink open' event.

    deeplinkUrl
    stringnullable
    deeplinkOption
    object
    deeplinkOption.showAlertForInitialDeeplinkingIssue
    boolean

    Stopover Page

    true: activate

    false: deactivate

    fallbackPaths
    object
    fallbackPaths.android
    enum
    ENUM VALUES
    google-play

    Landing in the Google Play Store.

    {http_url}

    Landing in the URL.

    fallbackPaths.ios
    enum
    ENUM VALUES
    itunes-appstore

    Landing in the App Store.

    {http_url}

    Landing in the URL.

    fallbackPaths.desktop
    enum
    ENUM VALUES
    google-play

    Landing in the Google Play Store.

    itunes-appstore

    Landing in the App Store.

    airpage

    Landing in the airpage.

    {http_url}

    Landing in the URL.

    fallbackPaths.option
    object
    fallbackPaths.option.iosCustomProductPageId
    string
    fallbackPaths.option.googlePlayCustomStoreListing
    string
    ogTag
    object
    ogTag.title
    string
    ogTag.description
    string
    ogTag.imageUrl
    string
    ogTag.websiteCrawl
    enum
    ENUM VALUES
    desktop

    The Open Graph of the desktop fallbackPath is crawled and used. The values set for title, description, and imageUrl will be ignored.

    ogTag.useDefault
    boolean

    Enable the Social Share preview default values set in the Airbridge dashboard.
    Note. Other parameter values in the og tag will be ignored.

    customShortId
    string
    Request
    12345
    curl -X POST 'https://api.airbridge.io/v1/tracking-links' \
      -H 'Accept-Language: ko' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}' \
      -d '{"channel":"my-channel","campaignParams":{"campaign":"2022_FW_Sale_Festival","ad_group":"UA","ad_creative":"Coat_840x600"},"isReengagement":"ON-TRUE","deeplinkOption":{"showAlertForInitialDeeplinkingIssue":true},"fallbackPaths":{"option":{"iosCustomProductPageId":"5ae82ffe-1f08-428d-b352-ac1c3a22aa1e","googlePlayCustomStoreListing":"custom-store-listing"}},"ogTag":{"title":"30% Off Winter Apparel for 3 Days Only","description":"Get great deals on apparel to keep you warm this winter","imageUrl":"https://static.airbridge.io/images/2021_airbridge_og_tag.png"}}'
    Payload
    1234567891011121314151617181920212223
    {
      "channel": "my-channel",
      "campaignParams": {
        "campaign": "2022_FW_Sale_Festival",
        "ad_group": "UA",
        "ad_creative": "Coat_840x600"
      },
      "isReengagement": "ON-TRUE",
      "deeplinkOption": {
        "showAlertForInitialDeeplinkingIssue": true
      },
      "fallbackPaths": {
        "option": {
          "iosCustomProductPageId": "5ae82ffe-1f08-428d-b352-ac1c3a22aa1e",
          "googlePlayCustomStoreListing": "custom-store-listing"
        }
      },
      "ogTag": {
        "title": "30% Off Winter Apparel for 3 Days Only",
        "description": "Get great deals on apparel to keep you warm this winter",
        "imageUrl": "https://static.airbridge.io/images/2021_airbridge_og_tag.png"
      }
    }

    200SUCCESS

    Tracking Link was successfully created.

    404ERROR

    There is no such app. Please check the request token again.

    422ERROR

    There are some invalid values in request.

    429ERROR

    rate limit exceeded

    Response
    12345678910111213141516
    {
      "data": {
        "trackingLink": {
          "id": 10000,
          "link": {
            "click": "http://abr.ge/@airbridge/my-channel?...",
            "impression": "http://abr.ge/@airbridge/my-channel?...",
            "serverToServerClick": null
          },
          "shortId": "6nwx4w",
          "shortUrl": "http://abr.ge/6nwx4w",
          "channelType": "custom",
          "trackingTemplateId": "706f9839a7b50d87ab917dbb1b9fa7f3"
        }
      }
    }
    Response
    1234567
    {
      "type": "about:blank",
      "title": "Not Found",
      "detail": "There is no such app.",
      "status": 404,
      "traceId": "1-000000-000000000000000"
    }
    Response
    1234567891011
    {
      "detail": [
        {
          "loc": [
            "string"
          ],
          "msg": "string",
          "type": "string"
        }
      ]
    }
    Response
    123456
    {
      "type": "Rate limit exceeded",
      "title": null,
      "status": 429,
      "traceId": "1-6768fb4d-0833f0c4639017b1613ac244"
    }

    GET

    https://api.airbridge.io/v1/tracking-links/{id}

    Get the details of a tracking link.

    Accept-Language
    string

    You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.

    Content-Type
    string

    Represents the media type of the resource. Defaults to application/json.

    Authorization
    string

    The key value to use for API requests. Instructions for getting API keys are in "how to generate API Keys".

    id
    必須string

    The ID of the Tracking Link.

    idType
    string
    Request
    1234
    curl -X GET 'https://api.airbridge.io/v1/tracking-links/10000?idType=id' \
      -H 'Accept-Language: ko' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}'

    200SUCCESS

    400ERROR

    There is an error in the field provided, or there is no such resource.

    422ERROR

    A field is missing or has an error.

    Response
    123456789101112131415161718192021222324252627282930313233343536373839404142434445
    {
      "data": {
        "link": {
          "click": "https://go.ab180.co/@ablog/my-channel?...",
          "impression": null,
          "serverToServerClick": null
        },
        "email": "contact@ab180.co",
        "ogTag": {
          "title": "AB180",
          "imageUrl": "http://static.airbridge.io/images/og_tags/50ca2e8d-07b2-4a0e-8294-f00ddb8e59ae.png",
          "description": "Discovering Metrics That Matter!"
        },
        "company": null,
        "shortId": "ri4lnp",
        "shortUrl": "https://go.ab180.co/ri4lnp",
        "createdAt": "2023-01-01T00:00:00+09:00",
        "channelName": "my-channel",
        "channelType": "custom",
        "deeplinkUrl": null,
        "deeplinkOption": {
          "showAlertForInitialDeeplinkingIssue": false
        },
        "fallbackPaths": {
          "ios": "itunes-appstore",
          "option": {
            "iosCustomProductPageId": null
          },
          "android": "google-play",
          "desktop": "https://airbridge.io"
        },
        "campaignParams": {
          "campaign": "123",
          "adCreative": "asdf",
          "adGroup": "zxcv",
          "content": null,
          "term": "poiu",
          "subId": null,
          "subId1": null,
          "subId2": null,
          "subId3": null
        },
        "isReengagement": "OFF"
      }
    }
    Response
    1234567
    {
      "type": "about:blank",
      "title": "Not Found",
      "detail": "Resource not found.",
      "status": 404,
      "traceId": "1-6450a21d-2b02e4d533589b625d875399"
    }
    Response
    1234567891011
    {
      "detail": [
        {
          "loc": [
            "string"
          ],
          "msg": "string",
          "type": "string"
        }
      ]
    }

    PATCH

    https://api.airbridge.io/v1/tracking-links/{id}/og-tag

    Supported HTTP Methods: PUT, PATCH

    Update the Open Graph of the tracking link.

    Accept-Language
    string

    You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.

    Content-Type
    string

    Represents the media type of the resource. Defaults to application/json.

    Authorization
    string

    The key value to use for API requests. Instructions for getting API keys are in "how to generate API Keys".

    id
    必須string

    The ID of the Tracking Link.

    idType
    string
    title
    必須string
    description
    必須string
    imageUrl
    必須string
    ogTag.websiteCrawl
    enum
    ENUM VALUES
    desktop

    The Open Graph of the desktop fallbackPath is crawled and used. The values set for title, description, and imageUrl will be ignored.

    ogTag.websiteCrawl
    enum
    ENUM VALUES
    desktop

    The Open Graph of the desktop fallbackPath is crawled and used. The values set for title, description, and imageUrl will be ignored.

    ogTag.useDefault
    boolean

    Enable the Social Share preview default values set in the Airbridge dashboard.
    Note. Other parameter values in the og tag will be ignored.

    Request
    12345
    curl -X PATCH 'https://api.airbridge.io/v1/tracking-links/10000/og-tag' \
      -H 'Accept-Language: ko' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}' \
      -d '{"idType":"id","title":"30% Off Winter Apparel for 3 Days Only","description":"Get great deals on apparel to keep you warm this winter","imageUrl":"https://static.airbridge.io/images/2021_airbridge_og_tag.png"}'
    Payload
    123456
    {
      "idType": "id",
      "title": "30% Off Winter Apparel for 3 Days Only",
      "description": "Get great deals on apparel to keep you warm this winter",
      "imageUrl": "https://static.airbridge.io/images/2021_airbridge_og_tag.png"
    }

    200SUCCESS

    400ERROR

    The image URL used an incorrect URL type.

    404ERROR

    There is an error in the field provided, or there is no such resource.

    Response
    1
    {}
    Response
    12345678910111213141516
    {
      "instance": [
        {
          "loc": [
            "imageUrl"
          ],
          "msg": "Invalid URL",
          "type": "validation_error"
        }
      ],
      "detail": "invalid_request",
      "status": 400,
      "title": "Bad Request",
      "traceId": "1-67c6a5e8-1f93748e2c8c732e71767b98",
      "type": "about:blank"
    }
    Response
    1234567
    {
      "type": "about:blank",
      "title": "Not Found",
      "detail": "Resource not found.",
      "status": 404,
      "traceId": "1-6450a21d-2b02e4d533589b625d875399"
    }

    PATCH

    https://api.airbridge.io/v1/tracking-links/{id}/routing

    Supported HTTP Methods: PUT, PATCH

    Update the destination and fallback path for the Tracking Link.

    Accept-Language
    string

    You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.

    Content-Type
    string

    Represents the media type of the resource. Defaults to application/json.

    Authorization
    string

    The key value to use for API requests. Instructions for getting API keys are in "how to generate API Keys".

    id
    必須string

    The ID of the Tracking Link.

    idType
    string
    deeplinkUrl
    stringnullable
    deeplinkOption
    objectnullable
    deeplinkOption.showAlertForInitialDeeplinkingIssue
    booleannullable

    Stopover page

    true : active

    false : inactive

    fallbackPaths
    object
    fallbackPaths.android
    enum
    ENUM VALUES
    google-play

    Landing in the Google Play Store.

    {http_url}

    Landing in the URL.

    fallbackPaths.ios
    enum
    ENUM VALUES
    itunes-appstore

    Landing in the App Store.

    {http_url}

    Landing in the URL.

    fallbackPaths.desktop
    enum
    ENUM VALUES
    google-play

    Landing in the Google Play Store.

    itunes-appstore

    Landing in the App Store.

    airpage

    Landing in the airpage.

    {http_url}

    Landing in the URL.

    fallbackPaths.option
    object
    fallbackPaths.option.iosCustomProductPageId
    string
    fallbackPaths.option.googlePlayCustomStoreListing
    string
    Request
    12345
    curl -X PATCH 'https://api.airbridge.io/v1/tracking-links/10000/routing' \
      -H 'Accept-Language: ko' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}' \
      -d '{"idType":"id","deeplinkOption":{"showAlertForInitialDeeplinkingIssue":true}}'
    Payload
    123456
    {
      "idType": "id",
      "deeplinkOption": {
        "showAlertForInitialDeeplinkingIssue": true
      }
    }

    200SUCCESS

    404ERROR

    There is an error in the field provided, or there is no such resource.

    Response
    1
    {}
    Response
    1234567
    {
      "type": "about:blank",
      "title": "Not Found",
      "detail": "Resource not found.",
      "status": 404,
      "traceId": "1-6450a21d-2b02e4d533589b625d875399"
    }

    GET

    https://api.airbridge.io/v2/tracking-links

    Retrieves a list of generated tracking links.

    Accept-Language
    string

    You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.

    Content-Type
    string

    Represents the media type of the resource. Defaults to application/json.

    Authorization
    string

    The key value to use for API requests. Instructions for getting API keys are in "how to generate API Keys".

    from
    必須string

    The start date for tracking link list query.

    to
    必須string

    The end date for tracking list query.

    next_cursor
    numbernullable

    A cursor used to retrieve the next page of data

    size
    number

    The number of items to retrieve.

    Note that up to 1000 can be set.

    keyword
    string

    The keyword to search for.

    channel_name
    string

    Filter channel.

    sort_key
    enum

    Sort standard. The default is createdAt

    ENUM VALUES
    createdAt

    Sort by created at.

    sort_type
    enum

    Sort by. (Default: ASC)

    ENUM VALUES
    DESC

    Descending.

    ASC

    Ascending.

    Request
    1234
    curl -X GET 'https://api.airbridge.io/v2/tracking-links?from=2023-04-01&to=2023-04-02&next_cursor=123456789&size=10&sort_key=createdAt&sort_type=ASC' \
      -H 'Accept-Language: ko' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}'

    200SUCCESS

    nextCursor

    • Type: number (nullable)

    • Description: A cursor used to retrieve the next page of data. Pass the returned nextCursor value as the next_cursor parameter in the next API request to continue fetching data. If there is no more data available, null will be returned.

    hasNext

    • Type: boolean

    • Description: Indicates whether additional data is available for the next page. Returns true if more data exists, false if no additional data can be retrieved. Typically used in conjunction with nextCursor.

    400ERROR

    The field contains an error or is incorrectly formatted.

    Response
    123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
    {
      "data": {
        "hasNext": true,
        "nextCursor": 55843942,
        "totalCount": 2,
        "trackingLinks": [
          {
            "id": 55835049,
            "link": {
              "click": "https://abr.ge/@app_name/channel?og_tag_id=123&routing_short_id=id&tracking_template_id=template&ad_type=click",
              "impression": null,
              "serverToServerClick": null
            },
            "email": "user@ab180.co",
            "ogTag": {
              "title": "AB180",
              "imageUrl": "http://static.airbridge.io/images/og_tags/50ca2e8d-07b2-4a0e-8294-f00ddb8e59ae.png",
              "description": "Discovering Metrics That Matter!"
            },
            "company": null,
            "shortId": "short_id",
            "shortUrl": "https://abr.ge/short_id",
            "createdAt": "2024-02-26T19:35:02+09:00",
            "channelName": "channel",
            "channelType": "custom",
            "deeplinkUrl": "scheme://",
            "fallbackPaths": {
              "ios": "https://airbridge.io",
              "option": {
                "iosCustomProductPageId": null,
                "googlePlayCustomStoreListing": null
              },
              "android": "https://airbridge.io",
              "desktop": "https://airbridge.io"
            },
            "campaignParams": {
              "term": null,
              "subId": null,
              "subId1": null,
              "subId2": null,
              "subId3": null,
              "adGroup": null,
              "content": null,
              "campaign": null,
              "adCreative": null
            },
            "deeplinkOption": {
              "showAlertForInitialDeeplinkingIssue": false
            },
            "isReengagement": "OFF"
          },
          {
            "id": 55835585,
            "link": {
              "click": "https://abr.ge/@app_name/test?campaign=test&routing_short_id=short&tracking_template_id=template&ad_type=click",
              "impression": null,
              "serverToServerClick": null
            },
            "email": "user@ab180.co",
            "ogTag": {
              "title": "AB180",
              "imageUrl": "http://static.airbridge.io/images/og_tags/50ca2e8d-07b2-4a0e-8294-f00ddb8e59ae.png",
              "description": "Discovering Metrics That Matter!"
            },
            "company": null,
            "shortId": "short_id2",
            "shortUrl": "https://abr.ge/short_id2",
            "createdAt": "2024-02-26T19:40:44+09:00",
            "channelName": "channel",
            "channelType": "custom",
            "deeplinkUrl": null,
            "fallbackPaths": {
              "ios": "itunes-appstore",
              "option": {
                "iosCustomProductPageId": null,
                "googlePlayCustomStoreListing": null
              },
              "android": "google-play",
              "desktop": "https://airbridge.io"
            },
            "campaignParams": {
              "term": null,
              "subId": null,
              "subId1": null,
              "subId2": null,
              "subId3": null,
              "adGroup": null,
              "content": null,
              "campaign": "test",
              "adCreative": null
            },
            "deeplinkOption": {
              "showAlertForInitialDeeplinkingIssue": false
            },
            "isReengagement": "OFF"
          }
        ]
      },
      "resultMessage": "Here is your result."
    }
    Response
    12345678910111213141516
    {
      "instance": [
        {
          "loc": [
            "size"
          ],
          "msg": "must be less than or equal to 1000",
          "type": "validation_error"
        }
      ],
      "detail": "invalid_request",
      "status": 400,
      "title": "Bad Request",
      "traceId": "1-68513579-369f49243aa5430b228cfa8a",
      "type": "about:blank"
    }

    GET

    https://api.airbridge.io/v1/tracking-links

    Get a list of the Tracking Links.

    Accept-Language
    string

    You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.

    Content-Type
    string

    Represents the media type of the resource. Defaults to application/json.

    Authorization
    string

    The key value to use for API requests. Instructions for getting API keys are in "how to generate API Keys".

    from
    必須string

    The start date for tracking link list query.

    to
    必須string

    The end date for tracking list query.

    skip
    number

    The number of items to skip.

    size
    number

    The number of items to retrieve.

    Note that up to 500 can be set.

    keyword
    string

    The keyword to search for.

    channel_name
    string

    Filter channel.

    sort_key
    enum

    Sort standard. The default is createdAt

    ENUM VALUES
    createdAt

    Sort by created at.

    sort_type
    enum

    Sort by. (Default: DESC)

    ENUM VALUES
    DESC

    Descending.

    ASC

    Ascending.

    Request
    1234
    curl -X GET 'https://api.airbridge.io/v1/tracking-links?from=2023-04-01&to=2023-04-02&skip=0&size=10&sort_key=createdAt&sort_type=DESC' \
      -H 'Accept-Language: ko' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}'

    200SUCCESS

    400ERROR

    The field contains an error or is incorrectly formatted.

    Response
    12345678910111213
    {
      "data": {
        "totalCount": 2,
        "trackingLinks": [
          {
            "id": 10001
          },
          {
            "id": 10002
          }
        ]
      }
    }
    Response
    12345678910111213141516
    {
      "instance": [
        {
          "loc": [
            "size"
          ],
          "msg": "must be less than or equal to 1000",
          "type": "validation_error"
        }
      ],
      "detail": "invalid_request",
      "status": 400,
      "title": "Bad Request",
      "traceId": "1-68513579-369f49243aa5430b228cfa8a",
      "type": "about:blank"
    }