API docs / Verify

Death Verification API

Single endpoint for one-shot obituary lookups. Returns

found
,
possible_match
, or
not_found
with confidence and evidence.

Coverage / limitations
Results are based on searched obituary sources and web results. not_found is not proof of life or a death-registry result.
Endpoint

POST /api/v1/verify

Production base URL: https://obituarymonitor.com/api/v1/verify

Developer portal

API-primary customers sign in at /login and land on the developer portal:

  • Overview — quotas, monthly usage, quick links
  • Guide — integration walkthrough (getting started, search depth, results)
  • Test console — run live verify requests against your API key
  • Usage — volume charts, result breakdown, recent request log
  • API Keys — create and revoke keys (shown once at creation)

Account limits (max_lookback_years, monthly/daily quotas, extended concurrency) are configured by your administrator in api_customer_settings.

Authentication

Send your API key in the Authorization header:

Authorization: Bearer om_live_xxxxxxxx

Keys are created in the developer portal under API Keys. Your account must have api_access enabled.

Request schema
FieldTypeNotes
first_namestringRequired
last_namestringRequired
middle_namestringOptional
dob.month1–12Optional; invalid values return 400
dob.year1800–2100Optional; invalid values return 400
address.citystringOptional disambiguator
address.statestring2-letter US state recommended
search_depthenumOptional. recent | standard | extended. If omitted, the API automatically chooses an appropriate depth based on stored obituary inventory, DOB compatibility, and account lookback limits. Customers can still force recent, standard, or extended.
client_refstringYour correlation id (echoed in response)
lookback_yearsinteger (1–20)Extended depth only. Calendar years back from today to fan out web searches (e.g. 6 → 2026, 2025, …, 2021). Defaults to your account max_lookback_years when omitted. Cannot exceed that maximum.
search_depth

auto (omit search_depth)

If search_depth is omitted, the API automatically chooses an appropriate depth based on stored obituary inventory, DOB compatibility, and account lookback limits. Customers can still force recent, standard, or extended.

Typical auto-escalation to extended: indexed same-name obituaries exist but none match the submitted birth year, or the subject is age 55+ with no DOB-compatible stored match. Response search_scope.search_depth shows what was applied; search_depth_auto_reason explains why.

recent

Stored obituaries and funeral-home listing inventory only. No external web search. Fastest and lowest external query cost.

standard

Recent sources plus historical web search (~2-year fan-out). Use when you want to force a shallow web search regardless of stored inventory.

extended

Deeper multi-year web search. Set lookback_years to control how many calendar years back from today are searched on the web (up to your account's max_lookback_years). Each year adds one name/location query plus two site-specific queries (legacy.com and dignitymemorial.com) without a year filter. Subject to extended concurrency limits; may return 503 when capacity is saturated.

dob.year helps disambiguate matches but does not change which years are searched — use lookback_years to reach older deaths.

Result meanings
found

A qualifying obituary match was identified with sufficient confidence. Stored-index matches rank above web-only signals. Review match.evidence and scoring_reasons before automated action.

possible_match

Possible matches are returned when evidence exists but identity confidence is not high enough for found. review_recommended is typically true. Treat as a lead, not confirmation.

not_found

No qualifying obituary in the searched scope. Response includes not_proof_of_life: true and an interpretation string. Absence of an obituary is not evidence the person is alive.

negative_result_strength

Returned on not_found only.

  • weak — minimal identifiers; search coverage was narrow.
  • moderate — reasonable identifiers; standard scope searched.
  • strong — strong disambiguators (e.g. city+state, DOB) and broader search; higher confidence no obituary appeared in scope.
search_scope (response)

Every response includes search_scope describing what was searched. Use it to audit auto-depth decisions and web fan-out.

FieldMeaning
search_depthEffective depth applied for this request
search_depth_requestedClient value; null when auto-detected
search_depth_auto_reasonWhy auto chose this depth (e.g. subject_age_55_plus_no_compatible_stored_match)
years_searchedCalendar years used in web fan-out
lookback_years_appliedExtended depth year count (when applicable)
stored_name_match_countSame-name hits in stored inventory for this request
has_dob_compatible_stored_matchWhether any stored hit matched submitted birth year
external_queries_countExternal queries consumed (top-level response field)
Example request (auto — recommended)

Omit search_depth to let the API choose depth from stored inventory and DOB compatibility.

curl -X POST https://obituarymonitor.com/api/v1/verify \
  -H "Authorization: Bearer om_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "Jackie",
    "last_name": "Simmons",
    "dob": { "month": 11, "year": 1945 },
    "address": { "state": "TX" },
    "client_ref": "case-44201"
  }'
Example request (standard)
curl -X POST https://obituarymonitor.com/api/v1/verify \
  -H "Authorization: Bearer om_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "Margaret",
    "last_name": "Henderson",
    "dob": { "month": 3, "year": 1942 },
    "address": { "city": "Austin", "state": "TX" },
    "search_depth": "standard",
    "client_ref": "case-88421"
  }'
