{"openapi":"3.0.3","info":{"title":"GEOpta API","version":"1.0.0","description":"Measure, fix, deploy and prove GEO. Authenticate with `Authorization: Bearer geo_live_…` (or geo_test_… for sandbox). Read endpoints are free; scans cost 1 credit."},"servers":[{"url":"https://geopta.com/v1"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}},"paths":{"/ping":{"get":{"summary":"Health check","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/usage":{"get":{"summary":"Your plan, credits and rate-limit","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/surfaces":{"get":{"summary":"AI surface coverage map","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/index":{"get":{"summary":"AI Visibility Index categories","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/index/{category}":{"get":{"summary":"One AI Index category leaderboard","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/clients":{"get":{"summary":"List clients (paginated)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}},"post":{"summary":"Create a client (write)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/clients/{brand}":{"get":{"summary":"Client + latest score","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}},"patch":{"summary":"Update a client (write)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}},"delete":{"summary":"Delete a client (write)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/clients/{brand}/scorecard":{"get":{"summary":"Latest full scorecard","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/clients/{brand}/history":{"get":{"summary":"Visibility over time","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/clients/{brand}/competitive":{"get":{"summary":"Share of voice","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/clients/{brand}/citations":{"get":{"summary":"Cited sources","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/clients/{brand}/accuracy":{"get":{"summary":"Accuracy + hallucinations","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/clients/{brand}/alerts":{"get":{"summary":"Change-detection alerts","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/clients/{brand}/attribution":{"get":{"summary":"AI traffic + conversions","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/clients/{brand}/roi":{"get":{"summary":"Full-funnel ROI","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/clients/{brand}/defense":{"get":{"summary":"Brand-safety issues","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/clients/{brand}/timeline":{"get":{"summary":"Time Machine — answer history (?prompt=)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/clients/{brand}/scan":{"post":{"summary":"Run a scan synchronously (write, 1 credit)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/scans":{"post":{"summary":"Start an async scan job (write, 1 credit)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/scans/bulk":{"post":{"summary":"Start scan jobs for many brands (write)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/scans/{jobId}":{"get":{"summary":"Poll a scan job","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/ask":{"post":{"summary":"Ad-hoc: run a prompt across engines (write, 1 credit)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/agent-ready":{"post":{"summary":"Audit a product URL for AI shopping agents (write, 1 credit)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/sandbox":{"post":{"summary":"Predict a draft's citation-likelihood lift (write, 1 credit)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/generate":{"post":{"summary":"Generate on-site kit: schema + llms.txt + FAQ (write, 1 credit)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/locale-scan":{"post":{"summary":"Async multi-language visibility scan (write · 1 credit per ~3 locales)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/conversation":{"post":{"summary":"Async multi-turn conversation tracking (write · credits scale with engines × turns)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/prompts/research":{"get":{"summary":"Anonymized AI-keyword research (?niche=&q=)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/export":{"get":{"summary":"Delta export of snapshots (?since=)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/webhooks":{"get":{"summary":"List webhooks","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}},"post":{"summary":"Add a webhook (write)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/webhooks/{id}":{"delete":{"summary":"Remove a webhook (write)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/webhooks/secret/rotate":{"post":{"summary":"Rotate the HMAC signing secret (write)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}}}}