API Documentation

Integrate LinkMeow into your apps. Shorten URLs, manage links, and access analytics programmatically with our REST API.

Base URL

https://api.linkmeow.com/api/v1

Authentication

X-API-Key: lm_xxx...

Rate Limits

60 req/min β€’ 1,000 req/day

Getting Started

1. Generate an API Key

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.

2. Make Your First Request

bash
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"}'

3. Get Your Short URL

json
{
  "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"
}

Authentication

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:

http
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
X-RateLimit-Daily-Limit: 1000
X-RateLimit-Daily-Remaining: 995

URL Shortening

Manage URLs

Analytics

Error Responses

StatusMeaning
400Bad request β€” invalid URL or missing fields
401Unauthorized β€” invalid or missing API key
403Forbidden β€” URL quota exhausted
404Not found β€” URL doesn't exist or not owned by you
429Rate limit exceeded β€” check X-RateLimit headers
500Server error β€” try again later

Code Examples

Node.js / JavaScript

javascript
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/aBcDeFg

Python

python
import 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/aBcDeFg

Bulk Shortening

javascript
const 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`);
API Documentation - LinkMeow | LinkMeow