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