자유 이용 번역본 107개
개역한글판, KJV, BSB, 和合本, Louis Segond 등 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 등 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…"
}
}
| 캐싱 | 콘텐츠는 불변입니다 — 1년 동안 캐시됩니다(max-age=31536000, immutable). 새 콘텐츠는 본문을 바꾸지 않고 새 URL로 제공됩니다. |
| 재검증 | 모든 응답에 강한 ETag가 있습니다. If-None-Match를 보내면 본문 없이 304 Not Modified를 받습니다. |
| CORS | 모든 오리진에 열려 있습니다(Access-Control-Allow-Origin: *). 프록시 없이 브라우저에서 바로 호출하세요. |
| 메서드 | GET, HEAD, OPTIONS. HEAD는 헤더만 반환하고 OPTIONS는 CORS 프리플라이트를 처리합니다. |
오늘의 말씀은 data/meta 봉투 대신 평면 객체(reference, text, version, book_slug, chapter, verse_start, verse_end, url, copyright)를 반환하며 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와 일치하는 번역본이 없습니다 — 오류가 가장 가까운 slug를 제안합니다(didYouMean). |
BOOK_NOT_FOUND |
404 | 어떤 언어로도 slug와 일치하는 책이 없습니다 — 오류가 가장 가까운 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를 쓰세요.