URL Shorteners — entry 003 of 11
CleanURI
CleanURI is a minimal, free URL shortener with a single documented endpoint: POST /api/v1/shorten takes a (URL-encoded) long URL and returns a short cleanuri.com link as JSON. It needs no account or API key, making it one of the simplest shorteners to call programmatically, though it offers no analytics, custom aliases, or link management beyond creation.
CleanURI is a single-endpoint URL shortener: POST /shorten takes a long URL and hands back a short cleanuri.com link as JSON. A live POST this run went through with no account, no key, and no signup — the entire surface is that one route.
GreatAPIs Score
Auth quickstart
- No API key, signup, or credit card required — a live POST this run against
/api/v1/shortenwith just a form-encodedurlfield returned a real short link with noAuthorizationheader and no prior registration step.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Shorten a long URL
POSThttps://cleanuri.com/api/v1/shorten
Content-Type: application/x-www-form-urlencoded url=https%3A%2F%2Fgithub.com%2Fanthropics%2Fclaude-code
{"result_url":"https:\/\/cleanuri.com\/nmA8Oz"}The response echoes the escaped-slash JSON exactly as the API sends it (\/ rather than /) — that's the live wire format, not a rendering artifact. The short link's path segment is a fixed-length random string, not sequential or derived from the input.
Developer reference
2 requests/second per IP
Gotchas & limits
- CORS is not supported — a live POST this run with
Origin: https://example.comreturned200with noAccess-Control-Allow-Originheader at all, and a follow-upOPTIONSpreflight on the same path didn't get CORS treatment either: it came back405 Method not allowed(POSTis the only method the route accepts, so the preflight itself is rejected before any CORS headers would apply). Calling this from client-side JavaScript on another origin will fail. - A malformed
urlvalue doesn't 500 — a live POST this run withurl=not-a-valid-urlreturned a clean400 {"error":"API Error: URL is invalid (check #1)"}. - A bare hostname with no scheme is rejected, not auto-prefixed — a live POST this run with
url=example.com(nohttp:///https://) returned the identical400 "URL is invalid"error rather than guessing a scheme. - There is no expand, lookup, or stats endpoint — a live GET this run against
/api/v1/expand404'd, and the API's own docs page lists exactly one route,POST /api/v1/shorten. Once you have a short link, this API gives no way to look up or reverse it. - Plain
curlwith noUser-Agentheader gets a404on the site's own HTML pages (home,/docs) from what looks like a bot-mitigation rule scoped to GET routes — the API route itself is unaffected, but don't be fooled if you're also scraping the docs page: add a browser-likeUser-Agentthere.