geondex
Documentation

ai_answers

The full answer each AI engine gives to a prompt, with its sources.

POST https://geondex.com/api/v1/answers

The full answer Perplexity, ChatGPT, Claude and Gemini each give to PROMPT, with the sources each one cited, in one normalized shape. No brand check: use check_visibility for that. Useful to see how engines frame a topic before writing content, or to read what they say about a competitor. 3 credits per engine that answers; timeouts are free. Takes up to 25 s.

Not available on every deployment: returns 404 not_found when this server is not configured for it. GET /me lists what is configured.

Request

Request body (JSON)

  • prompt · string · required — The question to ask, e.g. 'which table tennis blade suits a beginner?'. 3–2,000 characters
  • engines · ("perplexity" | "openai" | "claude" | "gemini")[] · optional — Subset of engines. Default: all four. 3 credits per engine that answers. 1–4 items. Each one of perplexity, openai, claude, gemini

Example request

curl -s https://geondex.com/api/v1/answers -H "Authorization: Bearer gx_YOUR_KEY" -H "content-type: application/json" -d '{"prompt":"which table tennis blade suits a beginner?","engines":["perplexity","openai"]}'

Response

200 with the envelope every tool returns: a one-line summary, the full data, and credits: { charged, remaining }. On a free call charged is 0 and remaining is null.

Fields of data

  • prompt · string
  • engines · object[]
  • engines[].engine · "perplexity" | "openai" | "claude" | "gemini"
  • engines[].status · "ok" | "timeout" | "error"
  • engines[].answer · string | null — The engine's full answer text (up to 8 KB); null on failure
  • engines[].citations · object[]
  • engines[].citations[].url · string
  • engines[].citations[].host · string
  • engines[].citations[].title · string | null
  • engines[].citations[].position · number
  • engines[].durationMs · number
  • engines[].error · string · optional

Example response

Real-shaped, checked against the output schema by a test. Long lists are shortened.

{
  "summary": "2 of 2 engines answered; 5 distinct sources cited.",
  "data": {
    "prompt": "which table tennis blade suits a beginner?",
    "engines": [
      {
        "engine": "perplexity",
        "status": "ok",
        "answer": "For a beginner, an all-round wooden blade such as the Stiga Allround Classic or the Butterfly Primorac gives control while you learn strokes. Avoid carbon blades at first: they are fast and forgive little.",
        "citations": [
          {
            "url": "https://ttsensei.com/blades/beginner",
            "host": "ttsensei.com",
            "title": "Best beginner blades",
            "position": 1
          },
          {
            "url": "https://www.reddit.com/r/tabletennis/comments/abc",
            "host": "reddit.com",
            "title": null,
            "position": 2
          },
          {
            "url": "https://revspin.net/blade/",
            "host": "revspin.net",
            "title": "Blade ratings",
            "position": 3
          }
        ],
        "durationMs": 4210
      },
      {
        "engine": "openai",
        "status": "ok",
        "answer": "Choose a 5-ply all-wood blade with an ALL or ALL+ speed rating. Popular picks are the Stiga Allround Classic and the Yasaka Sweden Extra.",
        "citations": [
          {
            "url": "https://www.megaspin.net/blades/",
            "host": "megaspin.net",
            "title": "Allround blades",
            "position": 1
          },
          {
            "url": "https://ttsensei.com/blades/beginner",
            "host": "ttsensei.com",
            "title": "Best beginner blades",
            "position": 2
          },
          {
            "url": "https://tabletennis11.com/blades",
            "host": "tabletennis11.com",
            "title": null,
            "position": 3
          }
        ],
        "durationMs": 6870
      }
    ]
  },
  "credits": {
    "charged": 6,
    "remaining": 194
  }
}

Errors

Every error has the body {"error":{"code":"…","message":"…"}} and is not charged.

HTTPWhen
400Bad input
401Missing or invalid key
402Out of credits
404Tool not available on this server
429Rate limited
502Upstream failure

Every error.code and what to do about it: Errors & rate limits.

On this page