Skip to content
BEMA

Public developer resources

Build with the BEMA API

Search the BEMA Podcast catalog, retrieve episode details, and work with available transcripts through a free, read-only REST API or MCP server. Public v1 access needs no account, API key, or SDK.

No authentication

Public, read-only v1 endpoints work without a token or API key.

OpenAPI described

Generate a client or inspect every parameter from the live specification.

Agent-native MCP

Connect compatible assistants to four focused discovery and retrieval tools.

Quickstart

Make your first BEMA API request

The API base URL is https://api.bema.jpamorgan.com. Send a regular HTTPSGET request; no Authorization header is required for public read-only v1 resources.

Terminal
curl 'https://api.bema.jpamorgan.com/v1/episodes/1'

Successful responses use JSON. Start with theBEMA OpenAPI specificationfor a machine-readable contract, or continue below for the common paths.

No-code sandbox

Try a live episode search

This form sends a plain HTML GET request directly to the public API and opens the raw JSON response. It works without client-side JavaScript and is annotated as a discoverable browser tool.

Prefer a ready-made request?Open a Sabbath search response.

REST reference

Public v1 endpoints

All v1 routes are read-only. URL-encode path and query values, and use the cursor returned by a collection response when requesting the next page.

GET /health

Check whether the BEMA API service is reachable.

GET /v1/episodes?q=&session=&limit=&cursor=

Search or page through episode metadata. Every query parameter is optional.

GET /v1/episodes/{slug}

Retrieve one episode by its stable BEMA slug, such as 1 or -1.

GET /v1/transcripts/search?q=&session=&limit=

Search the text of locally available transcripts. A meaningful q is required.

GET /v1/transcripts/{slug}

Retrieve transcript text, paragraphs, source, and context when available.

Response shape

Predictable JSON, useful source links

Detail responses wrap the requested resource in data and identify the contract with schemaVersion. Episode records retain official BEMA and platform links so people can follow results back to the source. This is the complete response for the episode 1 quickstart request above; the complete schema and error responses live in OpenAPI.

Example response
{
  "data": {
    "description": "Marty Solomon and Brent Billings talk about the creation story in Genesis 1 and the foundation it lays for understanding the scriptural narrative correctly.",
    "durationSeconds": 3188,
    "episodeNumber": 1,
    "kind": "episode",
    "links": {
      "api": "https://api.bema.jpamorgan.com/v1/episodes/1",
      "audio": "https://aphid.fireside.fm/d/1437767933/7d8cc2be-fe66-43fb-ada4-e62e2f8c00e7/12e69976-b104-40bb-9876-025466d839f7.mp3",
      "official": "https://www.bemadiscipleship.com/1",
      "transcript": "https://api.bema.jpamorgan.com/v1/transcripts/1",
      "web": "https://bema.jpamorgan.com/episodes/1"
    },
    "matchedFields": [],
    "people": [
      {
        "name": "Marty Solomon",
        "role": "host",
        "url": "https://www.martysolomon.com/"
      },
      {
        "name": "Brent Billings",
        "role": "host",
        "url": "https://brentbillings.com/"
      }
    ],
    "publishedAt": "2016-09-08T08:00:00.000Z",
    "relevance": null,
    "session": 1,
    "slug": "1",
    "subtitle": "The Creation Story of Genesis 1",
    "title": "Trust the Story",
    "transcriptAvailable": true,
    "audio": {
      "url": "https://aphid.fireside.fm/d/1437767933/7d8cc2be-fe66-43fb-ada4-e62e2f8c00e7/12e69976-b104-40bb-9876-025466d839f7.mp3",
      "mimeType": "audio/mpeg",
      "sizeBytes": 25806787,
      "durationSeconds": 3188
    },
    "chapters": [],
    "imageUrl": "https://media24.fireside.fm/file/fireside-images-2024/podcasts/images/7/7d8cc2be-fe66-43fb-ada4-e62e2f8c00e7/cover.jpg?v=2",
    "platformLinks": {
      "bema": "https://www.bemadiscipleship.com/1",
      "applePodcasts": "https://podcasts.apple.com/us/podcast/the-bema-podcast/id1148115183",
      "spotify": "https://open.spotify.com/show/0g3Io9OkiFPEyvEPwXqaiq"
    },
    "showNotes": "Marty Solomon and Brent Billings talk about the creation story in Genesis 1 and the foundation it lays for understanding the scriptural narrative correctly. Presentation for Trust the Story (PDF) Sabbath as Resistance by Walter Brueggemann The Sabbath by Abraham Joshua Heschel BEMA Discipleship — Groups Join the BEMA Slack Brent on Twitter/X BEMA Discipleship on Twitter/X BEMA Discipleship on Facebook Marty on Instagram Brent on Instagram BEMA Discipleship on Instagram BEMA Discipleship — Subscribe (Recommended Apps) Study Tools Discussion Video for BEMA 1 The Companion for BEMA 1 Take Your Own Notes Transcript for BEMA 1 Legacy Episode Content Episode updated 6 January 2025 Original audio from 8 September 2016 Transcript for BEMA 1 of 8 September 2016",
    "transcript": {
      "sourceUrl": "https://docs.google.com/document/d/e/2PACX-1vSvmUpR45EmoLDho32o6oPgg91NXOb3wvCwSsdvJ6Y8wC-MruWpS7KVpiRAIjy7kAV4SCevEAznmm-b/pub",
      "path": "/transcripts/1.json",
      "contentSha256": "9859072395ae743f7881e93de27d4681ba5898a9c2c2a01f02d8bd9b649f12af",
      "wordCount": 9760
    }
  },
  "schemaVersion": "1"
}

Nonexistent resources return an appropriate 4xx status and JSON error. Treat fields not marked required in OpenAPI as optional, especially transcripts and platform-specific links.

Model Context Protocol

Connect an AI agent to BEMA

The Streamable HTTP MCP endpoint is https://api.bema.jpamorgan.com/mcp. Compatible clients can discover the server card and use four read-only tools:search_episodes, get_episode,search_transcripts, and get_transcript. The REST transcript route returns the complete locally available text; MCP get_transcript honors max_characters and reports when its result is truncated.

Use BEMA tools when someone asks to find a BEMA episode, identify where the podcast discusses a subject, look up episode metadata, or inspect an available transcript. The tools do not modify data or play audio on a user’s behalf.

Good citizenship

Rate, cache, and attribute responsibly

  • Rate: this public service does not promise a fixed request allowance. Keep concurrency modest, back off after 429 or 5xx responses, and avoid downloading the same record repeatedly.
  • Cache: honor Cache-Control, ETag, and If-None-Match. Catalog data changes far less often than search queries.
  • Attribute: retain official BEMA episode and transcript source URLs in user-facing results. This explorer is independent and does not claim ownership of the podcast or its transcripts.

This is a public, best-effort service with no SLA. If you need a large offline dataset, begin with the API andcontact the project maintainer before sustained bulk traffic.