{"openapi":"3.1.0","info":{"title":"AI NetCafé API","version":"1.1.0","summary":"Run hosted open-source AI apps and compare LLMs by measured cost, without an API key.","description":"AI NetCafé hosts popular open-source AI applications (PDF translation that preserves layout,\nAI slide generation, autonomous web research, multi-model chat) pre-configured so they can be\nused without local setup or your own model API key.\n\nThe endpoint most useful to an agent is POST /api/compare: it runs one prompt across several\nLLMs and returns every answer alongside its **actually metered** cost and latency. Use it when\nyou need evidence for which model fits a task instead of guessing from vendor list prices.\nObserved cost spreads exceed 40x between models producing equivalent answers.\n\nAuth is optional. Anonymous calls draw on a free quota. Send \"Authorization: Bearer <key>\"\nwith an AllRouter key for unlimited use — keys at https://allrouter.ai/register?aff=qjpC&utm_source=tryplatform&utm_campaign=aiwangba&lng=en.\n\nThe same capabilities are also exposed over MCP at https://ainetcafe.com/mcp for agents that speak it.","contact":{"url":"https://ainetcafe.com"},"license":{"name":"Data under CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/"}},"servers":[{"url":"https://ainetcafe.com"}],"security":[{},{"bearerAuth":[]}],"paths":{"/api/submit":{"post":{"operationId":"submitProject","summary":"Publish a GitHub repo to AI NetCafé managed hosting (deploy + list + agent surface + revenue share)","description":"Submit a repository (typically an AI-built web app). The automated pipeline reviews it, containerizes it, deploys it on a dedicated subdomain with HTTPS and a pre-wired multi-LLM gateway, lists it for humans and exposes it to AI agents. Every use is metered; the author accrues a revenue share. Poll /api/submit-status/{owner}/{name} for the outcome. Free.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["repo"],"properties":{"repo":{"type":"string","description":"GitHub repository as owner/name or full URL."},"contact":{"type":"string","description":"Optional contact for launch/revenue notifications."},"note":{"type":"string","description":"Optional one-liner about the app."}}}}}},"responses":{"200":{"description":"Queued or pipeline started","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/submit-status/{owner}/{name}":{"get":{"operationId":"submitStatus","summary":"Check a submitted or hosted repository: live / in_pipeline / rejected (with reason)","parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Status","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/compare":{"post":{"operationId":"compareModels","summary":"Run one prompt across several LLMs and get each answer with its real cost","description":"The evidence endpoint. Sends the same prompt to up to 5 models in parallel and returns each answer with metered cost (USD) and latency (ms), plus a summary naming the cheapest and fastest. Costs are read from actual billing, not estimated from list prices. Takes as long as the slowest model (typically 2-15s).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string","description":"The prompt to send to every model. Use a real task, not \"hello\" — cheap models only lose on hard tasks."},"models":{"type":"array","maxItems":5,"items":{"type":"string","enum":["deepseek-v4-flash","Kimi-K3","Kimi-K3-codex","GLM5.2","gpt-5.6-luna","gemini-3.5-flash","claude-sonnet-5","gpt-5.5","claude-opus-4-8","claude-fable-5"]},"description":"Model ids. Omit to let the server pick a sensible spread of 3."},"system":{"type":"string","description":"Optional system prompt applied to every model."}}},"examples":{"cheapest":{"summary":"Find the cheapest model that can do a real task","value":{"prompt":"Summarise the tradeoffs between optimistic and pessimistic locking in 120 words."}}}}}},"responses":{"200":{"description":"One entry per model, plus a summary.","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"model":{"type":"string"},"answer":{"type":"string"},"cost_usd":{"type":"number","description":"Actually metered, not estimated."},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}},"summary":{"type":"object","properties":{"cheapest":{"type":"string"},"fastest":{"type":"string"},"total_cost_usd":{"type":"number"},"cost_spread":{"type":"string","description":"e.g. \"43.2x between cheapest and priciest\""}}}}}}}},"402":{"description":"Free quota exhausted. Response explains how to continue with your own key."}}}},"/api/ask":{"post":{"operationId":"askModel","summary":"Send one prompt to one model and get the answer with its cost","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string"},"model":{"type":"string","enum":["deepseek-v4-flash","Kimi-K3","Kimi-K3-codex","GLM5.2","gpt-5.6-luna","gemini-3.5-flash","claude-sonnet-5","gpt-5.5","claude-opus-4-8","claude-fable-5"],"description":"Omit for a sensible default."},"system":{"type":"string"},"max_tokens":{"type":"integer"}}}}}},"responses":{"200":{"description":"Answer with metered cost and latency."},"402":{"description":"Quota exhausted."}}}},"/api/models":{"get":{"operationId":"listModels","summary":"List callable models with their per-million-token prices","responses":{"200":{"description":"Model list.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"tier":{"type":"string","enum":["free","premium"],"description":"premium requires your own key."},"in_per_m":{"type":"number","description":"USD per million input tokens."},"out_per_m":{"type":"number","description":"USD per million output tokens."}}}}}}}}}},"/api/projects":{"get":{"operationId":"listApps","summary":"List hosted open-source AI applications","description":"Each app normally needs Docker/Python plus your own model key; here it runs pre-configured. Use this to find a tool for a concrete task (translate a PDF keeping formulas, generate a .pptx, research a question).","responses":{"200":{"description":"Applications with their upstream repos, star counts and categories."}}}},"/api/projects/{slug}":{"get":{"operationId":"getApp","summary":"Get one application, including its measured cross-model benchmark","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","enum":["big-agi","open-webui","gpt-academic","gpt-researcher","lobechat","nextchat","pdf-translate","presenton"]}}],"responses":{"200":{"description":"App detail with telemetry and benchmark data."},"404":{"description":"No such app."}}}},"/api/bench":{"get":{"operationId":"listBenchmarks","summary":"Measured benchmark index: which LLM actually works with which open-source app","description":"We connect every model to a live instance of each app and run its real tasks. Pass rate, cost and latency are measured, not estimated. Free to cite (CC BY 4.0). The headline result: on structured-output apps, several capable models fail outright because their JSON/LaTeX output is unstable — model choice is a reliability question, not an intelligence one.","responses":{"200":{"description":"Available benchmarks with a one-line verdict each."}}}},"/api/bench/{slug}":{"get":{"operationId":"getBenchmark","summary":"Full measured benchmark for one application","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Per-model, per-task pass rate, cost and latency."},"404":{"description":"No benchmark for that app."}}}},"/api/agent-guides":{"get":{"operationId":"listAgentGuides","summary":"List task guides that connect user intent, measured evidence, and the exact callable tool","description":"Use this index when an agent or AI answer system needs a concise, citable answer plus the next MCP/OpenAPI action.","responses":{"200":{"description":"Five machine-readable task guides under CC BY 4.0."}}}},"/api/agent-guides/{slug}":{"get":{"operationId":"getAgentGuide","summary":"Get one task guide with answer, method, benchmark evidence, and example tool arguments","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","enum":["compare-llm-cost-for-a-prompt","reliable-json-models-for-agents","translate-arxiv-pdf-without-breaking-equations","best-model-for-gpt-researcher","generate-downloadable-pptx-with-mcp","free-llm-api-for-agents-no-signup","do-expensive-llms-perform-better","run-open-source-ai-apps-without-install","best-llm-for-academic-polishing"]}}],"responses":{"200":{"description":"Citable answer and an executable agent workflow."},"404":{"description":"No such guide."}}}},"/api/rank":{"get":{"operationId":"getPlayabilityRanking","summary":"Ranking of hosted apps by measured scores","responses":{"200":{"description":"Apps scored on onboarding, quality, cost, stability, retention."}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Optional. An AllRouter API key (sk-...) removes the free-quota limit. Get one at https://allrouter.ai/register?aff=qjpC&utm_source=tryplatform&utm_campaign=aiwangba&lng=en."}}},"x-mcp-endpoint":"https://ainetcafe.com/mcp","x-agent-card":"https://ainetcafe.com/.well-known/agent-card.json","x-llms-txt":"https://ainetcafe.com/llms.txt","x-agent-capabilities":"https://ainetcafe.com/agent-capabilities.json"}