← Dashboard Agents Diff Why this score Quick Start Register Widget Webhooks Quota API Reference
Not: Bu referans sayfası teknik (HTTP endpoint'leri, kod örnekleri, imza doğrulama) — çoğunluğu geliştirici jargonuyla İngilizce tutuldu. Aşağıdaki Widget / Webhooks / Quota açıklama kutuları Türkçe versiyonlarını içeriyor.
PUBLIC API v1

Answena — Docs

The same 3-layer scoring engine, available over a small public API and an embeddable widget. Free-scan any URL, register for a key, push agent reports, and collect live AI-bot traffic from your own site.

checking…

Quick Start (5 minutes)

1Free Scan

Try it — no signup.

curl -X POST https://answena.com/api/v1/free-scan \
  -H "Content-Type: application/json" \
  -d '{"url":"https://yoursite.com"}'

2Register

Get your API key + site_id.

curl -X POST https://answena.com/api/v1/sync/onboard \
  -H "Content-Type: application/json" \
  -d '{"url":"https://yoursite.com","name":"My Project"}'

3Push Your Data

Send agent reports — include metrics, warnings, and learned_patterns. The API returns a quality grade (A-F).

curl -X POST https://answena.com/api/v1/sync/report \
  -H "X-AISEO-Key: sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
  "agent":"seo",
  "report":{
    "severity":"warning",
    "summary":"Low citation rate on product pages",
    "metrics":{"citationRate":0.12,"wordCount":410},
    "warnings":[{"severity":"high","message":"No JSON-LD"}],
    "recommendations":[{"title":"Add Article schema","priority":"critical"}]
  },
  "memory":{"learned_patterns":[{
    "pattern":"thin_product_pages","confidence":0.85,
    "impact":"high","detail":"Most product pages <500 words"
  }]}
}'

4Get Recommendations

Live scan + personalised fixes, cross-site aware.

curl -X POST https://answena.com/api/v1/connect \
  -H "X-AISEO-Key: sk_your_key" \
  -H "Content-Type: application/json" -d '{}'

5Send Feedback

Correct your site type; flag bad tips.

curl -X POST https://answena.com/api/v1/feedback \
  -H "X-AISEO-Key: sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"site_type_correction":"saas","project_description":"B2B analytics"}'

6Embed the Widget

Paste before </body>. Invites AI crawlers & reports live bot traffic back.

<script src="https://answena.com/widget.js"
        data-site-id="site_xxx" async></script>

Quality Score: every /sync/report returns a 0-100 grade — A (80+), B (60+), C (40+), D (20+), F (<20 = rejected). Reward-weighted toward recommendations and learned_patterns.

Register — get your API key

Embed Widget — invite the AIs, measure the visits

EN — What is this?

Embed Widget is one line of JavaScript you paste into your site. It does two things: (1) it tells AI crawlers "this page is open for AI to read" so ChatGPT/Claude/Gemini are more likely to pick you up, and (2) it keeps a live log of every AI bot that actually visits you — so you can prove your SEO work is paying off.

When to use it: after you scan and fix your page, paste this once and forget. Traffic stats accrue automatically.

TR — Bu ne işe yarar?

Embed Widget, sitene yapıştırdığın tek satırlık bir JavaScript kodudur. İki işi var: (1) AI taramacılarına "bu sayfa AI'ların okumasına açık" sinyali gönderir, böylece ChatGPT/Claude/Gemini seni daha büyük ihtimalle alır, (2) sitene gerçekten uğrayan AI botların canlı kaydını tutar — SEO çalışmanın işe yaradığını kanıtlarsın.

Ne zaman kullan: Siteni tarayıp düzeltmeleri yaptıktan sonra bir kez yapıştır, unut. Trafik istatistiği kendiliğinden birikir.

Paste the generated snippet before </body>. The widget injects JSON-LD for LLM crawlers, declares AI opt-in metadata, links to your /llms.txt, and pings our server for every visit so you can see — live — which AI bots actually read your site.

<!-- enter your site_id above -->

Webhooks (push findings to your server)

EN — What is this?

Webhooks are automatic phone calls from us to your server. Our 6 background agents watch your site 24/7. When one of them finds something important (your score dropped, a competitor overtook you, an AI stopped citing you), instead of you having to log in and check, we POST the finding straight to a URL you give us.

When to use it: if you want Slack/Discord/email alerts when something bad (or good) happens to your AI-SEO health. Point the webhook at a small handler on your server that forwards the message wherever you want it.

TR — Bu ne işe yarar?

Webhooks, bizim sunucumuzdan seninkine otomatik telefon çağrıları gibidir. 6 arka plan ajanımız siteni 7/24 izliyor. Biri önemli bir şey bulduğunda (puanın düştü, bir rakip seni geçti, AI seni artık kaynak göstermiyor), senin bize giriş yapıp kontrol etmen yerine, bulguyu verdiğin URL'ye POST ederek doğrudan gönderiyoruz.

