Who Is Searching API
Intent and engagement signals. Two real signals, honestly scoped:
- Visitors (
/v1/visitors/identify) — brand-level engagement and attribution frommodule-Cclick analytics (not company-level de-anonymization). - Intel (
/v1/intel/*) —module-Gbrand-intelligence surface, keyed bybrand_id. - Intent & alerts (
/v1/intent/*,/v1/alerts) — market-intel signals, industry alert scans, and intent-based enrichment viamodule-G.
These routes are mounted directly under /v1 (no extra sub-prefix).
Authentication
Authorization: Bearer ai92_live_<key> # production
Authorization: Bearer ai92_test_<key> # sandboxMutating requests support Idempotency-Key and are brand-gated.
Credit costs at a glance
| Endpoint | Cost |
|---|---|
GET /v1/visitors/identify | 45 cr per 100 |
GET /v1/intel/brand/{brand_id} | 5 cr |
GET /v1/intel/competitor/{brand_id} | 10 cr |
GET /v1/intel/keywords/{brand_id} | 5 cr |
GET /v1/intel/market/{brand_id} | 5 cr |
POST /v1/intent/signals | 5 cr |
POST /v1/alerts | 3 cr |
POST /v1/intent/enrich | 12 cr |
GET /v1/visitors/identify
Cost: 45 credits per 100
Real engagement / intent signals for a brand from module-C click and attribution analytics: per-post opens/clicks/engagement plus click totals, country breakdown and timeline. Pass the canonical brand id (slug) so attribution resolves.
Auth: Bearer
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
brand_id | query | string | Yes | Canonical brand id (slug). |
campaign_id | query | string / null | No | Restrict to a campaign. |
limit | query | integer | No | Records returned. Default 100. |
Request
curl "https://api.ai92.ai/v1/visitors/identify?brand_id=acme&limit=100" \
-H "Authorization: Bearer ai92_test_51a9c0de…"Response 200 OK
{
"brand_id": "acme",
"attribution": [
{ "post_id": "post_12", "opens": 540, "clicks": 88, "engagement": 0.16 }
],
"clicks": { "total": 2104, "by_country": { "US": 1320, "UK": 410 }, "timeline": [] }
}Errors
| Status | Code | When |
|---|---|---|
402 | INSUFFICIENT_CREDITS | Balance below 45 credits. |
GET /v1/intel/brand/{brand_id}
Cost: 5 credits
module-G brand intelligence profile for a brand.
Auth: Bearer
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
brand_id | path | string | Yes | The brand. |
Request
curl https://api.ai92.ai/v1/intel/brand/acme \
-H "Authorization: Bearer ai92_test_51a9c0de…"Response 200 OK
{
"brand_id": "acme",
"industry": "Software",
"positioning": "mid-market CRM",
"key_attributes": ["ease-of-use", "integrations"]
}GET /v1/intel/competitor/{brand_id}
Cost: 10 credits
module-G competitor intelligence for a brand.
Auth: Bearer
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
brand_id | path | string | Yes | The brand. |
include_pricing | query | boolean | No | Include competitor pricing. Default false. |
anonymize | query | boolean | No | Anonymize competitor identities. Default false. |
Request
curl "https://api.ai92.ai/v1/intel/competitor/acme?include_pricing=true" \
-H "Authorization: Bearer ai92_test_51a9c0de…"Response 200 OK
{
"brand_id": "acme",
"competitors": [ { "name": "rival", "positioning": "enterprise CRM", "pricing_tier": "high" } ]
}GET /v1/intel/keywords/{brand_id}
Cost: 5 credits
module-G keyword intelligence for a brand, optionally over a date range.
Auth: Bearer
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
brand_id | path | string | Yes | The brand. |
start_date | query | string / null | No | ISO date lower bound. |
end_date | query | string / null | No | ISO date upper bound. |
Request
curl "https://api.ai92.ai/v1/intel/keywords/acme?start_date=2026-05-01&end_date=2026-06-01" \
-H "Authorization: Bearer ai92_test_51a9c0de…"Response 200 OK
{
"brand_id": "acme",
"keywords": [ { "keyword": "crm software", "trend": "rising", "interest": 78 } ]
}GET /v1/intel/market/{brand_id}
Cost: 5 credits
module-G market intelligence for a brand.
Auth: Bearer
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
brand_id | path | string | Yes | The brand. |
Request
curl https://api.ai92.ai/v1/intel/market/acme \
-H "Authorization: Bearer ai92_test_51a9c0de…"Response 200 OK
{
"brand_id": "acme",
"market_trends": ["AI adoption", "consolidation"],
"opportunity_score": 67
}POST /v1/intent/signals
Cost: 5 credits
Market / intent intelligence for an industry (module-G market-intel). keywords are passed as the free-text question.
Auth: Bearer
| Field | Type | Required | Description |
|---|---|---|---|
industry | string | Yes | Industry to query. |
keywords | string[] | Yes | Intent keywords. Length 1–20. |
Request
curl https://api.ai92.ai/v1/intent/signals \
-H "Authorization: Bearer ai92_test_51a9c0de…" \
-H "Content-Type: application/json" \
-d '{"industry": "fintech", "keywords": ["payment orchestration", "fraud"]}'Response 200 OK
{
"industry": "fintech",
"signals": [ { "topic": "payment orchestration", "momentum": "high", "sources": 42 } ]
}Errors
| Status | Code | When |
|---|---|---|
402 | INSUFFICIENT_CREDITS | Balance below 5 credits. |
POST /v1/alerts
Cost: 3 credits
Scan a business for industry alerts (module-G). Requires an active industry-alerts subscription on the business; the scan window is capped at 7 days.
Auth: Bearer
| Field | Type | Required | Description |
|---|---|---|---|
business_id | string | Yes | The business to scan. Min length 1. |
days_back | integer | No | Scan window. Default 7. Range 1–7. |
keyword | string / null | No | Optional context keyword (back-compat). |
industry | string / null | No | Optional industry context (back-compat). |
webhook_url | string / null | No | Optional webhook for results (back-compat). |
notification_email | string / null | No | Optional notification email (back-compat). |
Request
curl https://api.ai92.ai/v1/alerts \
-H "Authorization: Bearer ai92_test_51a9c0de…" \
-H "Content-Type: application/json" \
-d '{"business_id": "biz_991", "days_back": 7}'Response 200 OK
{
"business_id": "biz_991",
"alerts": [ { "type": "funding", "summary": "Competitor raised Series B", "date": "2026-06-18" } ]
}Errors
| Status | Code | When |
|---|---|---|
402 | INSUFFICIENT_CREDITS | Balance below 3 credits. |
POST /v1/intent/enrich
Cost: 12 credits
Intent-based enrichment via module-G business-scan for the target brand.
Auth: Bearer
| Field | Type | Required | Description |
|---|---|---|---|
intent_signal_id | string | Yes | Signal id; used as the scan target when brand_id is omitted. Min length 1. |
depth | string | No | Enrichment depth. Default basic. |
brand_id | string / null | No | Preferred scan target (overrides intent_signal_id). |
Request
curl https://api.ai92.ai/v1/intent/enrich \
-H "Authorization: Bearer ai92_test_51a9c0de…" \
-H "Content-Type: application/json" \
-d '{"intent_signal_id": "sig_44", "brand_id": "acme", "depth": "full"}'Response 200 OK
{
"brand_id": "acme",
"enrichment": { "firmographics": { "employees": 420, "revenue_usd": 50000000 }, "tech_stack": ["aws", "react"] }
}Errors
| Status | Code | When |
|---|---|---|
402 | INSUFFICIENT_CREDITS | Balance below 12 credits. |