{"openapi":"3.1.0","info":{"title":"AuditAE REST API","version":"1","description":"Check whether AI answer engines (ChatGPT, Perplexity, Gemini, Google AI Overviews and AI Mode) cite a brand, crawl a site, and generate or validate schema.org JSON-LD. Prepaid credit: paid calls draw from the workspace balance, free calls never do. When the balance is too low, a paid call answers 402 with a `top_up` request (POST /api/v1/billing/top-up). Authenticate with an ae_live_… key from https://auditae.app/dashboard/keys. The same tools are on the MCP server at https://auditae.app/api/mcp.","contact":{"name":"AuditAE support","email":"support@auditae.app","url":"https://auditae.app/docs/api"}},"servers":[{"url":"https://auditae.app"}],"externalDocs":{"url":"https://auditae.app/docs/api","description":"REST API and API keys"},"security":[{"bearerAuth":[]}],"tags":[{"name":"Citations","description":"Run prompts on answer engines and read the results."},{"name":"Technical","description":"Page checks and site crawls."},{"name":"Schema","description":"JSON-LD generation, validation and Wikidata lookups."},{"name":"Billing","description":"Balance, prices and top-ups."}],"paths":{"/api/v1/check":{"post":{"operationId":"checkCitation","summary":"Check one prompt across engines","description":"Asks each engine one prompt and reports whether the brand is cited. Runs synchronously within about 40 seconds; the fix-plan rows are written later. Needs at least 5¢ of credit to start.","tags":["Citations"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["brand","domain","prompt"],"properties":{"brand":{"type":"string","minLength":1},"domain":{"type":"string","minLength":1,"examples":["example.com"]},"prompt":{"type":"string","minLength":1},"engines":{"type":"array","items":{"$ref":"#/components/schemas/Engine"},"minItems":1,"description":"Engines to run. Omit for the defaults (chatgpt, perplexity, gemini, ai-overviews). Unknown names are dropped."}}},"example":{"brand":"Acme","domain":"acme.com","prompt":"best project management tool for agencies","engines":["chatgpt","perplexity"]}}}},"responses":{"200":{"description":"Per-engine results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"429":{"description":"The workspace already has its maximum audits running (nothing started, nothing billed); retry in a minute. Or rate limited (see RateLimited).","headers":{"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RateLimited"},{"$ref":"#/components/schemas/Error"}]}}}},"500":{"$ref":"#/components/responses/ServerError"}},"x-auditae-auth":"paid","x-auditae-price":"Per engine: Perplexity 5¢, ChatGPT 7¢, Google AI Overviews 9¢, Google AI Mode 10¢ (opt-in), Gemini 12¢"}},"/api/v1/audits":{"post":{"operationId":"createAudit","summary":"Run an audit","description":"Runs every prompt × engine cell synchronously (up to 300 seconds) and returns the results. When the workspace already has its maximum audits running, the audit is queued instead: 202, then poll GET /api/v1/audits/{id}. Each cell is billed as one check.","tags":["Citations"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["brand","domain","prompts"],"properties":{"brand":{"type":"string","minLength":1},"domain":{"type":"string","minLength":1},"prompts":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":10},"engines":{"type":"array","items":{"$ref":"#/components/schemas/Engine"},"minItems":1,"description":"Engines to run. Omit for the defaults (chatgpt, perplexity, gemini, ai-overviews). Unknown names are dropped."},"competitor_domains":{"type":"array","items":{"type":"string"}}}},"example":{"brand":"Acme","domain":"acme.com","prompts":["best project management tool for agencies"],"competitor_domains":["asana.com"]}}}},"responses":{"200":{"description":"The finished run.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RunResult"},{"type":"object","required":["report_url"],"properties":{"report_url":{"type":["string","null"],"format":"uri","description":"Shareable report, once any cell completed."}}}]}}}},"202":{"description":"Queued; starts when a slot opens.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuedAudit"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"429":{"description":"The workspace is busy. Or rate limited (see RateLimited).","headers":{"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RateLimited"},{"$ref":"#/components/schemas/Error"}]}}}},"500":{"$ref":"#/components/responses/ServerError"}},"x-auditae-auth":"paid","x-auditae-price":"Per prompt × engine: Perplexity 5¢, ChatGPT 7¢, Google AI Overviews 9¢, Google AI Mode 10¢ (opt-in), Gemini 12¢"}},"/api/v1/audits/{id}":{"get":{"operationId":"getAudit","summary":"Get an audit","description":"Fetches an audit this key's workspace ran, with every cell. Works at a zero balance.","tags":["Citations"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"The audit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Audit"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ServerError"}},"x-auditae-auth":"any","x-auditae-price":"Free"}},"/api/v1/billing":{"get":{"operationId":"getBilling","summary":"Get balance and prices","description":"Balance, per-engine check prices, estimated checks left and auto-refill status. Works at a zero balance.","tags":["Billing"],"responses":{"200":{"description":"Billing state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingState"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ServerError"}},"x-auditae-auth":"any","x-auditae-price":"Free"}},"/api/v1/billing/top-up":{"post":{"operationId":"topUp","summary":"Add credit","description":"Without a token, returns a Stripe Checkout URL for the account owner to pay. With a Stripe shared payment token (spt_…), charges it now and credits the workspace in the same request.","tags":["Billing"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["amount_usd"],"properties":{"amount_usd":{"type":"integer","minimum":5,"maximum":1000},"shared_payment_token":{"type":"string","pattern":"^spt_","description":"Stripe shared payment token to charge now."}}},"example":{"amount_usd":10}}}},"responses":{"200":{"description":"A Checkout link, or the completed payment.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TopUpCheckout"},{"$ref":"#/components/schemas/TopUpPaid"}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"The payment token was declined, expired or deactivated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ServerError"},"502":{"description":"Stripe didn't answer as expected. Check GET /api/v1/billing before paying again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-auditae-auth":"any","x-auditae-price":"Free; adds $5–$1,000 of credit"}},"/api/v1/crawl":{"post":{"operationId":"crawlSite","summary":"Crawl a site","description":"Crawls up to max_pages pages of a site in this workspace and reports technical issues. Needs credit for the worst case (max_pages × 1¢) up front; bills only the pages actually crawled.","tags":["Technical"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["site_id"],"properties":{"site_id":{"type":"string","format":"uuid","description":"A site in this workspace (see list_sites over MCP or the dashboard)."},"max_pages":{"type":"integer","minimum":1,"maximum":250,"default":25},"seed_url":{"type":"string","description":"Start page on the site's domain. Defaults to the homepage."}}},"example":{"site_id":"00000000-0000-0000-0000-000000000000","max_pages":25}}}},"responses":{"200":{"description":"The crawl run.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrawlResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ServerError"}},"x-auditae-auth":"paid","x-auditae-price":"1¢ per page crawled"}},"/api/v1/technical":{"post":{"operationId":"technicalAudit","summary":"Check one page","description":"Fetches one page and reports meta tags, JSON-LD types, headings, robots.txt (including AI crawler blocks) and PageSpeed. Send `url` for an exact page or `domain` for its homepage.","tags":["Technical"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"url":{"type":"string","description":"Fetched as given; wins over domain."}},"anyOf":[{"required":["domain"]},{"required":["url"]}]},"example":{"domain":"acme.com"}}}},"responses":{"200":{"description":"Page report.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TechnicalResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ServerError"}},"x-auditae-auth":"any","x-auditae-price":"Free"}},"/api/v1/schema/validate":{"post":{"operationId":"validateSchema","summary":"Validate JSON-LD","description":"Checks a JSON-LD object against the rules for its schema.org type and suggests optional properties.","tags":["Schema"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["payload"],"properties":{"payload":{"type":"object","additionalProperties":true,"description":"The full JSON-LD, including @context and @type."}}},"example":{"payload":{"@context":"https://schema.org","@type":"Organization","name":"Acme","url":"https://acme.com"}}}}},"responses":{"200":{"description":"Validation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ServerError"}},"x-auditae-auth":"any","x-auditae-price":"Free"}},"/api/v1/schema/generate":{"post":{"operationId":"generateSchema","summary":"Generate JSON-LD","description":"Builds valid JSON-LD for a supported type from a few fields, and validates it.","tags":["Schema"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["type","data"],"properties":{"type":{"type":"string","enum":["Article","BlogPosting","HowTo","FAQPage","Product","Organization","BreadcrumbList","WebSite","SoftwareApplication","Service","LocalBusiness"]},"data":{"type":"object","additionalProperties":true}}},"example":{"type":"Organization","data":{"name":"Acme","url":"https://acme.com"}}}}},"responses":{"200":{"description":"Generated JSON-LD.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratedSchema"}}}},"400":{"description":"Unsupported type or bad data.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"supported":{"type":"array","items":{"type":"string"}},"problems":{"type":"array","items":{"type":"string"}},"ignored_fields":{"type":"array","items":{"type":"string"}}}}]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ServerError"}},"x-auditae-auth":"any","x-auditae-price":"Free"}},"/api/v1/entities/discover":{"post":{"operationId":"discoverEntities","summary":"Find a brand on Wikidata","description":"Looks the brand up on Wikidata and returns its entity and the profile URLs to use as sameAs.","tags":["Schema"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["brand"],"properties":{"brand":{"type":"string","minLength":1},"domain":{"type":"string"},"qid":{"type":"string","pattern":"^Q\\d+$","description":"Pin a Wikidata item."}}},"example":{"brand":"Acme","domain":"acme.com"}}}},"responses":{"200":{"description":"The entity, or candidates when none matched.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoveredEntity"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ServerError"},"502":{"description":"Wikidata didn't answer.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","required":["error_code"],"properties":{"error_code":{"type":"string","const":"wikidata_unreachable"}}}]}}}}},"x-auditae-auth":"any","x-auditae-price":"Free"}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"An ae_live_… key from https://auditae.app/dashboard/keys. The same key works with the MCP server at https://auditae.app/api/mcp."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable reason."}},"additionalProperties":true},"RateLimited":{"type":"object","required":["error","retry_after"],"properties":{"error":{"type":"string","const":"rate_limited"},"retry_after":{"type":"integer","minimum":0,"description":"Seconds to wait. Also sent as the Retry-After header."}}},"PaymentRequired":{"type":"object","description":"The balance can't cover the call. Top up with the `top_up` request (it returns a Stripe Checkout URL for the account owner), then retry.","required":["error","balance_cents","required_cents","top_up","top_up_url"],"properties":{"error":{"type":"string"},"balance_cents":{"type":"integer"},"required_cents":{"type":"integer","description":"Credit this call needs, in cents."},"top_up":{"type":"object","required":["method","url","body","min_usd","max_usd","note"],"properties":{"method":{"type":"string","const":"POST"},"url":{"type":"string","format":"uri","description":"POST /api/v1/billing/top-up on this host."},"body":{"type":"object","required":["amount_usd"],"properties":{"amount_usd":{"type":"integer","minimum":5,"maximum":1000,"description":"Suggested amount: the shortfall rounded up to whole dollars, within the top-up limits."}}},"min_usd":{"type":"integer","const":5},"max_usd":{"type":"integer","const":1000},"note":{"type":"string"}}},"top_up_url":{"type":"string","format":"uri","description":"The billing page, for a person."}}},"Engine":{"type":"string","enum":["chatgpt","perplexity","gemini","ai-overviews","ai-mode"],"description":"Answer engine. ai-mode is opt-in. Check prices: Perplexity 5¢, ChatGPT 7¢, Google AI Overviews 9¢, Google AI Mode 10¢ (opt-in), Gemini 12¢."},"AuditPromptSource":{"type":"object","required":["url","title"],"properties":{"url":{"type":"string"},"title":{"type":["string","null"]},"resolved_host":{"type":["string","null"],"description":"Real host behind an opaque redirect URL, when recovered."}}},"AuditPromptResult":{"type":"object","description":"One prompt × engine cell.","required":["engine","prompt","status","brand_mentioned","brand_url_cited","position","competitors","sources","sentiment","was_cache_hit","cost_usd","latency_ms","error_message"],"properties":{"engine":{"$ref":"#/components/schemas/Engine"},"prompt":{"type":"string"},"status":{"type":"string","enum":["success","rate_limited","timeout","parse_error","api_error"]},"brand_mentioned":{"type":"boolean","description":"The answer's text names the brand."},"brand_url_cited":{"type":"boolean","description":"The brand's domain is among the answer's cited sources. Citation rate counts this."},"position":{"type":["integer","null"]},"competitors":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"$ref":"#/components/schemas/AuditPromptSource"}},"sentiment":{"type":["string","null"],"enum":["positive","neutral","negative",null]},"raw_response":{"description":"The engine's raw answer payload (shape varies by engine)."},"was_cache_hit":{"type":"boolean"},"cost_usd":{"type":"number"},"latency_ms":{"type":"integer"},"error_message":{"type":["string","null"]}}},"RunResult":{"type":"object","required":["audit_id","results","citation_rate","completed","total","partial","out_of_credits"],"properties":{"audit_id":{"type":"string","format":"uuid"},"results":{"type":"array","items":{"$ref":"#/components/schemas/AuditPromptResult"}},"citation_rate":{"type":"number","description":"Share of answered cells that cite the brand's URL, 0–1."},"completed":{"type":"integer","description":"Cells that finished."},"total":{"type":"integer","description":"Cells requested (prompts × engines)."},"partial":{"type":"boolean","description":"True when some cells didn't finish or failed."},"out_of_credits":{"type":"boolean","description":"True when the run stopped because the balance ran out."}}},"QueuedAudit":{"type":"object","required":["audit_id","status","message"],"properties":{"audit_id":{"type":"string","format":"uuid"},"status":{"type":"string","const":"queued"},"message":{"type":"string"}}},"AuditResult":{"type":"object","description":"One stored cell, in the camelCase the audit store uses.","required":["prompt","engine","brandMentioned","brandUrlCited","position","sourcesReferenced","competitors","sentiment","excerpt"],"properties":{"prompt":{"type":"string"},"engine":{"$ref":"#/components/schemas/Engine"},"brandMentioned":{"type":"boolean"},"brandUrlCited":{"type":"boolean"},"position":{"type":["integer","null"]},"sourcesReferenced":{"type":"array","items":{"type":"string"}},"competitors":{"type":"array","items":{"type":"string"}},"sentiment":{"type":"string","enum":["positive","neutral","negative","n/a"]},"excerpt":{"type":"string"},"engineStatus":{"type":"string","enum":["success","rate_limited","timeout","parse_error","api_error"]},"errorMessage":{"type":["string","null"]}}},"Audit":{"type":"object","description":"A stored audit. Field names are camelCase here, unlike the snake_case POST responses.","required":["id","brand","domain","competitorDomains","prompts","engines","createdAt","status","citationRate","visibilityScore","clickValue","results","publicShareId","reportUrl"],"properties":{"id":{"type":"string","format":"uuid"},"brand":{"type":"string"},"domain":{"type":"string"},"competitorDomains":{"type":"array","items":{"type":"string"}},"prompts":{"type":"array","items":{"type":"string"}},"engines":{"type":"array","items":{"$ref":"#/components/schemas/Engine"}},"createdAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["queued","running","complete","failed"]},"citationRate":{"type":"number"},"visibilityScore":{"type":["number","null"],"description":"AI Visibility Score, 0–100."},"clickValue":{"type":["object","null"],"description":"Google Ads value of the prompts' keywords, in USD cents.","additionalProperties":true},"results":{"type":"array","items":{"$ref":"#/components/schemas/AuditResult"}},"publicShareId":{"type":["string","null"]},"failureReason":{"type":["string","null"],"description":"Why the run stopped short, when it did."},"reportUrl":{"type":["string","null"],"format":"uri","description":"Shareable report link once the audit is complete."}}},"BillingState":{"type":"object","required":["balance_cents","balance_usd","prices_cents_per_check","estimated_checks_left","auto_refill","billing_url"],"properties":{"balance_cents":{"type":"integer"},"balance_usd":{"type":"string","examples":["12.40"]},"prices_cents_per_check":{"type":"object","propertyNames":{"$ref":"#/components/schemas/Engine"},"additionalProperties":{"type":"integer"}},"estimated_checks_left":{"type":"object","propertyNames":{"$ref":"#/components/schemas/Engine"},"additionalProperties":{"type":"integer"}},"auto_refill":{"type":["object","null"],"required":["enabled","has_card","amount_cents","threshold_cents","monthly_cap_cents","cap_reached_this_month"],"properties":{"enabled":{"type":"boolean"},"has_card":{"type":"boolean"},"amount_cents":{"type":"integer"},"threshold_cents":{"type":"integer"},"monthly_cap_cents":{"type":"integer"},"cap_reached_this_month":{"type":"boolean"}}},"billing_url":{"type":"string","format":"uri"}}},"TopUpCheckout":{"type":"object","required":["checkout_url","amount_usd","expires_at","next_step"],"properties":{"checkout_url":{"type":"string","format":"uri","description":"Stripe Checkout page for the account owner to pay."},"amount_usd":{"type":"integer"},"expires_at":{"type":"string","format":"date-time","description":"When the Checkout link expires."},"next_step":{"type":"string"}}},"TopUpPaid":{"type":"object","required":["paid_usd","payment_id","balance_cents","credit_status"],"properties":{"paid_usd":{"type":"number"},"payment_id":{"type":"string"},"balance_cents":{"type":["integer","null"],"description":"New balance; null while the credit is pending."},"credit_status":{"type":"string","enum":["applied","pending"]},"note":{"type":"string","description":"Present when pending. Don't pay again."}}},"CrawlResult":{"type":"object","required":["run_id","status","seed_url","pages_crawled","pages_failed","skipped_by_robots","billed_cents","sitemaps","issues_summary","pages"],"properties":{"run_id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["complete","partial","failed"]},"seed_url":{"type":"string","format":"uri"},"pages_crawled":{"type":"integer"},"pages_failed":{"type":"integer"},"skipped_by_robots":{"type":"integer"},"billed_cents":{"type":["integer","null"],"description":"1¢ per page crawled; null if billing failed."},"sitemaps":{"type":"array","items":{"type":"string"}},"issues_summary":{"type":["object","null"],"additionalProperties":true},"pages":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"TechnicalResult":{"type":"object","required":["url","fetched_at","response_status","fetch_error","meta","schema_types","headings","robots","pagespeed"],"properties":{"url":{"type":"string"},"fetched_at":{"type":"string","format":"date-time"},"response_status":{"type":["integer","null"]},"fetch_error":{"type":["string","null"]},"meta":{"type":"object","additionalProperties":true,"description":"Title, description, canonical, robots, viewport and Open Graph tags."},"schema_types":{"type":"array","items":{"type":"string"},"description":"JSON-LD @type values found on the page."},"headings":{"type":"object","additionalProperties":true},"robots":{"type":"object","additionalProperties":true,"description":"robots.txt status, sitemaps and which AI crawlers it blocks."},"pagespeed":{"type":["object","null"],"properties":{"mobile":{"type":["object","null"],"additionalProperties":true},"desktop":{"type":["object","null"],"additionalProperties":true}}}}},"ValidationIssue":{"type":"object","required":["severity","message"],"properties":{"severity":{"type":"string","enum":["error","warning","info"]},"property":{"type":"string"},"message":{"type":"string"}}},"ValidationResult":{"type":"object","required":["valid","type","issues","suggestions"],"properties":{"valid":{"type":"boolean"},"type":{"type":["string","null"]},"issues":{"type":"array","items":{"$ref":"#/components/schemas/ValidationIssue"}},"suggestions":{"type":"array","items":{"type":"string"}},"checked_types":{"type":"array","items":{"type":"string"}}}},"GeneratedSchema":{"type":"object","required":["schema","validation","ignored_fields","notes"],"properties":{"schema":{"type":"object","additionalProperties":true,"description":"The JSON-LD, ready to paste."},"validation":{"$ref":"#/components/schemas/ValidationResult"},"ignored_fields":{"type":"array","items":{"type":"string"}},"notes":{"type":"array","items":{"type":"string"}}}},"EntityCandidate":{"type":"object","required":["qid","label","description","official_site","domain_matched"],"properties":{"qid":{"type":"string"},"label":{"type":"string"},"description":{"type":["string","null"]},"official_site":{"type":["string","null"]},"domain_matched":{"type":["boolean","null"]}}},"DiscoveredEntity":{"type":"object","required":["found","domain_matched","matched_by","wikidata_qid","label","description","official_site","same_as","detail","candidates"],"properties":{"found":{"type":"boolean"},"domain_matched":{"type":["boolean","null"]},"matched_by":{"type":["string","null"],"enum":["domain","qid",null]},"wikidata_qid":{"type":["string","null"]},"label":{"type":["string","null"]},"description":{"type":["string","null"]},"official_site":{"type":["string","null"]},"same_as":{"type":"array","items":{"type":"string"},"description":"Profile URLs for the Organization's sameAs."},"detail":{"type":"object","additionalProperties":{"type":["string","null"]}},"candidates":{"type":"array","items":{"$ref":"#/components/schemas/EntityCandidate"}},"next_step":{"type":"string"}}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"WWW-Authenticate":{"description":"Bearer challenge.","schema":{"type":"string","examples":["Bearer realm=\"auditae-v1\""]}}},"responses":{"BadRequest":{"description":"The body is missing a field or has a bad value.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"Not found in this key's workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ServerError":{"description":"Something failed on our side. Safe to retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Missing, invalid or revoked key.","headers":{"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"Too many requests: 60 per 60s per key, and 30 failed authentications per 60s per IP.","headers":{"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimited"}}}},"PaymentRequired":{"description":"Not enough credit. The body says how much is short and how to top up.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"},"example":{"error":"Insufficient credits","balance_cents":0,"required_cents":5,"top_up":{"method":"POST","url":"https://auditae.app/api/v1/billing/top-up","body":{"amount_usd":5},"min_usd":5,"max_usd":1000,"note":"Returns a Stripe Checkout URL. Give it to the account owner to pay; credit lands within seconds."},"top_up_url":"https://auditae.app/dashboard/billing"}}}}}},"x-service-info":{"categories":["ai","seo","marketing"],"docs":{"homepage":"https://auditae.app","apiReference":"https://auditae.app/docs/api","llms":"https://auditae.app/llms.txt"}}}