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.
Try it — no signup.
curl -X POST https://answena.com/api/v1/free-scan \
-H "Content-Type: application/json" \
-d '{"url":"https://yoursite.com"}'
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"}'
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"
}]}
}'
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 '{}'
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"}'
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.
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.
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 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.
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.
// 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 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.
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.
Base URL: this origin
| Method | Path | Purpose |
|---|---|---|
| GET | /api/v1/health | System status + provider flags |
| POST | /api/v1/free-scan | Instant score, no auth — body: { url } |
| POST | /api/v1/sync/onboard | Register, get API key + site_id |
X-AISEO-Key)| Method | Path | Purpose |
|---|---|---|
| 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 |
| Method | Path | Purpose |
|---|---|---|
| GET | /widget.js | The widget loader (paste this in your site) |
| GET | /api/widget/config/{site_id} | JSON-LD + AI-invite config |
| POST | /api/widget/ping | Records one visit (classified as bot / human) |
| GET | /api/widget/stats/{site_id} | Pings by bot family |
| GET | /llms.txt | AI-crawler discovery file |
The widget ping classifies every visit. Families we currently recognise:
Bug or question? Open the dashboard at / and scan your site — the widget panel there shows a live feed.