Ne zaman kullan: AI-SEO sağlığında kötü (veya iyi) bir şey olduğunda Slack/Discord/e-posta uyarısı istiyorsan. Webhook'u sunucundaki küçük bir handler'a bağla, o handler mesajı istediğin yere yönlendirsin.

When a background agent surfaces a finding at or above your chosen severity, we POST it to your URL with an X-AISEO-Signature: sha256=… HMAC header computed with the site-specific secret. Verify the signature before acting on a payload.

Verify the signature in your handler

// Node / Express
import crypto from 'node:crypto';
app.post('/aiseo/webhook', express.raw({ type:'application/json' }), (req, res) => {
  const sig = req.get('X-AISEO-Signature') || '';
  const expected = 'sha256=' + crypto.createHmac('sha256', process.env.AISEO_WEBHOOK_SECRET)
    .update(req.body).digest('hex');
  if (!crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected))) {
    return res.status(401).end('bad signature');
  }
  const finding = JSON.parse(req.body.toString('utf8'));
  // finding: { event:'finding', site_id, domain, agent, severity, title, summary, ... }
  res.sendStatus(204);
});

Quota (daily limit per API key)

EN — What is this?

Quota is a daily fuel gauge for your API key. Every authenticated call you make counts toward a limit that resets at midnight UTC. Default free-tier allowance is 1000 calls per day — plenty for normal use. Free scans (the button on the home page) and widget pings are free and don't count. Only authenticated API work counts.

When to check it: if you're running automation and want to know how many calls you have left today before you hit a 429 wall. Paste your API key below to see today's usage.

TR — Bu ne işe yarar?

Quota, API anahtarının günlük yakıt göstergesi gibidir. Her yetkili API çağrısı bir sayaca işlenir ve her gece UTC gece yarısı sıfırlanır. Ücretsiz kullanım limiti günde 1000 çağrı — normal kullanım için fazlasıyla yeter. Ana sayfadaki ücretsiz taramalar ve widget ping'leri ücretsizdir, sayılmaz. Sadece yetkili API çağrıları sayılır.

Ne zaman kontrol et: otomasyon çalıştırıyorsan ve 429 hatasına çarpmadan önce bugün ne kadar hakkın kaldığını görmek istersen. API anahtarını aşağıya yapıştır, bugünkü kullanım görünsün.

Every authenticated call is counted per UTC day. The default free-tier limit is 1000 calls/day. Responses include X-AISEO-Quota-Limit, X-AISEO-Quota-Remaining, and X-AISEO-Quota-Reset headers so you can pace your client. Over the limit, the server returns 429. Free-scan and widget pings do not count.

API Reference

Base URL: this origin

Public

MethodPathPurpose
GET/api/v1/healthSystem status + provider flags
POST/api/v1/free-scanInstant score, no auth — body: { url }
POST/api/v1/sync/onboardRegister, get API key + site_id

Authenticated (header: X-AISEO-Key)

MethodPathPurpose
POST/api/v1/sync/report🔒Push a single agent report (scored A-F)
POST/api/v1/sync/bulk🔒Push up to 50 reports at once
POST/api/v1/connect🔒Live scan + personalised recommendations
POST/api/v1/feedback🔒Correct site type, flag tips
GET/api/v1/sync/sites/{site_id}🔒Site overview
GET/api/v1/sync/actions/{site_id}🔒Prioritised action plan
GET/api/v1/sync/knowledge/{agent}Cross-site knowledge summary
POST/api/v1/sync/webhook🔒Configure webhook URL — body: { url, minSeverity? }
GET/api/v1/sync/webhook🔒Inspect current webhook (secret redacted)
POST/api/v1/sync/webhook/test🔒Send a synthetic test finding
GET/api/v1/quota🔒Today's usage and remaining calls

Widget endpoints (used by widget.js — CORS-enabled)

MethodPathPurpose
GET/widget.jsThe widget loader (paste this in your site)
GET/api/widget/config/{site_id}JSON-LD + AI-invite config
POST/api/widget/pingRecords one visit (classified as bot / human)
GET/api/widget/stats/{site_id}Pings by bot family
GET/llms.txtAI-crawler discovery file

Bot detection

The widget ping classifies every visit. Families we currently recognise:

GPTBotOpenAI training crawler
ChatGPT-UserIn-session fetches
ClaudeBotAnthropic crawler
PerplexityBotPerplexity retrieval
Google-ExtendedGemini training
BingbotMicrosoft + Copilot
ApplebotSiri/Apple Intelligence
CCBotCommon Crawl
YouBotYou.com

Bug or question? Open the dashboard at / and scan your site — the widget panel there shows a live feed.