GEO Visibility API

Find out whether AI assistants proactively recommend your brand — and whether they get your facts right.

Test version · x402 runs on Base Sepolia testnet only · no real money is charged

What you get

We ask several large language models realistic buyer questions without naming your brand, then audit each answer with a strict judge:

Pricing

EndpointWhatPrice
POST /v1/x402/ask1 question × all models$0.05 USDC
POST /v1/x402/checkupup to 10 questions × all models (10 defaults if omitted)$1.00 USDC
POST /v1/checkprepaid API key, 1 credit per questioncontact us

You are only charged when the check succeeds. If every model call fails, or daily capacity is reached, you get an error and no payment is settled.

Pay per call with x402 (for AI agents)

Call the endpoint; you receive 402 Payment Required with a PAYMENT-REQUIRED header. Any x402 client signs a USDC payment and retries automatically:

import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client();
client.register("eip155:*", new ExactEvmScheme(privateKeyToAccount(process.env.PK)));
const pay = wrapFetchWithPayment(fetch, client);

const r = await pay("https://api.181818.shop/v1/x402/ask", {
  method: "POST", headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    brand: "Acme Jade", industry: "hetian jade jewelry",
    questions: ["Where can I buy certified hetian jade online?"],
    facts: { founded: 2009, city: "Beijing" }
  })
});
console.log(await r.json());

Prepaid API key

curl -X POST https://api.181818.shop/v1/check \
  -H "X-API-Key: geo_xxx" -H "Content-Type: application/json" \
  -d '{"brand":"Acme Jade","industry":"hetian jade jewelry"}'

curl https://api.181818.shop/v1/balance -H "X-API-Key: geo_xxx"

Request body

FieldTypeNotes
brandstring, requiredmax 80 chars
industrystring, requiredused for default questions
questionsstring[]1–10, max 300 chars each; do not include the brand name
aliasesstring[]up to 5 other names
factsobjectknown true facts for wrong-fact detection
modelsstring[]subset of /v1/health models; default all
web_searchbooleanground answers in live web results when available

Example response (abridged)

{
  "brand": "Acme Jade",
  "summary": { "checks": 4, "mention_rate": 0.25, "avg_rank_when_mentioned": 3,
               "wrong_fact_count": 1, "score": 25,
               "per_model": { "qwen": {"checked":1,"mentioned":0}, "kimi": {"checked":1,"mentioned":1} } },
  "results": [ { "question": "...", "model_label": "kimi", "mentioned": true, "rank": 3,
                 "wrong_facts": ["says founded in Henan"], "cited_sources": ["https://..."] } ],
  "disclaimer": "AI answers vary between runs; results are a sample, not a guarantee."
}

Notes