Open SourceXanLens is now open source — self-host with your own API keysView on GitHub →

[ API ]

API & Agent Integration

GEO audits for your apps, tools, and AI agents. REST API + MCP server.

Overview

Base URLhttps://xanlens.com/api/v1

Authentication — None required. Payment via x402.

Payment — Pro Audit + Content Fixes $0.99 USDC (80% launch discount, Base network via x402)

Format — JSON in, JSON out

Audit Flow (4 Steps)

Always start with detect — it returns keywords, features, and suggested prompts that generate 50+ extra queries. Skipping it means a weaker audit.

Step 1: Auto-Detect Brand (required — ~50s)

POST /audit/detect — always call first
curl -X POST https://xanlens.com/api/v1/audit/detect \
  -H "Content-Type: application/json" \
  -d '{"website": "stripe.com"}'

// Response (pass ALL fields to Step 2):
{
  "brand": "Stripe",
  "industry": "payment processing",
  "competitors": ["PayPal", "Square", "Adyen"],
  "keywords": ["online payments", "payment gateway", ...],
  "features": ["Developer-first API", "Global coverage", ...],
  "suggestedPrompts": ["best payment API for startups", ...]
}

Step 2: Submit Audit (pass all detect fields)

POST /audit — include all fields from detect
curl -X POST https://xanlens.com/api/v1/audit \
  -H "Content-Type: application/json" \
  -d '{
    "website": "https://stripe.com",
    "brand": "Stripe",
    "industry": "payment processing",
    "competitors": ["PayPal", "Square"],
    "keywords": ["online payments", "payment gateway"],
    "features": ["Developer-first API"],
    "suggestedPrompts": ["best payment API for startups"],
    "coupon": "GEO-XXXX-XXXX"
  }'

// Response:
{
  "status": "ready",
  "job_id": "abc-123",
  "detect_quality": "full",
  "total": 132,
  "execute_url": "/api/v1/audit/execute",
  "poll_url": "/api/v1/audit/status?jobId=abc-123"
}
// If detect_quality is "partial" or "failed" — call detect separately first

~132 prompts when detect data is complete. Fewer if keywords/features are missing.

Step 3: Execute + Poll

POST /audit/execute — fires all prompts server-side
curl -X POST https://xanlens.com/api/v1/audit/execute \
  -H "Content-Type: application/json" \
  -d '{"jobId": "abc-123"}'

// Response:
{"ok": true, "total": 132, "dispatched": 132}

// After all prompts fired:
curl "https://xanlens.com/api/v1/audit/status?jobId=abc-123"

// Returns full audit report with scores, engines, blind spots, citations, etc.

Additional Endpoints

GET /audit/status — Get Audit Results
curl "https://xanlens.com/api/v1/audit/status?jobId=abc-123"

// Returns: Complete audit report with scores, engines breakdown,
// blind spots, citations, competitor analysis, and recommendations
POST /audit/share-verify — Share Score for Discount
curl -X POST "https://xanlens.com/api/v1/audit/share-verify" \
  -H "Content-Type: application/json" \
  -d '{"jobId": "abc-123", "tweetUrl": "https://x.com/user/status/123"}'

// Returns: Verification status and discount code for next audit
GET /audit/fixes — Get Generated Content (Pro)
curl "https://xanlens.com/api/v1/audit/fixes?jobId=abc-123"

// Returns: Generated GEO content including blog posts, FAQ schema,
// JSON-LD markup, llms.txt, and seed citations for improvement
POST /audit/detect — Auto-detect Brand Info
curl -X POST https://xanlens.com/api/v1/audit/detect \
  -H "Content-Type: application/json" \
  -d '{"website": "stripe.com"}'

// Returns: Detected brand name, industry, and competitor list
// for use in audit requests

Pro Audit + Content Fixes — $0.99

  • All active AI engines (Gemini, Grok, DeepSeek — more coming online)
  • ~132 prompts across category, discovery, and competitor queries
  • SEO vs GEO comparison
  • Technical health (Lighthouse + AI crawler check)
  • Authority source mapping
  • Search demand signals
  • Persona analysis + content AI-friendliness
  • Competitor ranking
  • Trend tracking
  • AI-generated content fixes (approve/reject/edit from dashboard)
  • Generated content + seed citations

Pay with USDC on Base (x402), card at xanlens.com/dashboard, or coupon code.

Quick Start

Python — Full Audit
import requests, time

BASE = "https://xanlens.com/api/v1"

# Step 1: Detect brand (required — ~50s)
detected = requests.post(f"{BASE}/audit/detect", json={"website": "acme.com"}).json()

# Step 2: Submit audit with all detect fields + coupon
audit = requests.post(f"{BASE}/audit", json={**detected, "coupon": "GEO-XXXX-XXXX"}).json()
job_id = audit["job_id"]

# Step 3: Execute (fires all prompts server-side)
requests.post(f"{BASE}/audit/execute", json={"jobId": job_id})

# Step 4: Poll for results
while True:
    result = requests.get(f"{BASE}/audit/status?jobId={job_id}").json()
    if result["status"] == "complete":
        break
    print(f"Progress: {result['done']}/{result['total']}")
    time.sleep(15)

print(f"GEO Score: {result['overall_score']}/100 ({result['grade']})")
JavaScript
const BASE = "https://xanlens.com/api/v1";
const delay = ms => new Promise(r => setTimeout(r, ms));

// Step 1: Detect
const detected = await fetch(`${BASE}/audit/detect`, {
  method: "POST", headers: {"Content-Type": "application/json"},
  body: JSON.stringify({website: "acme.com"})
}).then(r => r.json());

// Step 2: Submit with all detect fields
const audit = await fetch(`${BASE}/audit`, {
  method: "POST", headers: {"Content-Type": "application/json"},
  body: JSON.stringify({...detected, coupon: "GEO-XXXX-XXXX"})
}).then(r => r.json());

// Step 3: Execute
await fetch(`${BASE}/audit/execute`, {
  method: "POST", headers: {"Content-Type": "application/json"},
  body: JSON.stringify({jobId: audit.job_id})
});

// Step 4: Poll
let result;
do {
  await delay(15000);
  result = await fetch(`${BASE}/audit/status?jobId=${audit.job_id}`).then(r => r.json());
} while (result.status !== "complete");

console.log(`GEO Score: ${result.overall_score}/100 (${result.grade})`);

x402 Payment Protocol

XanLens uses x402 for machine-native payments. No API keys. No accounts. Pro Audit + Content Fixes $0.99 USDC on Base (80% launch discount).

Flow:

1. Send request without X-Source: website header (triggers paid tier)

2. Server returns 402 with payment details

3. Agent sends USDC on Base network

4. Retry with transaction hash — server verifies and returns data

Wallet:

0xB33FF8b810670dFe8117E5936a1d5581A05f350D (Base · USDC)

MCP Server (AI Agents)

For AI agents using Model Context Protocol, XanLens is available as a native tool. Your agent can call GEO audits without leaving its workflow.

Install:

openclaw skills install xanlens-geo

Compatible with OpenClaw, Claude Desktop, Cursor, and any MCP-compatible framework. The skill gives your agent the full GEO audit playbook — run audits, interpret results, draft fixes, and push content.

VIEW ON CLAWHUB

Ready to integrate?

Start auditing. No API keys needed.

Audit your brand →