LumenariLUMENARI
API डॉक्युमेंटेशन

रेफ़रेंस

Lumenari API हमारे kit recommendation इंजन को JSON endpoints के रूप में expose करता है। Bearer token से authenticate कीजिए। यह वही इंजन है जो storefront wizard को चलाता है।

Quickstart

  1. साइन इन कीजिए और एक API key generate कीजिए। पूरी key एक ही बार दिखती है — उसे सेव कर लीजिए।
  2. हर request में इसे Authorization: Bearer lmn_… के रूप में pass कीजिए।
  3. नीचे दिए गए endpoints इस्तेमाल कीजिए। फ़्री टियर पर महीने में 100 calls मिलते हैं।
curljavascriptpython

curl

curl https://lumenari.io/api/v1/recommend \
  -H "Authorization: Bearer lmn_..." \
  -H "Content-Type: application/json" \
  -d '{"ai_platform":"claude","use_case":"shipping a SaaS on Next.js"}'

javascript

const res = await fetch("https://lumenari.io/api/v1/recommend", {
  method: "POST",
  headers: {
    "Authorization": "Bearer lmn_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    ai_platform: "claude",
    use_case: "shipping a SaaS on Next.js",
  }),
});
const data = await res.json();

python

import requests

res = requests.post(
    "https://lumenari.io/api/v1/recommend",
    headers={"Authorization": "Bearer lmn_..."},
    json={
        "ai_platform": "claude",
        "use_case": "shipping a SaaS on Next.js",
    },
)
data = res.json()

Authentication

सभी endpoints के लिए Bearer token ज़रूरी है। Keys 36 अक्षर की होती हैं और शुरुआत में lmn_ लगा होता है। Keys manage कीजिए अपने dashboard पर

curljavascriptpython

curl

# Header on every request
Authorization: Bearer lmn_a1b2c3d4e5f6...

javascript

headers: { "Authorization": "Bearer lmn_a1b2c3d4..." }

python

headers={"Authorization": "Bearer lmn_a1b2c3d4..."}

Keys SHA-256 से hash करके रखी जाती हैं। गुम हुई key हम वापस नहीं ला सकते — उसे revoke करके नई generate कीजिए।

Rate limiting

हर request तीन headers लौटाता है जिनसे आप back off कर सकते हैं:

  • X-RateLimit-Limit — आपके टियर की मासिक सीमा (या unlimited Enterprise पर)
  • X-RateLimit-Remaining — इस बिलिंग पीरियड में बचे हुए calls
  • X-RateLimit-Reset — Unix timestamp जब quota फिर भरेगा (अगले महीने की 1 तारीख़, UTC)

सीमा पार होने पर HTTP 429 मिलेगा structured error body और Retry-After header (सेकंड में) के साथ।

Endpoints

POST/api/v1/recommend

किसी AI प्लेटफ़ॉर्म + use case के लिए kit recommendations पाइए।

Request body

{
  "ai_platform": "claude",   // or chatgpt | codex | gemini | cursor | any
  "use_case": "shipping a SaaS on Next.js",
  "max_results": 3          // optional, default 3, max 10
}

उदाहरण

curljavascriptpython

curl

curl https://lumenari.io/api/v1/recommend \
  -H "Authorization: Bearer lmn_..." \
  -H "Content-Type: application/json" \
  -d '{"ai_platform":"claude","use_case":"shipping a SaaS","max_results":3}'

javascript

const r = await fetch("https://lumenari.io/api/v1/recommend", {
  method: "POST",
  headers: {
    "Authorization": "Bearer lmn_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    ai_platform: "claude",
    use_case: "shipping a SaaS",
    max_results: 3,
  }),
}).then(r => r.json());

python

r = requests.post(
    "https://lumenari.io/api/v1/recommend",
    headers={"Authorization": "Bearer lmn_..."},
    json={
        "ai_platform": "claude",
        "use_case": "shipping a SaaS",
        "max_results": 3,
    },
).json()

Response

{
  "recommendations": [
    {
      "kit_id": "ts-next-production",
      "kit_slug": "ts-next-production",
      "kit_name": "TypeScript + Next.js Production Pack",
      "score": 1.0,
      "reasoning": "Your stack matches this kit directly — App Router patterns and Supabase wiring."
    }
  ],
  "fallback": false
}
GET/api/v1/kits

कैटलॉग की हर kit की paginated list।

Query parameters

  • limit पेज साइज़, डिफ़ॉल्ट 50, अधिकतम 100
  • offset Pagination offset
  • ai_target किसी एक AI target पर filter — claude / chatgpt / आदि।
  • keyword Name + keywords से substring match

उदाहरण

curljavascriptpython

curl

curl 'https://lumenari.io/api/v1/kits?limit=10&ai_target=claude' \
  -H "Authorization: Bearer lmn_..."

javascript