Example request (extended + lookback_years)

Use lookback_years to reach older deaths in web search. With lookback_years: 6 in 2026, the API searches death years 2026 through 2021.

curl -X POST https://obituarymonitor.com/api/v1/verify \
  -H "Authorization: Bearer om_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "Thomas",
    "last_name": "Plaskett",
    "dob": { "year": 1945 },
    "address": { "state": "PA" },
    "search_depth": "extended",
    "lookback_years": 6,
    "client_ref": "case-99102"
  }'
Example: found
{
  "result": "found",
  "confidence": 0.92,
  "review_recommended": false,
  "scoring_reasons": ["exact_name_match", "stored_obituary", "city_state_match"],
  "client_ref": "case-88421",
  "search_scope": {
    "stored_obituaries_checked": true,
    "listing_inventory_checked": true,
    "historical_web_search_checked": true,
    "search_depth": "standard",
    "search_depth_requested": "standard",
    "search_depth_auto_reason": null,
    "years_searched": [2025, 2026],
    "lookback_years_requested": null,
    "lookback_years_applied": null,
    "web_search_status": "completed"
  },
  "external_queries_count": 2,
  "checked_at": "2026-06-08T14:22:11.000Z",
  "match": {
    "matched_name": "Margaret Ann Henderson",
    "death_date": "2026-05-12",
    "location": "Austin, TX",
    "obituary_url": "https://example.com/obit/margaret-henderson",
    "source_trust": "stored",
    "evidence": {
      "name_match": "exact",
      "location_match": "city_state",
      "dob_match": "year_only"
    },
    "scoring_reasons": ["exact_name_match", "stored_obituary"]
  },
  "candidates": []
}
Example: possible_match
{
  "result": "possible_match",
  "confidence": 0.68,
  "review_recommended": true,
  "scoring_reasons": ["web_obituary_signal", "common_name_requires_review"],
  "client_ref": "case-88421",
  "search_scope": {
    "stored_obituaries_checked": true,
    "listing_inventory_checked": true,
    "historical_web_search_checked": true,
    "search_depth": "extended",
    "search_depth_requested": null,
    "search_depth_auto_reason": "subject_age_55_plus_no_compatible_stored_match;auto_lookback_years:3",
    "years_searched": [2026, 2025, 2024],
    "lookback_years_requested": null,
    "lookback_years_applied": 3,
    "stored_name_match_count": 0,
    "has_dob_compatible_stored_match": false,
    "web_search_status": "completed"
  },
  "external_queries_count": 5,
  "checked_at": "2026-06-08T14:22:11.000Z",
  "match": {
    "matched_name": "John Smith",
    "death_date": null,
    "location": "Dallas, TX",
    "obituary_url": "https://example.com/obit/john-smith-dallas",
    "source_trust": "extended",
    "evidence": {
      "name_match": "exact",
      "location_match": "state_only",
      "dob_match": "unknown"
    },
    "scoring_reasons": ["web_obituary_signal", "state_only_location"]
  },
  "candidates": [
    {
      "matched_name": "John Smith",
      "location": "Dallas, TX",
      "obituary_url": "https://example.com/obit/john-smith-dallas",
      "confidence": 0.68,
      "source_trust": "extended"
    }
  ]
}
Example: not_found
{
  "result": "not_found",
  "confidence": 0,
  "review_recommended": false,
  "not_proof_of_life": true,
  "interpretation": "No matching obituary was found in the searched sources for the provided identifiers. This is not proof the person is alive.",
  "negative_result_strength": "moderate",
  "scoring_reasons": ["no_qualifying_candidates"],
  "client_ref": "case-88421",
  "search_scope": {
    "stored_obituaries_checked": true,
    "listing_inventory_checked": true,
    "historical_web_search_checked": true,
    "search_depth": "standard",
    "search_depth_requested": null,
    "search_depth_auto_reason": "stored_coverage_sufficient",
    "years_searched": [2025, 2026],
    "lookback_years_requested": null,
    "lookback_years_applied": null,
    "web_search_status": "completed"
  },
  "external_queries_count": 2,
  "checked_at": "2026-06-08T14:22:11.000Z",
  "match": null,
  "candidates": []
}
Rate limits

Limits are configured per account: per-minute, daily, and monthly quotas. Extended-depth requests also respect a concurrent extended cap.

  • 429rate_limited or quota_exceeded
  • 503extended_capacity (retry later)
Error responses

Errors use:

{ "error": { "code": "invalid_request", "message": "…" } }
HTTPcodeWhen
400invalid_requestValidation failure (missing name, bad DOB, lookback_years without extended, etc.)
400lookback_exceeds_quotalookback_years exceeds account max_lookback_years
401unauthorizedMissing or invalid API key
403forbiddenKey valid but api_access disabled
429rate_limited / quota_exceededAccount or key quota exceeded
503extended_capacityExtended search concurrency saturated
500internal_errorUnexpected server error

Signed-in developers can test live requests in the test console and review volume charts in Usage.