The klipo.link REST API lets you create, read, list, update and delete your short links, view their statistics, manage their redirect rules, and download their QR code. It's included in every paid plan (monthly, yearly, lifetime).
https://klipo.link/api/v1
Create a token from Settings → API Tokens (account owner only). The token is shown only once, when it's created — keep it somewhere safe.
Send it in the Authorization header of every request:
Authorization: Bearer <your_token>
A token created by an invited member (editor) acts on the same links as the account owner — tokens themselves can only be created by the owner.
Application errors have the following shape:
{
"error": {
"code": "short_url_not_found",
"message": "No short URL found for code "abc12"."
}
}
Validation errors for submitted fields follow Laravel's standard format: {"message": "...", "errors": {"champ": ["..."]}}.
| Status | Code | Meaning |
|---|---|---|
| 401 | - | Token missing, invalid, or revoked. |
| 403 | api_access_requires_paid_plan | The account is on the free plan. |
| 404 | short_url_not_found | No link found for this code. |
| 409 | slug_taken | The requested custom code already exists. |
| 422 | link_limit_reached | The plan's link limit has been reached. |
| 422 | invalid_data | The destination URL was rejected. |
| 403 | feature_not_available | Expiration or redirect rules aren't included in the plan. |
/short-urls
Lists your links, paginated by 20.
Query parameters
page — page number (default 1)q — free-text searchExample
curl https://klipo.link/api/v1/short-urls?page=1 \
-H "Authorization: Bearer $TOKEN"
{
"data": [
{
"shortCode": "promo-ete",
"shortUrl": "https://klipo.link/promo-ete",
"longUrl": "https://exemple.com/collections/ete",
"title": "Campagne été",
"tags": ["campagne", "été"],
"dateCreated": "2026-06-12T14:03:00+00:00",
"validUntil": null,
"visitsSummary": { "total": 4812, "nonBots": 4680 }
}
],
"meta": { "currentPage": 1, "pagesCount": 8, "totalItems": 148 }
}
/short-urls
Creates a new short link.
Request body (JSON)
long_url (required) — the destination URLtitle — free-form titlecustom_slug — custom code (letters, digits, dashes; can't be a word reserved by klipo.link, e.g. login)tags — array of stringsexpires_at — ISO 8601 date - paid plans with expiration onlyExample
curl -X POST https://klipo.link/api/v1/short-urls \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"long_url": "https://exemple.com/page", "custom_slug": "promo-ete"}'
Response: 201 with the created link, same shape as above (without meta).
/short-urls/{'{shortCode}'}
Link details.
curl https://klipo.link/api/v1/short-urls/promo-ete \
-H "Authorization: Bearer $TOKEN"
/short-urls/{'{shortCode}'}
Updates an existing link. Fully replaces the title, tags, and expiration date - an omitted field is removed, not kept.
Request body (JSON)
long_url (required) — the destination URLtitle — free-form titletags — array of stringsexpires_at — ISO 8601 date - paid plans with expiration onlyExample
curl -X PUT https://klipo.link/api/v1/short-urls/promo-ete \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"long_url": "https://exemple.com/nouvelle-page", "title": "Nouveau titre"}'
Response: 200 with the updated link, same shape as above.
/short-urls/{'{shortCode}'}
Deletes a link. Response 204 with no content.
curl -X DELETE https://klipo.link/api/v1/short-urls/promo-ete \
-H "Authorization: Bearer $TOKEN"
/short-urls/{'{shortCode}'}/visits
Click statistics for the last 30 days (fixed window). Detected bots are excluded.
curl https://klipo.link/api/v1/short-urls/promo-ete/visits \
-H "Authorization: Bearer $TOKEN"
{
"data": {
"daily": { "2026-08-15": 12, "2026-08-16": 8, "...": 0 },
"referrers": { "newsletter.exemple.fr": 2140, "instagram.com": 842 },
"countries": { "France": 3104, "Belgique": 612 },
"browsers": { "Chrome": 2890, "Safari": 1204 },
"totalNonBot": 4680
}
}
referrers, countries and browsers are limited to the 5 most frequent values.
Available on paid plans that include redirect rules. A rule redirects to another URL based on the visitor's device, country, or language - the link's default destination applies when no rule matches.
/short-urls/{'{shortCode}'}/redirect-rules
Lists a link's redirect rules, in priority order.
curl https://klipo.link/api/v1/short-urls/promo-ete/redirect-rules \
-H "Authorization: Bearer $TOKEN"
{
"data": [
{
"priority": 1,
"longUrl": "https://exemple.com/mobile",
"conditions": [{ "type": "device", "matchValue": "mobile", "matchKey": null }]
}
]
}
/short-urls/{'{shortCode}'}/redirect-rules
Adds a redirect rule (the new rule is added after the existing ones).
Request body (JSON)
condition_type (required) — device, country or languagecondition_value (required) — device (android, ios, mobile, windows, macos, linux, chromeos, desktop), 2-letter ISO country code (e.g. FR), or language codedestination_url (required) — Redirect URL when the condition matchesExample
curl -X POST https://klipo.link/api/v1/short-urls/promo-ete/redirect-rules \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"condition_type": "device", "condition_value": "mobile", "destination_url": "https://exemple.com/mobile"}'
Response: 201 with the full list of rules, same shape as above.
/short-urls/{'{shortCode}'}/redirect-rules/{'{priority}'}
Deletes a rule by its priority (the number returned by the list above). Response: 204 with no content.
curl -X DELETE https://klipo.link/api/v1/short-urls/promo-ete/redirect-rules/1 \
-H "Authorization: Bearer $TOKEN"
/short-urls/{'{shortCode}'}/qr-code
Generates the short link's QR code and returns the image directly (no JSON).
On paid plans, if a logo has been added in the account settings, it's automatically placed in the center of the QR code — no extra parameter required.
Query parameters
format — png or svg (default png)download — set to 1 to receive a Content-Disposition attachment header instead of an inline responseExample
curl "https://klipo.link/api/v1/short-urls/promo-ete/qr-code?format=svg&download=1" \
-H "Authorization: Bearer $TOKEN" \
-o promo-ete.svg