{"product":"LOLM","version":"integrate-v1","base_url":"https://lolm.imagineqira.com","auth":{"free":"none (IP daily quota)","paid":"header X-LOLM-License: <token from Stripe claim>","owner_optional":"header X-Workspace-Owner: <your-user-id> for memory scoping","self_host":"no quotas when LOLM_ADMIN_PASS_SHA256 unset","api_key":"header X-LOLM-Api-Key: lolm_<id>_<secret> (or Authorization: Bearer …)","create_key":"POST /api/demo/api-keys  {tier, label}","list_keys":"GET /api/demo/api-keys","byok":"GET|POST /api/demo/keys  (provider keys on self-host / owner)","webhook":"POST /api/demo/code/run  body.webhook_url (public https only)","task_state":"GET /api/demo/code/task_state?conversation_id=… or /task_state/{id}","cli":"lolm doctor | code --save | receipt verify | inspect task"},"clients":{"npm":"lolm-nfet-client","cli":"lolm-cli (bin: lolm)","http":"any language with fetch/HTTP + SSE parser","python":"pip-installable module clients/python (lolm_client)"},"billing":{"model":"daily_quotas","status":"GET /api/demo/billing/usage","checkout":"POST /api/demo/billing/checkout {tier: plus|pro}","topup_checkout":"POST /api/demo/billing/topup/checkout {pack: runs_50|runs_200|visual_10|bundle_100}","topup_claim":"GET /api/demo/billing/topup/claim?session_id=cs_…","webhook":"POST /api/demo/billing/webhook (Stripe-Signature; credits top-ups)","note":"Daily quotas reset UTC midnight. Top-up packs do not expire at midnight."},"endpoints":[{"id":"status","method":"GET","path":"/api/demo/status","purpose":"Health + readiness"},{"id":"usage","method":"GET","path":"/api/demo/billing/usage","purpose":"Remaining runs/visuals + billing glossary"},{"id":"chat_stream","method":"POST","path":"/api/demo/run/stream","purpose":"SSE agent chat with NFET control events","body":{"command":"string","history":[],"user_memory":[]},"client":"runAgent()"},{"id":"code_run","method":"POST","path":"/api/demo/code/run","purpose":"SSE coding agent: jail write→run→fix + receipt","body":{"task":"string","max_steps":12,"conversation_id":"optional"},"client":"runCode()","consumes":"runs"},{"id":"code_health","method":"GET","path":"/api/demo/code/health","purpose":"Sandbox + receipt ledger health"},{"id":"code_receipts","method":"GET","path":"/api/demo/code/receipts?limit=20","purpose":"Public hash-chained receipt ledger","client":"listCodeReceipts()"},{"id":"visual","method":"POST","path":"/api/demo/code/visual","purpose":"Build self-contained HTML app (browser-verified path)","body":{"task":"string"},"client":"buildVisual()","consumes":"visual"},{"id":"task_state","method":"GET","path":"/api/demo/code/task_state?conversation_id=","purpose":"Load persistent z_t task state for multi-session resume"},{"id":"tactics","method":"GET","path":"/api/demo/code/tactics?q=","purpose":"Oort/Flows tactic retrieval for a task"},{"id":"techniques","method":"GET","path":"/api/demo/code/techniques","purpose":"Technique library stats"}],"sse":{"content_type":"text/event-stream","format":"event: <name>\\ndata: <json>\\n\\n","code_events":["code_start","agent_note","command_started","command_finished","code_done","code_receipt","error"],"chat_events":["token","decision","action","proof","phase","error"]},"examples":{"docs":"https://lolm.imagineqira.com/developers.html","cli":"npm install -g lolm-cli && lolm code \"fizzbuzz to 20\" --save ./out","npm":"npm install lolm-nfet-client"},"tiers":{"free":{"label":"Free","usd":0.0,"runs_per_day":8,"visual_per_day":2,"who":"Try the product every day — no card"},"plus":{"label":"Plus","usd":9.0,"runs_per_day":120,"visual_per_day":20,"who":"Indie builders & students — daily real work"},"pro":{"label":"Pro","usd":19.0,"runs_per_day":500,"visual_per_day":60,"who":"Heavy daily use — still under a typical $20 AI plan"}},"billing_glossary":{"model":"daily_quotas","reset":"UTC midnight","units":{"run":"One hosted agent task: chat, code, research, or operator turn that hits the cloud API. Not a token meter.","visual":"One browser-verified visual/app build (HTML/game). Counted separately because it uses more compute than a normal run."},"not_charged":{"llm_tokens":"We do not charge per LLM token on hosted Free/Plus/Pro. Model cost is absorbed into the daily run quota (open free-cascade providers) or billed by your own provider if you use BYOK.","llm_token_meter":"We do not charge per LLM token on hosted Free/Plus/Pro. Model cost is absorbed into the daily run quota (open free-cascade providers) or billed by your own provider if you use BYOK."},"topups":"When daily runs/visuals are exhausted you can buy one-time top-up packs via Stripe. Credits do not expire at midnight. Stripe webhooks credit them.","local_unlimited":"Self-hosted / sovereign installs are unlimited. CLI pointed at your own box does not consume hosted quotas.","cli":"npx lolm-cli uses the same hosted quotas when --base is the public API (default). Same Free/Plus/Pro as the web app.","tiers":{"free":{"label":"Free","usd":0.0,"runs_per_day":8,"visual_per_day":2,"who":"Try the product every day — no card"},"plus":{"label":"Plus","usd":9.0,"runs_per_day":120,"visual_per_day":20,"who":"Indie builders & students — daily real work"},"pro":{"label":"Pro","usd":19.0,"runs_per_day":500,"visual_per_day":60,"who":"Heavy daily use — still under a typical $20 AI plan"}},"topup_packs":{"runs_50":{"label":"50 extra runs","usd":3.0,"runs":50,"visual":0,"who":"When Free/Plus daily runs are gone"},"runs_200":{"label":"200 extra runs","usd":9.0,"runs":200,"visual":0,"who":"Heavy day without upgrading the plan"},"visual_10":{"label":"10 extra visual builds","usd":4.0,"runs":0,"visual":10,"who":"Browser-verified apps when visual quota is out"},"bundle_100":{"label":"100 runs + 15 visuals","usd":7.0,"runs":100,"visual":15,"who":"Mixed top-up pack"}}}}