API Reference
Veritas answers one question: "Does this business actually exist?" It cross-references multiple public data sources and returns a structured JSON confidence assessment.
Authentication
All API requests require an API key passed in the x-api-key header. Keys start with vrt_.
curl -H "x-api-key: vrt_your_key_here" ...POST /api/verify
The core endpoint. Send a business name and location, get back a structured confidence assessment.
POST /api/verify
Content-Type: application/json
x-api-key: vrt_your_key_here
{
"business_name": "Blue Bottle Coffee",
"location": "Oakland, CA"
}business_name
Required. The name of the business to verify.
location
Required. City and state/country, e.g. "Oakland, CA" or "London, UK".
Response Schema
{
"query": {
"business_name": "Blue Bottle Coffee",
"location": "Oakland, CA"
},
"result": {
"existence_confidence": "high",
"confidence_score": 92,
"signals": {
"google_places": {
"found": true,
"name_match": "exact",
"rating": 4.5,
"review_count": 1247,
"business_status": "OPERATIONAL",
"types": ["cafe", "store", "food"],
"formatted_address": "300 Webster St, Oakland, CA 94607, USA"
},
"domain": {
"found": true,
"url": "bluebottlecoffee.com",
"resolves": true,
"ssl_valid": true,
"domain_age_days": 5842,
"registrar": "MarkMonitor Inc."
},
"web_presence": {
"social_signals_detected": true,
"linkedin_found": true,
"consistent_nap": true
}
},
"flags": [],
"checked_at": "2026-03-02T14:30:00Z"
},
"meta": {
"cached": false,
"response_time_ms": 847,
"degraded_signals": []
}
}Confidence Scoring
high3+ strong signals confirmed (Google Places match + domain resolves + domain age > 365 days)
medium2 signals confirmed OR signals present but weak (new domain, few reviews)
low1 signal confirmed, others missing or inconsistent
noneNo signals found, business likely does not exist
Flags
Flags are warnings, not blockers. They indicate areas of concern an agent should consider.
new_domainDomain registered < 90 days ago
no_websiteNo website found for business
name_mismatchGoogle Places name differs from query
no_reviewsGoogle Places listing has 0 reviews
no_physical_addressNo verifiable physical address
ssl_expiredWebsite SSL certificate is expired or invalid
Error Responses
400INVALID_JSONRequest body is not valid JSON
401MISSING_API_KEYNo x-api-key header provided
401INVALID_API_KEYAPI key not found or invalid
403KEY_DISABLEDAPI key has been disabled
422INVALID_REQUESTMissing business_name or location
429RATE_LIMIT_EXCEEDEDPer-minute rate limit reached
429MONTHLY_LIMIT_EXCEEDEDMonthly request quota reached
500INTERNAL_ERRORUnexpected server error
{
"error": {
"code": "INVALID_REQUEST",
"message": "Request must include non-empty 'business_name' and 'location' strings"
}
}MCP Server
Veritas ships as an MCP server for direct integration with agent platforms (Claude, OpenAI, etc.).
{
"mcpServers": {
"veritas": {
"command": "npx",
"args": ["@veritas-api/mcp-server"],
"env": {
"VERITAS_API_KEY": "vrt_your_key_here"
}
}
}
}The MCP server exposes one tool: verify_business. It accepts business_name and location and returns the full verification response.
Streamable HTTP (no install required)
Agents that support MCP over HTTP can connect directly to the hosted endpoint:
POST https://veritas-api.vercel.app/api/mcp
Content-Type: application/json
// Standard MCP JSON-RPC — stateless, no session management neededRate Limits
| Plan | Requests/mo | Rate limit | Price |
|---|---|---|---|
| Free | 100 | 5/min | $0 |
| Builder | 5,000 | 30/min | $29/mo |
| Scale | 50,000 | 120/min | $99/mo |
Rate-limited responses return 429 with a Retry-After header.
Caching
Verification results are cached for 24 hours, keyed on normalized business name + location. Cached responses have meta.cached: true and incur no API cost. Agents can use this to make repeated checks essentially free.