# Generate Personalized Link

This endpoint allows you to generate a **personalized checkout link** based on an existing checkout link created in the Zotlo Dashboard. You can customize the visual content (images & text), pricing (for one-time payments), and additional metadata to create a user-specific checkout flow.

Use this endpoint to run targeted campaigns, pass user attributes, app-2-web scenarios or integrate marketing parameters (MMPs, tracking IDs, Adjust/Appsflyer data, etc.).

The service operates using the **POST** method.

<table data-header-hidden><thead><tr><th width="99.640625"></th><th></th></tr></thead><tbody><tr><td>Method</td><td><h4>  <mark style="color:blue;"><code>POST</code></mark></h4></td></tr><tr><td>URL</td><td><pre data-overflow="wrap" data-full-width="false"><code>https://api.zotlo.com/v2/app-to-web/one-link
</code></pre></td></tr></tbody></table>

## **Request Parameters**

<table><thead><tr><th width="189.25390625">Field</th><th width="115.48828125">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>applicationKey</code></td><td>Required</td><td>The unique key provided for your project. Available under Zotlo Dashboard → Developer Tools → Checkout SDK.</td></tr><tr><td><code>checkoutLinkId</code></td><td>Required</td><td>ID of the checkout link to be customized. A checkout link must first be created in the Zotlo Dashboard.</td></tr><tr><td><code>subscriberIpAddress</code></td><td>Required</td><td>IP address of the user. When country-based pricing  rules are enabled, Zotlo uses this IP as a signal to determine the appropriate price and currency on the checkout page.</td></tr><tr><td><code>language</code></td><td>Required</td><td>Checkout language (e.g., <code>EN</code>, <code>TR</code>).</td></tr><tr><td><code>subscriberId</code></td><td>Optional</td><td>The email or phone number of the user.</td></tr><tr><td><code>productImage</code></td><td>Optional</td><td>Custom product image URL.</td></tr><tr><td><code>additionalText</code></td><td>Optional</td><td>Additional text displayed on checkout.</td></tr><tr><td><code>packageName</code></td><td>Optional</td><td>Custom display name of the package.</td></tr><tr><td><code>customPrice</code></td><td>Optional</td><td>Custom price for one-time purchases.</td></tr><tr><td><code>customCurrency</code></td><td>Optional</td><td>Currency for custom pricing.</td></tr><tr><td><code>customParameters</code></td><td>Optional</td><td>Additional metadata (MMP parameters, tracking IDs).</td></tr></tbody></table>

## **Sample Request**

{% code overflow="wrap" %}

```js
POST https://api.zotlo.com/v2/app-to-web/one-link HTTP/1.1
AccessKey: ••••••
AccessSecret: ••••••
Content-Type: application/json
ApplicationId: •
Language: en

{
  "applicationKey": "989e9bc1fbbbc1b82e18548c4577ed3f24c9dc39cc416db5",
  "subscriberId": "",
  "subscriberIpAddress": "37.24.56.13",
  "language": "en",
  "productImage": "",
  "additionalText": "Zotlo Test",
  "checkoutLinkId": "123",
  "packageName": "Package Name Test",
  "customPrice": "",
  "customCurrency": "",
  "customParameters": {
    "mmp": {
      "appsflyer_id": "id6446176688"
    }
  }
}
```

{% endcode %}

{% hint style="info" %}
You can find your **AccessKey** and **AccessSecret** in the Zotlo Panel under **Developer Tools → API Keys**

Sending **ApplicationId** is optional.
{% endhint %}

## Successful Response

{% code overflow="wrap" %}

```json
{
    "meta": {
        "requestId": "68b5fbdd6f-hpwjc-REQ-683dbb1c4c569",
        "httpStatus": 200
    },
    "result": {
        "oneLink": "https://checkout.zotlo.com/payment/6e7ac760800a071338d6b81b9dc65b9ffbbdd18de17e4cb9a1"
    }
}
```

{% endcode %}

## Key **Response Fields**

<table><thead><tr><th width="193.19921875">Field</th><th>Description</th></tr></thead><tbody><tr><td>onelink</td><td>Personalized link to share</td></tr></tbody></table>

## **Failed Response**

All failed responses follow the same standard error format.\
(See: [**Error Handling**](https://docs.zotlo.com/integrating-zotlo/api-reference/error-handling))