const r = await fetch(
  "https://lumenari.io/api/v1/kits?limit=10&ai_target=claude",
  { headers: { Authorization: "Bearer lmn_..." } },
).then(r => r.json());

python

r = requests.get(
    "https://lumenari.io/api/v1/kits",
    headers={"Authorization": "Bearer lmn_..."},
    params={"limit": 10, "ai_target": "claude"},
).json()

Response

{
  "kits": [
    {
      "id": "ts-next-production",
      "slug": "ts-next-production",
      "name": "TypeScript + Next.js Production Pack",
      "tagline": "RLS-aware App Router patterns...",
      "description": "...",
      "price_cents": 1900,
      "currency": "cad",
      "ai_targets": ["claude-code", "claude", "cursor"],
      "personas": [...],
      "keywords": [...],
      "whats_inside": [...],
      "deliverables": ["SKILL.md", ...]
    }
  ],
  "pagination": { "total": 20, "limit": 50, "offset": 0 }
}
GET/api/v1/kits/{id_or_slug}

किसी एक kit का पूरा metadata, deliverable file list सहित।

उदाहरण

curljavascriptpython

curl

curl https://lumenari.io/api/v1/kits/ts-next-production \
  -H "Authorization: Bearer lmn_..."

javascript

const r = await fetch(
  "https://lumenari.io/api/v1/kits/ts-next-production",
  { headers: { Authorization: "Bearer lmn_..." } },
).then(r => r.json());

python

r = requests.get(
    "https://lumenari.io/api/v1/kits/ts-next-production",
    headers={"Authorization": "Bearer lmn_..."},
).json()

Response

{
  "kit": {
    "id": "ts-next-production",
    "slug": "ts-next-production",
    "name": "TypeScript + Next.js Production Pack",
    ...
    "deliverables": ["SKILL.md", "memory.md", ...]
  }
}
GET/api/v1/kits/{id_or_slug}/download

Concatenated kit content markdown के रूप में। केवल Pro टियर और ऊपर के लिए।

उदाहरण

curljavascriptpython

curl

curl https://lumenari.io/api/v1/kits/ts-next-production/download \
  -H "Authorization: Bearer lmn_..." \
  -o ts-next-production.md

javascript

const r = await fetch(
  "https://lumenari.io/api/v1/kits/ts-next-production/download",
  { headers: { Authorization: "Bearer lmn_..." } },
);
const markdown = await r.text();

python

r = requests.get(
    "https://lumenari.io/api/v1/kits/ts-next-production/download",
    headers={"Authorization": "Bearer lmn_..."},
)
markdown = r.text

फ़्री टियर पर 402 आता है code `tier_required` के साथ। Pro / Business / Enterprise पूरा markdown body inline लौटाते हैं।

GET/api/v1/usage

Call करने वाले अकाउंट का इस महीने का usage + 30-दिन का daily breakdown।

उदाहरण

curljavascriptpython

curl

curl https://lumenari.io/api/v1/usage \
  -H "Authorization: Bearer lmn_..."

javascript

const r = await fetch("https://lumenari.io/api/v1/usage", {
  headers: { Authorization: "Bearer lmn_..." },
}).then(r => r.json());

python

r = requests.get(
    "https://lumenari.io/api/v1/usage",
    headers={"Authorization": "Bearer lmn_..."},
).json()

Response

{
  "tier": "pro",
  "tier_name": "Pro",
  "period_start": "2026-05-01T00:00:00.000Z",
  "period_end":   "2026-06-01T00:00:00.000Z",
  "calls_used": 1240,
  "calls_remaining": 8760,
  "monthly_limit": 10000,
  "daily_breakdown": [
    { "date": "2026-05-01", "calls": 12 },
    { "date": "2026-05-02", "calls": 89 }
  ]
}

Error codes

हर error response का एक ही shape होता है:

{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Monthly call limit of 100 exceeded. Upgrade your tier..."
  }
}
HTTPCodeमतलब
400invalid_requestBody या params validation में फ़ेल हुए।
401missing_api_keyAuthorization header नहीं है।
401invalid_api_keyKey गलत है, अनजान है, या revoke हो चुकी है।
402subscription_inactivePaid subscription past_due या canceled है।
402tier_requiredEndpoint के लिए Pro टियर या ऊपर ज़रूरी है।
404not_foundKit id/slug मौजूद नहीं है।
429rate_limit_exceededमासिक call की सीमा पूरी हो गई। Period रीसेट के बाद फिर try कीजिए।
500internal_errorLumenari की तरफ़ से failure। फिर try कीजिए।
500content_unavailableServer पर kit content मौजूद नहीं (कृपया रिपोर्ट कीजिए)।

Webhooks

जल्द आ रहा है। Subscribe कीजिए hello@lumenari.io पर ताकि webhooks आते ही आपको पता चले (कैटलॉग अपडेट, usage thresholds, नई किट)।