Beta

Lodestone Data is in open beta. Coverage is still expanding, some searches are not live yet, and published rates may change. What is live today.

Headless, if you want it.

Searches, the purpose list and the audit export over REST, for wiring the platform into your own tools.

Authentication

Bearer token in the header. Keys are scoped to an account and revoked one by one.

auth
Authorization: Bearer lds_live_...

Every request needs a purpose

purpose_code is required on every search, with no account-level default. Requests without one are rejected before any source is called.

POST /v1/search
{
  "product":      "person.search",
  "purpose_code": "GLBA_JUDGMENT_ENFORCEMENT",
  "matter_ref":   "24-2-01847-3 KNT",
  "subject": {
    "first_name": "...",
    "last_name":  "...",
    "last_known_address": "...",
    "state": "WA"
  }
}

Response

Every record carries its source. status is hit or no_hit; a no_hit is a search that ran and found nothing.

200 OK
{
  "search_id":  "srch_01JBQ8W2K9",
  "status":     "hit",
  "confidence": "corroborated",   // single | corroborated
  "results": [
    {
      "address":    "...",
      "first_seen": "2023-04",
      "last_seen":  "2026-07",
      "source":     "Credit header"
    }
  ],
  "purpose_code": "GLBA_JUDGMENT_ENFORCEMENT"
}

A case, not a search

The thing to integrate. Give Kenna a subject and a purpose; she runs every live source, works the leads each result opens, writes a position, and calls your endpoint when it is done. Everything runs under the one purpose code, is filed under the matter, and every step is written to the file.

POST /v1/cases
{
  "purpose_code":   "GLBA_JUDGMENT_ENFORCEMENT",
  "matter_ref":     "24-2-01847-3 KNT",     // optional, generated if absent
  "subject": { "first_name": "...", "last_name": "...", "state": "WA", "dob": "..." },
  "cap":            8,                   // searches beyond the sweep, at most 40
  "webhook_url":    "https://...",       // optional, https only
  "webhook_secret": "..."                // signs the call: X-Lodestone-Signature, HMAC-SHA256 of the body
}

// 202 Accepted
{ "matter_ref": "24-2-01847-3 KNT", "status": "queued", "poll": "/v1/cases/24-2-01847-3%20KNT" }

Poll GET /v1/cases/{matter_ref}, or wait for the webhook. The reply carries the position (answer, confidence, because, what could change it, the next move), the casework line by line, and every search with its ID. status is queued, working or done. A subject several people match stops with the reason and waits for an identifier.

case.done, to your endpoint
{
  "event":      "case.done",
  "matter_ref": "24-2-01847-3 KNT",
  "searches":   14,
  "position": { "answer": "...", "confidence": "moderate", "next_action": "..." }
}

Errors

CodeMeaning
400Malformed request or missing purpose_code
401Invalid or revoked key
403blocked Purpose not permitted for this account or data class
409The same search ran within the hour; the earlier result is returned by ID
429Rate limit exceeded
502Upstream source unavailable
503No live source for this search yet

A blocked request is still logged, with the reason it was blocked.