{
  "openapi": "3.1.0",
  "info": {
    "title": "DataForGEO API",
    "version": "1.0.0",
    "description": "DataForGEO asks one prompt across several AI search products, returns the answers, and computes GEO metrics for a brand (mentions, citations, recommendation rank and more). Usage is billed in credits.\n\nFull docs: https://docs.dataforgeo.dev/llms-full.txt"
  },
  "servers": [
    {
      "url": "https://api.dataforgeo.dev"
    }
  ],
  "security": [
    {
      "apiKey": []
    }
  ],
  "externalDocs": {
    "url": "https://docs.dataforgeo.dev/"
  },
  "paths": {
    "/v1/geo/answer": {
      "post": {
        "operationId": "getAnswers",
        "summary": "Get AI answers",
        "description": "Get AI answers for one prompt across engines, with brand mentions, citations and competitor entities marked. Available on all plans.\n\nDocs: https://docs.dataforgeo.dev/answer.md",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "prompt",
                  "engines"
                ],
                "properties": {
                  "prompt": {
                    "description": "The question to ask, up to 2,000 characters",
                    "type": "string",
                    "maxLength": 2000
                  },
                  "engines": {
                    "description": "Engine ids. See Engines & locations",
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "chatgpt",
                        "gemini",
                        "google-aio",
                        "chatgpt-api",
                        "gemini-api",
                        "claude",
                        "perplexity",
                        "grok"
                      ]
                    },
                    "minItems": 1,
                    "maxItems": 8
                  },
                  "brand": {
                    "description": "Brand to detect. Omit to get answers and entities only",
                    "type": "string"
                  },
                  "brand_variants": {
                    "description": "Brand aliases, e.g. katakana or English names",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "competitors": {
                    "description": "Competitor names, up to 20",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "location": {
                    "description": "Country code. Default US",
                    "type": "string"
                  },
                  "language": {
                    "description": "Language tag. Inferred from location",
                    "type": "string"
                  },
                  "samples": {
                    "description": "Samples per engine, 1–10. Default 1",
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 10,
                    "default": 1
                  },
                  "fresh": {
                    "description": "true skips the cache. Default false",
                    "type": "boolean"
                  },
                  "async": {
                    "description": "true returns a job_id immediately. See Async jobs",
                    "type": "boolean"
                  },
                  "webhook_url": {
                    "description": "URL to call when the async job finishes",
                    "type": "string",
                    "format": "uri"
                  }
                }
              },
              "example": {
                "prompt": "东京有哪些适合家庭入住的民宿？",
                "engines": [
                  "chatgpt"
                ],
                "brand": "晓宅",
                "location": "JP",
                "language": "zh-CN"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Answers, one per engine and sample",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnswerResponse"
                },
                "example": {
                  "request_id": "req_8f2c1a",
                  "prompt": "东京有哪些适合家庭入住的民宿？",
                  "credits_used": 1,
                  "answers": [
                    {
                      "engine": "chatgpt",
                      "sample": 1,
                      "status": "ok",
                      "cached": false,
                      "generated_at": "2026-11-02T00:31:12Z",
                      "text": "……",
                      "brand": {
                        "mentioned": true,
                        "mention_count": 2,
                        "first_position": 3,
                        "sentiment": "positive"
                      },
                      "entities": [
                        {
                          "name": "晓宅",
                          "type": "brand",
                          "position": 3,
                          "is_competitor": false
                        },
                        {
                          "name": "Example Stay",
                          "type": "brand",
                          "position": 1,
                          "is_competitor": true
                        }
                      ],
                      "citations": [
                        {
                          "url": "https://example.com/guide",
                          "domain": "example.com",
                          "position": 1,
                          "is_brand_domain": false
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "202": {
            "description": "Switched to async; poll /v1/jobs/{job_id}",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Job"
                },
                "example": {
                  "job_id": "job_3b7e90",
                  "status": "queued",
                  "credits_held": 9
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_engine",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "invalid_api_key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "internal_error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "engines_unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/geo/index": {
      "post": {
        "operationId": "computeIndex",
        "summary": "Compute GEO Index",
        "description": "Computes GEO Index KPIs on top of /v1/geo/answer results. Pro, Scale and Enterprise. Starter gets 403 plan_not_allowed.\n\nDocs: https://docs.dataforgeo.dev/index.md",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "prompt",
                  "engines",
                  "brand"
                ],
                "properties": {
                  "prompt": {
                    "description": "The question to ask, up to 2,000 characters",
                    "type": "string",
                    "maxLength": 2000
                  },
                  "engines": {
                    "description": "Engine ids. See Engines & locations",
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "chatgpt",
                        "gemini",
                        "google-aio",
                        "chatgpt-api",
                        "gemini-api",
                        "claude",
                        "perplexity",
                        "grok"
                      ]
                    },
                    "minItems": 1,
                    "maxItems": 8
                  },
                  "brand": {
                    "description": "Brand to detect. Omit to get answers and entities only",
                    "type": "string"
                  },
                  "brand_variants": {
                    "description": "Brand aliases, e.g. katakana or English names",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "competitors": {
                    "description": "Competitor names, up to 20",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "location": {
                    "description": "Country code. Default US",
                    "type": "string"
                  },
                  "language": {
                    "description": "Language tag. Inferred from location",
                    "type": "string"
                  },
                  "samples": {
                    "description": "Samples per engine, 1–10. Default 1",
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 10,
                    "default": 1
                  },
                  "fresh": {
                    "description": "true skips the cache. Default false",
                    "type": "boolean"
                  },
                  "async": {
                    "description": "true returns a job_id immediately. See Async jobs",
                    "type": "boolean"
                  },
                  "webhook_url": {
                    "description": "URL to call when the async job finishes",
                    "type": "string",
                    "format": "uri"
                  },
                  "tag": {
                    "description": "Custom grouping tag, e.g. osaka-family-q4. /summary aggregates by it",
                    "type": "string"
                  },
                  "intent": {
                    "description": "Prompt intent: compare, cost, discover, evaluate, howto, recommend",
                    "type": "string"
                  },
                  "persona": {
                    "description": "Who is asking, free text, e.g. families with kids",
                    "type": "string"
                  }
                }
              },
              "example": {
                "prompt": "大阪带孩子住哪里方便？",
                "engines": [
                  "chatgpt",
                  "perplexity",
                  "grok"
                ],
                "brand": "晓宅",
                "tag": "osaka-family-q4",
                "intent": "recommend",
                "persona": "带孩子的家庭",
                "location": "JP",
                "language": "zh-CN"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Answers plus GEO Index KPIs",
            "content": {
              "application/json": {
                "example": {
                  "request_id": "req_91d0b3",
                  "brand": "晓宅",
                  "tag": "osaka-family-q4",
                  "credits_used": 6,
                  "answers": [
                    "…与 /v1/geo/answer 相同…"
                  ],
                  "kpis": {
                    "visibility": {
                      "value": 0.667,
                      "numerator": 2,
                      "denominator": 3,
                      "samples": 3
                    },
                    "share_of_voice": {
                      "value": 0.25,
                      "numerator": 2,
                      "denominator": 8,
                      "samples": 3
                    },
                    "top_rate": {
                      "value": 0,
                      "numerator": 0,
                      "denominator": 3,
                      "samples": 3
                    },
                    "competitor_gap": {
                      "value": -1.33,
                      "samples": 3
                    },
                    "positive_ratio": {
                      "value": 1,
                      "numerator": 2,
                      "denominator": 2,
                      "samples": 3
                    }
                  },
                  "kpi_tier": "pro"
                }
              }
            }
          },
          "202": {
            "description": "Switched to async; poll /v1/jobs/{job_id}",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Job"
                },
                "example": {
                  "job_id": "job_3b7e90",
                  "status": "queued",
                  "credits_held": 9
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_engine",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "invalid_api_key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "insufficient_credits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "plan_not_allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "internal_error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "engines_unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/geo/index/summary": {
      "get": {
        "operationId": "getIndexSummary",
        "summary": "Index summary & trends",
        "description": "Aggregates your past /v1/geo/index results into KPIs and trends over a time window. No new AI calls, no charge. Pro gets totals and trends; group_by breakdowns are Scale and Enterprise only.\n\nDocs: https://docs.dataforgeo.dev/summary.md",
        "parameters": [
          {
            "name": "brand",
            "in": "query",
            "required": true,
            "description": "Brand, same as in index requests",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "required": false,
            "description": "Only aggregate requests with this tag",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Time window, ISO 8601. Default last 30 days",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "Time window, ISO 8601. Default last 30 days",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "interval",
            "in": "query",
            "required": false,
            "description": "Trend granularity: day, week, month. Default week",
            "schema": {
              "type": "string",
              "enum": [
                "day",
                "week",
                "month"
              ]
            }
          },
          {
            "name": "engines",
            "in": "query",
            "required": false,
            "description": "Comma-separated engines to include",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "kpis",
            "in": "query",
            "required": false,
            "description": "Comma-separated KPIs to return. Default: all for your plan",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "group_by",
            "in": "query",
            "required": false,
            "description": "engine, intent, persona or prompt, one at a time. Scale only (Scale and Enterprise only)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "KPIs and trend series over the window",
            "content": {
              "application/json": {
                "example": {
                  "brand": "晓宅",
                  "window": {
                    "from": "2026-10-03T00:00:00Z",
                    "to": "2026-11-02T00:00:00Z"
                  },
                  "answers_counted": 498,
                  "kpis": {
                    "findability": {
                      "value": 42.1
                    },
                    "visibility": {
                      "value": 0.262,
                      "numerator": 130,
                      "denominator": 498
                    }
                  },
                  "series": [
                    {
                      "period": "2026-10-05",
                      "visibility": 0.255,
                      "share_of_voice": 0.018
                    },
                    {
                      "period": "2026-10-12",
                      "visibility": 0.263,
                      "share_of_voice": 0.026
                    }
                  ],
                  "groups": [
                    {
                      "key": "chatgpt",
                      "answers_counted": 166,
                      "kpis": {
                        "visibility": {
                          "value": 0.301
                        }
                      }
                    },
                    {
                      "key": "gemini",
                      "answers_counted": 166,
                      "kpis": {
                        "visibility": {
                          "value": 0.241
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request, unsupported_engine",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "invalid_api_key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "plan_not_allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "internal_error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{job_id}": {
      "get": {
        "operationId": "getJob",
        "summary": "Job status and result",
        "description": "status goes queued → running → completed or failed. On completed, result matches the sync response.\n\nIn async requests, answers that time out or fail are retried once more about 2 minutes later and only then marked final. Sync requests are not retried this way.\n\ncredits_held is the hold. It settles against answers actually returned and the rest is refunded.\n\nWith webhook_url set, the full result is POSTed there with an x-dataforgeo-signature header (HMAC-SHA256, secret in the console).\n\nJob results are kept for 7 days.",
        "parameters": [
          {
            "name": "job_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Job status; result matches the sync response when completed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Job"
                },
                "example": {
                  "job_id": "job_3b7e90",
                  "status": "queued",
                  "credits_held": 9
                }
              }
            }
          },
          "401": {
            "description": "invalid_api_key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "not_found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "internal_error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/account": {
      "get": {
        "operationId": "getAccount",
        "summary": "Balance, plan and usage this month",
        "responses": {
          "200": {
            "description": "Account balance and plan",
            "content": {
              "application/json": {
                "example": {
                  "plan": "scale",
                  "credits_remaining": 10422,
                  "credits_used_this_month": 1578
                }
              }
            }
          },
          "401": {
            "description": "invalid_api_key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "internal_error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/status": {
      "get": {
        "operationId": "getStatus",
        "summary": "Engine status",
        "description": "Returns each engine’s current status, its success rate and median latency over the last 24 hours, and its daily availability over the last 30 days. No auth, no charge: check it before sending requests. The public status page reads the same data.\n\nDocs: https://docs.dataforgeo.dev/status.md",
        "security": [],
        "responses": {
          "200": {
            "description": "Engine status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                },
                "example": {
                  "updated_at": "2026-11-02T05:40:00Z",
                  "status": "degraded",
                  "engines": [
                    {
                      "id": "chatgpt",
                      "name": "ChatGPT",
                      "answer_type": "product",
                      "status": "operational",
                      "last_24h": {
                        "success_rate": 0.987,
                        "median_latency_ms": 21400,
                        "calls": 1200
                      },
                      "daily": [
                        {
                          "date": "2026-10-04",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-05",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-06",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-07",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-08",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-09",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-10",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-11",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-12",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-13",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-14",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-15",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-16",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-17",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-18",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-19",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-20",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-21",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-22",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-23",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-24",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-25",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-26",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-27",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-28",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-29",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-30",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-31",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-01",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-02",
                          "uptime": 1
                        }
                      ]
                    },
                    {
                      "id": "gemini",
                      "name": "Gemini",
                      "answer_type": "product",
                      "status": "operational",
                      "last_24h": {
                        "success_rate": 0.987,
                        "median_latency_ms": 21400,
                        "calls": 1110
                      },
                      "daily": [
                        {
                          "date": "2026-10-04",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-05",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-06",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-07",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-08",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-09",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-10",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-11",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-12",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-13",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-14",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-15",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-16",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-17",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-18",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-19",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-20",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-21",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-22",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-23",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-24",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-25",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-26",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-27",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-28",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-29",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-30",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-31",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-01",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-02",
                          "uptime": 1
                        }
                      ]
                    },
                    {
                      "id": "google-aio",
                      "name": "Google AI Overview",
                      "answer_type": "product",
                      "status": "operational",
                      "last_24h": {
                        "success_rate": 0.987,
                        "median_latency_ms": 21400,
                        "calls": 1020
                      },
                      "daily": [
                        {
                          "date": "2026-10-04",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-05",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-06",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-07",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-08",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-09",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-10",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-11",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-12",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-13",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-14",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-15",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-16",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-17",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-18",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-19",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-20",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-21",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-22",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-23",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-24",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-25",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-26",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-27",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-28",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-29",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-30",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-31",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-01",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-02",
                          "uptime": 1
                        }
                      ]
                    },
                    {
                      "id": "chatgpt-api",
                      "name": "ChatGPT API",
                      "answer_type": "model",
                      "status": "operational",
                      "last_24h": {
                        "success_rate": 0.987,
                        "median_latency_ms": 9800,
                        "calls": 930
                      },
                      "daily": [
                        {
                          "date": "2026-10-04",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-05",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-06",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-07",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-08",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-09",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-10",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-11",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-12",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-13",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-14",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-15",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-16",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-17",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-18",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-19",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-20",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-21",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-22",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-23",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-24",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-25",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-26",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-27",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-28",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-29",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-30",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-31",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-01",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-02",
                          "uptime": 1
                        }
                      ]
                    },
                    {
                      "id": "gemini-api",
                      "name": "Gemini API",
                      "answer_type": "model",
                      "status": "operational",
                      "last_24h": {
                        "success_rate": 0.987,
                        "median_latency_ms": 9800,
                        "calls": 840
                      },
                      "daily": [
                        {
                          "date": "2026-10-04",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-05",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-06",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-07",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-08",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-09",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-10",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-11",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-12",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-13",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-14",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-15",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-16",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-17",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-18",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-19",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-20",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-21",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-22",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-23",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-24",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-25",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-26",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-27",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-28",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-29",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-30",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-31",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-01",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-02",
                          "uptime": 1
                        }
                      ]
                    },
                    {
                      "id": "claude",
                      "name": "Claude",
                      "answer_type": "model",
                      "status": "degraded",
                      "last_24h": {
                        "success_rate": 0.912,
                        "median_latency_ms": 9800,
                        "calls": 750
                      },
                      "daily": [
                        {
                          "date": "2026-10-04",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-05",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-06",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-07",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-08",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-09",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-10",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-11",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-12",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-13",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-14",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-15",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-16",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-17",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-18",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-19",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-20",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-21",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-22",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-23",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-24",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-25",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-26",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-27",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-28",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-29",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-30",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-31",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-01",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-02",
                          "uptime": 1
                        }
                      ]
                    },
                    {
                      "id": "perplexity",
                      "name": "Perplexity",
                      "answer_type": "model",
                      "status": "operational",
                      "last_24h": {
                        "success_rate": 0.987,
                        "median_latency_ms": 9800,
                        "calls": 660
                      },
                      "daily": [
                        {
                          "date": "2026-10-04",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-05",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-06",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-07",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-08",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-09",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-10",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-11",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-12",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-13",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-14",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-15",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-16",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-17",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-18",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-19",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-20",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-21",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-22",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-23",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-24",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-25",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-26",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-27",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-28",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-29",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-30",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-31",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-01",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-02",
                          "uptime": 1
                        }
                      ]
                    },
                    {
                      "id": "grok",
                      "name": "Grok",
                      "answer_type": "model",
                      "status": "unavailable",
                      "last_24h": {
                        "success_rate": 0.64,
                        "median_latency_ms": 9800,
                        "calls": 570
                      },
                      "daily": [
                        {
                          "date": "2026-10-04",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-05",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-06",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-07",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-08",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-09",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-10",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-11",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-12",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-13",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-14",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-15",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-16",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-17",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-18",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-19",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-20",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-21",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-22",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-23",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-24",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-25",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-26",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-27",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-28",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-29",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-30",
                          "uptime": 1
                        },
                        {
                          "date": "2026-10-31",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-01",
                          "uptime": 1
                        },
                        {
                          "date": "2026-11-02",
                          "uptime": 0.62
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "internal_error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key"
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "invalid_request",
                  "unsupported_engine",
                  "invalid_api_key",
                  "insufficient_credits",
                  "plan_not_allowed",
                  "not_found",
                  "internal_error",
                  "engines_unavailable"
                ]
              },
              "message": {
                "type": "string"
              },
              "request_id": {
                "type": "string"
              }
            }
          }
        }
      },
      "Answer": {
        "type": "object",
        "required": [
          "engine",
          "sample",
          "status",
          "cached"
        ],
        "properties": {
          "engine": {
            "type": "string",
            "enum": [
              "chatgpt",
              "gemini",
              "google-aio",
              "chatgpt-api",
              "gemini-api",
              "claude",
              "perplexity",
              "grok"
            ]
          },
          "sample": {
            "type": "integer",
            "minimum": 1
          },
          "status": {
            "type": "string",
            "enum": [
              "ok",
              "no_answer",
              "timeout",
              "failed"
            ]
          },
          "error": {
            "type": "string",
            "enum": [
              "upstream_timeout",
              "upstream_error",
              "engine_unavailable"
            ],
            "description": "Only when status is timeout or failed"
          },
          "cached": {
            "type": "boolean"
          },
          "generated_at": {
            "type": "string",
            "format": "date-time"
          },
          "text": {
            "type": "string"
          },
          "brand": {
            "type": "object",
            "properties": {
              "mentioned": {
                "type": "boolean"
              },
              "mention_count": {
                "type": "integer"
              },
              "first_position": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "sentiment": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "entities": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "citations": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "AnswerResponse": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string"
          },
          "prompt": {
            "type": "string"
          },
          "credits_used": {
            "type": "integer"
          },
          "answers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Answer"
            }
          }
        }
      },
      "Job": {
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued",
              "running",
              "completed",
              "failed"
            ]
          },
          "credits_held": {
            "type": "integer"
          },
          "result": {
            "type": "object"
          }
        }
      },
      "Status": {
        "type": "object",
        "properties": {
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string",
            "enum": [
              "operational",
              "degraded",
              "outage"
            ]
          },
          "engines": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "enum": [
                    "chatgpt",
                    "gemini",
                    "google-aio",
                    "chatgpt-api",
                    "gemini-api",
                    "claude",
                    "perplexity",
                    "grok"
                  ]
                },
                "name": {
                  "type": "string"
                },
                "answer_type": {
                  "type": "string",
                  "enum": [
                    "product",
                    "model"
                  ]
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "operational",
                    "degraded",
                    "unavailable"
                  ]
                },
                "last_24h": {
                  "type": "object",
                  "properties": {
                    "success_rate": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "median_latency_ms": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "calls": {
                      "type": "integer"
                    }
                  }
                },
                "daily": {
                  "type": "array",
                  "minItems": 30,
                  "maxItems": 30,
                  "items": {
                    "type": "object",
                    "properties": {
                      "date": {
                        "type": "string",
                        "format": "date"
                      },
                      "uptime": {
                        "type": [
                          "number",
                          "null"
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}