Wasoolo Tools URL Shortener API
Wasoolo Tools gives you a free REST API to create short links and custom keywords from your own code. It returns clean JSON, needs no API key and no sign-up, and applies only fair-use rate limits per IP. Send a long URL to one endpoint and get a ready-to-share short link plus a free QR code and click analytics page in return.
The API powers the same free URL shortener you use in the browser, so anything you can do on the website you can also automate: shorten links in bulk, attach a memorable custom keyword, and hand each short link a free QR code and a click-analytics page. There is exactly one write endpoint and it is documented in full below — nothing here is hidden behind a paywall or a token.
Quick start
The base URL for every request is https://tools.wasoolo.com. There is no authentication, no header to set, and no key to manage — just POST your URL and read the JSON back. To keep the service fast and free for everyone, requests are limited per IP address on a sliding window. When you go over a limit you get a 429 response with a Retry-After header telling you how many seconds to wait before retrying.
| Property | Value |
|---|---|
| Base URL | https://tools.wasoolo.com |
| Auth | None — no API key, no account |
| Per-minute limit | ~6 requests / minute / IP |
| Per-hour limit | 30 requests / hour / IP |
| Per-day limit | 120 requests / day / IP |
| When exceeded | 429 Too Many Requests + Retry-After (seconds) |
Limits are generous for normal scripting and one-off jobs. If you need higher throughput for a legitimate use, write to help@wasoolo.com and tell us what you are building.
Create a short link
Send a single POST with a form body. The endpoint accepts both application/x-www-form-urlencoded and multipart/form-data, so a plain HTML form, a curl -d call, or a fetch with FormData all work.
POST https://tools.wasoolo.com/api/shorten
Creates one short link and returns it as JSON.
| Field | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | The long destination to shorten. Must be a valid http or https URL. |
| keyword | string | No | A custom keyword for the path, e.g. sale → /sale/x7Qk9. Letters, numbers and hyphens. Omit it for a short auto code only. |
Response
On success you get "ok": true and the new link. The statsUrl field is the address of an HTML click-analytics page you open in a browser — it is not a JSON endpoint, so don't try to parse it. The createdAt value is a Unix timestamp in seconds.
{
"ok": true,
"shortUrl": "https://tools.wasoolo.com/sale/x7Qk9",
"code": "x7Qk9",
"keyword": "sale",
"path": "sale/x7Qk9",
"destination": "https://example.com/...",
"statsUrl": "https://tools.wasoolo.com/stats/x7Qk9",
"createdAt": 1782560000
}
Errors
When something is wrong the response carries "ok": false and an error message, with a matching HTTP status. Always check the status code as well as the ok flag.
| Status | Meaning | Example body |
|---|---|---|
| 400 | Invalid or blocked URL (missing url, not http/https, or flagged as malicious) | {"ok":false,"error":"Invalid URL"} |
| 429 | Rate limited — too many requests from your IP; see Retry-After | {"ok":false,"error":"Rate limit exceeded"} |
Code examples
Each example POSTs a url (and an optional keyword) to /api/shorten and reads shortUrl from the JSON.
curl
# url is required, keyword is optional
curl -X POST https://tools.wasoolo.com/api/shorten \
-d "url=https://example.com/very/long/path" \
-d "keyword=sale"
JavaScript (fetch)
const body = new URLSearchParams({
url: "https://example.com/very/long/path",
keyword: "sale" // optional
});
const res = await fetch("https://tools.wasoolo.com/api/shorten", {
method: "POST",
body
});
const data = await res.json();
console.log(data.shortUrl); // https://tools.wasoolo.com/sale/x7Qk9
PHP (curl)
// url required, keyword optional
$ch = curl_init("https://tools.wasoolo.com/api/shorten");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
"url" => "https://example.com/very/long/path",
"keyword" => "sale",
]));
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
echo $data["shortUrl"]; // https://tools.wasoolo.com/sale/x7Qk9
Fair use
The API is free, so please keep it clean: no spam, no abuse, and no automated bulk creation of throwaway links. Every destination is validated, and links found to be malicious or in breach of our rules are removed. By using the API you agree to our terms of use. If you build something useful with it, we'd love to hear about it.
Do I need an API key?
What does the API return?
Is the API free?
Try it first
Shorten a link in the browser, then automate it
See exactly what the API returns by creating a link by hand — then drop the same request into your code.
Free forever · no account · links never expire · from the Wasoolo team