Free Obituary API — Publish Obituaries Programmatically

A practical integration guide for developers building memorial workflows, AI agents, funeral software, or intake automation that needs fast and respectful obituary publishing.

· 11 min read

The OfficialObituary obituary API is built for one core job: publish accurate, respectful obituaries with minimal friction. If your product captures memorial data from families, churches, hospice teams, or funeral homes, you can automate final publication through a simple obituary REST API call.

This guide is intentionally implementation-focused. You will find endpoint details, request examples, response expectations, and reliability patterns you can apply immediately in production systems.

The free REST API base domain is api.officialobituary.com. You can also inspect machine-readable schema details at /api/openapi.json and review agent-oriented guidance at /for-agents.

Obituary API overview

The obituary API supports direct memorial publishing from external systems. Typical consumers include:

  • Family-facing web apps that collect obituary data in multi-step forms.
  • Funeral operations software syncing approved notices to public memorial pages.
  • AI copilots that generate drafts and publish after explicit confirmation.
  • Back-office workflows that transform intake records into canonical obituary URLs.

Because obituary content represents real people and grieving families, integrations should prioritize correctness over speed. Even when using automation, human confirmation for names, dates, and service logistics should be part of your pipeline.

Publish obituary API endpoint

The primary publish obituary API operation:

POST https://api.officialobituary.com/api/obituaries/publish

At minimum, your payload should include complete identity and timeline fields plus obituary narrative text. For best user outcomes, also include service date and location so the published page can function as a reliable event reference.

Use strict server-side validation before sending requests. Reject impossible dates, blank narratives, invalid state values, and malformed service details early to reduce failed publishes and support tickets.

Code examples: curl, JavaScript fetch, Python requests

curl

curl -X POST https://api.officialobituary.com/api/obituaries/publish \
  -H "Content-Type: application/json" \
  -d '{
    "full_name": "John Smith",
    "date_of_birth": "1945-06-18",
    "date_of_death": "2026-02-01",
    "city": "Grand Rapids",
    "state": "MI",
    "obituary_text": "John Smith, 80, of Grand Rapids, passed away peacefully on February 1, 2026. He loved fishing, gardening, and time with family.",
    "service_date": "2026-02-10",
    "service_location": "St. Mark Church, Grand Rapids, MI"
  }'

JavaScript (fetch)

const response = await fetch("https://api.officialobituary.com/api/obituaries/publish", {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    full_name: "John Smith",
    date_of_birth: "1945-06-18",
    date_of_death: "2026-02-01",
    city: "Grand Rapids",
    state: "MI",
    obituary_text: "John Smith, 80, of Grand Rapids, passed away peacefully on February 1, 2026.",
    service_date: "2026-02-10",
    service_location: "St. Mark Church, Grand Rapids, MI"
  })
});

if (!response.ok) {
  throw new Error("Publish failed: " + response.status);
}

const result = await response.json();
console.log(result.slug, result.url);

Python (requests)

import requests

payload = {
    "full_name": "John Smith",
    "date_of_birth": "1945-06-18",
    "date_of_death": "2026-02-01",
    "city": "Grand Rapids",
    "state": "MI",
    "obituary_text": "John Smith, 80, of Grand Rapids, passed away peacefully on February 1, 2026.",
    "service_date": "2026-02-10",
    "service_location": "St. Mark Church, Grand Rapids, MI"
}

response = requests.post(
    "https://api.officialobituary.com/api/obituaries/publish",
    json=payload,
    timeout=15
)
response.raise_for_status()

data = response.json()
print(data.get("slug"), data.get("url"))

Implementation notes:

  • Use request timeouts and retry only on transient failures.
  • Do not retry blindly on validation errors (4xx); surface them to the user for correction.
  • Persist returned IDs and slugs for reconciliation and support troubleshooting.

Response format and error handling

Successful publishes return a JSON object with a durable identifier and canonical URL:

{
  "success": true,
  "id": "obit_01JT6Z6J9W9VC0W1XNPR8Q2Y7F",
  "slug": "john-smith-grand-rapids-mi",
  "url": "https://officialobituary.com/obituaries/john-smith-grand-rapids-mi",
  "published_at": "2026-02-22T18:20:12.000Z"
}

Suggested handling strategy by status class:

  • 2xx: mark publish complete, store URL, and notify downstream systems.
  • 4xx: treat as validation or request issues; request corrected input.
  • 429: respect throttling response and retry after backoff.
  • 5xx: retry with bounded exponential backoff and idempotency safeguards.

When possible, map API errors to user-friendly field-level feedback. Families should see clear guidance like "Service date format should be YYYY-MM-DD" rather than generic failure messages.

Rate limits and throughput strategy

The obituary REST API is designed for free basic publishing with fair-use controls to protect quality of service. In practice, you should design for burst moderation and predictable queues instead of unconstrained spikes.

Recommended approach:

  • Batch user-triggered jobs through an internal queue.
  • Process with worker concurrency caps per tenant/account/channel.
  • Apply exponential backoff on 429 and transient 5xx responses.
  • Log retry counts and dead-letter failed jobs for manual review.

Rate limits can evolve as platform traffic changes. For dependable integrations, monitor response headers and implement adaptive throttling rather than hardcoding assumptions.

Production integration checklist

Before launching a memorial publishing integration, validate these controls:

  • Input schema validation for all required fields.
  • Date normalization to ISO format before API submission.
  • Content moderation or review policy for dignity and factual quality.
  • Request timeout plus bounded retry policy.
  • Structured logs with trace IDs for each publish attempt.
  • Alerting for elevated 4xx, 429, or 5xx rates.
  • Automated post-publish URL verification in your workflow.
  • Manual override path for urgent family corrections.

Teams that treat obituary publishing as mission-critical content infrastructure tend to perform better during high-emotion, high-urgency moments. Reliability and empathy are equally technical requirements here.

AI agent workflows

A common pattern is "draft with AI, publish with API." In this model, a user or staff member provides source facts, an assistant proposes obituary text, and the system submits a publish request only after explicit review confirmation.

This pattern is useful for call-center operations, chat-based family support flows, and intake forms where users struggle to begin writing. It also reduces copy-paste errors by keeping structured data and final publish action in one transaction path.

For role-specific guidance and integration patterns for autonomous tools, review /for-agents.

Developer FAQ

Is there a free obituary API available today?

Yes. OfficialObituary provides a free obituary API for basic publishing flows, available at api.officialobituary.com.

What is the main publish obituary API endpoint?

The primary endpoint is POST https://api.officialobituary.com/api/obituaries/publish.

Where can I find the obituary REST API schema?

You can fetch the OpenAPI document at /api/openapi.json.

How should I handle rate limits?

Queue requests, limit worker concurrency, and use exponential backoff on 429 and transient 5xx responses. Avoid aggressive immediate retries.

Can AI assistants publish obituaries through this API?

Yes. AI assistants can generate drafts and publish through the API after human confirmation. This is a common pattern for respectful automation.

Integrate obituary publishing into your workflow

Ship faster with a clear schema, stable endpoint, and agent-ready documentation.