API
Last updated on 12 March 2026.
This is an overview of the Application Programming Interfaces (APIs) available on Nimble Links. In this document, we cover:
Base URL
The base URL to send all API requests is:
https://www.nimblelinks.com/api/v1.0
Authentication
To get started, head over to your team settings and generate an API key. A key will look something like this:
1a2b3c4d5e6f7g8h9i0j1k2l3m4n5
Every request you send to our API should include your API key as a bearer token:
Authorization: Bearer 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5
Rate Limits
To ensure a consistent developer experience for all API users, the Nimble Links API is rate limited. Rate limits are applied on a per-team basis in unit time. If you exceed the rate limit, you will receive a 429 Too Many Requests response.
These are the current limits that apply to all teams by default:
- 30 requests per minute
- 300 requests per hour
We may change these limits in the future to balance for demand and reliability.
For higher limits, please reach out to support@nimblelinks.com.
Link Management API
This API allows you to list, create, and delete links under your team.
List Links
Retrieve a paginated list of links.
| Parameter | Type | Description |
|---|---|---|
page | integer | The page number to retrieve Default: 1 |
limit | integer | The number of links to retrieve per page Default: 10 Maximum: 25 |
{
"data": [
{
"id": "a1b2c3e4",
"title": null,
"type": "short-link",
"domain_id": null,
"custom_slug": null,
"settings": {
"destination": "https://example.com",
"forward_parameters": false
},
"url": "https://nimble.li/a1b2c3e4",
"created_at": "2023-11-14T13:32:55.000000Z",
"updated_at": "2023-11-14T13:33:38.000000Z"
},
{
"...": "..."
}
],
"links": {
"first": "https://www.nimblelinks.com/api/v1.0/links?page=1",
"last": "https://www.nimblelinks.com/api/v1.0/links?page=4",
"prev": null,
"next": "https://www.nimblelinks.com/api/v1.0/links?page=2"
}
}Get Link
Retrieve a specific link.
{
"data": {
"id": "a1b2c3e4",
"title": null,
"type": "qr-code",
"domain_id": null,
"custom_slug": "my-brand",
"settings": {
"destination": "https://example.com",
"forward_parameters": false
},
"url": "https://nimble.li/my-brand",
"created_at": "2023-11-14T13:31:41.000000Z",
"updated_at": "2023-11-14T13:31:41.000000Z"
}
}Create Link
Create a new link.
This endpoint accepts different parameters depending on the type of link you're creating.
Short Link
Shorten a long URL.
| Parameter | Type | Description |
|---|---|---|
type | enum | The type of link to create |
title | string | An optional title for the link |
domain_id | integer | The ID of a custom domain to use Optional |
custom_slug | string | A custom slug for the short URL (e.g. my-brand)Min 3 characters on default domain. Requires a paid plan on the default domain. Optional |
forward_parameters | boolean | Whether URL parameters should be forwarded to the destination Default: false |
destination | string | The destination URL |
{
"type": "short-link",
"destination": "https://example.com"
}Password-Protected Link
Create a link that requires a password to access.
| Parameter | Type | Description |
|---|---|---|
type | enum | The type of link to create |
title | string | An optional title for the link |
domain_id | integer | The ID of a custom domain to use Optional |
custom_slug | string | A custom slug for the short URL (e.g. my-brand)Min 3 characters on default domain. Requires a paid plan on the default domain. Optional |
forward_parameters | boolean | Whether URL parameters should be forwarded to the destination Default: false |
destination | string | The destination URL |
password | string | The password |
{
"type": "password-protected-link",
"destination": "https://example.com",
"password": "secret"
}QR Code
Create a QR code from a URL.
| Parameter | Type | Description |
|---|---|---|
type | enum | The type of link to create |
title | string | An optional title for the link |
domain_id | integer | The ID of a custom domain to use Optional |
custom_slug | string | A custom slug for the short URL (e.g. my-brand)Min 3 characters on default domain. Requires a paid plan on the default domain. Optional |
forward_parameters | boolean | Whether URL parameters should be forwarded to the destination Default: false |
destination | string | The destination URL |
{
"type": "qr-code",
"destination": "https://example.com"
}Redirect Evenly
Create a link that distributes traffic evenly.
| Parameter | Type | Description |
|---|---|---|
type | enum | The type of link to create |
title | string | An optional title for the link |
domain_id | integer | The ID of a custom domain to use Optional |
custom_slug | string | A custom slug for the short URL (e.g. my-brand)Min 3 characters on default domain. Requires a paid plan on the default domain. Optional |
forward_parameters | boolean | Whether URL parameters should be forwarded to the destination Default: false |
destinations | string[] | List of destination URLs |
{
"type": "redirect-evenly",
"destinations": [
"https://example.com/a",
"https://example.com/b"
]
}Redirect Randomly
Create a link that distributes traffic randomly.
| Parameter | Type | Description |
|---|---|---|
type | enum | The type of link to create |
title | string | An optional title for the link |
domain_id | integer | The ID of a custom domain to use Optional |
custom_slug | string | A custom slug for the short URL (e.g. my-brand)Min 3 characters on default domain. Requires a paid plan on the default domain. Optional |
forward_parameters | boolean | Whether URL parameters should be forwarded to the destination Default: false |
destinations | string[] | List of destination URLs |
{
"type": "redirect-randomly",
"destinations": [
"https://example.com/a",
"https://example.com/b"
]
}Redirect by Weight
Create a link that distributes traffic using weighted randomization.
| Parameter | Type | Description |
|---|---|---|
type | enum | The type of link to create |
title | string | An optional title for the link |
domain_id | integer | The ID of a custom domain to use Optional |
custom_slug | string | A custom slug for the short URL (e.g. my-brand)Min 3 characters on default domain. Requires a paid plan on the default domain. Optional |
forward_parameters | boolean | Whether URL parameters should be forwarded to the destination Default: false |
destinations | object[] | List of URLs and their corresponding weights |
destinations.*.url | string | The destination URL |
destinations.*.weight | string | The weight as an integer or a decimal number divisible by 0.5 and maximum 1 decimal point |
{
"type": "redirect-weight",
"destinations": [
{
"url": "https://example.com/a",
"weight": 1
},
{
"url": "https://example.com/b",
"weight": 3
}
]
}Redirect by Device
Create a link that redirects users to different destinations based on their device type.
| Parameter | Type | Description |
|---|---|---|
type | enum | The type of link to create |
title | string | An optional title for the link |
domain_id | integer | The ID of a custom domain to use Optional |
custom_slug | string | A custom slug for the short URL (e.g. my-brand)Min 3 characters on default domain. Requires a paid plan on the default domain. Optional |
forward_parameters | boolean | Whether URL parameters should be forwarded to the destination Default: false |
destinations | object[] | List of device types and their corresponding destination URLs |
destinations.*.category | enum | desktop, tablet, mobile, or fallback |
destinations.*.url | string | The destination URL |
{
"type": "redirect-device",
"destinations": [
{
"category": "mobile",
"url": "https://m.example.com"
},
{
"category": "fallback",
"url": "https://example.com"
}
]
}Redirect by Operating System
Create a link that redirects users to different destinations based on their operating system.
| Parameter | Type | Description |
|---|---|---|
type | enum | The type of link to create |
title | string | An optional title for the link |
domain_id | integer | The ID of a custom domain to use Optional |
custom_slug | string | A custom slug for the short URL (e.g. my-brand)Min 3 characters on default domain. Requires a paid plan on the default domain. Optional |
forward_parameters | boolean | Whether URL parameters should be forwarded to the destination Default: false |
destinations | object[] | List of operating systems and their corresponding destination URLs |
destinations.*.category | enum | ios, android, or fallback |
destinations.*.url | string | The destination URL |
{
"type": "redirect-operating-system",
"destinations": [
{
"category": "ios",
"url": "https://example.com/ios"
},
{
"category": "fallback",
"url": "https://example.com"
}
]
}Redirect by Browser
Create a link that redirects users to different destinations based on their web browser.
| Parameter | Type | Description |
|---|---|---|
type | enum | The type of link to create |
title | string | An optional title for the link |
domain_id | integer | The ID of a custom domain to use Optional |
custom_slug | string | A custom slug for the short URL (e.g. my-brand)Min 3 characters on default domain. Requires a paid plan on the default domain. Optional |
forward_parameters | boolean | Whether URL parameters should be forwarded to the destination Default: false |
destinations | object[] | List of browsers and their corresponding destination URLs |
destinations.*.category | enum | chrome, firefox, safari, edge, opera, or fallback |
destinations.*.url | string | The destination URL |
{
"type": "redirect-browser",
"destinations": [
{
"category": "chrome",
"url": "https://example.com/chrome"
},
{
"category": "fallback",
"url": "https://example.com"
}
]
}Redirect by Country
Create a link that redirects users to different destinations based on their country.
| Parameter | Type | Description |
|---|---|---|
type | enum | The type of link to create |
title | string | An optional title for the link |
domain_id | integer | The ID of a custom domain to use Optional |
custom_slug | string | A custom slug for the short URL (e.g. my-brand)Min 3 characters on default domain. Requires a paid plan on the default domain. Optional |
forward_parameters | boolean | Whether URL parameters should be forwarded to the destination Default: false |
destinations | object[] | List of countries and their corresponding destination URLs |
destinations.*.country | string(2) | ISO 3166-1 alpha-2 country code |
destinations.*.url | string | The destination URL |
{
"type": "redirect-country",
"destinations": [
{
"country": "US",
"url": "https://example.com/us"
},
{
"country": "CA",
"url": "https://example.com/ca"
},
{
"country": "fallback",
"url": "https://example.com"
}
]
}Redirect by Language
Create a link that redirects users to different destinations based on their preferred language.
| Parameter | Type | Description |
|---|---|---|
type | enum | The type of link to create |
title | string | An optional title for the link |
domain_id | integer | The ID of a custom domain to use Optional |
custom_slug | string | A custom slug for the short URL (e.g. my-brand)Min 3 characters on default domain. Requires a paid plan on the default domain. Optional |
forward_parameters | boolean | Whether URL parameters should be forwarded to the destination Default: false |
destinations | object[] | List of languages and their corresponding destination URLs |
destinations.*.language | string(2) | ISO 639-1 country code |
destinations.*.url | string | The destination URL |
{
"type": "redirect-language",
"destinations": [
{
"country": "en",
"url": "https://example.com/en"
},
{
"country": "fr",
"url": "https://example.com/fr"
},
{
"country": "fallback",
"url": "https://example.com"
}
]
}Redirect by Click Count
Create a link that redirects users to different destinations based on the number of clicks on your link.
| Parameter | Type | Description |
|---|---|---|
type | enum | The type of link to create |
title | string | An optional title for the link |
domain_id | integer | The ID of a custom domain to use Optional |
custom_slug | string | A custom slug for the short URL (e.g. my-brand)Min 3 characters on default domain. Requires a paid plan on the default domain. Optional |
forward_parameters | boolean | Whether URL parameters should be forwarded to the destination Default: false |
destinations | object[] | List of limits and their corresponding destination URLs |
destinations.*.limit | integer | Number of clicks allowed per destination -1 represents fallback. |
destinations.*.url | string | The destination URL |
{
"type": "redirect-click-count",
"destinations": [
{
"limit": 10,
"url": "https://example.com/super-early-bird"
},
{
"limit": 90,
"url": "https://example.com/early-bird"
},
{
"limit": -1,
"url": "https://example.com/fallback"
}
]
}Redirect by Date & Time
Create a link that redirects users to different destinations based on when they click on the link.
| Parameter | Type | Description |
|---|---|---|
type | enum | The type of link to create |
title | string | An optional title for the link |
domain_id | integer | The ID of a custom domain to use Optional |
custom_slug | string | A custom slug for the short URL (e.g. my-brand)Min 3 characters on default domain. Requires a paid plan on the default domain. Optional |
forward_parameters | boolean | Whether URL parameters should be forwarded to the destination Default: false |
destinations | object[] | List of datetimes and and their corresponding destination URLs |
destinations.*.datetime | datetime | Datetime in YYYY-MM-DDThh:mm format |
destinations.*.url | string | The destination URL |
{
"type": "redirect-date-time",
"destinations": [
{
"datetime": "2023-01-15T15:12",
"url": "https://example.com/early-bird"
},
{
"datetime": -1,
"url": "https://example.com/standard-price"
}
]
}Redirect by Time
Create a link that redirects users to different destinations based on time of day.
| Parameter | Type | Description |
|---|---|---|
type | enum | The type of link to create |
title | string | An optional title for the link |
domain_id | integer | The ID of a custom domain to use Optional |
custom_slug | string | A custom slug for the short URL (e.g. my-brand)Min 3 characters on default domain. Requires a paid plan on the default domain. Optional |
forward_parameters | boolean | Whether URL parameters should be forwarded to the destination Default: false |
destinations | object[] | List of times and and their corresponding destination URLs |
destinations.*.time | time | Datetime in hh:mm format |
destinations.*.url | string | The destination URL |
{
"type": "redirect-time",
"destinations": [
{
"datetime": "15:00",
"url": "https://example.com/lunch-menu"
},
{
"datetime": -1,
"url": "https://example.com/dinner-menu"
}
]
}Redirect Formula
Creating links that redirect by formula is currently not supported via the API.
Link in Bio
Creating Link in Bio pages is currently not supported via the API.
Delete Link
Delete a link permanently.
Get QR Code
Retrieve the QR Code files for a specific link.
{
"data": {
"svg": "https://www.nimblelinks.com/links/a1b2c3e4/qr/download?format=svg",
"png": "https://www.nimblelinks.com/links/a1b2c3e4/qr/download?format=png"
}
}Link Analytics API
The Analytics API provides endpoints for monitoring how a team's links are performing.
Link Clicks Total
Get the total number of times a link has been clicked.
{
"value": 4812
}Link Clicks Trend
Get the daily, weekly, or monthly number of clicks on a link
| Parameter | Type | Description |
|---|---|---|
interval | enum | daily, weekly, or monthly |
start | date | In YYYY-MM-DD format |
end | date | In YYYY-MM-DD format |
{
"2023-01-01": 3,
"2023-01-02": 0,
"2023-01-03": 1
}