{"openapi":"3.1.0","info":{"title":"Waniwani Website API","summary":"Public HTTP endpoints served by waniwani.ai.","description":"Waniwani is the AI distribution platform: build, launch, and optimize an MCP app across ChatGPT, Claude, Gemini, and Perplexity. This document describes the public endpoints on waniwani.ai. The Waniwani platform API is documented at https://docs.waniwani.ai, and the Waniwani MCP server runs at https://mcp.waniwani.ai/mcp.","version":"1.0.0","contact":{"name":"Waniwani","url":"https://waniwani.ai/developers"},"license":{"name":"Proprietary","url":"https://waniwani.ai/terms"}},"servers":[{"url":"https://waniwani.ai","description":"Production"}],"externalDocs":{"description":"Waniwani developer hub","url":"https://waniwani.ai/developers"},"paths":{"/api":{"get":{"operationId":"getServiceIndex","summary":"List the endpoints on this domain","description":"Service index: available endpoints, the shared JSON error envelope, and pointers to the OpenAPI spec and the MCP server card.","tags":["Discovery"],"security":[],"responses":{"200":{"description":"Service index.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"405":{"$ref":"#/components/responses/Error"}}}},"/api/health":{"get":{"operationId":"getHealth","summary":"Liveness probe","tags":["Discovery"],"security":[],"responses":{"200":{"description":"The service is up.","content":{"application/json":{"schema":{"type":"object","required":["status","service","timestamp"],"properties":{"status":{"type":"string","enum":["ok"]},"service":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}}}}},"405":{"$ref":"#/components/responses/Error"}}}},"/api/demo-request":{"post":{"operationId":"createDemoRequest","summary":"Submit a demo request","description":"Records a demo request. The email address is required; everything else is optional context that helps route the request.","tags":["Sales"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemoRequest"},"examples":{"minimal":{"value":{"email":"you@company.com"}},"withContext":{"value":{"email":"you@company.com","message":"Looking at MCP distribution, Acme Insurance","timestamp":"2026-08-22T09:00:00.000Z"}}}}}},"responses":{"200":{"description":"The request was accepted.","content":{"application/json":{"schema":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean","enum":[true]},"received":{"type":"object","properties":{"email":{"type":"string","format":"email"},"timestamp":{"type":"string","format":"date-time"}}}}}}}},"400":{"$ref":"#/components/responses/Error"},"405":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"500":{"$ref":"#/components/responses/Error"}}}},"/openapi.json":{"get":{"operationId":"getOpenApiSpec","summary":"Fetch this document","tags":["Discovery"],"security":[],"responses":{"200":{"description":"This OpenAPI document.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/.well-known/mcp/server-card.json":{"get":{"operationId":"getMcpServerCard","summary":"Fetch the Waniwani MCP server card","description":"Discovery manifest for the hosted Waniwani MCP server: Streamable HTTP endpoints (US and EU), OAuth 2.1 metadata, and the advertised tools.","tags":["Discovery"],"security":[],"responses":{"200":{"description":"MCP server card.","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"DemoRequest":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email","description":"Work email address. Free-mail domains are accepted but scored lower."},"message":{"type":"string","description":"Free-text context. A comma-separated second clause is read as the organization name."},"timestamp":{"type":"string","format":"date-time","description":"Client-side submission time. Defaults to server time when omitted."}},"additionalProperties":false},"Error":{"type":"object","required":["error","request_id"],"description":"Every failure on this domain returns this shape as application/json. There are no HTML error pages under /api.","properties":{"error":{"type":"object","required":["code","message","hint","status","documentation_url"],"properties":{"code":{"type":"string","description":"Machine-readable error code. Branch on this, not on the message.","enum":["bad_request","invalid_json","invalid_email","missing_field","not_found","method_not_allowed","unsupported_media_type","internal_error"]},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What the caller should do differently."},"status":{"type":"integer","description":"Mirrors the HTTP status code."},"documentation_url":{"type":"string","format":"uri"},"field":{"type":"string","description":"The offending request field, on validation failures only."}}},"request_id":{"type":"string","description":"Quote this when reporting a failure."}}}},"responses":{"Error":{"description":"Structured JSON error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"notFound":{"value":{"error":{"code":"not_found","message":"No API endpoint matches /api/does-not-exist.","hint":"Fetch https://waniwani.ai/api for the list of available endpoints, or https://waniwani.ai/openapi.json for the full OpenAPI 3.1 description.","status":404,"documentation_url":"https://waniwani.ai/developers#api-documentation"},"request_id":"req_9f2c41d0a7b34e5c8d1f6a20"}},"missingField":{"value":{"error":{"code":"missing_field","message":"The \"email\" field is required.","hint":"Include a work email address, e.g. {\"email\":\"you@company.com\"}.","status":422,"documentation_url":"https://waniwani.ai/developers#api-documentation","field":"email"},"request_id":"req_1a4b7c9e2d5f8036b1c4e7a9"}}}}}}}},"tags":[{"name":"Discovery","description":"Endpoints an agent can read without credentials."},{"name":"Sales","description":"Inbound demo requests."}]}