{"openapi":"3.1.0","info":{"title":"RankBull public HTTP API","description":"Unauthenticated endpoints on rankbull.io. For the full product (visibility, articles, keywords, publishing) use the MCP server with a dashboard API key — see https://rankbull.io/docs/mcp.","version":"1.0.0","contact":{"name":"RankBull","email":"ahmed@rankbull.io","url":"https://rankbull.io"}},"servers":[{"url":"https://rankbull.io"}],"tags":[{"name":"health"},{"name":"tools"},{"name":"discovery"}],"paths":{"/api/health":{"get":{"operationId":"getHealth","tags":["health"],"summary":"Liveness","description":"Returns ok when the marketing worker is up.","responses":{"200":{"description":"Worker is up","content":{"application/json":{"schema":{"type":"object","required":["status","timestamp"],"properties":{"status":{"type":"string","example":"ok"},"timestamp":{"type":"number"}}}}}}}}},"/api/tools/fetch-page":{"post":{"operationId":"fetchPageMetaAndText","tags":["tools"],"summary":"Fetch a public URL's article text and meta tags","description":"Server-side fetch used by free tools (meta tag checker, keyword density). Blocks private IPs. RankBull's own host cannot be fetched (same-zone loop).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"http(s) URL, or a host/path without a scheme","example":"https://example.com/blog/post"}}}}}},"responses":{"200":{"description":"Fetched","content":{"application/json":{"schema":{"type":"object","required":["ok","data"],"properties":{"ok":{"type":"boolean","example":true},"data":{"type":"object"}}}}}},"400":{"description":"Invalid URL or same-origin fetch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolError"}}}},"502":{"description":"Upstream fetch failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolError"}}}}}}},"/llms.txt":{"get":{"operationId":"getLlmsTxt","tags":["discovery"],"summary":"Agent index for RankBull","responses":{"200":{"description":"Plain-text agent index","content":{"text/plain":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"ToolError":{"type":"object","required":["ok","error","code"],"properties":{"ok":{"type":"boolean","example":false},"error":{"type":"string"},"code":{"type":"string","enum":["invalid_url","private_ip","timeout","blocked","fetch_failed","too_large","non_html","same_origin"]}}}}},"externalDocs":{"description":"MCP product API (https://dashboard.rankbull.io/api/mcp)","url":"https://rankbull.io/docs/mcp"}}