107 个自由版本
和合本(简体与繁体)、KJV、BSB、Louis Segond、Luther 1912 等,覆盖 67 种语言。全部为公有领域或开放许可。
67 种语言、107 个可自由使用的圣经版本,提供经文、章节和书卷。通过 HTTPS 返回 JSON,浏览器可直接调用。无需注册,无需密钥。
直接调用 API,无需配置,无需认证。
const res = await fetch('https://api.midvash.com/v1/kjv/john/3/16'); const { data, meta } = await res.json(); console.log(data.text); console.log(meta.copyright); // show it with the text
和合本(简体与繁体)、KJV、BSB、Louis Segond、Luther 1912 等,覆盖 67 种语言。全部为公有领域或开放许可。
每个包含经文的响应都附带该版本的版权说明,标注出处只需读取一个字段。
由 Cloudflare 边缘节点提供,长期缓存并带 ETag。重新验证时返回空的 304。
无需注册,无需 API 密钥,不会返回 429。CORS 全开放,任何网页都能直接调用。
67 种语言共 107 个版本,全部为公有领域或开放许可。点击任意版本查看元数据和完整许可文本。
每个包含经文的响应都带有该版本的版权说明:v1 中为 meta.copyright,/v1/votd 和旧版路由中为 copyright。请在经文附近显示。CC BY 和 CC BY-SA 许可要求这样做。
保留全部权利的版本(NIV、ESV、NLT、NVI、ARA、NVT、NTV 等)不再提供。旧链接仍然可用:会返回同一语言的自由版本,data.version 会告诉你实际返回的是哪一个。
全部 v1 接口。点击"试一下"发起真实请求并查看 JSON 响应。
/v1/{version}/{book}/{chapter}
返回完整的圣经章节
version |
path | 必填 | 版本 slug(例:kjv、almeida-livre) |
book |
path | 必填 | 任意语言的书卷 slug |
chapter |
path | 必填 | 章节序号 |
preview |
query | 可选 | 将文本截断到约 N 个字符(40 到 2000),用于悬浮提示 |
/v1/{version}/{book}/{chapter}/{verse}
返回单节或一段经文(16 或 16-20)
version |
path | 必填 | 版本 slug(例:kjv、almeida-livre) |
book |
path | 必填 | 任意语言的书卷 slug |
chapter |
path | 必填 | 章节序号 |
verse |
path | 必填 | 单节(16)或经文段(16-20) |
/v1/votd
每日经文:同一 UTC 日期所有人获得同一节经文,附版本版权说明(缓存 24 小时)
language |
query | 可选 | 语言(en、pt-br、es、fr、de、it、zh、ru、ko),默认 en。 |
version |
query | 可选 | 版本 slug,默认使用所选语言的官方版本。 |
/v1/passages
一次调用获取最多 50 处经文。无效引用只会在其所在位置单独报错。
refs |
query | 必填 | 以逗号分隔的引用(最多 50 个) |
version |
query | 必填 | 版本 slug |
/v1/parse
将自由文本引用(9 种语言均可)解析为书卷、章和节
q |
query | 必填 | 自由文本引用,例如 约翰福音 3:16-18 |
version |
query | 可选 | 可选。会被校验并在响应中返回 |
/v1/versions
列出全部圣经版本(107 个),含许可文本
language |
query | 可选 | 按 ISO 语言代码过滤(完整列表见 /v1/versions) |
/v1/versions/{slug}
返回指定版本的元数据
slug |
path | 必填 | 任意语言的 slug |
/v1/books
列出圣经全部 66 卷书
testament |
query | 可选 | "old" 或 "new" |
/v1/books/{slug}
返回单卷书的元数据(支持任意语言的 slug)
slug |
path | 必填 | 任意语言的 slug |
同一个请求,用你已经在用的工具。
/v1/kjv/john/3/16curl https://api.midvash.com/v1/kjv/john/3/16
const res = await fetch('https://api.midvash.com/v1/kjv/john/3/16');
const { data, meta } = await res.json();
console.log(data.text);
console.log(meta.copyright); // show it next to the text
import requests
body = requests.get('https://api.midvash.com/v1/kjv/john/3/16').json()
print(body['data']['text'])
print(body['meta']['copyright']) # show it next to the text
/v1/versions?language=pt-brcurl 'https://api.midvash.com/v1/versions?language=pt-br'
const res = await fetch('https://api.midvash.com/v1/versions?language=pt-br');
const { data, meta } = await res.json();
console.log(meta.total, data);
import requests
r = requests.get('https://api.midvash.com/v1/versions', params={'language': 'pt-br'})
print(r.json()['meta']['total'])
/v1/votd?language=encurl 'https://api.midvash.com/v1/votd?language=en'
const res = await fetch('https://api.midvash.com/v1/votd?language=en');
const votd = await res.json(); // flat shape, no envelope
console.log(votd.reference, votd.text);
console.log(votd.copyright);
import requests
v = requests.get('https://api.midvash.com/v1/votd', params={'language': 'en'}).json()
print(v['reference'], v['text'])
print(v['copyright'])
每个 v1 接口都使用相同的 JSON 外壳和相同的 HTTP 缓存规则。
成功响应将载荷包装在顶层的 data 字段中。列表和内容接口会附加可选的 meta 对象,包含总数、解析后的引用,以及返回经文时该版本的版权说明(copyright)。
{
"data": {
"version": "kjv",
"book": "john",
"bookName": "John",
"chapter": 3,
"verse": 16,
"verseEnd": 16,
"text": "For God so loved the world…",
"verses": ["For God so loved the world…"]
},
"meta": {
"reference": "John 3:16",
"total": 1,
"copyright": "King James Version (KJV)\nPublic Domain.\n…"
}
}
| 缓存 | 内容不可变 —— 缓存一年(max-age=31536000, immutable)。新内容使用新的 URL,绝不修改响应体。 |
| 重新验证 | 每个响应都带有强 ETag。发送 If-None-Match 即可获得 304 Not Modified(无响应体)。 |
| CORS | 对所有来源开放(Access-Control-Allow-Origin: *)。可直接从浏览器调用,无需代理。 |
| 方法 | GET、HEAD 和 OPTIONS。HEAD 仅返回响应头;OPTIONS 处理 CORS 预检。 |
每日经文返回一个扁平对象(reference, text, version, book_slug, chapter, verse_start, verse_end, url, copyright),而非 data/meta 外壳,并缓存 24 小时。
每个错误都使用统一格式和稳定、可被机器读取的代码。
{
"error": {
"code": "BOOK_NOT_FOUND",
"message": "Book \"jhon\" not found. Did you mean \"john\"?",
"details": { "didYouMean": "john" }
}
}
| 代码 | HTTP | 何时发生 |
|---|---|---|
INVALID_PARAMS |
400 | 路径或查询值格式不正确 —— 例如章节号超出范围。 |
NOT_FOUND |
404 | 该路由在 /v1 下不存在。 |
VERSION_NOT_FOUND |
404 | 没有版本匹配给定的 slug —— 错误会给出最接近的建议(didYouMean)。 |
BOOK_NOT_FOUND |
404 | 没有书卷匹配该 slug(任意语言)—— 错误会给出最接近的建议(didYouMean)。 |
CHAPTER_NOT_FOUND |
404 | 该章节在此版本中不可用。 |
VERSE_NOT_FOUND |
404 | 经文或区间超出该章范围。 |
INTERNAL_ERROR |
500 | 我方出现故障 —— 可安全重试。 |
4xx 响应根据错误的确定性缓存 60 秒到 24 小时;5xx 从不缓存,因此重试总能到达源站。
slug 支持任意语言,连字符可有可无(2-samuel 或 2samuel)。点击书卷查看其元数据。
是的。无需注册,无需密钥,也不限请求次数。只请你遵循 ETag(If-None-Match 会返回 304),并用 /v1/passages 批量获取引用,而不是每节经文发一次请求。
67 种语言共 107 个版本,全部为公有领域或采用 CC BY、CC BY-SA 等开放许可。实时列表见 /v1/versions。
这些版本的出版方保留全部权利,因此我们不转发它们。请求其中某个版本时,会返回同一语言的自由版本,data.version 会标明是哪一个。
在经文旁显示该版本的版权说明,来自 meta.copyright(/v1/votd 和旧版路由中为 copyright)。部分许可还有附加条件,例如以相同方式共享(CC BY-SA)或禁止修改文本(CC BY-ND)。请阅读所选版本的完整许可文本。
有:/openapi.json(OpenAPI 3.1),以及位于 /docs 的交互式参考。AI 智能体可以使用 mcp.midvash.com 上的圣经 MCP。