Integrate LinkMeow into your apps. Shorten URLs, manage links, and access analytics programmatically with our REST API.
https://api.linkmeow.com/api/v1X-API-Key: lm_xxx...60 req/min β’ 1,000 req/day
Go to your Dashboard β Profile β expand the API Keys section to create and manage your keys. Each key is only shown once at creation β save it securely.
curl -X POST https://api.linkmeow.com/api/v1/shorten \
-H "Content-Type: application/json" \
-H "X-API-Key: lm_your_api_key_here" \
-d '{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "title": "My Video"}'{
"id": 4567,
"short_url": "aBcDeFg",
"full_short_url": "https://lkmw.me/aBcDeFg",
"original_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"title": "My Video",
"created_at": "2025-04-21T10:30:00.000Z"
}All API endpoints require authentication via the X-API-Key header. API keys are tied to your LinkMeow account β all shortened URLs count toward your account quota.
β οΈ Keep your API key secret
Never expose your API key in client-side code or public repositories. Use environment variables or a secrets manager.
Rate Limit Headers
Every response includes rate limit information:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
X-RateLimit-Daily-Limit: 1000
X-RateLimit-Daily-Remaining: 995| Status | Meaning |
|---|---|
| 400 | Bad request β invalid URL or missing fields |
| 401 | Unauthorized β invalid or missing API key |
| 403 | Forbidden β URL quota exhausted |
| 404 | Not found β URL doesn't exist or not owned by you |
| 429 | Rate limit exceeded β check X-RateLimit headers |
| 500 | Server error β try again later |
const response = await fetch("https://api.linkmeow.com/api/v1/shorten", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": process.env.LINKMEOW_API_KEY,
},
body: JSON.stringify({
url: "https://example.com/my-long-url",
title: "My Link",
}),
});
const data = await response.json();
console.log(data.full_short_url);
// β https://lkmw.me/aBcDeFgimport requests
response = requests.post(
"https://api.linkmeow.com/api/v1/shorten",
headers={
"Content-Type": "application/json",
"X-API-Key": "lm_your_api_key_here",
},
json={
"url": "https://example.com/my-long-url",
"title": "My Link",
},
)
data = response.json()
print(data["full_short_url"])
# β https://lkmw.me/aBcDeFgconst response = await fetch("https://api.linkmeow.com/api/v1/shorten/bulk", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": process.env.LINKMEOW_API_KEY,
},
body: JSON.stringify({
urls: [
{ url: "https://example.com/page-1", title: "Page 1" },
{ url: "https://example.com/page-2", title: "Page 2" },
{ url: "https://example.com/page-3", title: "Page 3" },
],
}),
});
const { results, successful, failed } = await response.json();
console.log(`Created ${successful} short URLs, ${failed} failed`);