API DOCUMENTATION
Search API v2: endpoint and schema reference
This reference is generated from the checked-in OpenAPI contract. Return to the integration guide for workflows and ready-to-run examples.
Resolved request server: https://search.getbible.net.
GET /healthz#
Liveness
Operation ID: health.
Responses#
| Status | Description | Media type | Schema |
|---|---|---|---|
| 200 | Service is online | application/json | #/components/schemas/Health |
Complete operation contract
{
"operationId": "health",
"responses": {
"200": {
"content": {
"application/json": {
"example": {
"status": "ok"
},
"schema": {
"$ref": "#/components/schemas/Health"
}
}
},
"description": "Service is online"
}
},
"security": [],
"summary": "Liveness",
"parameters": []
}
GET /readyz#
Readiness: read a verse from the default translation
Operation ID: readiness.
Responses#
| Status | Description | Media type | Schema |
|---|---|---|---|
| 200 | Scripture is readable | application/json | #/components/schemas/Health |
| 503 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
Complete operation contract
{
"operationId": "readiness",
"responses": {
"200": {
"content": {
"application/json": {
"example": {
"status": "ready"
},
"schema": {
"$ref": "#/components/schemas/Health"
}
}
},
"description": "Scripture is readable"
},
"503": {
"$ref": "#/components/responses/Problem"
}
},
"security": [],
"summary": "Readiness: read a verse from the default translation",
"parameters": []
}
GET /{segment}#
Short form: translation or search string
Operation ID: searchAlias.
| Parameter | In | Required | Type | Example / default | Description |
|---|---|---|---|---|---|
segment |
path | Yes | string | faith hope | — |
q |
query | No | string | faith hope | Search words or a scripture reference; ignored when the search is supplied in the path. |
translation |
query | No | string | kjv | Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation. |
words |
query | No | string | all | — |
match |
query | No | string | whole_word | — |
case_sensitive |
query | No | boolean | false | Accepts true/false, 1/0 or yes/no (case-insensitive). |
scope |
query | No | string | bible | — |
book |
query | No | array | 1 | Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections. |
books |
query | No | string | John | Comma-separated book names or numbers; combined with repeated book values. |
diacritics |
query | No | string | fold | fold/exact; compatibility aliases insensitive/sensitive are also accepted. |
exclude |
query | No | array | darkness | Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each. |
proximity |
query | No | integer | 1 | Intervening words, 0 to 100; requires words=all. |
sort |
query | No | string | canonical | — |
limit |
query | No | integer | 100 | — |
offset |
query | No | integer | 0 | — |
Responses#
| Status | Description | Media type | Schema |
|---|---|---|---|
| 301 | Redirect to the versioned endpoint, preserving query parameters. | — | See contract |
| 400 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 401 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 404 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 405 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 413 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 429 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 500 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 502 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 503 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 504 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
Complete operation contract
{
"operationId": "searchAlias",
"responses": {
"301": {
"description": "Redirect to the versioned endpoint, preserving query parameters.",
"headers": {
"Location": {
"schema": {
"type": "string"
}
}
}
},
"400": {
"$ref": "#/components/responses/Problem"
},
"401": {
"$ref": "#/components/responses/Problem"
},
"404": {
"$ref": "#/components/responses/Problem"
},
"405": {
"$ref": "#/components/responses/Problem"
},
"413": {
"$ref": "#/components/responses/Problem"
},
"429": {
"$ref": "#/components/responses/Problem"
},
"500": {
"$ref": "#/components/responses/Problem"
},
"502": {
"$ref": "#/components/responses/Problem"
},
"503": {
"$ref": "#/components/responses/Problem"
},
"504": {
"$ref": "#/components/responses/Problem"
}
},
"summary": "Short form: translation or search string",
"parameters": [
{
"in": "path",
"name": "segment",
"required": true,
"schema": {
"type": "string"
}
},
{
"description": "Search words or a scripture reference; ignored when the search is supplied in the path.",
"in": "query",
"name": "q",
"schema": {
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
{
"description": "Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation.",
"in": "query",
"name": "translation",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "words",
"schema": {
"default": "all",
"enum": [
"all",
"any",
"phrase"
],
"type": "string"
}
},
{
"in": "query",
"name": "match",
"schema": {
"default": "whole_word",
"enum": [
"whole_word",
"substring"
],
"type": "string"
}
},
{
"description": "Accepts true/false, 1/0 or yes/no (case-insensitive).",
"in": "query",
"name": "case_sensitive",
"schema": {
"default": false,
"type": "boolean"
}
},
{
"in": "query",
"name": "scope",
"schema": {
"default": "bible",
"enum": [
"bible",
"old_testament",
"new_testament",
"deuterocanon"
],
"type": "string"
}
},
{
"description": "Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections.",
"explode": true,
"in": "query",
"name": "book",
"schema": {
"items": {
"type": [
"string",
"integer"
]
},
"maxItems": 83,
"type": "array"
},
"style": "form"
},
{
"description": "Comma-separated book names or numbers; combined with repeated book values.",
"in": "query",
"name": "books",
"schema": {
"description": "Comma-separated book names or numbers.",
"type": "string"
}
},
{
"description": "fold/exact; compatibility aliases insensitive/sensitive are also accepted.",
"in": "query",
"name": "diacritics",
"schema": {
"default": "fold",
"enum": [
"fold",
"exact",
"insensitive",
"sensitive"
],
"type": "string"
}
},
{
"description": "Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each.",
"explode": true,
"in": "query",
"name": "exclude",
"schema": {
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 32,
"type": "array"
},
"style": "form"
},
{
"description": "Intervening words, 0 to 100; requires words=all.",
"in": "query",
"name": "proximity",
"schema": {
"description": "Requires words=all.",
"maximum": 100,
"minimum": 0,
"type": "integer"
}
},
{
"in": "query",
"name": "sort",
"schema": {
"default": "canonical",
"enum": [
"canonical",
"relevance"
],
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 100,
"maximum": 100,
"minimum": 1,
"type": "integer"
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"maximum": 10000,
"minimum": 0,
"type": "integer"
}
}
]
}
POST /{segment}#
Short form with POST
Operation ID: searchAliasPost.
| Parameter | In | Required | Type | Example / default | Description |
|---|---|---|---|---|---|
segment |
path | Yes | string | faith hope | — |
q |
query | No | string | faith hope | Search words or a scripture reference; ignored when the search is supplied in the path. |
translation |
query | No | string | kjv | Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation. |
words |
query | No | string | all | — |
match |
query | No | string | whole_word | — |
case_sensitive |
query | No | boolean | false | Accepts true/false, 1/0 or yes/no (case-insensitive). |
scope |
query | No | string | bible | — |
book |
query | No | array | 1 | Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections. |
books |
query | No | string | John | Comma-separated book names or numbers; combined with repeated book values. |
diacritics |
query | No | string | fold | fold/exact; compatibility aliases insensitive/sensitive are also accepted. |
exclude |
query | No | array | darkness | Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each. |
proximity |
query | No | integer | 1 | Intervening words, 0 to 100; requires words=all. |
sort |
query | No | string | canonical | — |
limit |
query | No | integer | 100 | — |
offset |
query | No | integer | 0 | — |
Request body#
Optional.
Media type: application/json. Schema: #/components/schemas/SearchRequest.
Responses#
| Status | Description | Media type | Schema |
|---|---|---|---|
| 308 | Redirect preserving method, JSON body and query parameters. | — | See contract |
| 400 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 401 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 404 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 405 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 413 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 429 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 500 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 502 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 503 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 504 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
Complete operation contract
{
"operationId": "searchAliasPost",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchRequest"
}
}
},
"required": false
},
"responses": {
"308": {
"description": "Redirect preserving method, JSON body and query parameters.",
"headers": {
"Location": {
"schema": {
"type": "string"
}
}
}
},
"400": {
"$ref": "#/components/responses/Problem"
},
"401": {
"$ref": "#/components/responses/Problem"
},
"404": {
"$ref": "#/components/responses/Problem"
},
"405": {
"$ref": "#/components/responses/Problem"
},
"413": {
"$ref": "#/components/responses/Problem"
},
"429": {
"$ref": "#/components/responses/Problem"
},
"500": {
"$ref": "#/components/responses/Problem"
},
"502": {
"$ref": "#/components/responses/Problem"
},
"503": {
"$ref": "#/components/responses/Problem"
},
"504": {
"$ref": "#/components/responses/Problem"
}
},
"summary": "Short form with POST",
"parameters": [
{
"in": "path",
"name": "segment",
"required": true,
"schema": {
"type": "string"
}
},
{
"description": "Search words or a scripture reference; ignored when the search is supplied in the path.",
"in": "query",
"name": "q",
"schema": {
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
{
"description": "Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation.",
"in": "query",
"name": "translation",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "words",
"schema": {
"default": "all",
"enum": [
"all",
"any",
"phrase"
],
"type": "string"
}
},
{
"in": "query",
"name": "match",
"schema": {
"default": "whole_word",
"enum": [
"whole_word",
"substring"
],
"type": "string"
}
},
{
"description": "Accepts true/false, 1/0 or yes/no (case-insensitive).",
"in": "query",
"name": "case_sensitive",
"schema": {
"default": false,
"type": "boolean"
}
},
{
"in": "query",
"name": "scope",
"schema": {
"default": "bible",
"enum": [
"bible",
"old_testament",
"new_testament",
"deuterocanon"
],
"type": "string"
}
},
{
"description": "Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections.",
"explode": true,
"in": "query",
"name": "book",
"schema": {
"items": {
"type": [
"string",
"integer"
]
},
"maxItems": 83,
"type": "array"
},
"style": "form"
},
{
"description": "Comma-separated book names or numbers; combined with repeated book values.",
"in": "query",
"name": "books",
"schema": {
"description": "Comma-separated book names or numbers.",
"type": "string"
}
},
{
"description": "fold/exact; compatibility aliases insensitive/sensitive are also accepted.",
"in": "query",
"name": "diacritics",
"schema": {
"default": "fold",
"enum": [
"fold",
"exact",
"insensitive",
"sensitive"
],
"type": "string"
}
},
{
"description": "Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each.",
"explode": true,
"in": "query",
"name": "exclude",
"schema": {
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 32,
"type": "array"
},
"style": "form"
},
{
"description": "Intervening words, 0 to 100; requires words=all.",
"in": "query",
"name": "proximity",
"schema": {
"description": "Requires words=all.",
"maximum": 100,
"minimum": 0,
"type": "integer"
}
},
{
"in": "query",
"name": "sort",
"schema": {
"default": "canonical",
"enum": [
"canonical",
"relevance"
],
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 100,
"maximum": 100,
"minimum": 1,
"type": "integer"
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"maximum": 10000,
"minimum": 0,
"type": "integer"
}
}
]
}
GET /{translation}/{search}#
Short form: translation or search string
Operation ID: searchUnversioned.
| Parameter | In | Required | Type | Example / default | Description |
|---|---|---|---|---|---|
translation |
path | Yes | string | kjv | Translation abbreviation; case-insensitive. |
search |
path | Yes | string | faith hope | Search words or a scripture reference, URL-encoded. |
q |
query | No | string | faith hope | Search words or a scripture reference; ignored when the search is supplied in the path. |
translation |
query | No | string | kjv | Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation. |
words |
query | No | string | all | — |
match |
query | No | string | whole_word | — |
case_sensitive |
query | No | boolean | false | Accepts true/false, 1/0 or yes/no (case-insensitive). |
scope |
query | No | string | bible | — |
book |
query | No | array | 1 | Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections. |
books |
query | No | string | John | Comma-separated book names or numbers; combined with repeated book values. |
diacritics |
query | No | string | fold | fold/exact; compatibility aliases insensitive/sensitive are also accepted. |
exclude |
query | No | array | darkness | Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each. |
proximity |
query | No | integer | 1 | Intervening words, 0 to 100; requires words=all. |
sort |
query | No | string | canonical | — |
limit |
query | No | integer | 100 | — |
offset |
query | No | integer | 0 | — |
Responses#
| Status | Description | Media type | Schema |
|---|---|---|---|
| 301 | Redirect to the versioned endpoint, preserving query parameters. | — | See contract |
| 400 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 401 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 404 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 405 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 413 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 429 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 500 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 502 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 503 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 504 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
Complete operation contract
{
"operationId": "searchUnversioned",
"responses": {
"301": {
"description": "Redirect to the versioned endpoint, preserving query parameters.",
"headers": {
"Location": {
"schema": {
"type": "string"
}
}
}
},
"400": {
"$ref": "#/components/responses/Problem"
},
"401": {
"$ref": "#/components/responses/Problem"
},
"404": {
"$ref": "#/components/responses/Problem"
},
"405": {
"$ref": "#/components/responses/Problem"
},
"413": {
"$ref": "#/components/responses/Problem"
},
"429": {
"$ref": "#/components/responses/Problem"
},
"500": {
"$ref": "#/components/responses/Problem"
},
"502": {
"$ref": "#/components/responses/Problem"
},
"503": {
"$ref": "#/components/responses/Problem"
},
"504": {
"$ref": "#/components/responses/Problem"
}
},
"summary": "Short form: translation or search string",
"parameters": [
{
"description": "Translation abbreviation; case-insensitive.",
"in": "path",
"name": "translation",
"required": true,
"schema": {
"type": "string"
}
},
{
"description": "Search words or a scripture reference, URL-encoded.",
"in": "path",
"name": "search",
"required": true,
"schema": {
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
{
"description": "Search words or a scripture reference; ignored when the search is supplied in the path.",
"in": "query",
"name": "q",
"schema": {
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
{
"description": "Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation.",
"in": "query",
"name": "translation",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "words",
"schema": {
"default": "all",
"enum": [
"all",
"any",
"phrase"
],
"type": "string"
}
},
{
"in": "query",
"name": "match",
"schema": {
"default": "whole_word",
"enum": [
"whole_word",
"substring"
],
"type": "string"
}
},
{
"description": "Accepts true/false, 1/0 or yes/no (case-insensitive).",
"in": "query",
"name": "case_sensitive",
"schema": {
"default": false,
"type": "boolean"
}
},
{
"in": "query",
"name": "scope",
"schema": {
"default": "bible",
"enum": [
"bible",
"old_testament",
"new_testament",
"deuterocanon"
],
"type": "string"
}
},
{
"description": "Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections.",
"explode": true,
"in": "query",
"name": "book",
"schema": {
"items": {
"type": [
"string",
"integer"
]
},
"maxItems": 83,
"type": "array"
},
"style": "form"
},
{
"description": "Comma-separated book names or numbers; combined with repeated book values.",
"in": "query",
"name": "books",
"schema": {
"description": "Comma-separated book names or numbers.",
"type": "string"
}
},
{
"description": "fold/exact; compatibility aliases insensitive/sensitive are also accepted.",
"in": "query",
"name": "diacritics",
"schema": {
"default": "fold",
"enum": [
"fold",
"exact",
"insensitive",
"sensitive"
],
"type": "string"
}
},
{
"description": "Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each.",
"explode": true,
"in": "query",
"name": "exclude",
"schema": {
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 32,
"type": "array"
},
"style": "form"
},
{
"description": "Intervening words, 0 to 100; requires words=all.",
"in": "query",
"name": "proximity",
"schema": {
"description": "Requires words=all.",
"maximum": 100,
"minimum": 0,
"type": "integer"
}
},
{
"in": "query",
"name": "sort",
"schema": {
"default": "canonical",
"enum": [
"canonical",
"relevance"
],
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 100,
"maximum": 100,
"minimum": 1,
"type": "integer"
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"maximum": 10000,
"minimum": 0,
"type": "integer"
}
}
]
}
POST /{translation}/{search}#
Short form with POST
Operation ID: searchUnversionedPost.
| Parameter | In | Required | Type | Example / default | Description |
|---|---|---|---|---|---|
translation |
path | Yes | string | kjv | Translation abbreviation; case-insensitive. |
search |
path | Yes | string | faith hope | Search words or a scripture reference, URL-encoded. |
q |
query | No | string | faith hope | Search words or a scripture reference; ignored when the search is supplied in the path. |
translation |
query | No | string | kjv | Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation. |
words |
query | No | string | all | — |
match |
query | No | string | whole_word | — |
case_sensitive |
query | No | boolean | false | Accepts true/false, 1/0 or yes/no (case-insensitive). |
scope |
query | No | string | bible | — |
book |
query | No | array | 1 | Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections. |
books |
query | No | string | John | Comma-separated book names or numbers; combined with repeated book values. |
diacritics |
query | No | string | fold | fold/exact; compatibility aliases insensitive/sensitive are also accepted. |
exclude |
query | No | array | darkness | Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each. |
proximity |
query | No | integer | 1 | Intervening words, 0 to 100; requires words=all. |
sort |
query | No | string | canonical | — |
limit |
query | No | integer | 100 | — |
offset |
query | No | integer | 0 | — |
Request body#
Optional.
Media type: application/json. Schema: #/components/schemas/SearchRequest.
Responses#
| Status | Description | Media type | Schema |
|---|---|---|---|
| 308 | Redirect preserving method, JSON body and query parameters. | — | See contract |
| 400 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 401 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 404 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 405 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 413 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 429 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 500 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 502 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 503 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 504 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
Complete operation contract
{
"operationId": "searchUnversionedPost",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchRequest"
}
}
},
"required": false
},
"responses": {
"308": {
"description": "Redirect preserving method, JSON body and query parameters.",
"headers": {
"Location": {
"schema": {
"type": "string"
}
}
}
},
"400": {
"$ref": "#/components/responses/Problem"
},
"401": {
"$ref": "#/components/responses/Problem"
},
"404": {
"$ref": "#/components/responses/Problem"
},
"405": {
"$ref": "#/components/responses/Problem"
},
"413": {
"$ref": "#/components/responses/Problem"
},
"429": {
"$ref": "#/components/responses/Problem"
},
"500": {
"$ref": "#/components/responses/Problem"
},
"502": {
"$ref": "#/components/responses/Problem"
},
"503": {
"$ref": "#/components/responses/Problem"
},
"504": {
"$ref": "#/components/responses/Problem"
}
},
"summary": "Short form with POST",
"parameters": [
{
"description": "Translation abbreviation; case-insensitive.",
"in": "path",
"name": "translation",
"required": true,
"schema": {
"type": "string"
}
},
{
"description": "Search words or a scripture reference, URL-encoded.",
"in": "path",
"name": "search",
"required": true,
"schema": {
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
{
"description": "Search words or a scripture reference; ignored when the search is supplied in the path.",
"in": "query",
"name": "q",
"schema": {
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
{
"description": "Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation.",
"in": "query",
"name": "translation",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "words",
"schema": {
"default": "all",
"enum": [
"all",
"any",
"phrase"
],
"type": "string"
}
},
{
"in": "query",
"name": "match",
"schema": {
"default": "whole_word",
"enum": [
"whole_word",
"substring"
],
"type": "string"
}
},
{
"description": "Accepts true/false, 1/0 or yes/no (case-insensitive).",
"in": "query",
"name": "case_sensitive",
"schema": {
"default": false,
"type": "boolean"
}
},
{
"in": "query",
"name": "scope",
"schema": {
"default": "bible",
"enum": [
"bible",
"old_testament",
"new_testament",
"deuterocanon"
],
"type": "string"
}
},
{
"description": "Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections.",
"explode": true,
"in": "query",
"name": "book",
"schema": {
"items": {
"type": [
"string",
"integer"
]
},
"maxItems": 83,
"type": "array"
},
"style": "form"
},
{
"description": "Comma-separated book names or numbers; combined with repeated book values.",
"in": "query",
"name": "books",
"schema": {
"description": "Comma-separated book names or numbers.",
"type": "string"
}
},
{
"description": "fold/exact; compatibility aliases insensitive/sensitive are also accepted.",
"in": "query",
"name": "diacritics",
"schema": {
"default": "fold",
"enum": [
"fold",
"exact",
"insensitive",
"sensitive"
],
"type": "string"
}
},
{
"description": "Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each.",
"explode": true,
"in": "query",
"name": "exclude",
"schema": {
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 32,
"type": "array"
},
"style": "form"
},
{
"description": "Intervening words, 0 to 100; requires words=all.",
"in": "query",
"name": "proximity",
"schema": {
"description": "Requires words=all.",
"maximum": 100,
"minimum": 0,
"type": "integer"
}
},
{
"in": "query",
"name": "sort",
"schema": {
"default": "canonical",
"enum": [
"canonical",
"relevance"
],
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 100,
"maximum": 100,
"minimum": 1,
"type": "integer"
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"maximum": 10000,
"minimum": 0,
"type": "integer"
}
}
]
}
GET /v2/openapi.json#
Public API contract
Operation ID: openapi.
Responses#
| Status | Description | Media type | Schema |
|---|---|---|---|
| 200 | Generated OpenAPI 3.1 JSON document. | application/json | object |
Complete operation contract
{
"operationId": "openapi",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"properties": {
"info": {
"type": "object"
},
"openapi": {
"type": "string"
},
"paths": {
"type": "object"
}
},
"required": [
"openapi",
"info",
"paths"
],
"type": "object"
}
}
},
"description": "Generated OpenAPI 3.1 JSON document."
}
},
"security": [],
"summary": "Public API contract",
"parameters": []
}
GET /v2/{translation}#
Search using URL parameters
The path wins over query parameters. Only book and exclude may repeat. Filters override configured defaults; scripture references return scripture without applying full-text filters. GET bodies are not read.
Operation ID: searchTranslation.
| Parameter | In | Required | Type | Example / default | Description |
|---|---|---|---|---|---|
translation |
path | Yes | string | kjv | Translation abbreviation; case-insensitive. |
q |
query | No | string | faith hope | Search words or a scripture reference; ignored when the search is supplied in the path. |
translation |
query | No | string | kjv | Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation. |
words |
query | No | string | all | — |
match |
query | No | string | whole_word | — |
case_sensitive |
query | No | boolean | false | Accepts true/false, 1/0 or yes/no (case-insensitive). |
scope |
query | No | string | bible | — |
book |
query | No | array | 1 | Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections. |
books |
query | No | string | John | Comma-separated book names or numbers; combined with repeated book values. |
diacritics |
query | No | string | fold | fold/exact; compatibility aliases insensitive/sensitive are also accepted. |
exclude |
query | No | array | darkness | Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each. |
proximity |
query | No | integer | 1 | Intervening words, 0 to 100; requires words=all. |
sort |
query | No | string | canonical | — |
limit |
query | No | integer | 100 | — |
offset |
query | No | integer | 0 | — |
Responses#
| Status | Description | Media type | Schema |
|---|---|---|---|
| 200 | Search result, or scripture when the text is a reference. | application/json | #/components/schemas/SearchResult |
| 301 | An unrecognised translation segment is interpreted as the search string and redirected to the default translation. | — | See contract |
| 304 | Not modified for an ETag conditional GET. | — | See contract |
| 400 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 401 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 404 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 405 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 413 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 429 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 500 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 502 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 503 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 504 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
Complete operation contract
{
"description": "The path wins over query parameters. Only book and exclude may repeat. Filters override configured defaults; scripture references return scripture without applying full-text filters. GET bodies are not read.",
"operationId": "searchTranslation",
"responses": {
"200": {
"$ref": "#/components/responses/SearchResult"
},
"301": {
"description": "An unrecognised translation segment is interpreted as the search string and redirected to the default translation.",
"headers": {
"Location": {
"schema": {
"type": "string"
}
}
}
},
"304": {
"description": "Not modified for an ETag conditional GET."
},
"400": {
"$ref": "#/components/responses/Problem"
},
"401": {
"$ref": "#/components/responses/Problem"
},
"404": {
"$ref": "#/components/responses/Problem"
},
"405": {
"$ref": "#/components/responses/Problem"
},
"413": {
"$ref": "#/components/responses/Problem"
},
"429": {
"$ref": "#/components/responses/Problem"
},
"500": {
"$ref": "#/components/responses/Problem"
},
"502": {
"$ref": "#/components/responses/Problem"
},
"503": {
"$ref": "#/components/responses/Problem"
},
"504": {
"$ref": "#/components/responses/Problem"
}
},
"summary": "Search using URL parameters",
"parameters": [
{
"description": "Translation abbreviation; case-insensitive.",
"in": "path",
"name": "translation",
"required": true,
"schema": {
"type": "string"
}
},
{
"description": "Search words or a scripture reference; ignored when the search is supplied in the path.",
"in": "query",
"name": "q",
"schema": {
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
{
"description": "Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation.",
"in": "query",
"name": "translation",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "words",
"schema": {
"default": "all",
"enum": [
"all",
"any",
"phrase"
],
"type": "string"
}
},
{
"in": "query",
"name": "match",
"schema": {
"default": "whole_word",
"enum": [
"whole_word",
"substring"
],
"type": "string"
}
},
{
"description": "Accepts true/false, 1/0 or yes/no (case-insensitive).",
"in": "query",
"name": "case_sensitive",
"schema": {
"default": false,
"type": "boolean"
}
},
{
"in": "query",
"name": "scope",
"schema": {
"default": "bible",
"enum": [
"bible",
"old_testament",
"new_testament",
"deuterocanon"
],
"type": "string"
}
},
{
"description": "Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections.",
"explode": true,
"in": "query",
"name": "book",
"schema": {
"items": {
"type": [
"string",
"integer"
]
},
"maxItems": 83,
"type": "array"
},
"style": "form"
},
{
"description": "Comma-separated book names or numbers; combined with repeated book values.",
"in": "query",
"name": "books",
"schema": {
"description": "Comma-separated book names or numbers.",
"type": "string"
}
},
{
"description": "fold/exact; compatibility aliases insensitive/sensitive are also accepted.",
"in": "query",
"name": "diacritics",
"schema": {
"default": "fold",
"enum": [
"fold",
"exact",
"insensitive",
"sensitive"
],
"type": "string"
}
},
{
"description": "Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each.",
"explode": true,
"in": "query",
"name": "exclude",
"schema": {
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 32,
"type": "array"
},
"style": "form"
},
{
"description": "Intervening words, 0 to 100; requires words=all.",
"in": "query",
"name": "proximity",
"schema": {
"description": "Requires words=all.",
"maximum": 100,
"minimum": 0,
"type": "integer"
}
},
{
"in": "query",
"name": "sort",
"schema": {
"default": "canonical",
"enum": [
"canonical",
"relevance"
],
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 100,
"maximum": 100,
"minimum": 1,
"type": "integer"
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"maximum": 10000,
"minimum": 0,
"type": "integer"
}
}
]
}
POST /v2/{translation}#
Search using URL parameters, a JSON body, or both
The same search implementation as GET. Path > query parameters > JSON body > configured defaults. A body is optional when q is provided in the URL. Scripture references return scripture without applying full-text filters.
Operation ID: searchTranslationPost.
| Parameter | In | Required | Type | Example / default | Description |
|---|---|---|---|---|---|
translation |
path | Yes | string | kjv | Translation abbreviation; case-insensitive. |
q |
query | No | string | faith hope | Search words or a scripture reference; ignored when the search is supplied in the path. |
translation |
query | No | string | kjv | Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation. |
words |
query | No | string | all | — |
match |
query | No | string | whole_word | — |
case_sensitive |
query | No | boolean | false | Accepts true/false, 1/0 or yes/no (case-insensitive). |
scope |
query | No | string | bible | — |
book |
query | No | array | 1 | Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections. |
books |
query | No | string | John | Comma-separated book names or numbers; combined with repeated book values. |
diacritics |
query | No | string | fold | fold/exact; compatibility aliases insensitive/sensitive are also accepted. |
exclude |
query | No | array | darkness | Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each. |
proximity |
query | No | integer | 1 | Intervening words, 0 to 100; requires words=all. |
sort |
query | No | string | canonical | — |
limit |
query | No | integer | 100 | — |
offset |
query | No | integer | 0 | — |
Request body#
Optional.
Media type: application/json. Schema: #/components/schemas/SearchRequest.
{
"limit": 25,
"q": "faith hope",
"words": "any"
}
Responses#
| Status | Description | Media type | Schema |
|---|---|---|---|
| 200 | Search result, or scripture when the text is a reference. | application/json | #/components/schemas/SearchResult |
| 308 | An unrecognised translation segment is interpreted as the search string; redirect preserves POST, body and query parameters. | — | See contract |
| 400 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 401 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 404 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 405 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 413 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 415 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 429 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 500 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 502 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 503 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 504 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
Complete operation contract
{
"description": "The same search implementation as GET. Path > query parameters > JSON body > configured defaults. A body is optional when q is provided in the URL. Scripture references return scripture without applying full-text filters.",
"operationId": "searchTranslationPost",
"requestBody": {
"content": {
"application/json": {
"example": {
"limit": 25,
"q": "faith hope",
"words": "any"
},
"schema": {
"$ref": "#/components/schemas/SearchRequest"
}
}
},
"required": false
},
"responses": {
"200": {
"$ref": "#/components/responses/SearchResult"
},
"308": {
"description": "An unrecognised translation segment is interpreted as the search string; redirect preserves POST, body and query parameters.",
"headers": {
"Location": {
"schema": {
"type": "string"
}
}
}
},
"400": {
"$ref": "#/components/responses/Problem"
},
"401": {
"$ref": "#/components/responses/Problem"
},
"404": {
"$ref": "#/components/responses/Problem"
},
"405": {
"$ref": "#/components/responses/Problem"
},
"413": {
"$ref": "#/components/responses/Problem"
},
"415": {
"$ref": "#/components/responses/Problem"
},
"429": {
"$ref": "#/components/responses/Problem"
},
"500": {
"$ref": "#/components/responses/Problem"
},
"502": {
"$ref": "#/components/responses/Problem"
},
"503": {
"$ref": "#/components/responses/Problem"
},
"504": {
"$ref": "#/components/responses/Problem"
}
},
"summary": "Search using URL parameters, a JSON body, or both",
"parameters": [
{
"description": "Translation abbreviation; case-insensitive.",
"in": "path",
"name": "translation",
"required": true,
"schema": {
"type": "string"
}
},
{
"description": "Search words or a scripture reference; ignored when the search is supplied in the path.",
"in": "query",
"name": "q",
"schema": {
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
{
"description": "Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation.",
"in": "query",
"name": "translation",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "words",
"schema": {
"default": "all",
"enum": [
"all",
"any",
"phrase"
],
"type": "string"
}
},
{
"in": "query",
"name": "match",
"schema": {
"default": "whole_word",
"enum": [
"whole_word",
"substring"
],
"type": "string"
}
},
{
"description": "Accepts true/false, 1/0 or yes/no (case-insensitive).",
"in": "query",
"name": "case_sensitive",
"schema": {
"default": false,
"type": "boolean"
}
},
{
"in": "query",
"name": "scope",
"schema": {
"default": "bible",
"enum": [
"bible",
"old_testament",
"new_testament",
"deuterocanon"
],
"type": "string"
}
},
{
"description": "Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections.",
"explode": true,
"in": "query",
"name": "book",
"schema": {
"items": {
"type": [
"string",
"integer"
]
},
"maxItems": 83,
"type": "array"
},
"style": "form"
},
{
"description": "Comma-separated book names or numbers; combined with repeated book values.",
"in": "query",
"name": "books",
"schema": {
"description": "Comma-separated book names or numbers.",
"type": "string"
}
},
{
"description": "fold/exact; compatibility aliases insensitive/sensitive are also accepted.",
"in": "query",
"name": "diacritics",
"schema": {
"default": "fold",
"enum": [
"fold",
"exact",
"insensitive",
"sensitive"
],
"type": "string"
}
},
{
"description": "Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each.",
"explode": true,
"in": "query",
"name": "exclude",
"schema": {
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 32,
"type": "array"
},
"style": "form"
},
{
"description": "Intervening words, 0 to 100; requires words=all.",
"in": "query",
"name": "proximity",
"schema": {
"description": "Requires words=all.",
"maximum": 100,
"minimum": 0,
"type": "integer"
}
},
{
"in": "query",
"name": "sort",
"schema": {
"default": "canonical",
"enum": [
"canonical",
"relevance"
],
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 100,
"maximum": 100,
"minimum": 1,
"type": "integer"
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"maximum": 10000,
"minimum": 0,
"type": "integer"
}
}
]
}
GET /v2/{translation}/{search}#
Search using URL parameters
The path wins over query parameters. Only book and exclude may repeat. Filters override configured defaults; scripture references return scripture without applying full-text filters. GET bodies are not read.
Operation ID: search.
| Parameter | In | Required | Type | Example / default | Description |
|---|---|---|---|---|---|
translation |
path | Yes | string | kjv | Translation abbreviation; case-insensitive. |
search |
path | Yes | string | faith hope | Search words or a scripture reference, URL-encoded. |
q |
query | No | string | faith hope | Search words or a scripture reference; ignored when the search is supplied in the path. |
translation |
query | No | string | kjv | Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation. |
words |
query | No | string | all | — |
match |
query | No | string | whole_word | — |
case_sensitive |
query | No | boolean | false | Accepts true/false, 1/0 or yes/no (case-insensitive). |
scope |
query | No | string | bible | — |
book |
query | No | array | 1 | Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections. |
books |
query | No | string | John | Comma-separated book names or numbers; combined with repeated book values. |
diacritics |
query | No | string | fold | fold/exact; compatibility aliases insensitive/sensitive are also accepted. |
exclude |
query | No | array | darkness | Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each. |
proximity |
query | No | integer | 1 | Intervening words, 0 to 100; requires words=all. |
sort |
query | No | string | canonical | — |
limit |
query | No | integer | 100 | — |
offset |
query | No | integer | 0 | — |
Responses#
| Status | Description | Media type | Schema |
|---|---|---|---|
| 200 | Search result, or scripture when the text is a reference. | application/json | #/components/schemas/SearchResult |
| 304 | Not modified for an ETag conditional GET. | — | See contract |
| 400 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 401 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 404 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 405 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 413 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 429 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 500 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 502 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 503 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 504 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
Complete operation contract
{
"description": "The path wins over query parameters. Only book and exclude may repeat. Filters override configured defaults; scripture references return scripture without applying full-text filters. GET bodies are not read.",
"operationId": "search",
"responses": {
"200": {
"$ref": "#/components/responses/SearchResult"
},
"304": {
"description": "Not modified for an ETag conditional GET."
},
"400": {
"$ref": "#/components/responses/Problem"
},
"401": {
"$ref": "#/components/responses/Problem"
},
"404": {
"$ref": "#/components/responses/Problem"
},
"405": {
"$ref": "#/components/responses/Problem"
},
"413": {
"$ref": "#/components/responses/Problem"
},
"429": {
"$ref": "#/components/responses/Problem"
},
"500": {
"$ref": "#/components/responses/Problem"
},
"502": {
"$ref": "#/components/responses/Problem"
},
"503": {
"$ref": "#/components/responses/Problem"
},
"504": {
"$ref": "#/components/responses/Problem"
}
},
"summary": "Search using URL parameters",
"parameters": [
{
"description": "Translation abbreviation; case-insensitive.",
"in": "path",
"name": "translation",
"required": true,
"schema": {
"type": "string"
}
},
{
"description": "Search words or a scripture reference, URL-encoded.",
"in": "path",
"name": "search",
"required": true,
"schema": {
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
{
"description": "Search words or a scripture reference; ignored when the search is supplied in the path.",
"in": "query",
"name": "q",
"schema": {
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
{
"description": "Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation.",
"in": "query",
"name": "translation",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "words",
"schema": {
"default": "all",
"enum": [
"all",
"any",
"phrase"
],
"type": "string"
}
},
{
"in": "query",
"name": "match",
"schema": {
"default": "whole_word",
"enum": [
"whole_word",
"substring"
],
"type": "string"
}
},
{
"description": "Accepts true/false, 1/0 or yes/no (case-insensitive).",
"in": "query",
"name": "case_sensitive",
"schema": {
"default": false,
"type": "boolean"
}
},
{
"in": "query",
"name": "scope",
"schema": {
"default": "bible",
"enum": [
"bible",
"old_testament",
"new_testament",
"deuterocanon"
],
"type": "string"
}
},
{
"description": "Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections.",
"explode": true,
"in": "query",
"name": "book",
"schema": {
"items": {
"type": [
"string",
"integer"
]
},
"maxItems": 83,
"type": "array"
},
"style": "form"
},
{
"description": "Comma-separated book names or numbers; combined with repeated book values.",
"in": "query",
"name": "books",
"schema": {
"description": "Comma-separated book names or numbers.",
"type": "string"
}
},
{
"description": "fold/exact; compatibility aliases insensitive/sensitive are also accepted.",
"in": "query",
"name": "diacritics",
"schema": {
"default": "fold",
"enum": [
"fold",
"exact",
"insensitive",
"sensitive"
],
"type": "string"
}
},
{
"description": "Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each.",
"explode": true,
"in": "query",
"name": "exclude",
"schema": {
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 32,
"type": "array"
},
"style": "form"
},
{
"description": "Intervening words, 0 to 100; requires words=all.",
"in": "query",
"name": "proximity",
"schema": {
"description": "Requires words=all.",
"maximum": 100,
"minimum": 0,
"type": "integer"
}
},
{
"in": "query",
"name": "sort",
"schema": {
"default": "canonical",
"enum": [
"canonical",
"relevance"
],
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 100,
"maximum": 100,
"minimum": 1,
"type": "integer"
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"maximum": 10000,
"minimum": 0,
"type": "integer"
}
}
]
}
POST /v2/{translation}/{search}#
Search using URL parameters, a JSON body, or both
The same search implementation as GET. Path > query parameters > JSON body > configured defaults. A body is optional when q is provided in the URL. Scripture references return scripture without applying full-text filters.
Operation ID: searchPost.
| Parameter | In | Required | Type | Example / default | Description |
|---|---|---|---|---|---|
translation |
path | Yes | string | kjv | Translation abbreviation; case-insensitive. |
search |
path | Yes | string | faith hope | Search words or a scripture reference, URL-encoded. |
q |
query | No | string | faith hope | Search words or a scripture reference; ignored when the search is supplied in the path. |
translation |
query | No | string | kjv | Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation. |
words |
query | No | string | all | — |
match |
query | No | string | whole_word | — |
case_sensitive |
query | No | boolean | false | Accepts true/false, 1/0 or yes/no (case-insensitive). |
scope |
query | No | string | bible | — |
book |
query | No | array | 1 | Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections. |
books |
query | No | string | John | Comma-separated book names or numbers; combined with repeated book values. |
diacritics |
query | No | string | fold | fold/exact; compatibility aliases insensitive/sensitive are also accepted. |
exclude |
query | No | array | darkness | Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each. |
proximity |
query | No | integer | 1 | Intervening words, 0 to 100; requires words=all. |
sort |
query | No | string | canonical | — |
limit |
query | No | integer | 100 | — |
offset |
query | No | integer | 0 | — |
Request body#
Optional.
Media type: application/json. Schema: #/components/schemas/SearchRequest.
{
"limit": 25,
"q": "faith hope",
"words": "any"
}
Responses#
| Status | Description | Media type | Schema |
|---|---|---|---|
| 200 | Search result, or scripture when the text is a reference. | application/json | #/components/schemas/SearchResult |
| 400 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 401 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 404 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 405 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 413 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 415 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 429 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 500 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 502 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 503 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 504 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
Complete operation contract
{
"description": "The same search implementation as GET. Path > query parameters > JSON body > configured defaults. A body is optional when q is provided in the URL. Scripture references return scripture without applying full-text filters.",
"operationId": "searchPost",
"requestBody": {
"content": {
"application/json": {
"example": {
"limit": 25,
"q": "faith hope",
"words": "any"
},
"schema": {
"$ref": "#/components/schemas/SearchRequest"
}
}
},
"required": false
},
"responses": {
"200": {
"$ref": "#/components/responses/SearchResult"
},
"400": {
"$ref": "#/components/responses/Problem"
},
"401": {
"$ref": "#/components/responses/Problem"
},
"404": {
"$ref": "#/components/responses/Problem"
},
"405": {
"$ref": "#/components/responses/Problem"
},
"413": {
"$ref": "#/components/responses/Problem"
},
"415": {
"$ref": "#/components/responses/Problem"
},
"429": {
"$ref": "#/components/responses/Problem"
},
"500": {
"$ref": "#/components/responses/Problem"
},
"502": {
"$ref": "#/components/responses/Problem"
},
"503": {
"$ref": "#/components/responses/Problem"
},
"504": {
"$ref": "#/components/responses/Problem"
}
},
"summary": "Search using URL parameters, a JSON body, or both",
"parameters": [
{
"description": "Translation abbreviation; case-insensitive.",
"in": "path",
"name": "translation",
"required": true,
"schema": {
"type": "string"
}
},
{
"description": "Search words or a scripture reference, URL-encoded.",
"in": "path",
"name": "search",
"required": true,
"schema": {
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
{
"description": "Search words or a scripture reference; ignored when the search is supplied in the path.",
"in": "query",
"name": "q",
"schema": {
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
{
"description": "Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation.",
"in": "query",
"name": "translation",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "words",
"schema": {
"default": "all",
"enum": [
"all",
"any",
"phrase"
],
"type": "string"
}
},
{
"in": "query",
"name": "match",
"schema": {
"default": "whole_word",
"enum": [
"whole_word",
"substring"
],
"type": "string"
}
},
{
"description": "Accepts true/false, 1/0 or yes/no (case-insensitive).",
"in": "query",
"name": "case_sensitive",
"schema": {
"default": false,
"type": "boolean"
}
},
{
"in": "query",
"name": "scope",
"schema": {
"default": "bible",
"enum": [
"bible",
"old_testament",
"new_testament",
"deuterocanon"
],
"type": "string"
}
},
{
"description": "Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections.",
"explode": true,
"in": "query",
"name": "book",
"schema": {
"items": {
"type": [
"string",
"integer"
]
},
"maxItems": 83,
"type": "array"
},
"style": "form"
},
{
"description": "Comma-separated book names or numbers; combined with repeated book values.",
"in": "query",
"name": "books",
"schema": {
"description": "Comma-separated book names or numbers.",
"type": "string"
}
},
{
"description": "fold/exact; compatibility aliases insensitive/sensitive are also accepted.",
"in": "query",
"name": "diacritics",
"schema": {
"default": "fold",
"enum": [
"fold",
"exact",
"insensitive",
"sensitive"
],
"type": "string"
}
},
{
"description": "Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each.",
"explode": true,
"in": "query",
"name": "exclude",
"schema": {
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 32,
"type": "array"
},
"style": "form"
},
{
"description": "Intervening words, 0 to 100; requires words=all.",
"in": "query",
"name": "proximity",
"schema": {
"description": "Requires words=all.",
"maximum": 100,
"minimum": 0,
"type": "integer"
}
},
{
"in": "query",
"name": "sort",
"schema": {
"default": "canonical",
"enum": [
"canonical",
"relevance"
],
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 100,
"maximum": 100,
"minimum": 1,
"type": "integer"
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"maximum": 10000,
"minimum": 0,
"type": "integer"
}
}
]
}
GET /v2#
Search using URL parameters
The path wins over query parameters. Only book and exclude may repeat. Filters override configured defaults; scripture references return scripture without applying full-text filters. GET bodies are not read. At a domain root, a request without query parameters serves the public documentation page; API requests at that path use the configured API access policy.
Operation ID: searchDefault.
| Parameter | In | Required | Type | Example / default | Description |
|---|---|---|---|---|---|
q |
query | No | string | faith hope | Search words or a scripture reference; ignored when the search is supplied in the path. |
translation |
query | No | string | kjv | Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation. |
words |
query | No | string | all | — |
match |
query | No | string | whole_word | — |
case_sensitive |
query | No | boolean | false | Accepts true/false, 1/0 or yes/no (case-insensitive). |
scope |
query | No | string | bible | — |
book |
query | No | array | 1 | Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections. |
books |
query | No | string | John | Comma-separated book names or numbers; combined with repeated book values. |
diacritics |
query | No | string | fold | fold/exact; compatibility aliases insensitive/sensitive are also accepted. |
exclude |
query | No | array | darkness | Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each. |
proximity |
query | No | integer | 1 | Intervening words, 0 to 100; requires words=all. |
sort |
query | No | string | canonical | — |
limit |
query | No | integer | 100 | — |
offset |
query | No | integer | 0 | — |
Responses#
| Status | Description | Media type | Schema |
|---|---|---|---|
| 200 | Search result, or scripture when the text is a reference. | application/json | #/components/schemas/SearchResult |
| 304 | Not modified for an ETag conditional GET. | — | See contract |
| 400 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 401 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 404 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 405 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 413 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 429 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 500 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 502 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 503 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 504 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
Complete operation contract
{
"description": "The path wins over query parameters. Only book and exclude may repeat. Filters override configured defaults; scripture references return scripture without applying full-text filters. GET bodies are not read. At a domain root, a request without query parameters serves the public documentation page; API requests at that path use the configured API access policy.",
"operationId": "searchDefault",
"responses": {
"200": {
"$ref": "#/components/responses/SearchResult"
},
"304": {
"description": "Not modified for an ETag conditional GET."
},
"400": {
"$ref": "#/components/responses/Problem"
},
"401": {
"$ref": "#/components/responses/Problem"
},
"404": {
"$ref": "#/components/responses/Problem"
},
"405": {
"$ref": "#/components/responses/Problem"
},
"413": {
"$ref": "#/components/responses/Problem"
},
"429": {
"$ref": "#/components/responses/Problem"
},
"500": {
"$ref": "#/components/responses/Problem"
},
"502": {
"$ref": "#/components/responses/Problem"
},
"503": {
"$ref": "#/components/responses/Problem"
},
"504": {
"$ref": "#/components/responses/Problem"
}
},
"summary": "Search using URL parameters",
"parameters": [
{
"description": "Search words or a scripture reference; ignored when the search is supplied in the path.",
"in": "query",
"name": "q",
"schema": {
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
{
"description": "Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation.",
"in": "query",
"name": "translation",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "words",
"schema": {
"default": "all",
"enum": [
"all",
"any",
"phrase"
],
"type": "string"
}
},
{
"in": "query",
"name": "match",
"schema": {
"default": "whole_word",
"enum": [
"whole_word",
"substring"
],
"type": "string"
}
},
{
"description": "Accepts true/false, 1/0 or yes/no (case-insensitive).",
"in": "query",
"name": "case_sensitive",
"schema": {
"default": false,
"type": "boolean"
}
},
{
"in": "query",
"name": "scope",
"schema": {
"default": "bible",
"enum": [
"bible",
"old_testament",
"new_testament",
"deuterocanon"
],
"type": "string"
}
},
{
"description": "Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections.",
"explode": true,
"in": "query",
"name": "book",
"schema": {
"items": {
"type": [
"string",
"integer"
]
},
"maxItems": 83,
"type": "array"
},
"style": "form"
},
{
"description": "Comma-separated book names or numbers; combined with repeated book values.",
"in": "query",
"name": "books",
"schema": {
"description": "Comma-separated book names or numbers.",
"type": "string"
}
},
{
"description": "fold/exact; compatibility aliases insensitive/sensitive are also accepted.",
"in": "query",
"name": "diacritics",
"schema": {
"default": "fold",
"enum": [
"fold",
"exact",
"insensitive",
"sensitive"
],
"type": "string"
}
},
{
"description": "Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each.",
"explode": true,
"in": "query",
"name": "exclude",
"schema": {
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 32,
"type": "array"
},
"style": "form"
},
{
"description": "Intervening words, 0 to 100; requires words=all.",
"in": "query",
"name": "proximity",
"schema": {
"description": "Requires words=all.",
"maximum": 100,
"minimum": 0,
"type": "integer"
}
},
{
"in": "query",
"name": "sort",
"schema": {
"default": "canonical",
"enum": [
"canonical",
"relevance"
],
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 100,
"maximum": 100,
"minimum": 1,
"type": "integer"
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"maximum": 10000,
"minimum": 0,
"type": "integer"
}
}
]
}
POST /v2#
Search using URL parameters, a JSON body, or both
The same search implementation as GET. Path > query parameters > JSON body > configured defaults. A body is optional when q is provided in the URL. Scripture references return scripture without applying full-text filters.
Operation ID: searchDefaultPost.
| Parameter | In | Required | Type | Example / default | Description |
|---|---|---|---|---|---|
q |
query | No | string | faith hope | Search words or a scripture reference; ignored when the search is supplied in the path. |
translation |
query | No | string | kjv | Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation. |
words |
query | No | string | all | — |
match |
query | No | string | whole_word | — |
case_sensitive |
query | No | boolean | false | Accepts true/false, 1/0 or yes/no (case-insensitive). |
scope |
query | No | string | bible | — |
book |
query | No | array | 1 | Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections. |
books |
query | No | string | John | Comma-separated book names or numbers; combined with repeated book values. |
diacritics |
query | No | string | fold | fold/exact; compatibility aliases insensitive/sensitive are also accepted. |
exclude |
query | No | array | darkness | Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each. |
proximity |
query | No | integer | 1 | Intervening words, 0 to 100; requires words=all. |
sort |
query | No | string | canonical | — |
limit |
query | No | integer | 100 | — |
offset |
query | No | integer | 0 | — |
Request body#
Optional.
Media type: application/json. Schema: #/components/schemas/SearchRequest.
{
"limit": 25,
"q": "faith hope",
"words": "any"
}
Responses#
| Status | Description | Media type | Schema |
|---|---|---|---|
| 200 | Search result, or scripture when the text is a reference. | application/json | #/components/schemas/SearchResult |
| 400 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 401 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 404 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 405 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 413 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 415 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 429 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 500 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 502 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 503 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
| 504 | RFC 9457 error. Existing access policies apply to API data requests. | application/problem+json | #/components/schemas/Problem |
Complete operation contract
{
"description": "The same search implementation as GET. Path > query parameters > JSON body > configured defaults. A body is optional when q is provided in the URL. Scripture references return scripture without applying full-text filters.",
"operationId": "searchDefaultPost",
"requestBody": {
"content": {
"application/json": {
"example": {
"limit": 25,
"q": "faith hope",
"words": "any"
},
"schema": {
"$ref": "#/components/schemas/SearchRequest"
}
}
},
"required": false
},
"responses": {
"200": {
"$ref": "#/components/responses/SearchResult"
},
"400": {
"$ref": "#/components/responses/Problem"
},
"401": {
"$ref": "#/components/responses/Problem"
},
"404": {
"$ref": "#/components/responses/Problem"
},
"405": {
"$ref": "#/components/responses/Problem"
},
"413": {
"$ref": "#/components/responses/Problem"
},
"415": {
"$ref": "#/components/responses/Problem"
},
"429": {
"$ref": "#/components/responses/Problem"
},
"500": {
"$ref": "#/components/responses/Problem"
},
"502": {
"$ref": "#/components/responses/Problem"
},
"503": {
"$ref": "#/components/responses/Problem"
},
"504": {
"$ref": "#/components/responses/Problem"
}
},
"summary": "Search using URL parameters, a JSON body, or both",
"parameters": [
{
"description": "Search words or a scripture reference; ignored when the search is supplied in the path.",
"in": "query",
"name": "q",
"schema": {
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
{
"description": "Translation abbreviation (case-insensitive); defaults to kjv and is overridden by a path translation.",
"in": "query",
"name": "translation",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "words",
"schema": {
"default": "all",
"enum": [
"all",
"any",
"phrase"
],
"type": "string"
}
},
{
"in": "query",
"name": "match",
"schema": {
"default": "whole_word",
"enum": [
"whole_word",
"substring"
],
"type": "string"
}
},
{
"description": "Accepts true/false, 1/0 or yes/no (case-insensitive).",
"in": "query",
"name": "case_sensitive",
"schema": {
"default": false,
"type": "boolean"
}
},
{
"in": "query",
"name": "scope",
"schema": {
"default": "bible",
"enum": [
"bible",
"old_testament",
"new_testament",
"deuterocanon"
],
"type": "string"
}
},
{
"description": "Repeat book=Genesis&book=2 to select books; combined with books. At most 83 combined selections.",
"explode": true,
"in": "query",
"name": "book",
"schema": {
"items": {
"type": [
"string",
"integer"
]
},
"maxItems": 83,
"type": "array"
},
"style": "form"
},
{
"description": "Comma-separated book names or numbers; combined with repeated book values.",
"in": "query",
"name": "books",
"schema": {
"description": "Comma-separated book names or numbers.",
"type": "string"
}
},
{
"description": "fold/exact; compatibility aliases insensitive/sensitive are also accepted.",
"in": "query",
"name": "diacritics",
"schema": {
"default": "fold",
"enum": [
"fold",
"exact",
"insensitive",
"sensitive"
],
"type": "string"
}
},
{
"description": "Repeat exclude=word to exclude multiple terms; at most 32 terms of 100 characters each.",
"explode": true,
"in": "query",
"name": "exclude",
"schema": {
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 32,
"type": "array"
},
"style": "form"
},
{
"description": "Intervening words, 0 to 100; requires words=all.",
"in": "query",
"name": "proximity",
"schema": {
"description": "Requires words=all.",
"maximum": 100,
"minimum": 0,
"type": "integer"
}
},
{
"in": "query",
"name": "sort",
"schema": {
"default": "canonical",
"enum": [
"canonical",
"relevance"
],
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"default": 100,
"maximum": 100,
"minimum": 1,
"type": "integer"
}
},
{
"in": "query",
"name": "offset",
"schema": {
"default": 0,
"maximum": 10000,
"minimum": 0,
"type": "integer"
}
}
]
}
Component schemas#
Types, required properties, nested objects, constraints and examples below are copied directly from the contract. A property omitted from a schema’s required array is optional, even when examples include it.
Criteria#
View full Criteria schema
{
"properties": {
"books": {
"items": {
"type": [
"integer",
"string"
]
},
"type": "array"
},
"case_sensitive": {
"default": false,
"type": "boolean"
},
"diacritics": {
"default": "fold",
"enum": [
"fold",
"exact",
"insensitive",
"sensitive"
],
"type": "string"
},
"exclude": {
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 32,
"type": "array"
},
"limit": {
"default": 100,
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"match": {
"default": "whole_word",
"enum": [
"whole_word",
"substring"
],
"type": "string"
},
"offset": {
"default": 0,
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"proximity": {
"maximum": 100,
"minimum": 0,
"type": [
"integer",
"null"
]
},
"scope": {
"default": "bible",
"enum": [
"bible",
"old_testament",
"new_testament",
"deuterocanon"
],
"type": "string"
},
"sort": {
"default": "canonical",
"enum": [
"canonical",
"relevance"
],
"type": "string"
},
"words": {
"default": "all",
"enum": [
"all",
"any",
"phrase"
],
"type": "string"
}
},
"required": [
"words",
"match",
"case_sensitive",
"scope",
"books",
"diacritics",
"exclude",
"proximity",
"sort",
"limit",
"offset"
],
"type": "object"
}
Health#
View full Health schema
{
"properties": {
"status": {
"enum": [
"ok",
"ready"
],
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
}
Problem#
RFC 9457 problem document.
View full Problem schema
{
"description": "RFC 9457 problem document.",
"properties": {
"code": {
"type": "string"
},
"detail": {
"type": "string"
},
"instance": {
"type": "string"
},
"retry_after": {
"minimum": 0,
"type": "integer"
},
"status": {
"type": "integer"
},
"title": {
"type": "string"
},
"type": {
"format": "uri",
"type": "string"
}
},
"required": [
"type",
"title",
"status",
"code",
"detail",
"instance"
],
"type": "object"
}
Scripture#
One entry per chapter, keyed {translation}{book}{chapter}, with compact API translation metadata and selected verses. Verse source fields are retained; static chapter editorial is excluded.
View full Scripture schema
{
"additionalProperties": {
"properties": {
"abbreviation": {
"type": "string"
},
"book_name": {
"type": "string"
},
"book_nr": {
"type": "integer"
},
"chapter": {
"type": "integer"
},
"direction": {
"type": "string"
},
"encoding": {
"type": "string"
},
"lang": {
"type": "string"
},
"language": {
"type": "string"
},
"name": {
"type": "string"
},
"ref": {
"items": {
"type": "string"
},
"type": "array"
},
"translation": {
"type": "string"
},
"verses": {
"items": {
"$ref": "#/components/schemas/Verse"
},
"type": "array"
}
},
"required": [
"book_nr",
"chapter",
"verses"
],
"type": "object"
},
"description": "One entry per chapter, keyed {translation}_{book}_{chapter}, with compact API translation metadata and selected verses. Verse source fields are retained; static chapter editorial is excluded.",
"type": "object"
}
SearchMatch#
Reference results omit score, occurrences and terms.
View full SearchMatch schema
{
"description": "Reference results omit score, occurrences and terms.",
"properties": {
"book_nr": {
"type": "integer"
},
"chapter": {
"type": "integer"
},
"occurrences": {
"minimum": 0,
"type": "integer"
},
"reference": {
"type": "string"
},
"score": {
"type": "number"
},
"terms": {
"items": {
"type": "string"
},
"type": "array"
},
"verse": {
"type": "integer"
}
},
"required": [
"reference",
"book_nr",
"chapter",
"verse"
],
"type": "object"
}
SearchQuery#
Reference results omit criteria, sha, pagination, cache, analysis and cost. Filters are only applied to full-text searches.
View full SearchQuery schema
{
"description": "Reference results omit criteria, sha, pagination, cache, analysis and cost. Filters are only applied to full-text searches.",
"properties": {
"analysis": {
"properties": {
"script": {
"type": "string"
}
},
"type": "object"
},
"cache": {
"properties": {
"checked_at": {
"type": [
"number",
"null"
]
},
"stale": {
"type": "boolean"
}
},
"type": "object"
},
"cost": {
"properties": {
"deadline_seconds": {
"type": "number"
},
"expensive": {
"type": "boolean"
},
"work_units": {
"minimum": 0,
"type": "integer"
}
},
"type": "object"
},
"criteria": {
"$ref": "#/components/schemas/Criteria"
},
"engine_version": {
"type": "integer"
},
"has_more": {
"type": "boolean"
},
"kind": {
"enum": [
"search",
"reference"
],
"type": "string"
},
"limit": {
"minimum": 1,
"type": "integer"
},
"offset": {
"minimum": 0,
"type": "integer"
},
"returned": {
"minimum": 0,
"type": "integer"
},
"sha": {
"type": [
"string",
"null"
]
},
"text": {
"type": "string"
},
"total": {
"minimum": 0,
"type": "integer"
},
"translation": {
"anyOf": [
{
"$ref": "#/components/schemas/Translation"
},
{
"type": "string"
}
]
}
},
"required": [
"text",
"kind",
"translation",
"engine_version",
"total",
"returned"
],
"type": "object"
}
SearchRequest#
All fields are optional when supplied in the path/query. GET uses query parameters. POST accepts query parameters, a JSON object, or both. Path > query > body > configured defaults; null body fields preserve a lower-priority value. book and books are combined.
View full SearchRequest schema
{
"additionalProperties": false,
"description": "All fields are optional when supplied in the path/query. GET uses query parameters. POST accepts query parameters, a JSON object, or both. Path > query > body > configured defaults; null body fields preserve a lower-priority value. book and books are combined.",
"properties": {
"book": {
"anyOf": [
{
"anyOf": [
{
"type": [
"string",
"integer"
]
},
{
"items": {
"type": [
"string",
"integer"
]
},
"maxItems": 83,
"type": "array"
}
]
},
{
"type": "null"
}
],
"description": "Null leaves the lower-priority value unchanged."
},
"books": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"items": {
"type": [
"string",
"integer"
]
},
"maxItems": 83,
"type": "array"
}
]
},
{
"type": "null"
}
],
"description": "Null leaves the lower-priority value unchanged."
},
"case_sensitive": {
"anyOf": [
{
"default": false,
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Null leaves the lower-priority value unchanged."
},
"diacritics": {
"anyOf": [
{
"default": "fold",
"enum": [
"fold",
"exact",
"insensitive",
"sensitive"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Null leaves the lower-priority value unchanged."
},
"exclude": {
"anyOf": [
{
"anyOf": [
{
"maxLength": 100,
"minLength": 1,
"type": "string"
},
{
"items": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"maxItems": 32,
"type": "array"
}
]
},
{
"type": "null"
}
],
"description": "Null leaves the lower-priority value unchanged."
},
"limit": {
"anyOf": [
{
"default": 100,
"maximum": 100,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Null leaves the lower-priority value unchanged."
},
"match": {
"anyOf": [
{
"default": "whole_word",
"enum": [
"whole_word",
"substring"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Null leaves the lower-priority value unchanged."
},
"offset": {
"anyOf": [
{
"default": 0,
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Null leaves the lower-priority value unchanged."
},
"proximity": {
"anyOf": [
{
"description": "Requires words=all.",
"maximum": 100,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Null leaves the lower-priority value unchanged."
},
"q": {
"anyOf": [
{
"maxLength": 500,
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"description": "Null leaves the lower-priority value unchanged."
},
"scope": {
"anyOf": [
{
"default": "bible",
"enum": [
"bible",
"old_testament",
"new_testament",
"deuterocanon"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Null leaves the lower-priority value unchanged."
},
"sort": {
"anyOf": [
{
"default": "canonical",
"enum": [
"canonical",
"relevance"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Null leaves the lower-priority value unchanged."
},
"translation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Null leaves the lower-priority value unchanged."
},
"words": {
"anyOf": [
{
"default": "all",
"enum": [
"all",
"any",
"phrase"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Null leaves the lower-priority value unchanged."
}
},
"type": "object"
}
SearchResult#
View full SearchResult schema
{
"properties": {
"matches": {
"items": {
"$ref": "#/components/schemas/SearchMatch"
},
"type": "array"
},
"query": {
"$ref": "#/components/schemas/SearchQuery"
},
"results": {
"$ref": "#/components/schemas/Scripture"
}
},
"required": [
"query",
"results",
"matches"
],
"type": "object"
}
Translation#
View full Translation schema
{
"properties": {
"abbreviation": {
"type": "string"
},
"direction": {
"type": "string"
},
"encoding": {
"type": "string"
},
"lang": {
"type": "string"
},
"language": {
"type": "string"
},
"translation": {
"type": "string"
}
},
"type": "object"
}
Verse#
A source verse from the selected v2 data. Core fields are shared by v2 and v3. Optional v3 paragraph, tokens and spans are retained when present, as are other source fields and nested values.
View full Verse schema
{
"additionalProperties": true,
"description": "A source verse from the selected v2 data. Core fields are shared by v2 and v3. Optional v3 paragraph, tokens and spans are retained when present, as are other source fields and nested values.",
"properties": {
"chapter": {
"type": "integer"
},
"name": {
"type": "string"
},
"paragraph": {
"description": "V3: true when this verse begins a paragraph; omitted when absent from the source.",
"type": "boolean"
},
"spans": {
"description": "V3 annotations over token and word ranges, when supplied by the source.",
"items": {
"$ref": "#/components/schemas/VerseSpan"
},
"type": "array"
},
"text": {
"type": "string"
},
"tokens": {
"description": "V3 word tokens in reading order, when supplied by the source.",
"items": {
"$ref": "#/components/schemas/VerseToken"
},
"type": "array"
},
"verse": {
"type": "integer"
}
},
"required": [
"verse",
"name",
"text"
],
"type": "object"
}
VerseSpan#
V3 source annotation. Token positions index the verse tokens array from zero, inclusive. Word positions count display words from one, inclusive; zero means unlocated.
View full VerseSpan schema
{
"additionalProperties": true,
"description": "V3 source annotation. Token positions index the verse tokens array from zero, inclusive. Word positions count display words from one, inclusive; zero means unlocated.",
"properties": {
"attrs": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"span": {
"type": "string"
},
"tag": {
"type": "string"
},
"token_end": {
"minimum": 0,
"type": "integer"
},
"token_start": {
"minimum": 0,
"type": "integer"
},
"word_end": {
"minimum": 0,
"type": "integer"
},
"word_start": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"tag",
"span",
"token_start",
"token_end",
"word_start",
"word_end"
],
"type": "object"
}
VerseToken#
V3 word token. Word positions count whitespace-separated display words from one, inclusive; zero means unlocated. Additional source attributes are retained.
View full VerseToken schema
{
"additionalProperties": true,
"description": "V3 word token. Word positions count whitespace-separated display words from one, inclusive; zero means unlocated. Additional source attributes are retained.",
"properties": {
"gloss": {
"type": "string"
},
"lemma": {
"additionalProperties": {
"items": {
"type": "string"
},
"type": "array"
},
"description": "Lexical identifiers grouped by scheme, such as strong.",
"type": "object"
},
"morph": {
"additionalProperties": {
"items": {
"type": "string"
},
"type": "array"
},
"description": "Morphology codes grouped by scheme.",
"type": "object"
},
"morphSegmented": {
"type": "boolean"
},
"n": {
"type": "string"
},
"src": {
"items": {
"type": [
"integer",
"string"
]
},
"type": "array"
},
"subType": {
"type": "string"
},
"token": {
"type": "string"
},
"type": {
"type": "string"
},
"variant": {
"type": "boolean"
},
"variantType": {
"type": "string"
},
"word_end": {
"minimum": 0,
"type": "integer"
},
"word_start": {
"minimum": 0,
"type": "integer"
},
"xlit": {
"additionalProperties": {
"items": {
"type": "string"
},
"type": "array"
},
"description": "Transliterations grouped by scheme.",
"type": "object"
}
},
"required": [
"token",
"word_start",
"word_end"
],
"type": "object"
}
Authentication contract#
{
"security": [],
"securitySchemes": {
"bearer": {
"description": "Required for API data only on token-only domains. Valid tokens retain unrestricted rate access.",
"scheme": "bearer",
"type": "http"
}
}
}
See access and tokens for public usage and token requests.