API docs
Atlas: verify a business against the entity spine.
Atlas is OpenAcquisitions' entity verification API. Send a business name and state, get back whether it corroborates against our 19.8M-row US entity spine, built by cross-referencing state registries, federal loan and grant records, and other public filings — plus how many independent sources back the match.
Built agent-first: a public OpenAPI spec and llms.txt index for AI agents.
Machine-readable
OpenAPI spec: /openapi.json · llms.txt: /llms.txt
Quickstart
- 1. Get an API key — email hello@openacquisitions.co.
- 2. Make your first call — see the example request below.
Authentication
Every request (except the health check) requires an x-oa-api-key header. API access is not self-serve yet — email hello@openacquisitions.co to request a key.
Endpoints
The API is versioned at /v1/. v1 is considered stable; breaking changes will ship under a new version prefix.
GET /v1/verify
Looks up a normalized (name, state) pair against the corroborated entity spine.
namestring · required
The business name to look up, as written. Atlas normalizes it (case, punctuation, entity suffixes) before matching.
statestring (2-letter USPS code) · required
The state the business is registered in, e.g. FL, DE, CA.
Example request
curl
curl "https://api.openacquisitions.co/v1/verify?name=Acme%20Widgets%20LLC&state=FL" \ -H "x-oa-api-key: YOUR_API_KEY"
JavaScript
const res = await fetch(
"https://api.openacquisitions.co/v1/verify?name=Acme%20Widgets%20LLC&state=FL",
{ headers: { "x-oa-api-key": "YOUR_API_KEY" } }
);
const data = await res.json();Response — corroborated match
{
"status": "corroborated",
"display_name": "ACME WIDGETS LLC",
"state": "FL",
"source_count": 4,
"witness_count": 7,
"source_slugs": ["sunbiz", "irs-990", "ppp-loan-data", "sba-7a"],
"max_forgery_class": "B",
"independent_hard": true
}A status of unverified uses the same shape — it means the entity was found but does not yet clear the corroboration bar.
Response fields
statuscorroborated = matched a verified entity in the spine; unverified = matched but rings below corroborated; not_found = no match.
source_countNumber of independent public sources backing this entity.
witness_countCount of witness records associated with the entity.
max_forgery_classHighest fraud-risk classification observed across sources (letter grade).
independent_hardBoolean — whether at least one hard/authoritative independent source corroborates the entity.
Response — not found
{
"status": "not_found",
"query": {
"name": "Acme Widgets LLC",
"state": "FL"
}
}Errors
401x-oa-api-key header is missing
{
"error": "missing x-oa-api-key header"
}401API key does not match an active row in atlas_api_keys
{
"error": "invalid or revoked api key"
}400name or state query param is missing
{
"error": "both 'name' and 'state' query params are required"
}400state is not exactly a 2-letter USPS code
{
"error": "'state' must be a 2-letter USPS code"
}GET /api/health
Unauthenticated health check. No API key required.
{
"ok": true,
"service": "oa-atlas-api"
}Pricing
Not set yet. Atlas access is issued case by case while we onboard early integrators — email hello@openacquisitions.co to talk through your use case.