{"components":{"schemas":{"AuditResult":{"description":"One audit: status plus scored result when done.","properties":{"ai_citation":{"description":"Whether an AI assistant names this business when asked what a customer would ask, in the market's language: named_in of questions_answered, best_rank, and the rivals named instead. basis is \"model-recall\" \u2014 asked of a language model without live browsing, so it reports what the model has absorbed about the market rather than a search result fetched today. Null when no model is configured or none of the questions were answered.","nullable":true,"properties":{"basis":{"type":"string"},"best_rank":{"nullable":true,"type":"integer"},"engine":{"type":"string"},"named_in":{"type":"integer"},"questions":{"items":{"type":"object"},"type":"array"},"questions_answered":{"type":"integer"},"questions_unanswered":{"type":"integer"},"rivals":{"items":{"type":"object"},"type":"array"}},"type":"object"},"business":{"type":"object"},"cached":{"type":"boolean"},"domain":{"type":"string"},"google_ai_mode":{"description":"The same customer questions put to Google's AI Mode from the business's city (basis \"google-ai-mode\"). Same fields as grounded_citation, plus picks (the businesses Google named, with the rating and review count it quoted), picks_all_maps, directories (other pages it cited), your_listing (the audited business's Google listing, or found=false) and questions_unreadable (answers whose business cards came back without names, counted in neither named_in nor questions_answered). Null when not configured.","nullable":true,"type":"object"},"grounded_citation":{"description":"The same customer questions answered by a language model from a live web search (basis \"grounded-answer\"), the way a browsing assistant answers. Same fields as ai_citation; every name in named_instead appears in a source the answer cited, and named_unverified counts the names that did not. Null when no model is configured or nothing was answered.","nullable":true,"type":"object"},"live_citation":{"description":"The same customer questions put to a live web search (basis \"web-retrieval\"): whether the business's own page is among the results an assistant reads before it answers, in named_in of questions_answered, with the hosts it would read instead in rivals and in each question's named_instead. This measures RETRIEVAL, not being named: absent from these results an assistant cannot cite the business, present it still might not. Never averaged with the other passes. Null when the search could not run or returned nothing.","nullable":true,"type":"object"},"overall_ai_readiness":{"type":"integer"},"scores":{"description":"Per-metric {value, tier, source}; tier is measured | ai_estimate | estimated.","type":"object"},"status":{"enum":["done","pending","failed","invalid","quota_exceeded"],"type":"string"},"summary":{"type":"string"}},"type":"object"},"Quota":{"properties":{"limit":{"type":"integer"},"remaining":{"type":"integer"},"window":{"type":"string"}},"type":"object"}},"securitySchemes":{"apiKey":{"in":"header","name":"X-API-Key","type":"apiKey"},"bearer":{"scheme":"bearer","type":"http"}}},"info":{"description":"Audit any website for SEO and AI-search readiness (GEO / AEO / GSO). Authenticate with an API key in the X-API-Key header. AI agents can also connect over MCP at https://tadaaah.io/mcp (same keys). Docs: https://tadaaah.io/api-docs","title":"Tadaaah Website Audit API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/v1/audits":{"post":{"operationId":"createAudits","requestBody":{"content":{"application/json":{"schema":{"properties":{"lang":{"enum":["en","fr"],"type":"string"},"url":{"description":"A single website to audit.","type":"string"},"urls":{"items":{"type":"string"},"maxItems":50,"type":"array"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"audits":{"items":{"type":"object"},"type":"array"},"batch_id":{"type":"string"},"quota":{"$ref":"#/components/schemas/Quota"}},"type":"object"}}},"description":"Batch accepted. Cached URLs are already done."}},"summary":"Audit one URL or a batch of up to 50"}},"/v1/audits/{audit_id}":{"get":{"operationId":"getAudit","parameters":[{"in":"path","name":"audit_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditResult"}}},"description":"The audit."}},"summary":"One audit's status + result"}},"/v1/batches/{batch_id}":{"get":{"operationId":"getBatch","parameters":[{"in":"path","name":"batch_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The batch."}},"summary":"Whole batch: statuses + finished results"}},"/v1/batches/{batch_id}.csv":{"get":{"operationId":"getBatchCsv","parameters":[{"in":"path","name":"batch_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"text/csv":{}},"description":"CSV, one row per URL."}},"summary":"The batch as a report-ready CSV"}},"/v1/me":{"get":{"operationId":"getAccount","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"plan":{"type":"string"},"quota":{"$ref":"#/components/schemas/Quota"}},"type":"object"}}},"description":"Plan + quota."}},"summary":"The calling key's plan and remaining quota"}}},"security":[{"apiKey":[]},{"bearer":[]}],"servers":[{"url":"https://tadaaah.io"}]}
