Features
Everything Kondaino can do, plan by plan. No feature is held back behind a "contact sales" wall — if it's not on your plan, it's listed here so you know exactly what upgrading gets you.
How short links work
Submit a long URL from your dashboard, the bulk-import CSV, or the API, and
Kondaino returns a short code that resolves at
https://kdourl.com/<code> — for example
https://kdourl.com/g. Visiting that link redirects straight to
your original URL; nothing is shown in between. Registration, login, the
dashboard, and the API all live at kdourl.com
as well — this site (kondaino.com) is the marketing pitch
for that product, not where links are created or resolved.
Beyond the free plan, Kondaino comes in two paid tiers: Standard Services (link shortening + full API) and Custom Services (Standard Services plus a domain of your own, bundled into one term). Feature-for-feature they're identical except for the domain — see /pricing for the full price breakdown by commitment term.
| Feature | Free | Standard Services | Custom Services |
|---|---|---|---|
| Active links | 25 | 100,000 | 100,000 |
| Link expiry | 6 months (fixed) | Up to 24 months — pick your own date | Up to 24 months — pick your own date |
| Link health monitoring (malware, broken links, SSL) | Yes | Yes | Yes |
| One-time & click-limited links | — | Yes | Yes |
| Link groups / campaigns | Yes | Yes | Yes |
| Bulk CSV import | Yes (up to 200 rows/upload) | Yes (up to 200 rows/upload) | Yes (up to 200 rows/upload) |
| Click counts on your dashboard | Yes | Yes | Yes |
| One-click clipboard copy | Yes | Yes | Yes |
| QR code for each short link | — | Yes | Yes |
| API access (create/list links by token) | — | Yes | Yes |
| Domain of your own, bundled into your term | — | — | Yes — at Hostinger's cost, no markup |
| Minimum term | — | 6 months | 1 year |
| Credit card required | No | No — upgrade by email, cancel by email | No — upgrade by email, cancel by email |
Every plan gets the same privacy guarantee: we only ever log a click count, never an IP address, device fingerprint, or referrer. See /about for the full pitch on pricing and privacy.
Link health monitoring
Every link is checked for known malware/phishing listings and basic reachability when you create it, and re-checked automatically about once a day after that — broken destinations, malware/abuse listings, expired or soon-to-expire SSL certificates, and long redirect chains are all flagged. Available on every plan, including free.
One-time & click-limited links (Standard & Custom Services)
Standard Services and Custom Services accounts can cap a link at a set number of visits — a one-time link that stops working after its first click, or a custom limit up to 100,000 — instead of relying on a time-based expiry. The link stops resolving the moment it hits its limit, same as a normal expired link. Not included on the free plan.
Link groups
Organize links into named groups — e.g. one per marketing campaign or newsletter issue — from the "Groups" section of your dashboard. Create, rename, and delete groups; assign a group when creating a link or importing a CSV; move an existing link between groups inline; and filter your links table down to a single group. Deleting a group never deletes its links — they just become ungrouped.
Bulk import
Upload a CSV with one URL per line and Kondaino creates a short link for each row, skipping a header row automatically if the first line isn't a URL. Optionally assign the whole batch to a group. Rows that would exceed your plan's link limit are reported as skipped rather than erroring out the whole upload.
QR codes (Standard & Custom Services)
Standard Services and Custom Services links come with a scannable QR code, available right from the link's row in your dashboard, with a choice of image size. Handy for print materials, signage, or anywhere a tap-to-scan beats typing out a URL. Scanning the code doesn't count as a click on the link's stats. Not included on the free plan.
Custom expiry dates (Standard & Custom Services)
Free links always expire 6 months after creation. Standard Services and Custom Services accounts can instead pick any date up to 24 months out on the create-link form — useful for a campaign link that should outlive (or expire well before) the default window.
API (Standard & Custom Services)
Generate a token from the "API access" section of your dashboard (shown once, at creation) and send it as a bearer token on every request:
Authorization: Bearer kdo_<token>
GET /api/links lists your active links.
POST /api/links creates one, accepting either
application/json or a form-encoded body with a
long_url field. Responses are JSON with a top-level
data key on success or error on failure. The API
obeys the same plan limits as the dashboard, since both call the same
underlying functions. There's no delete/revoke-link endpoint yet, and link
groups can currently only be managed from the dashboard, not the API.
Each token is scoped — links:read for GET,
links:write for POST — and rate-limited to
1,000 requests/hour by default. Every response includes
X-RateLimit-Limit, X-RateLimit-Remaining, and
X-RateLimit-Reset headers; going over the limit returns
429 with a Retry-After header.
Python
import requests
API_TOKEN = "kdo_..."
API_URL = "https://kdourl.com/api/links"
headers = {"Authorization": f"Bearer {API_TOKEN}"}
# Create a short link
resp = requests.post(API_URL, headers=headers, json={
"long_url": "https://example.com/some/long/path",
})
resp.raise_for_status()
print(resp.json())
# {'data': {'id': 42, 'code': 'g', 'short_url': 'https://kdourl.com/g', 'long_url': '...'}}
# List your links
resp = requests.get(API_URL, headers=headers)
resp.raise_for_status()
for link in resp.json()["data"]:
print(link["short_url"], "->", link["long_url"], f"({link['clicks']} clicks)")
PHP
<?php
$token = 'kdo_...';
$apiUrl = 'https://kdourl.com/api/links';
function kondaino_api(string $method, string $url, string $token, ?array $body = null): array
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$headers = ["Authorization: Bearer $token"];
if ($body !== null) {
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
// Create a short link
$created = kondaino_api('POST', $apiUrl, $token, [
'long_url' => 'https://example.com/some/long/path',
]);
echo $created['data']['short_url'], "\n";
// List your links
$list = kondaino_api('GET', $apiUrl, $token);
foreach ($list['data'] as $link) {
echo "{$link['short_url']} -> {$link['long_url']} ({$link['clicks']} clicks)\n";
}
Don't have a paid account yet? Email us to upgrade and we'll turn on API access — no demo, no sales call.
Hosting & Monitoring
Kondaino is built and deployed on Hostinger shared hosting day to day, with their VPS plans as the next step up if we ever outgrow it. We're a paying, satisfied customer of both — the link above is our referral code if you want to try Hostinger's shared hosting or VPS plans yourself.
Uptime is monitored around the clock by UptimeRobot — see our live status page for current and historical uptime. We're a happy customer there too; the link above is our referral link if you want to monitor your own sites.
Create your free account to get started.