Animiso API Docs

Simple, edge-fast website intelligence APIs: metadata, clean-text, slugify.
Base URL
https://api.animiso.fun
Quickstart
Authenticate using your API key in the x-api-key header. Example uses the public test key test_12345.
Example — Metadata (curl)
curl -H "x-api-key: test_12345" "https://api.animiso.fun/api/metadata?url=https://github.com"
Authentication
All endpoints require an API key. Pass it as a header:
curl -H "x-api-key: YOUR_KEY" "https://api.animiso.fun/api/metadata?url=https://example.com"
Best practices:
  • Keep secret keys on server-side only.
  • Use restricted keys for browser apps (domain whitelist).
  • Rotate keys periodically and revoke unused keys.
Endpoints
GET
/api/metadata?url=URL
Returns page title, description, og:image and favicon for a given URL.
Parameters
url — full target URL (required)
Example
curl -H "x-api-key: test_12345" "https://api.animiso.fun/api/metadata?url=https://github.com"
GET
/api/clean?text=TEXT
Cleans input text: strips HTML, URLs, emojis, returns keywords and slug.
Parameters
text — raw text (required)
mode — optional: normal (default), lower, upper
Example
curl -G -H "x-api-key: test_12345" --data-urlencode "text=Hello world" "https://api.animiso.fun/api/clean"
GET
/api/slugify?text=TEXT
Returns a safe URL-friendly slug for a given text/title.
Example
curl -H "x-api-key: test_12345" "https://api.animiso.fun/api/slugify?text=Hello%20World"
Client Examples
Replace YOUR_KEY with your API key.
Fetch (browser)
fetch("https://api.animiso.fun/api/metadata?url=https://github.com", {
  headers: { "x-api-key": "YOUR_KEY" }
})
.then(r => r.json())
.then(console.log)
.catch(console.error);
Node / Axios
import axios from "axios";
const res = await axios.get("https://api.animiso.fun/api/metadata", {
  params: { url: "https://github.com" },
  headers: { "x-api-key": "YOUR_KEY" }
});
console.log(res.data);
Python (requests)
import requests
r = requests.get("https://api.animiso.fun/api/clean",
  params={"text":"Hello world"},
  headers={"x-api-key":"YOUR_KEY"})
print(r.json())
Sample Responses
Metadata success response:
{
  "url":"https://github.com/",
  "title":"GitHub · Change is constant. GitHub keeps you ahead.",
  "description":"Join the world's most widely ...",
  "image":"https://...png",
  "favicon":"https://...ico",
  "extractedAt":"2025-11-28T22:27:20.991Z"
}
Clean text response:
{
  "original":"Hello!!! Visit https://google.com NOW",
  "cleaned":"Hello Visit NOW",
  "keywords":["hello","visit","now"],
  "slug":"hello-visit-now",
  "profanityDetected":false,
  "badWords":[]
}
Errors & Rate Limits
  • 400 — Bad Request (missing params / invalid URL)
  • 401 — Unauthorized (missing or invalid API key)
  • 429 — Rate limit exceeded
  • 502 — Upstream fetch blocked or failed
  • 504 — Upstream timeout
Rate limits
Free: 100 req/day. Starter: 50k/month. Pro: 300k/month. Limits are enforced per API key and visible under Usage.
Security & Best Practices
  • Store secret keys server-side only. Use restricted keys with domain or IP allowances for client code.
  • Respect target sites' robots.txt and terms when fetching metadata.
  • Cache results client-side for 1 hour when possible to reduce cost and latency.
  • Rotate and revoke keys that are exposed or unused.
Changelog (short)
  • 2025-11-28 — Initial public alpha: metadata, clean, slugify endpoints, KV caching, demo keys.