{"openapi":"3.1.0","info":{"title":"Exepal API","version":"1.0.0","description":"Paid single-purpose tools for AI agents: social profile lookup (Instagram, TikTok, YouTube), YouTube transcripts, local business leads (Google Maps + website contacts), page reader (URL to markdown), domain intel (DNS, email security, registrar, tech stack), South Asia utilities (Bikram Sambat dates, Nepali numbers, NP/IN phone and GSTIN/PAN/Aadhaar/IFSC checks), email check, security scanners (prompt-injection scanner, secrets leak detector, PII detector and redactor, MCP server audit), company enrichment, creator vetting, AI brand visibility, ad creative scoring, SERP + AI answer monitoring. Pay per call in USDC on Base via x402. No accounts or API keys. Also available as an MCP server at /mcp.","contact":{"name":"Exepal","url":"https://exepal.com","email":"contact@laxmankafle.com"},"x-logo":{"url":"https://api.exepal.com/icon.png"}},"servers":[{"url":"https://api.exepal.com"}],"externalDocs":{"url":"https://exepal.com/docs"},"paths":{"/v1/ai-visibility/quick":{"post":{"summary":"AI brand visibility, quick check: how often an AI assistant recommends a brand for buyer questions in its category (5 prompts, 1 engine)","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.50"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"brand":{"type":"string","description":"Brand to measure, e.g. Notion"},"category":{"type":"string","description":"Product category the prompts are about, e.g. note-taking apps"},"domain":{"type":"string","description":"Brand website, e.g. notion.com"},"competitors":{"type":"array","items":{"type":"string"},"description":"Competitor brand names"},"market":{"type":"string","description":"Country or market, e.g. US"},"promptCount":{"type":"number","description":"Prompts to ask, capped by the tier"},"engines":{"type":"array","items":{"type":"string"},"description":"Subset of openai, anthropic, google, perplexity; default every engine that is enabled"},"prompts":{"type":"array","items":{"type":"string"},"description":"Your own buyer questions instead of generated ones"}},"required":["brand","category"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"brand":{"type":"string"},"category":{"type":"string"},"generatedAt":{"type":"string","description":"ISO 8601"},"score":{"type":"number","description":"0-100 composite: 60% visibility, 25% rank quality, 15% first mention"},"engines":{"type":"array","items":{"type":"object","properties":{"engine":{"type":"string","description":"openai, anthropic, google or perplexity"},"promptsRun":{"type":"number"},"promptsMentioned":{"type":"number"},"visibility":{"type":"number","description":"% of prompts where the brand appears"},"avgRank":{"type":["number","null"],"description":"Average 0-based rank when mentioned, lower is better; null if never mentioned"},"firstMentionRate":{"type":"number","description":"% of prompts where the brand is named first"},"avgSentiment":{"type":["number","null"],"description":"-1..1"}}},"description":"Score per AI engine"},"shareOfVoice":{"type":"array","items":{"type":"object","properties":{"brand":{"type":"string"},"mentions":{"type":"number"},"share":{"type":"number","description":"% of all brand mentions"}}},"description":"Brand and competitors"},"topCitedDomains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"count":{"type":"number"}}},"description":"Sites the engines cite for this category"},"missedPrompts":{"type":"array","items":{"type":"object","properties":{"prompt":{"type":"string"},"engine":{"type":"string","description":"openai, anthropic, google or perplexity"},"competitorsPresent":{"type":"array","items":{"type":"string"}}}},"description":"Prompts where a competitor was named and the brand was not"},"recommendations":{"type":"array","items":{"type":"string"},"description":"Plain-language next steps"},"namedByAi":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"answers":{"type":"number"},"kind":{"type":"string","description":"brand or platform"}}},"description":"Names the engines brought up on their own"},"results":{"type":"array","items":{"type":"object","properties":{"prompt":{"type":"string"},"engine":{"type":"string","description":"openai, anthropic, google or perplexity"},"model":{"type":"string"},"answer":{"type":"string","description":"The engine's answer, cut to 1,200 characters"},"mentions":{"type":"array","items":{"type":"object","properties":{"brand":{"type":"string"},"rank":{"type":"number","description":"0 = named first"},"count":{"type":"number"},"sentiment":{"type":"number","description":"-1..1"},"snippet":{"type":"string"}}}},"citations":{"type":"array","items":{"type":"string"},"description":"URLs the engine cited"},"latencyMs":{"type":"number"},"error":{"type":"string","description":"Set when this prompt failed"}}},"description":"Every prompt and answer"},"cost":{"type":"object","properties":{"promptsRun":{"type":"number"},"estimatedUsd":{"type":"number"}}}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/ai-visibility":{"post":{"summary":"AI brand visibility report: how often AI assistants recommend a brand for buyer questions in its category (20 prompts, every engine Exepal runs)","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"3.00"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"brand":{"type":"string","description":"Brand to measure, e.g. Notion"},"category":{"type":"string","description":"Product category the prompts are about, e.g. note-taking apps"},"domain":{"type":"string","description":"Brand website, e.g. notion.com"},"competitors":{"type":"array","items":{"type":"string"},"description":"Competitor brand names"},"market":{"type":"string","description":"Country or market, e.g. US"},"promptCount":{"type":"number","description":"Prompts to ask, capped by the tier"},"engines":{"type":"array","items":{"type":"string"},"description":"Subset of openai, anthropic, google, perplexity; default every engine that is enabled"},"prompts":{"type":"array","items":{"type":"string"},"description":"Your own buyer questions instead of generated ones"}},"required":["brand","category"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"brand":{"type":"string"},"category":{"type":"string"},"generatedAt":{"type":"string","description":"ISO 8601"},"score":{"type":"number","description":"0-100 composite: 60% visibility, 25% rank quality, 15% first mention"},"engines":{"type":"array","items":{"type":"object","properties":{"engine":{"type":"string","description":"openai, anthropic, google or perplexity"},"promptsRun":{"type":"number"},"promptsMentioned":{"type":"number"},"visibility":{"type":"number","description":"% of prompts where the brand appears"},"avgRank":{"type":["number","null"],"description":"Average 0-based rank when mentioned, lower is better; null if never mentioned"},"firstMentionRate":{"type":"number","description":"% of prompts where the brand is named first"},"avgSentiment":{"type":["number","null"],"description":"-1..1"}}},"description":"Score per AI engine"},"shareOfVoice":{"type":"array","items":{"type":"object","properties":{"brand":{"type":"string"},"mentions":{"type":"number"},"share":{"type":"number","description":"% of all brand mentions"}}},"description":"Brand and competitors"},"topCitedDomains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"count":{"type":"number"}}},"description":"Sites the engines cite for this category"},"missedPrompts":{"type":"array","items":{"type":"object","properties":{"prompt":{"type":"string"},"engine":{"type":"string","description":"openai, anthropic, google or perplexity"},"competitorsPresent":{"type":"array","items":{"type":"string"}}}},"description":"Prompts where a competitor was named and the brand was not"},"recommendations":{"type":"array","items":{"type":"string"},"description":"Plain-language next steps"},"namedByAi":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"answers":{"type":"number"},"kind":{"type":"string","description":"brand or platform"}}},"description":"Names the engines brought up on their own"},"results":{"type":"array","items":{"type":"object","properties":{"prompt":{"type":"string"},"engine":{"type":"string","description":"openai, anthropic, google or perplexity"},"model":{"type":"string"},"answer":{"type":"string","description":"The engine's answer, cut to 1,200 characters"},"mentions":{"type":"array","items":{"type":"object","properties":{"brand":{"type":"string"},"rank":{"type":"number","description":"0 = named first"},"count":{"type":"number"},"sentiment":{"type":"number","description":"-1..1"},"snippet":{"type":"string"}}}},"citations":{"type":"array","items":{"type":"string"},"description":"URLs the engine cited"},"latencyMs":{"type":"number"},"error":{"type":"string","description":"Set when this prompt failed"}}},"description":"Every prompt and answer"},"cost":{"type":"object","properties":{"promptsRun":{"type":"number"},"estimatedUsd":{"type":"number"}}}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/ai-visibility/deep":{"post":{"summary":"AI brand visibility deep report (50 prompts, all engines)","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"7.00"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"brand":{"type":"string","description":"Brand to measure, e.g. Notion"},"category":{"type":"string","description":"Product category the prompts are about, e.g. note-taking apps"},"domain":{"type":"string","description":"Brand website, e.g. notion.com"},"competitors":{"type":"array","items":{"type":"string"},"description":"Competitor brand names"},"market":{"type":"string","description":"Country or market, e.g. US"},"promptCount":{"type":"number","description":"Prompts to ask, capped by the tier"},"engines":{"type":"array","items":{"type":"string"},"description":"Subset of openai, anthropic, google, perplexity; default every engine that is enabled"},"prompts":{"type":"array","items":{"type":"string"},"description":"Your own buyer questions instead of generated ones"}},"required":["brand","category"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"brand":{"type":"string"},"category":{"type":"string"},"generatedAt":{"type":"string","description":"ISO 8601"},"score":{"type":"number","description":"0-100 composite: 60% visibility, 25% rank quality, 15% first mention"},"engines":{"type":"array","items":{"type":"object","properties":{"engine":{"type":"string","description":"openai, anthropic, google or perplexity"},"promptsRun":{"type":"number"},"promptsMentioned":{"type":"number"},"visibility":{"type":"number","description":"% of prompts where the brand appears"},"avgRank":{"type":["number","null"],"description":"Average 0-based rank when mentioned, lower is better; null if never mentioned"},"firstMentionRate":{"type":"number","description":"% of prompts where the brand is named first"},"avgSentiment":{"type":["number","null"],"description":"-1..1"}}},"description":"Score per AI engine"},"shareOfVoice":{"type":"array","items":{"type":"object","properties":{"brand":{"type":"string"},"mentions":{"type":"number"},"share":{"type":"number","description":"% of all brand mentions"}}},"description":"Brand and competitors"},"topCitedDomains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"count":{"type":"number"}}},"description":"Sites the engines cite for this category"},"missedPrompts":{"type":"array","items":{"type":"object","properties":{"prompt":{"type":"string"},"engine":{"type":"string","description":"openai, anthropic, google or perplexity"},"competitorsPresent":{"type":"array","items":{"type":"string"}}}},"description":"Prompts where a competitor was named and the brand was not"},"recommendations":{"type":"array","items":{"type":"string"},"description":"Plain-language next steps"},"namedByAi":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"answers":{"type":"number"},"kind":{"type":"string","description":"brand or platform"}}},"description":"Names the engines brought up on their own"},"results":{"type":"array","items":{"type":"object","properties":{"prompt":{"type":"string"},"engine":{"type":"string","description":"openai, anthropic, google or perplexity"},"model":{"type":"string"},"answer":{"type":"string","description":"The engine's answer, cut to 1,200 characters"},"mentions":{"type":"array","items":{"type":"object","properties":{"brand":{"type":"string"},"rank":{"type":"number","description":"0 = named first"},"count":{"type":"number"},"sentiment":{"type":"number","description":"-1..1"},"snippet":{"type":"string"}}}},"citations":{"type":"array","items":{"type":"string"},"description":"URLs the engine cited"},"latencyMs":{"type":"number"},"error":{"type":"string","description":"Set when this prompt failed"}}},"description":"Every prompt and answer"},"cost":{"type":"object","properties":{"promptsRun":{"type":"number"},"estimatedUsd":{"type":"number"}}}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/creator-vetting":{"post":{"summary":"Creator vetting for one Instagram, TikTok or YouTube profile: fake-follower risk, engagement quality, consistency, red flags and a fair sponsored-post rate","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.20"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","enum":["instagram","tiktok","youtube"],"description":"Social platform"},"handle":{"type":"string","description":"Creator handle without @"},"profile":{"type":"object","description":"Optional profile stats you already have; skips the fetch"}},"required":["platform","handle"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","description":"instagram, tiktok or youtube"},"handle":{"type":"string"},"generatedAt":{"type":"string","description":"ISO 8601"},"source":{"type":"string","description":"provided (your stats) or apify (fetched)"},"score":{"type":"number","description":"0-100 overall, higher is better"},"fakeFollowerRisk":{"type":"number","description":"0-100, higher means more likely bought or inactive audience"},"engagementQuality":{"type":"number","description":"0-100, higher is better"},"consistency":{"type":"number","description":"0-100 posting consistency, higher is better"},"estimatedRateUsd":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"},"currency":{"type":"string","description":"USD"},"unit":{"type":"string","description":"per UGC video or post"},"basis":{"type":"object","properties":{"tier":{"type":"string"},"baseMin":{"type":"number"},"baseMax":{"type":"number"},"engagementMultiplier":{"type":"number"},"riskMultiplier":{"type":"number"}}}},"description":"Estimated fair rate range per sponsored post"},"redFlags":{"type":"array","items":{"type":"string"},"description":"Short reasons to be careful, empty when none"},"summary":{"type":"string","description":"One-paragraph verdict"},"metrics":{"type":"object","properties":{"followers":{"type":"number"},"following":{"type":"number"},"postsCount":{"type":"number"},"postsAnalysed":{"type":"number"},"tier":{"type":"string","description":"nano, micro, mid, macro or mega"},"followRatio":{"type":["number","null"],"description":"following / followers"},"engagementRate":{"type":["number","null"],"description":"(likes + comments) / followers per post, 0.025 = 2.5%"},"benchmarkEngagementRate":{"type":"number","description":"Expected rate for this platform and tier"},"engagementIndex":{"type":["number","null"],"description":"engagementRate / benchmark, 1.0 = on benchmark"},"avgLikes":{"type":["number","null"]},"avgComments":{"type":["number","null"]},"commentToLikeRatio":{"type":["number","null"]},"likesCv":{"type":["number","null"],"description":"Spread of likes across posts (stdev / mean)"},"spikeCount":{"type":"number","description":"Posts with likes over 3x the median"},"viewRate":{"type":["number","null"],"description":"avg views / followers"},"postsPerWeek":{"type":["number","null"]},"maxGapDays":{"type":["number","null"]},"daysSinceLastPost":{"type":["number","null"]}},"description":"The numbers every score is built from"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/company-enrich":{"post":{"summary":"Company enrichment for one domain: name, description, industry, size, HQ, socials, contacts, tech stack, pricing page and recent news","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.10"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Company domain, e.g. stripe.com"}},"required":["domain"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"website":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"industry":{"type":"string"},"tagline":{"type":"string"},"foundedYear":{"type":"number"},"hqLocation":{"type":"string"},"employeeRange":{"type":"string","description":"e.g. 11-50, 51-200"},"socials":{"type":"object","properties":{"linkedin":{"type":"string"},"x":{"type":"string"},"instagram":{"type":"string"},"youtube":{"type":"string"},"facebook":{"type":"string"},"github":{"type":"string"}},"description":"Profile URLs found"},"contact":{"type":"object","properties":{"emails":{"type":"array","items":{"type":"string"}},"phones":{"type":"array","items":{"type":"string"}},"contactPage":{"type":"string"}}},"techStack":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"category":{"type":"string","description":"analytics, cms, framework, chat, payment, marketing or hosting"}}}},"pricingPage":{"type":"string"},"hasFreeTrial":{"type":"boolean"},"recentNews":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string"},"date":{"type":"string"}}}},"confidence":{"type":"object","properties":{"identity":{"type":"number"},"firmographics":{"type":"number"},"socials":{"type":"number"},"contact":{"type":"number"},"techStack":{"type":"number"},"pricing":{"type":"number"},"news":{"type":"number"}},"description":"0-1 confidence per field group"},"sources":{"type":"object","properties":{"pages":{"type":"array","items":{"type":"string"},"description":"Pages read"},"llm":{"type":"string"},"news":{"type":"string"}}},"generatedAt":{"type":"string","description":"ISO 8601"},"error":{"type":"string","description":"Set when the site could not be read; other fields may be empty"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/company-enrich/batch":{"post":{"summary":"Company enrichment for up to 10 domains in one call","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.80"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domains":{"type":"array","items":{"type":"string"},"description":"Company domains","maxItems":10}},"required":["domains"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"Items in results"},"results":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"website":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"industry":{"type":"string"},"tagline":{"type":"string"},"foundedYear":{"type":"number"},"hqLocation":{"type":"string"},"employeeRange":{"type":"string","description":"e.g. 11-50, 51-200"},"socials":{"type":"object","properties":{"linkedin":{"type":"string"},"x":{"type":"string"},"instagram":{"type":"string"},"youtube":{"type":"string"},"facebook":{"type":"string"},"github":{"type":"string"}},"description":"Profile URLs found"},"contact":{"type":"object","properties":{"emails":{"type":"array","items":{"type":"string"}},"phones":{"type":"array","items":{"type":"string"}},"contactPage":{"type":"string"}}},"techStack":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"category":{"type":"string","description":"analytics, cms, framework, chat, payment, marketing or hosting"}}}},"pricingPage":{"type":"string"},"hasFreeTrial":{"type":"boolean"},"recentNews":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string"},"date":{"type":"string"}}}},"confidence":{"type":"object","properties":{"identity":{"type":"number"},"firmographics":{"type":"number"},"socials":{"type":"number"},"contact":{"type":"number"},"techStack":{"type":"number"},"pricing":{"type":"number"},"news":{"type":"number"}},"description":"0-1 confidence per field group"},"sources":{"type":"object","properties":{"pages":{"type":"array","items":{"type":"string"},"description":"Pages read"},"llm":{"type":"string"},"news":{"type":"string"}}},"generatedAt":{"type":"string","description":"ISO 8601"},"error":{"type":"string","description":"Set when the site could not be read; other fields may be empty"}}},"description":"One entry per input, in input order"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/ad-creative-score":{"post":{"summary":"Score one short-form video or feed ad (script, on-screen text, caption) on hook, clarity, CTA, platform fit, pacing and credibility, with concrete rewrites","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.25"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"creative":{"type":"object","description":"One ad creative. Needs platform, objective, product and at least one of script, onScreenText or caption","properties":{"platform":{"type":"string","enum":["tiktok","instagram-reels","youtube-shorts","meta-feed"],"description":"Where the ad will run"},"objective":{"type":"string","enum":["awareness","conversion","app-install"],"description":"What the ad is meant to do"},"product":{"type":"string","description":"The product or offer advertised, e.g. Loop earplugs"},"audience":{"type":"string","description":"Who it is for, e.g. new parents"},"script":{"type":"string","description":"Voiceover or transcript of what is said"},"onScreenText":{"type":"array","items":{"type":"string"},"description":"Text overlays in display order"},"caption":{"type":"string","description":"Post caption or primary text"},"durationSec":{"type":"number","description":"Video length in seconds"},"hookSec":{"type":"number","description":"Seconds until the first value statement; estimated from the script when omitted"},"id":{"type":"string","description":"Your own label, echoed back in the result"}},"required":["platform","objective","product"]}},"required":["creative"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Your id, echoed back"},"product":{"type":"string"},"platform":{"type":"string"},"objective":{"type":"string"},"overall":{"type":"number","description":"0-100 composite"},"scores":{"type":"object","properties":{"hook":{"type":"object","properties":{"score":{"type":"number","description":"0-100"},"reason":{"type":"string"}}},"clarity":{"type":"object","properties":{"score":{"type":"number","description":"0-100"},"reason":{"type":"string"}}},"cta":{"type":"object","properties":{"score":{"type":"number","description":"0-100"},"reason":{"type":"string"}}},"platformFit":{"type":"object","properties":{"score":{"type":"number","description":"0-100"},"reason":{"type":"string"}}},"pacing":{"type":"object","properties":{"score":{"type":"number","description":"0-100"},"reason":{"type":"string"}}},"credibility":{"type":"object","properties":{"score":{"type":"number","description":"0-100"},"reason":{"type":"string"}}}},"description":"Score and reason per dimension"},"fixes":{"type":"array","items":{"type":"object","properties":{"target":{"type":"string","description":"first-line, cta, caption, on-screen-text, script or duration"},"current":{"type":"string"},"suggested":{"type":"string","description":"Concrete replacement text or instruction"},"why":{"type":"string"}}},"description":"Rewrites to apply, most important first"},"predictedRisk":{"type":"string","description":"low, medium or high chance of underperforming"},"notes":{"type":"array","items":{"type":"string"}},"source":{"type":"string","description":"rules or rules+llm"},"model":{"type":"string"},"metrics":{"type":"object","properties":{"wordCount":{"type":"number"},"durationSec":{"type":["number","null"]},"wordsPerSecond":{"type":["number","null"]},"hookSec":{"type":["number","null"]},"hookEstimated":{"type":"boolean"},"captionChars":{"type":"number"},"hashtags":{"type":"number"},"ctaFound":{"type":"boolean"},"ctaPosition":{"type":["number","null"]},"ugcMarkers":{"type":"number"},"weakPhrases":{"type":"array","items":{"type":"string"}},"riskyClaims":{"type":"array","items":{"type":"string"}}}},"generatedAt":{"type":"string","description":"ISO 8601"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/ad-creative-score/batch":{"post":{"summary":"Score up to 10 ad creatives in one call","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"2.00"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"creatives":{"type":"array","items":{"type":"object","description":"One ad creative. Needs platform, objective, product and at least one of script, onScreenText or caption","properties":{"platform":{"type":"string","enum":["tiktok","instagram-reels","youtube-shorts","meta-feed"],"description":"Where the ad will run"},"objective":{"type":"string","enum":["awareness","conversion","app-install"],"description":"What the ad is meant to do"},"product":{"type":"string","description":"The product or offer advertised, e.g. Loop earplugs"},"audience":{"type":"string","description":"Who it is for, e.g. new parents"},"script":{"type":"string","description":"Voiceover or transcript of what is said"},"onScreenText":{"type":"array","items":{"type":"string"},"description":"Text overlays in display order"},"caption":{"type":"string","description":"Post caption or primary text"},"durationSec":{"type":"number","description":"Video length in seconds"},"hookSec":{"type":"number","description":"Seconds until the first value statement; estimated from the script when omitted"},"id":{"type":"string","description":"Your own label, echoed back in the result"}},"required":["platform","objective","product"]},"maxItems":10,"description":"Up to 10 creatives, scored in order"}},"required":["creatives"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"Items in results"},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Your id, echoed back"},"product":{"type":"string"},"platform":{"type":"string"},"objective":{"type":"string"},"overall":{"type":"number","description":"0-100 composite"},"scores":{"type":"object","properties":{"hook":{"type":"object","properties":{"score":{"type":"number","description":"0-100"},"reason":{"type":"string"}}},"clarity":{"type":"object","properties":{"score":{"type":"number","description":"0-100"},"reason":{"type":"string"}}},"cta":{"type":"object","properties":{"score":{"type":"number","description":"0-100"},"reason":{"type":"string"}}},"platformFit":{"type":"object","properties":{"score":{"type":"number","description":"0-100"},"reason":{"type":"string"}}},"pacing":{"type":"object","properties":{"score":{"type":"number","description":"0-100"},"reason":{"type":"string"}}},"credibility":{"type":"object","properties":{"score":{"type":"number","description":"0-100"},"reason":{"type":"string"}}}},"description":"Score and reason per dimension"},"fixes":{"type":"array","items":{"type":"object","properties":{"target":{"type":"string","description":"first-line, cta, caption, on-screen-text, script or duration"},"current":{"type":"string"},"suggested":{"type":"string","description":"Concrete replacement text or instruction"},"why":{"type":"string"}}},"description":"Rewrites to apply, most important first"},"predictedRisk":{"type":"string","description":"low, medium or high chance of underperforming"},"notes":{"type":"array","items":{"type":"string"}},"source":{"type":"string","description":"rules or rules+llm"},"model":{"type":"string"},"metrics":{"type":"object","properties":{"wordCount":{"type":"number"},"durationSec":{"type":["number","null"]},"wordsPerSecond":{"type":["number","null"]},"hookSec":{"type":["number","null"]},"hookEstimated":{"type":"boolean"},"captionChars":{"type":"number"},"hashtags":{"type":"number"},"ctaFound":{"type":"boolean"},"ctaPosition":{"type":["number","null"]},"ugcMarkers":{"type":"number"},"weakPhrases":{"type":"array","items":{"type":"string"}},"riskyClaims":{"type":"array","items":{"type":"string"}}}},"generatedAt":{"type":"string","description":"ISO 8601"}}},"description":"One entry per input, in input order"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/serp-ai-monitor":{"post":{"summary":"Google rank, AI Overview citation and AI-assistant mention for up to 10 keywords (1 AI engine)","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.70"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Your site, e.g. notion.com"},"keywords":{"type":"array","items":{"type":"string"},"description":"Keywords to check, capped by the tier"},"brand":{"type":"string","description":"Brand name to look for in AI answers"},"country":{"type":"string","description":"Two-letter country code, e.g. us"},"language":{"type":"string","description":"Two-letter language code, e.g. en"},"previousSnapshot":{"type":"object","description":"A previous response, to get rank changes"}},"required":["domain","keywords"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"brand":{"type":"string"},"country":{"type":"string"},"language":{"type":"string"},"generatedAt":{"type":"string","description":"ISO 8601"},"searchVisibility":{"type":"number","description":"0-100 average across keywords"},"aiVisibility":{"type":"number","description":"0-100 average across keywords"},"summary":{"type":"object","properties":{"keywordsChecked":{"type":"number"},"ranking":{"type":"number","description":"Keywords where the domain ranks in the top 100"},"top3":{"type":"number"},"top10":{"type":"number"},"aiOverviewsSeen":{"type":"number"},"aiOverviewCitations":{"type":"number"},"aiChecks":{"type":"number"},"aiMentions":{"type":"number"}}},"changes":{"type":"object","properties":{"improved":{"type":"array","items":{"type":"string"}},"declined":{"type":"array","items":{"type":"string"}},"newlyRanked":{"type":"array","items":{"type":"string"}},"lostRank":{"type":"array","items":{"type":"string"}},"newlyCited":{"type":"array","items":{"type":"string"}},"lostCitation":{"type":"array","items":{"type":"string"}}},"description":"Present when previousSnapshot was sent"},"keywords":{"type":"array","items":{"type":"object","properties":{"keyword":{"type":"string"},"rank":{"type":["number","null"],"description":"Google organic rank 1-100, null if not found"},"rankedUrl":{"type":["string","null"]},"topUrls":{"type":"array","items":{"type":"string"},"description":"Top 10 organic URLs"},"aiOverview":{"type":"object","properties":{"present":{"type":"boolean"},"cited":{"type":"boolean","description":"Your domain is cited"},"citedUrls":{"type":"array","items":{"type":"string"}}}},"aiEngines":{"type":"array","items":{"type":"object","properties":{"engine":{"type":"string","description":"openai, anthropic, google or perplexity"},"model":{"type":"string"},"mentioned":{"type":"boolean"},"rank":{"type":["number","null"],"description":"1-based rank among names in the answer"},"domainsMentioned":{"type":"array","items":{"type":"string"}},"cited":{"type":"boolean"},"snippet":{"type":"string"},"latencyMs":{"type":"number"},"error":{"type":"string"}}}},"searchVisibility":{"type":"number","description":"0-100"},"aiVisibility":{"type":"number","description":"0-100"},"diff":{"type":"object","description":"Change since the previous snapshot: previousRank, rankChange, rankDirection, aiOverviewCitation, aiEngines[]"},"latencyMs":{"type":"number"},"error":{"type":"string","description":"Set when the SERP lookup failed"}}},"description":"One entry per keyword"},"snapshot":{"type":"object","description":"Compact state; send it back as previousSnapshot next time to get changes"},"cost":{"type":"object","properties":{"serpCalls":{"type":"number"},"aiCalls":{"type":"number"},"estimatedUsd":{"type":"number"}}}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/serp-ai-monitor/deep":{"post":{"summary":"Google rank, AI Overview citation and AI-assistant mentions for up to 25 keywords on all AI engines","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"2.50"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Your site, e.g. notion.com"},"keywords":{"type":"array","items":{"type":"string"},"description":"Keywords to check, capped by the tier"},"brand":{"type":"string","description":"Brand name to look for in AI answers"},"country":{"type":"string","description":"Two-letter country code, e.g. us"},"language":{"type":"string","description":"Two-letter language code, e.g. en"},"previousSnapshot":{"type":"object","description":"A previous response, to get rank changes"}},"required":["domain","keywords"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"brand":{"type":"string"},"country":{"type":"string"},"language":{"type":"string"},"generatedAt":{"type":"string","description":"ISO 8601"},"searchVisibility":{"type":"number","description":"0-100 average across keywords"},"aiVisibility":{"type":"number","description":"0-100 average across keywords"},"summary":{"type":"object","properties":{"keywordsChecked":{"type":"number"},"ranking":{"type":"number","description":"Keywords where the domain ranks in the top 100"},"top3":{"type":"number"},"top10":{"type":"number"},"aiOverviewsSeen":{"type":"number"},"aiOverviewCitations":{"type":"number"},"aiChecks":{"type":"number"},"aiMentions":{"type":"number"}}},"changes":{"type":"object","properties":{"improved":{"type":"array","items":{"type":"string"}},"declined":{"type":"array","items":{"type":"string"}},"newlyRanked":{"type":"array","items":{"type":"string"}},"lostRank":{"type":"array","items":{"type":"string"}},"newlyCited":{"type":"array","items":{"type":"string"}},"lostCitation":{"type":"array","items":{"type":"string"}}},"description":"Present when previousSnapshot was sent"},"keywords":{"type":"array","items":{"type":"object","properties":{"keyword":{"type":"string"},"rank":{"type":["number","null"],"description":"Google organic rank 1-100, null if not found"},"rankedUrl":{"type":["string","null"]},"topUrls":{"type":"array","items":{"type":"string"},"description":"Top 10 organic URLs"},"aiOverview":{"type":"object","properties":{"present":{"type":"boolean"},"cited":{"type":"boolean","description":"Your domain is cited"},"citedUrls":{"type":"array","items":{"type":"string"}}}},"aiEngines":{"type":"array","items":{"type":"object","properties":{"engine":{"type":"string","description":"openai, anthropic, google or perplexity"},"model":{"type":"string"},"mentioned":{"type":"boolean"},"rank":{"type":["number","null"],"description":"1-based rank among names in the answer"},"domainsMentioned":{"type":"array","items":{"type":"string"}},"cited":{"type":"boolean"},"snippet":{"type":"string"},"latencyMs":{"type":"number"},"error":{"type":"string"}}}},"searchVisibility":{"type":"number","description":"0-100"},"aiVisibility":{"type":"number","description":"0-100"},"diff":{"type":"object","description":"Change since the previous snapshot: previousRank, rankChange, rankDirection, aiOverviewCitation, aiEngines[]"},"latencyMs":{"type":"number"},"error":{"type":"string","description":"Set when the SERP lookup failed"}}},"description":"One entry per keyword"},"snapshot":{"type":"object","description":"Compact state; send it back as previousSnapshot next time to get changes"},"cost":{"type":"object","properties":{"serpCalls":{"type":"number"},"aiCalls":{"type":"number"},"estimatedUsd":{"type":"number"}}}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/safe-read":{"post":{"summary":"Safe page reader: one URL (web page or PDF) to clean markdown with hidden text removed and a prompt-injection verdict, in one call","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.005"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Page or PDF to read, e.g. https://example.com/blog/post or https://example.com/report.pdf. Public http(s) URLs only; static HTML (no JavaScript rendering), PDFs up to 10 MB"},"format":{"type":"string","enum":["markdown","text"],"description":"markdown (default) keeps headings, links, lists, tables and code; text strips them"},"maxChars":{"type":"number","description":"Cap on content length, 1000-200000 (default 60000)"},"links":{"type":"boolean","description":"Return the links found in the content (default true)"},"images":{"type":"boolean","description":"Keep images as markdown (default true)"}},"required":["url"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"The URL you sent"},"finalUrl":{"type":"string","description":"Where the fetch ended after redirects"},"status":{"type":"number","description":"HTTP status the site answered"},"contentType":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"canonical":{"type":"string"},"lang":{"type":"string"},"siteName":{"type":"string"},"author":{"type":"string"},"publishedAt":{"type":"string"},"modifiedAt":{"type":"string"},"image":{"type":"string","description":"Lead image URL"},"type":{"type":"string","description":"og:type"},"generator":{"type":"string","description":"e.g. WordPress 6.5"},"region":{"type":"string","description":"Element the content came from: main, article, role-main, body or document"},"format":{"type":"string","description":"markdown or text"},"content":{"type":"string","description":"The page or PDF as clean markdown or text, with hidden elements, comments and invisible characters removed"},"wordCount":{"type":"number"},"truncated":{"type":"boolean","description":"True when maxChars cut the content"},"links":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"href":{"type":"string","description":"Absolute URL"}}},"description":"Links inside the content, deduplicated, up to 200"},"fetchedAt":{"type":"string","description":"ISO 8601"},"fetchMs":{"type":"number"},"pdf":{"type":"object","properties":{"pages":{"type":"number"},"scanned":{"type":"boolean","description":"True when no page had a text layer (scanned image; no OCR)"}},"description":"PDF only"},"safe":{"type":"boolean","description":"True when the injection verdict is clean"},"safety":{"type":"object","properties":{"verdict":{"type":"string","description":"clean, suspicious or likely_injection"},"score":{"type":"number","description":"0-100"},"findings":{"type":"array","items":{"type":"object","properties":{"rule":{"type":"string"},"severity":{"type":"string"},"message":{"type":"string"},"evidence":{"type":"string"},"location":{"type":"string","description":"visible or where the hidden text sat"}}},"description":"Most severe first, up to 20"},"hiddenRemoved":{"type":"object","properties":{"segments":{"type":"number"},"chars":{"type":"number"}},"description":"Hidden elements cut out before conversion"},"summary":{"type":"string"}}}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/read":{"post":{"summary":"Page reader: one URL to clean markdown (or text) with title, description, author, date and links","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.005"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Page or PDF to read, e.g. https://example.com/blog/post or https://example.com/report.pdf. Public http(s) URLs only; static HTML (no JavaScript rendering), PDFs up to 10 MB"},"format":{"type":"string","enum":["markdown","text"],"description":"markdown (default) keeps headings, links, lists, tables and code; text strips them"},"maxChars":{"type":"number","description":"Cap on content length, 1000-200000 (default 60000)"},"links":{"type":"boolean","description":"Return the links found in the content (default true)"},"images":{"type":"boolean","description":"Keep images as markdown (default true)"}},"required":["url"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"The URL you sent"},"finalUrl":{"type":"string","description":"Where the fetch ended after redirects"},"status":{"type":"number","description":"HTTP status the site answered"},"contentType":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"canonical":{"type":"string"},"lang":{"type":"string"},"siteName":{"type":"string"},"author":{"type":"string"},"publishedAt":{"type":"string"},"modifiedAt":{"type":"string"},"image":{"type":"string","description":"Lead image URL"},"type":{"type":"string","description":"og:type"},"generator":{"type":"string","description":"e.g. WordPress 6.5"},"region":{"type":"string","description":"Element the content came from: main, article, role-main, body or document"},"format":{"type":"string","description":"markdown or text"},"content":{"type":"string","description":"The page as clean markdown or plain text"},"wordCount":{"type":"number"},"truncated":{"type":"boolean","description":"True when maxChars cut the content"},"links":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"href":{"type":"string","description":"Absolute URL"}}},"description":"Links inside the content, deduplicated, up to 200"},"fetchedAt":{"type":"string","description":"ISO 8601"},"fetchMs":{"type":"number"},"pdf":{"type":"object","properties":{"pages":{"type":"number"},"scanned":{"type":"boolean","description":"True when no page had a text layer (scanned image; no OCR)"}},"description":"PDF only"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/read/batch":{"post":{"summary":"Page reader for up to 10 URLs in one call","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.03"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string","format":"uri"},"description":"Pages to read","maxItems":10},"format":{"type":"string","enum":["markdown","text"],"description":"markdown (default) keeps headings, links, lists, tables and code; text strips them. Applies to every page"},"maxChars":{"type":"number","description":"Cap on content length per page, 1000-200000 (default 20000)"},"links":{"type":"boolean","description":"Return the links found in each page's content (default true)"},"images":{"type":"boolean","description":"Keep images as markdown in each page (default true)"}},"required":["urls"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"Items in results"},"failed":{"type":"number","description":"Pages that failed (reported inline with url and error)"},"results":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"The URL you sent"},"finalUrl":{"type":"string","description":"Where the fetch ended after redirects"},"status":{"type":"number","description":"HTTP status the site answered"},"contentType":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"canonical":{"type":"string"},"lang":{"type":"string"},"siteName":{"type":"string"},"author":{"type":"string"},"publishedAt":{"type":"string"},"modifiedAt":{"type":"string"},"image":{"type":"string","description":"Lead image URL"},"type":{"type":"string","description":"og:type"},"generator":{"type":"string","description":"e.g. WordPress 6.5"},"region":{"type":"string","description":"Element the content came from: main, article, role-main, body or document"},"format":{"type":"string","description":"markdown or text"},"content":{"type":"string","description":"The page as clean markdown or plain text"},"wordCount":{"type":"number"},"truncated":{"type":"boolean","description":"True when maxChars cut the content"},"links":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"href":{"type":"string","description":"Absolute URL"}}},"description":"Links inside the content, deduplicated, up to 200"},"fetchedAt":{"type":"string","description":"ISO 8601"},"fetchMs":{"type":"number"},"pdf":{"type":"object","properties":{"pages":{"type":"number"},"scanned":{"type":"boolean","description":"True when no page had a text layer (scanned image; no OCR)"}},"description":"PDF only"},"error":{"type":"string","description":"Set instead of content when this page failed"}}},"description":"One entry per input, in input order"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/domain":{"post":{"summary":"Domain intel: DNS, MX, SPF/DMARC/DKIM grade, registrar and dates (RDAP), hosting, tech stack, risk flags","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.005"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain to inspect, e.g. stripe.com (a URL or email address is accepted and reduced to its domain)"},"web":{"type":"boolean","description":"Probe the website for status, server, HSTS, title and tech stack (default true)"},"registration":{"type":"boolean","description":"Look up registrar and dates via RDAP (default true; some ccTLDs such as .np have no RDAP)"}},"required":["domain"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"fetchedAt":{"type":"string","description":"ISO 8601"},"dns":{"type":"object","properties":{"a":{"type":"array","items":{"type":"string"}},"aaaa":{"type":"array","items":{"type":"string"}},"cname":{"type":"string"},"mx":{"type":"array","items":{"type":"object","properties":{"priority":{"type":"number"},"exchange":{"type":"string"}}}},"ns":{"type":"array","items":{"type":"string"}},"txt":{"type":"array","items":{"type":"string"}},"caa":{"type":"array","items":{"type":"string"}},"www":{"type":"string","description":"www CNAME or A target"}}},"email":{"type":"object","properties":{"canReceive":{"type":"boolean","description":"Has MX, or an A record as fallback"},"provider":{"type":"string","description":"e.g. Google Workspace, Microsoft 365"},"spf":{"type":"object","properties":{"present":{"type":"boolean"},"record":{"type":"string"},"allMechanism":{"type":"string","description":"fail, softfail, neutral, pass or none"},"includes":{"type":"array","items":{"type":"string"}},"multiple":{"type":"boolean"}}},"dmarc":{"type":"object","properties":{"present":{"type":"boolean"},"record":{"type":"string"},"policy":{"type":"string","description":"none, quarantine or reject"},"subdomainPolicy":{"type":"string"},"percent":{"type":"number"},"rua":{"type":"array","items":{"type":"string"}}}},"dkim":{"type":"object","properties":{"checkedSelectors":{"type":"number"},"found":{"type":"array","items":{"type":"string"},"description":"Selectors with a DKIM key"}}},"mtaSts":{"type":"boolean"},"bimi":{"type":"boolean"},"grade":{"type":"string","description":"Email security grade: A, B, C, D, F or none"}}},"registration":{"type":["object","null"],"properties":{"source":{"type":"string","description":"rdap"},"registrar":{"type":"string"},"registrarIanaId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"expiresAt":{"type":"string"},"ageDays":{"type":"number"},"expiresInDays":{"type":"number"},"status":{"type":"array","items":{"type":"string"}},"nameservers":{"type":"array","items":{"type":"string"}},"dnssec":{"type":"boolean"},"registrant":{"type":"object","properties":{"organization":{"type":"string"},"country":{"type":"string"}}}},"description":"From RDAP; null when the registry has none (registrationNote says why)"},"registrationNote":{"type":"string"},"web":{"type":"object","properties":{"probed":{"type":"boolean"},"reachable":{"type":"boolean"},"finalUrl":{"type":"string"},"status":{"type":"number"},"server":{"type":"string"},"poweredBy":{"type":"string"},"hsts":{"type":"boolean"},"securityHeaders":{"type":"array","items":{"type":"string"}},"title":{"type":"string"},"description":{"type":"string"},"generator":{"type":"string"},"tech":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"category":{"type":"string"}}}},"redirectsOffDomain":{"type":"boolean"}}},"hosting":{"type":"object","properties":{"dnsProvider":{"type":"string"},"mailProvider":{"type":"string"},"cdn":{"type":"string"},"parked":{"type":"boolean"}}},"flags":{"type":"array","items":{"type":"string"},"description":"Machine-friendly risk notes, e.g. registered-recently, no-dmarc, parked, website-unreachable"},"summary":{"type":"string","description":"One-line human summary"},"cached":{"type":"boolean","description":"Present and true when the answer came from Exepal's cache"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/south-asia/date":{"post":{"summary":"Bikram Sambat (Nepali) <-> Gregorian date conversion with weekday, Nepali month names, Devanagari digits and Nepal fiscal year","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.001"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","description":"A date: 2083-01-15, 15-01-2083, '15 Baisakh 2083' or '१५ बैशाख २०८३'. Supported 1970-2090 BS / 1913-2034 AD"},"from":{"type":"string","enum":["bs","ad","auto"],"description":"Calendar of the input. auto (default): Devanagari digits, Nepali month names or a year above 2034 mean BS; otherwise AD is assumed"}},"required":["date"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string"},"from":{"type":"string","description":"Calendar the input was read as: bs or ad"},"assumed":{"type":"boolean","description":"True when the year fit both calendars and AD was assumed; send from to be explicit"},"bs":{"type":"object","properties":{"year":{"type":"number"},"month":{"type":"number"},"day":{"type":"number"},"iso":{"type":"string","description":"YYYY-MM-DD in Bikram Sambat"},"monthName":{"type":"string"},"monthNameNe":{"type":"string"},"ne":{"type":"string","description":"Date in Devanagari digits"},"text":{"type":"string","description":"e.g. 15 Baisakh 2083"},"textNe":{"type":"string"},"daysInMonth":{"type":"number"},"dayOfYear":{"type":"number"},"daysInYear":{"type":"number"}}},"ad":{"type":"object","properties":{"year":{"type":"number"},"month":{"type":"number"},"day":{"type":"number"},"iso":{"type":"string","description":"YYYY-MM-DD Gregorian"}}},"weekday":{"type":"string"},"weekdayNe":{"type":"string"},"fiscalYear":{"type":"string","description":"Nepal fiscal year, e.g. 2082/83"},"isSaturday":{"type":"boolean","description":"Saturday is Nepal's weekly public holiday"},"supportedRange":{"type":"object","properties":{"bs":{"type":"string"},"ad":{"type":"string"}}}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/south-asia/number":{"post":{"summary":"Number to Devanagari digits, lakh/crore grouping, and words in English (Indian system) and Nepali; NPR/INR amount wording","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.001"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":["string","number"],"description":"Number or numeric string; Devanagari digits, commas and currency signs are accepted"},"currency":{"type":"string","enum":["NPR","INR"],"description":"Add rupee/paisa wording and formatting"}},"required":["value"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string"},"value":{"type":"number"},"integer":{"type":"string"},"devanagari":{"type":"string","description":"e.g. १२३४५६७.५"},"grouped":{"type":"string","description":"Lakh/crore grouping, e.g. 12,34,567.50"},"groupedDevanagari":{"type":"string"},"units":{"type":"object","properties":{"kharab":{"type":"number"},"arab":{"type":"number"},"crore":{"type":"number"},"lakh":{"type":"number"},"thousand":{"type":"number"},"rest":{"type":"number"}}},"wordsEnglish":{"type":"string","description":"Indian numbering system"},"wordsNepali":{"type":"string"},"currency":{"type":"object","properties":{"code":{"type":"string"},"symbol":{"type":"string"},"formatted":{"type":"string"},"formattedDevanagari":{"type":"string"},"wordsEnglish":{"type":"string"},"wordsNepali":{"type":"string"}},"description":"Present when currency was sent"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/south-asia/phone":{"post":{"summary":"Nepal (+977) and India (+91) phone number check: valid, mobile/landline, operator or region, E.164","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.001"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number in any common format, e.g. +977 984-123-4567, 9841234567, 01-4123456, +91 98765 43210"},"country":{"type":"string","enum":["NP","IN"],"description":"Default: detected from the country code, else NP"}},"required":["phone"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string"},"country":{"type":"string","description":"NP or IN"},"valid":{"type":"boolean"},"type":{"type":"string","description":"mobile, landline, tollfree or unknown"},"operator":{"type":"string","description":"Mobile operator, e.g. Nepal Telecom (NTC), Ncell"},"technology":{"type":"string"},"region":{"type":"string","description":"Area or circle"},"e164":{"type":"string","description":"e.g. +9779841234567"},"national":{"type":"string"},"international":{"type":"string"},"reason":{"type":"string","description":"Why it is invalid"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/south-asia/id":{"post":{"summary":"GSTIN (checksum + state), Indian PAN, Aadhaar (Verhoeff), IFSC (bank) and Nepal PAN/VAT format checks","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.001"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"GSTIN (15), Indian PAN (10), Aadhaar (12 digits), IFSC (11) or Nepal PAN/VAT (9 digits)"},"type":{"type":"string","enum":["gstin","pan-in","aadhaar","ifsc","pan-np"],"description":"Force a type; default auto-detect by shape"}},"required":["id"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string"},"normalized":{"type":"string"},"type":{"type":"string","description":"gstin, pan-in, aadhaar, ifsc, pan-np or unknown"},"valid":{"type":"boolean","description":"Format and checksum pass (no registry lookup)"},"reason":{"type":"string","description":"Why it is invalid"},"details":{"type":"object","description":"Type-specific: GSTIN state, embedded PAN and checksum; PAN holder type; IFSC bank; Aadhaar masked form"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/south-asia/forex":{"post":{"summary":"Official Nepal Rastra Bank exchange rates (NPR buy/sell per currency) for any day since 2000, AD or BS date, with amount conversion and up to 31-day series","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.001"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","description":"Day to quote, AD (2026-10-31) or BS (2083-07-14); default today in Nepal. Holidays fall back to the last published table"},"currency":{"type":"string","description":"ISO 4217 code to return alone, e.g. USD, INR, EUR, AED. Omit for the full table"},"amount":{"type":"number","description":"With currency: amount to convert to NPR (also returns the reverse)"},"from":{"type":"string","description":"Start date for a series (max 31 days before date); requires currency"}}}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","description":"Nepal Rastra Bank"},"requestedDate":{"type":"string","description":"AD, YYYY-MM-DD"},"requestedDateBs":{"type":"string"},"rateDate":{"type":"string","description":"Date of the table used"},"rateDateBs":{"type":"string"},"fallback":{"type":"boolean","description":"True when NRB published nothing that day and the previous table was used"},"publishedOn":{"type":"string"},"rate":{"type":"object","properties":{"iso3":{"type":"string"},"name":{"type":"string"},"unit":{"type":"number","description":"NRB quotes some currencies per 10 or 100 units"},"buy":{"type":"number","description":"NPR per unit"},"sell":{"type":"number","description":"NPR per unit"},"buyPerUnit":{"type":"number","description":"NPR for 1 unit of the currency"},"sellPerUnit":{"type":"number"},"mid":{"type":"number"}},"description":"Present when currency was sent"},"conversion":{"type":"object","properties":{"amount":{"type":"number"},"currency":{"type":"string"},"nprAtBuy":{"type":"number"},"nprAtSell":{"type":"number"},"nprAtMid":{"type":"number"},"fromNpr":{"type":"object","properties":{"npr":{"type":"number"},"atBuy":{"type":"number"},"atSell":{"type":"number"}}}},"description":"Present when amount was sent"},"rates":{"type":"array","items":{"type":"object","properties":{"iso3":{"type":"string"},"name":{"type":"string"},"unit":{"type":"number","description":"NRB quotes some currencies per 10 or 100 units"},"buy":{"type":"number","description":"NPR per unit"},"sell":{"type":"number","description":"NPR per unit"},"buyPerUnit":{"type":"number","description":"NPR for 1 unit of the currency"},"sellPerUnit":{"type":"number"},"mid":{"type":"number"}}},"description":"Whole table, when no currency was sent"},"series":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"buy":{"type":"number"},"sell":{"type":"number"},"mid":{"type":"number"}}},"description":"Present when from was sent"},"note":{"type":"string"},"cached":{"type":"boolean","description":"Present and true when the answer came from Exepal's cache"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/email":{"post":{"summary":"Email address check without sending mail: syntax, MX/null-MX, disposable (214k-domain list), role account, free provider, typo suggestion, SPF/DMARC grade, deliverability score","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.002"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"The address to check"}},"required":["email"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string"},"email":{"type":"string"},"normalized":{"type":"string","description":"Lowercased, Gmail dots and +tags removed, for deduplication"},"valid":{"type":"boolean","description":"Syntax is right and the domain accepts mail"},"deliverable":{"type":"string","description":"Verdict: likely, risky, undeliverable or unknown"},"score":{"type":"number","description":"0-100; 70 and above is likely"},"local":{"type":"string"},"domain":{"type":"string"},"syntax":{"type":"object","properties":{"valid":{"type":"boolean"},"reason":{"type":"string"}}},"mx":{"type":"object","properties":{"present":{"type":"boolean"},"nullMx":{"type":"boolean"},"exchanges":{"type":"array","items":{"type":"string"}},"fallbackToA":{"type":"boolean"}}},"disposable":{"type":"boolean"},"role":{"type":"boolean","description":"Role account such as info@ or noreply@"},"freeProvider":{"type":"boolean"},"provider":{"type":"string","description":"Mail provider behind the MX"},"suggestion":{"type":"string","description":"Likely intended address when the domain looks like a typo"},"domainSecurity":{"type":"object","properties":{"grade":{"type":"string","description":"A-F or none"},"spf":{"type":"boolean"},"dmarc":{"type":"boolean"},"dmarcPolicy":{"type":"string"}}},"flags":{"type":"array","items":{"type":"string"},"description":"e.g. disposable, role-account, possible-typo, no-mx"},"checks":{"type":"object","properties":{"syntax":{"type":"boolean"},"dns":{"type":"boolean"},"disposableList":{"type":"boolean"},"smtp":{"type":"boolean","description":"Always false: no mail is sent"}}},"note":{"type":"string"},"error":{"type":"string","description":"Batch only: set when this address could not be checked"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/email/batch":{"post":{"summary":"Email check for up to 10 addresses in one call","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.015"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"emails":{"type":"array","items":{"type":"string"},"description":"Up to 10 addresses","maxItems":10}},"required":["emails"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"Items in results"},"summary":{"type":"object","properties":{"likely":{"type":"number"},"risky":{"type":"number"},"undeliverable":{"type":"number"},"unknown":{"type":"number"}},"description":"Count per verdict"},"results":{"type":"array","items":{"type":"object","properties":{"input":{"type":"string"},"email":{"type":"string"},"normalized":{"type":"string","description":"Lowercased, Gmail dots and +tags removed, for deduplication"},"valid":{"type":"boolean","description":"Syntax is right and the domain accepts mail"},"deliverable":{"type":"string","description":"Verdict: likely, risky, undeliverable or unknown"},"score":{"type":"number","description":"0-100; 70 and above is likely"},"local":{"type":"string"},"domain":{"type":"string"},"syntax":{"type":"object","properties":{"valid":{"type":"boolean"},"reason":{"type":"string"}}},"mx":{"type":"object","properties":{"present":{"type":"boolean"},"nullMx":{"type":"boolean"},"exchanges":{"type":"array","items":{"type":"string"}},"fallbackToA":{"type":"boolean"}}},"disposable":{"type":"boolean"},"role":{"type":"boolean","description":"Role account such as info@ or noreply@"},"freeProvider":{"type":"boolean"},"provider":{"type":"string","description":"Mail provider behind the MX"},"suggestion":{"type":"string","description":"Likely intended address when the domain looks like a typo"},"domainSecurity":{"type":"object","properties":{"grade":{"type":"string","description":"A-F or none"},"spf":{"type":"boolean"},"dmarc":{"type":"boolean"},"dmarcPolicy":{"type":"string"}}},"flags":{"type":"array","items":{"type":"string"},"description":"e.g. disposable, role-account, possible-typo, no-mx"},"checks":{"type":"object","properties":{"syntax":{"type":"boolean"},"dns":{"type":"boolean"},"disposableList":{"type":"boolean"},"smtp":{"type":"boolean","description":"Always false: no mail is sent"}}},"note":{"type":"string"},"error":{"type":"string","description":"Batch only: set when this address could not be checked"}}},"description":"One entry per input, in input order"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/guard":{"post":{"summary":"Agent guard: one check for prompt injection, leaked secrets and personal data in any text or HTML, with an allow/review/block decision and a copy safe to pass on","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.001"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"The content to check: a tool result, email, document, message or upload (up to 500,000 characters)"},"html":{"type":"string","description":"Raw HTML to check instead of text; hidden elements are inspected and removed from safeText"},"redact":{"type":"boolean","description":"Return safeText with hidden text, secrets and personal data removed (default true)"},"piiTypes":{"type":"array","items":{"type":"string"},"description":"Personal data types to check (default all: email, phone, credit-card, iban, aadhaar, india-pan, us-ssn, uk-nino, nepal-citizenship, passport, date-of-birth, ip-address, crypto-address). Pass [] to skip the personal data check"}}}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"type":"string","description":"allow, review or block"},"reasons":{"type":"array","items":{"type":"string"},"description":"Why, most serious first; empty when allowed"},"injection":{"type":"object","properties":{"verdict":{"type":"string","description":"clean, suspicious or likely_injection"},"score":{"type":"number","description":"0-100"},"findings":{"type":"array","items":{"type":"object","properties":{"rule":{"type":"string","description":"Stable rule id, e.g. ignore-previous, hide-from-user, unicode-tag-smuggling"},"severity":{"type":"string","description":"low, medium or high"},"message":{"type":"string"},"evidence":{"type":"string","description":"Up to 240 characters of the offending text"},"location":{"type":"string","description":"visible, or where the hidden text sat: css-hidden, hidden-attribute, white-text, html-comment, meta-tag, alt-text, noscript, unicode-tags, zero-width, bidi-override"},"offset":{"type":"number","description":"Character offset in the source"}}},"description":"Most severe first, up to 10"},"hiddenSegments":{"type":"number"}}},"secrets":{"type":"object","properties":{"count":{"type":"number"},"severity":{"type":"string","description":"high, medium, low or none"},"types":{"type":"array","items":{"type":"string"}}}},"pii":{"type":"object","properties":{"count":{"type":"number"},"severity":{"type":"string","description":"high, medium, low or none"},"types":{"type":"array","items":{"type":"string"}}}},"safeText":{"type":"string","description":"The content with hidden text, secrets and personal data removed; absent with redact: false"},"stats":{"type":"object","properties":{"chars":{"type":"number"}}},"summary":{"type":"string"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/scan/injection":{"post":{"summary":"Prompt-injection scanner: checks a web page, document or tool result for hidden instructions aimed at AI agents (hidden HTML, white text, comments, Unicode smuggling, base64) and injection phrases; verdict, 0-100 score, findings, optional cleaned text","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.002"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Public page to fetch and scan (HTML is inspected for hidden elements, comments and meta tags)"},"html":{"type":"string","description":"Raw HTML to scan instead of a url"},"text":{"type":"string","description":"Plain text or markdown to scan instead of a url (a document, email, tool result)"},"clean":{"type":"boolean","description":"Also return `clean`: the visible text with hidden and invisible content removed (default false)"}}}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Present when a url was fetched"},"finalUrl":{"type":"string"},"status":{"type":"number"},"verdict":{"type":"string","description":"clean, suspicious or likely_injection"},"score":{"type":"number","description":"0-100"},"findings":{"type":"array","items":{"type":"object","properties":{"rule":{"type":"string","description":"Stable rule id, e.g. ignore-previous, hide-from-user, unicode-tag-smuggling"},"severity":{"type":"string","description":"low, medium or high"},"message":{"type":"string"},"evidence":{"type":"string","description":"Up to 240 characters of the offending text"},"location":{"type":"string","description":"visible, or where the hidden text sat: css-hidden, hidden-attribute, white-text, html-comment, meta-tag, alt-text, noscript, unicode-tags, zero-width, bidi-override"},"offset":{"type":"number","description":"Character offset in the source"}}},"description":"Most severe first, up to 50"},"hidden":{"type":"object","properties":{"segments":{"type":"number"},"chars":{"type":"number"},"kinds":{"type":"object","description":"Count per hidden kind"}}},"stats":{"type":"object","properties":{"chars":{"type":"number"},"visibleChars":{"type":"number"},"rules":{"type":"number"}}},"clean":{"type":"string","description":"Visible text with hidden content and invisible characters removed; only with clean: true"},"summary":{"type":"string"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/scan/secrets":{"post":{"summary":"Secrets leak detector: finds API keys, tokens, private keys, seed phrases, JWTs and connection strings (AWS, GitHub, OpenAI, Anthropic, Stripe, Slack, Google and 30+ more) in text or a URL; masked findings with line numbers, optional redacted copy","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.002"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Text to scan: a config, log, diff, prompt, document or tool output (up to 2,000,000 characters)"},"url":{"type":"string","format":"uri","description":"Public URL to fetch and scan instead of text"},"redact":{"type":"boolean","description":"Also return `redacted`: the text with every secret replaced by [REDACTED:type] (default false)"}}}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Present when a url was fetched"},"finalUrl":{"type":"string"},"status":{"type":"number"},"found":{"type":"boolean"},"count":{"type":"number"},"severity":{"type":"string","description":"high, medium, low or none"},"findings":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"e.g. aws-access-key-id, github-token, openai-api-key, private-key, bip39-seed-phrase, database-url, generic-api-key"},"provider":{"type":"string"},"severity":{"type":"string","description":"low, medium or high"},"confidence":{"type":"string","description":"high, medium or low"},"masked":{"type":"string","description":"First and last characters kept, the middle masked"},"line":{"type":"number"},"column":{"type":"number"},"length":{"type":"number"}}},"description":"In document order, up to 100"},"byProvider":{"type":"object","description":"Count per provider"},"stats":{"type":"object","properties":{"chars":{"type":"number"},"lines":{"type":"number"},"patterns":{"type":"number"}}},"redacted":{"type":"string","description":"The input with every secret replaced by [REDACTED:type]; only with redact: true"},"summary":{"type":"string"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/scan/pii":{"post":{"summary":"PII detector and redactor: finds emails, phone numbers, payment cards (Luhn), IBANs, Aadhaar (Verhoeff), Indian PAN, US SSN, UK NI numbers, Nepal citizenship numbers, passports, dates of birth, IP and wallet addresses in text or a URL; masked findings with positions, optional redacted copy with stable placeholders","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.002"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Text to scan: a transcript, document, form, log, CSV or tool output (up to 2,000,000 characters)"},"url":{"type":"string","format":"uri","description":"Public URL to fetch and scan instead of text"},"redact":{"type":"boolean","description":"Also return `redacted`: the text with every value replaced by its placeholder, e.g. [EMAIL_1], [CARD_1], [PHONE_2] (default false)"},"types":{"type":"array","items":{"type":"string"},"description":"Only report these types: email, phone, credit-card, iban, aadhaar, india-pan, us-ssn, uk-nino, nepal-citizenship, passport, date-of-birth, ip-address, crypto-address (default all)"}}}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Present when a url was fetched"},"finalUrl":{"type":"string"},"status":{"type":"number"},"found":{"type":"boolean"},"count":{"type":"number"},"severity":{"type":"string","description":"high, medium, low or none"},"findings":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"email, phone, credit-card, iban, aadhaar, india-pan, us-ssn, uk-nino, nepal-citizenship, passport, date-of-birth, ip-address or crypto-address"},"category":{"type":"string","description":"contact, financial, government-id, personal or network"},"severity":{"type":"string","description":"low, medium or high"},"confidence":{"type":"string","description":"high, medium or low"},"masked":{"type":"string"},"placeholder":{"type":"string","description":"Stable per distinct value, e.g. [EMAIL_1]"},"line":{"type":"number"},"column":{"type":"number"},"length":{"type":"number"},"detail":{"type":"string","description":"Card brand, IBAN country, phone country, private/public IP, evm/bitcoin"}}},"description":"In document order, up to 200"},"byType":{"type":"object","properties":{},"description":"Counts per type"},"byCategory":{"type":"object","properties":{},"description":"Counts per category"},"stats":{"type":"object","properties":{"chars":{"type":"number"},"lines":{"type":"number"},"patterns":{"type":"number"},"distinctValues":{"type":"number"}}},"redacted":{"type":"string","description":"Present when redact was true; first 200,000 characters"},"summary":{"type":"string"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/scan/mcp":{"post":{"summary":"MCP server audit: connects to a remote MCP server (or takes its tools, resources and prompts), grades it A-F for tool poisoning, hidden Unicode, raw command/path inputs, destructive tools without annotations, name shadowing, resources pointing at credentials, poisoned prompts and insecure transport","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.005"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Remote MCP server URL (Streamable HTTP), e.g. https://example.com/mcp"},"tools":{"type":"array","items":{"type":"object"},"description":"Instead of url: the server's tools as returned by tools/list (for stdio servers or servers behind auth)"},"resources":{"type":"array","items":{"type":"object"},"description":"With tools[]: the server's resources from resources/list and resources/templates/list"},"prompts":{"type":"array","items":{"type":"object"},"description":"With tools[]: the server's prompts from prompts/list"},"instructions":{"type":"string","description":"With tools[]: the server's instructions string from initialize"},"headers":{"type":"object","description":"With url: headers to send, e.g. {\"Authorization\": \"Bearer ...\"}. Used for the audit only, never stored"}}}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"server":{"type":"object","properties":{"url":{"type":"string"},"name":{"type":"string"},"version":{"type":"string"},"protocolVersion":{"type":"string"},"transport":{"type":"string","description":"streamable-http or provided"},"https":{"type":"boolean"},"auth":{"type":"string","description":"none (tools listed without credentials), required or unknown"},"capabilities":{"type":"object","properties":{"tools":{"type":"boolean"},"resources":{"type":"boolean"},"prompts":{"type":"boolean"}}}}},"toolCount":{"type":"number"},"resourceCount":{"type":"number"},"promptCount":{"type":"number"},"grade":{"type":"string","description":"A, B, C, D or F"},"score":{"type":"number","description":"0-100, higher is safer"},"verdict":{"type":"string"},"findings":{"type":"array","items":{"type":"object","properties":{"rule":{"type":"string"},"severity":{"type":"string","description":"low, medium or high"},"message":{"type":"string"},"tool":{"type":"string"},"resource":{"type":"string"},"prompt":{"type":"string"},"evidence":{"type":"string"}}},"description":"Most severe first, up to 100"},"tools":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"risk":{"type":"string","description":"low, medium or high"},"findings":{"type":"number"},"readOnly":{"type":"boolean"},"destructive":{"type":"boolean"}}}},"resources":{"type":"array","items":{"type":"object","properties":{"uri":{"type":"string"},"name":{"type":"string"},"risk":{"type":"string","description":"low, medium or high"},"findings":{"type":"number"}}},"description":"Up to 200"},"prompts":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"risk":{"type":"string","description":"low, medium or high"},"findings":{"type":"number"}}},"description":"Up to 200"},"fetchedAt":{"type":"string"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/social/instagram":{"post":{"summary":"Instagram profile lookup: followers, bio, category, verified, engagement rate, avg likes/comments/views, posting cadence, recent posts, follower history and 30-day growth where tracked","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.01"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"handle":{"type":"string","description":"Handle (with or without @) or profile URL, e.g. virat.kohli, https://www.tiktok.com/@khaby.lame, @MrBeast or a YouTube channel id (UC...)"},"maxAgeHours":{"type":"number","description":"Oldest data you accept, 1-720 hours (default 72). Fresher than that is fetched live"}},"required":["handle"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","description":"instagram, tiktok or youtube"},"handle":{"type":"string"},"url":{"type":"string"},"name":{"type":["string","null"]},"bio":{"type":["string","null"]},"verified":{"type":["boolean","null"]},"business":{"type":["boolean","null"]},"category":{"type":["string","null"]},"externalUrl":{"type":["string","null"],"description":"Link in bio"},"followers":{"type":["number","null"],"description":"Followers or subscribers"},"following":{"type":["number","null"],"description":"null on YouTube"},"posts":{"type":["number","null"],"description":"Total posts or videos"},"metrics":{"type":"object","properties":{"postsAnalysed":{"type":"number"},"avgLikes":{"type":["number","null"]},"avgComments":{"type":["number","null"]},"avgViews":{"type":["number","null"]},"engagementRate":{"type":["number","null"],"description":"(avg likes + avg comments) / followers, 0.025 = 2.5%"},"viewRate":{"type":["number","null"],"description":"avg views / followers"},"postsPerWeek":{"type":["number","null"]},"lastPostAt":{"type":["string","null"]},"daysSinceLastPost":{"type":["number","null"]},"tier":{"type":"string","description":"nano <10k, micro <50k, mid <500k, macro <1M, mega"}},"description":"Computed from recent posts"},"recentPosts":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"type":{"type":"string"},"caption":{"type":"string"},"date":{"type":"string","description":"ISO 8601"},"likes":{"type":["number","null"]},"comments":{"type":["number","null"]},"views":{"type":["number","null"]}}},"description":"Empty when served from the creator index"},"history":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"followers":{"type":["number","null"]},"engagementRate":{"type":["number","null"]}}},"description":"Instagram only: past snapshots, oldest first"},"growth30d":{"type":["object","null"],"properties":{"since":{"type":"string"},"days":{"type":"number"},"followersChange":{"type":"number"},"followersChangePct":{"type":"number"}},"description":"Instagram only: follower change over about 30 days; null without history"},"source":{"type":"string","description":"index, cache or live"},"fetchedAt":{"type":"string","description":"When the data was captured, ISO 8601"},"maxAgeHours":{"type":"number"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/social/tiktok":{"post":{"summary":"TikTok profile lookup: followers, likes, bio, verified, engagement rate, avg views, posting cadence and recent videos","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.02"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"handle":{"type":"string","description":"Handle (with or without @) or profile URL, e.g. virat.kohli, https://www.tiktok.com/@khaby.lame, @MrBeast or a YouTube channel id (UC...)"},"maxAgeHours":{"type":"number","description":"Oldest data you accept, 1-720 hours (default 72). Fresher than that is fetched live"}},"required":["handle"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","description":"instagram, tiktok or youtube"},"handle":{"type":"string"},"url":{"type":"string"},"name":{"type":["string","null"]},"bio":{"type":["string","null"]},"verified":{"type":["boolean","null"]},"business":{"type":["boolean","null"]},"category":{"type":["string","null"]},"externalUrl":{"type":["string","null"],"description":"Link in bio"},"followers":{"type":["number","null"],"description":"Followers or subscribers"},"following":{"type":["number","null"],"description":"null on YouTube"},"posts":{"type":["number","null"],"description":"Total posts or videos"},"metrics":{"type":"object","properties":{"postsAnalysed":{"type":"number"},"avgLikes":{"type":["number","null"]},"avgComments":{"type":["number","null"]},"avgViews":{"type":["number","null"]},"engagementRate":{"type":["number","null"],"description":"(avg likes + avg comments) / followers, 0.025 = 2.5%"},"viewRate":{"type":["number","null"],"description":"avg views / followers"},"postsPerWeek":{"type":["number","null"]},"lastPostAt":{"type":["string","null"]},"daysSinceLastPost":{"type":["number","null"]},"tier":{"type":"string","description":"nano <10k, micro <50k, mid <500k, macro <1M, mega"}},"description":"Computed from recent posts"},"recentPosts":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"type":{"type":"string"},"caption":{"type":"string"},"date":{"type":"string","description":"ISO 8601"},"likes":{"type":["number","null"]},"comments":{"type":["number","null"]},"views":{"type":["number","null"]}}},"description":"Empty when served from the creator index"},"history":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"followers":{"type":["number","null"]},"engagementRate":{"type":["number","null"]}}},"description":"Instagram only: past snapshots, oldest first"},"growth30d":{"type":["object","null"],"properties":{"since":{"type":"string"},"days":{"type":"number"},"followersChange":{"type":"number"},"followersChangePct":{"type":"number"}},"description":"Instagram only: follower change over about 30 days; null without history"},"source":{"type":"string","description":"index, cache or live"},"fetchedAt":{"type":"string","description":"When the data was captured, ISO 8601"},"maxAgeHours":{"type":"number"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/social/youtube":{"post":{"summary":"YouTube channel lookup: subscribers, video count, description, verified, avg views/likes/comments, view rate, upload cadence and recent videos","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.02"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"handle":{"type":"string","description":"Handle (with or without @) or profile URL, e.g. virat.kohli, https://www.tiktok.com/@khaby.lame, @MrBeast or a YouTube channel id (UC...)"},"maxAgeHours":{"type":"number","description":"Oldest data you accept, 1-720 hours (default 72). Fresher than that is fetched live"}},"required":["handle"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","description":"instagram, tiktok or youtube"},"handle":{"type":"string"},"url":{"type":"string"},"name":{"type":["string","null"]},"bio":{"type":["string","null"]},"verified":{"type":["boolean","null"]},"business":{"type":["boolean","null"]},"category":{"type":["string","null"]},"externalUrl":{"type":["string","null"],"description":"Link in bio"},"followers":{"type":["number","null"],"description":"Followers or subscribers"},"following":{"type":["number","null"],"description":"null on YouTube"},"posts":{"type":["number","null"],"description":"Total posts or videos"},"metrics":{"type":"object","properties":{"postsAnalysed":{"type":"number"},"avgLikes":{"type":["number","null"]},"avgComments":{"type":["number","null"]},"avgViews":{"type":["number","null"]},"engagementRate":{"type":["number","null"],"description":"(avg likes + avg comments) / followers, 0.025 = 2.5%"},"viewRate":{"type":["number","null"],"description":"avg views / followers"},"postsPerWeek":{"type":["number","null"]},"lastPostAt":{"type":["string","null"]},"daysSinceLastPost":{"type":["number","null"]},"tier":{"type":"string","description":"nano <10k, micro <50k, mid <500k, macro <1M, mega"}},"description":"Computed from recent posts"},"recentPosts":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"type":{"type":"string"},"caption":{"type":"string"},"date":{"type":"string","description":"ISO 8601"},"likes":{"type":["number","null"]},"comments":{"type":["number","null"]},"views":{"type":["number","null"]}}},"description":"Empty when served from the creator index"},"history":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"followers":{"type":["number","null"]},"engagementRate":{"type":["number","null"]}}},"description":"Instagram only: past snapshots, oldest first"},"growth30d":{"type":["object","null"],"properties":{"since":{"type":"string"},"days":{"type":"number"},"followersChange":{"type":"number"},"followersChangePct":{"type":"number"}},"description":"Instagram only: follower change over about 30 days; null without history"},"source":{"type":"string","description":"index, cache or live"},"fetchedAt":{"type":"string","description":"When the data was captured, ISO 8601"},"maxAgeHours":{"type":"number"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/youtube/transcript":{"post":{"summary":"YouTube transcript: full text and timed segments in any caption language, plus title, channel, duration, views, publish date, description, keywords and chapters. Not charged when a video has no transcript","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.002"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"video":{"type":"string","description":"YouTube URL (watch, youtu.be, shorts, live) or 11-character video id"},"lang":{"type":"string","description":"Preferred caption language code, e.g. en, hi, ne (default en, else the first available)"},"segments":{"type":"boolean","description":"Include timed segments (default true)"},"maxChars":{"type":"number","description":"Cap on transcript text, 1000-500000 (default 200000)"}},"required":["video"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"videoId":{"type":"string"},"url":{"type":"string"},"title":{"type":["string","null"]},"channel":{"type":["string","null"]},"channelId":{"type":["string","null"]},"durationSeconds":{"type":["number","null"]},"views":{"type":["number","null"]},"publishDate":{"type":["string","null"]},"description":{"type":["string","null"]},"keywords":{"type":"array","items":{"type":"string"}},"chapters":{"type":"array","items":{"type":"object","properties":{"start":{"type":"number","description":"Seconds"},"title":{"type":"string"}}}},"language":{"type":"string","description":"Caption language used"},"languageName":{"type":["string","null"]},"autoGenerated":{"type":"boolean"},"availableLanguages":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":["string","null"]},"autoGenerated":{"type":"boolean"}}}},"text":{"type":"string","description":"Full transcript as one string"},"wordCount":{"type":"number"},"truncated":{"type":"boolean"},"segments":{"type":"array","items":{"type":"object","properties":{"start":{"type":"number","description":"Seconds"},"dur":{"type":"number"},"text":{"type":"string"}}},"description":"Timed segments, unless segments: false"},"fetchedAt":{"type":"string"},"cached":{"type":"boolean","description":"Present and true when the answer came from Exepal's cache"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/leads":{"post":{"summary":"Local business leads: up to 10 Google Maps businesses for a search and place, each with address, phone, website, rating, reviews, plus emails (checked), phones and social profiles found on its website","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.10"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"What to search for on Google Maps, e.g. dentists, coworking space, hotels"},"location":{"type":"string","description":"Where, e.g. Kathmandu, Nepal or Austin, TX (optional if the query names the place)"},"limit":{"type":"number","description":"Businesses to return, up to the tier cap (10 or 20)"},"contacts":{"type":"boolean","description":"Visit each website for emails, phones and social links (default true)"},"language":{"type":"string","description":"Language for Maps fields, e.g. en (default)"}},"required":["query"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"location":{"type":["string","null"]},"count":{"type":"number"},"summary":{"type":"object","properties":{"places":{"type":"number"},"withWebsite":{"type":"number"},"withEmail":{"type":"number"},"withLikelyEmail":{"type":"number"},"withPhone":{"type":"number"},"withSocial":{"type":"number"}}},"leads":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"category":{"type":["string","null"]},"categories":{"type":"array","items":{"type":"string"}},"address":{"type":["string","null"]},"city":{"type":["string","null"]},"countryCode":{"type":["string","null"]},"phone":{"type":["string","null"]},"website":{"type":["string","null"]},"mapsUrl":{"type":["string","null"]},"placeId":{"type":["string","null"]},"rating":{"type":["number","null"]},"reviews":{"type":["number","null"]},"location":{"type":["object","null"],"properties":{"lat":{"type":"number"},"lng":{"type":"number"}}},"contacts":{"type":"object","properties":{"checked":{"type":"boolean","description":"False when the website could not be read"},"emails":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string"},"deliverable":{"type":"string","description":"likely, risky, undeliverable, unknown or unchecked"},"score":{"type":["number","null"]},"role":{"type":["boolean","null"]},"freeProvider":{"type":["boolean","null"]}}}},"phones":{"type":"array","items":{"type":"string"}},"socials":{"type":"object","properties":{"instagram":{"type":"string"},"facebook":{"type":"string"},"linkedin":{"type":"string"},"x":{"type":"string"},"tiktok":{"type":"string"},"youtube":{"type":"string"},"whatsapp":{"type":"string"}}},"pagesVisited":{"type":"array","items":{"type":"string"}},"error":{"type":"string"}},"description":"From the business's own website; absent when it has none"}}},"description":"One entry per business"},"source":{"type":"string"},"fetchedAt":{"type":"string"},"cached":{"type":"boolean","description":"Present and true when the answer came from Exepal's cache"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}},"/v1/leads/deep":{"post":{"summary":"Local business leads, up to 20 businesses per call (same fields as /v1/leads)","x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.20"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"What to search for on Google Maps, e.g. dentists, coworking space, hotels"},"location":{"type":"string","description":"Where, e.g. Kathmandu, Nepal or Austin, TX (optional if the query names the place)"},"limit":{"type":"number","description":"Businesses to return, up to the tier cap (10 or 20)"},"contacts":{"type":"boolean","description":"Visit each website for emails, phones and social links (default true)"},"language":{"type":"string","description":"Language for Maps fields, e.g. en (default)"}},"required":["query"]}}}},"responses":{"200":{"description":"Result as JSON","content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"location":{"type":["string","null"]},"count":{"type":"number"},"summary":{"type":"object","properties":{"places":{"type":"number"},"withWebsite":{"type":"number"},"withEmail":{"type":"number"},"withLikelyEmail":{"type":"number"},"withPhone":{"type":"number"},"withSocial":{"type":"number"}}},"leads":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"category":{"type":["string","null"]},"categories":{"type":"array","items":{"type":"string"}},"address":{"type":["string","null"]},"city":{"type":["string","null"]},"countryCode":{"type":["string","null"]},"phone":{"type":["string","null"]},"website":{"type":["string","null"]},"mapsUrl":{"type":["string","null"]},"placeId":{"type":["string","null"]},"rating":{"type":["number","null"]},"reviews":{"type":["number","null"]},"location":{"type":["object","null"],"properties":{"lat":{"type":"number"},"lng":{"type":"number"}}},"contacts":{"type":"object","properties":{"checked":{"type":"boolean","description":"False when the website could not be read"},"emails":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string"},"deliverable":{"type":"string","description":"likely, risky, undeliverable, unknown or unchecked"},"score":{"type":["number","null"]},"role":{"type":["boolean","null"]},"freeProvider":{"type":["boolean","null"]}}}},"phones":{"type":"array","items":{"type":"string"}},"socials":{"type":"object","properties":{"instagram":{"type":"string"},"facebook":{"type":"string"},"linkedin":{"type":"string"},"x":{"type":"string"},"tiktok":{"type":"string"},"youtube":{"type":"string"},"whatsapp":{"type":"string"}}},"pagesVisited":{"type":"array","items":{"type":"string"}},"error":{"type":"string"}},"description":"From the business's own website; absent when it has none"}}},"description":"One entry per business"},"source":{"type":"string"},"fetchedAt":{"type":"string"},"cached":{"type":"boolean","description":"Present and true when the answer came from Exepal's cache"}}}}}},"400":{"description":"Bad request; not charged"},"402":{"description":"Payment required: x402 challenge with the USDC price"}}}}}}