Skip to content
OA

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. 1. Get an API key — email hello@openacquisitions.co.
  2. 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.

name

string · required

The business name to look up, as written. Atlas normalizes it (case, punctuation, entity suffixes) before matching.

state

string (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

status

corroborated = matched a verified entity in the spine; unverified = matched but rings below corroborated; not_found = no match.

source_count

Number of independent public sources backing this entity.

witness_count

Count of witness records associated with the entity.

max_forgery_class

Highest fraud-risk classification observed across sources (letter grade).

independent_hard

Boolean — 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

401

x-oa-api-key header is missing

{
  "error": "missing x-oa-api-key header"
}
401

API key does not match an active row in atlas_api_keys

{
  "error": "invalid or revoked api key"
}
400

name or state query param is missing

{
  "error": "both 'name' and 'state' query params are required"
}
400

state 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.