Internet Culture Hub

Developer Guides

Build with the Culture Graph API

Predictive trend metrics and real-time velocity scoring for memes, slang, and internet culture — delivered as a single, consistent JSON API. These guides take you from your first request to production-ready error handling.

Quickstart

  1. Choose a plan on the pricing page — your API key is issued immediately after checkout and is always available in your dashboard.
  2. Send the key as a bearer token on every request.
  3. Call a term endpoint and read the metrics from the response.
curl
curl "https://internet-culture.vercel.app/api/v1/terms/brainrot" \
  -H "Authorization: Bearer cg_live_your_api_key"
javascript
const response = await fetch("https://internet-culture.vercel.app/api/v1/terms/brainrot", {
  headers: { Authorization: "Bearer cg_live_your_api_key" },
});

if (!response.ok) {
  const { error } = await response.json();
  throw new Error(`${error.code}: ${error.message}`);
}

const { data } = await response.json();
console.log(data.velocityIndex, data.decayTracker, data.originMapping);
python
import requests

response = requests.get(
    "https://internet-culture.vercel.app/api/v1/terms/brainrot",
    headers={"Authorization": "Bearer cg_live_your_api_key"},
    timeout=10,
)
response.raise_for_status()
data = response.json()["data"]
print(data["velocityIndex"], data["decayTracker"])

Authentication

Authenticate every request with your API key in the Authorization header. Keys are stored only as one-way hashes — the full key is shown once at creation. If a key is exposed, rotate it from your dashboard; the previous key is revoked immediately.

http
Authorization: Bearer cg_live_your_api_key

Term lookup

GET /api/v1/terms/:slug returns the complete intelligence profile for one term: velocity scoring, lifecycle decay, cross-platform origin timeline, and structured template data. Use GET /api/v1/terms to search and browse slugs.

Batch lookup

POST /api/v1/terms/batch resolves up to 20 slugs in a single round trip, which counts as one request against your burst limit. Unknown slugs never fail the request — they are returned as { "found": false } next to the successful results, so one typo cannot discard a whole batch.

curl
curl -X POST "https://internet-culture.vercel.app/api/v1/terms/batch" \
  -H "Authorization: Bearer cg_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "slugs": ["rizz", "aura", "not-a-real-term"] }'
json
{
  "success": true,
  "data": [
    { "slug": "rizz", "found": true, "term": { "term": "Rizz", "velocityIndex": "4.2%" } },
    { "slug": "aura", "found": true, "term": { "term": "Aura", "velocityIndex": "-1.3%" } },
    { "slug": "not-a-real-term", "found": false }
  ],
  "meta": { "requested": 3, "found": 2 }
}

Response schema

  • velocityIndex — real-time velocity score: the recent change in interest, as a signed percentage.
  • decayTracker — lifecycle decay index and saturation status, for forecasting how long a trend stays relevant.
  • originMapping — chronological, cross-platform origin timeline from first appearance to current stage.
  • templateData — structured classification and virality preference score for programmatic use.

Metrics are computed from Internet Culture Hub’s editorial scoring model and tracked platform data. They are an analytical layer, not third-party telemetry.

json
{
  "success": true,
  "data": {
    "term": "Brainrot",
    "definition": "...",
    "category": "slang",
    "velocityIndex": "12.5%",
    "decayTracker": {
      "cringeStatus": "Rising",
      "decayIndex": 0.42
    },
    "originMapping": [
      { "platform": "tiktok", "stage": "Origin", "date": "2023-06-01" },
      { "platform": "tiktok", "stage": "Current", "date": "2026-08-01" }
    ],
    "templateData": {
      "name": "slang term",
      "status": "Established",
      "viralPreferenceScore": 74
    },
    "relatedSlugs": ["skibidi-toilet", "gyatt"]
  }
}

Rate limits & quotas

PlanMonthly quotaBurst limit
Starter — $19.99/mo25,000 requests100 req/min
Pro — $49.99/mo250,000 requests1,000 req/min

Every response reports your remaining capacity in X-RateLimit-Limit, X-RateLimit-Remaining, X-Quota-Limit, and X-Quota-Remaining. Exceeding either limit returns 429.

Errors

Every endpoint under /api/v1 returns errors in one shape, so a single handler covers your whole integration:

json
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Rate limit exceeded. Please slow down and try again shortly.",
    "status": 429
  }
}
StatusCodeMeaning
400INVALID_INPUTA parameter failed validation. The response includes an issues array with per-field detail.
401UNAUTHORIZEDAPI key missing, malformed, or revoked.
404NOT_FOUNDNo term exists for that slug.
429RATE_LIMITEDBurst limit or monthly quota exceeded.
500INTERNAL_ERRORUnexpected server error. Safe to retry with backoff.

Recommended retry pattern

javascript
async function getTerm(slug, attempt = 0) {
  const res = await fetch(`https://internet-culture.vercel.app/api/v1/terms/${slug}`, {
    headers: { Authorization: "Bearer cg_live_your_api_key" },
  });

  // Back off on burst limiting; fail fast on everything else.
  if (res.status === 429 && attempt < 3) {
    await new Promise((r) => setTimeout(r, 2 ** attempt * 1000));
    return getTerm(slug, attempt + 1);
  }
  if (!res.ok) throw new Error((await res.json()).error.code);
  return (await res.json()).data;
}

Live demo

Query the Culture Graph API from your browser — no key required for these sample terms. See exactly what your application will receive.

Culture Graph API

Try it live

Pick a term and see a real (teaser) response from the API — velocity, decay tracking, origin mapping, and template data.

Pick a term and hit run.

Limited to 5 requests/day per visitor and truncated to 2 items per field. Upgrade for full, unlimited access.

Need every parameter and schema? Open the API Reference.