PLVictor APIs
Free, open, and powerful APIs for Bible data and authentication. No credit card required.
API Status: OperationalBible API
Access multiple Bible versions with full-text search, random verses, and detailed book information.
Authentication
Secure OAuth 2.0 authentication with PLVictor Accounts. Get your API token instantly.
Rate Limits
50 requests per 30 seconds per endpoint. Fair usage for everyone.
Always Free
All endpoints are completely free. The token is only for security and usage tracking.
Embeddings API
Semantic biblical search powered by PT-BR embeddings trained on Scripture. Find verses by meaning, not keywords.
Quick Start
Get started in 3 simple steps:
1. Get Your Token
Click 'Authentication' tab and login with your PLVictor account
2. Make Your First Request
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://plvictor.com/api/bible/random?version=nvi
3. Start Building
Explore all endpoints in the Bible API tab
Base URL
Response Format
{
"success": true,
"data": { ... },
"metadata": {
"requestId": "...",
"timestamp": "2025-01-20T00:00:00Z",
"usage": {
"count": 42,
"lastUsed": "2025-01-20T00:00:00Z"
}
}
}
Bible API
Access Bible data from multiple versions with powerful search and filtering
Available Endpoints
/api/bible/versions
List all available Bible versions
/api/bible/books?version=nvi
Get all books overview
/api/bible/books/{book}/chapters/{chapter}
Get all verses from a specific chapter
/api/bible/random?version=nvi&book=Salmos
Get a random verse (optional book filter)
/api/bible/search?q=amor&limit=50&version=nvi
Full-text search in Bible verses
/api/bible/stats/word?word=amor&version=nvi
Count word occurrences across all verses
Random Verse
Get a random Bible verse, optionally filtered by book
/api/bible/random?version={code}&book={name}
Example Response
{
"success": true,
"data": {
"book": "Salmos",
"chapter": 23,
"verse": 1,
"text": "O Senhor é o meu pastor...",
"reference": "Salmos 23:1",
"version": "nvi"
}
}
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://plvictor.com/api/bible/random?version=nvi&book=Salmos"
const response = await fetch('https://plvictor.com/api/bible/random?version=nvi&book=João', {
headers: { 'Authorization': 'Bearer ' + token }
});
const verse = await response.json();
console.log(`${verse.data.reference}: ${verse.data.text}`);
import requests
headers = {'Authorization': f'Bearer {TOKEN}'}
params = {'version': 'nvi', 'book': 'Provérbios'}
response = requests.get('https://plvictor.com/api/bible/random',
headers=headers, params=params)
verse = response.json()
print(f"{verse['data']['reference']}: {verse['data']['text']}")
Search Verses
Full-text search across Bible verses with optional streaming
/api/bible/search?q={query}&limit={num}&version={code}&stream=true|false
Parameters
q- Search query (required)version- Bible version code (default: nvi)limit- Max results (default: 50)stream- Enable NDJSON streaming (default: false)
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://plvictor.com/api/bible/search?q=amor&limit=20&version=nvi"
const query = encodeURIComponent('vida eterna');
const url = `https://plvictor.com/api/bible/search?q=${query}&limit=20&version=acf`;
const response = await fetch(url, {
headers: { 'Authorization': 'Bearer ' + token }
});
const results = await response.json();
results.data.results.forEach(v =>
console.log(`${v.reference}: ${v.text}`)
);
// Stream NDJSON em tempo real
const query = encodeURIComponent('amor');
const url = `https://plvictor.com/api/bible/search?q=${query}&stream=true&version=nvi`;
const resp = await fetch(url, {
headers: { Authorization: 'Bearer ' + token }
});
const reader = resp.body.getReader();
const decoder = new TextDecoder();
let buffer = '';
while (true) {
const { done, value } = await reader.read();
if (done) break;
buffer += decoder.decode(value, { stream: true });
const lines = buffer.split('\n');
buffer = lines.pop() || '';
for (const line of lines) {
if (!line.trim()) continue;
const msg = JSON.parse(line);
if (msg.type === 'metadata') {
console.log('Search started', msg);
} else if (msg.type === 'result') {
console.log(msg.data.reference, '-', msg.data.text);
} else if (msg.type === 'done') {
console.log('Total results:', msg.total);
}
}
}
import requests
headers = {'Authorization': f'Bearer {TOKEN}'}
params = {'q': 'justiça', 'limit': 15, 'version': 'ntlh'}
response = requests.get('https://plvictor.com/api/bible/search',
headers=headers, params=params)
results = response.json()
for verse in results['data']['results']:
print(f"{verse['reference']}: {verse['text']}")
Word Statistics
Count how many times a word appears in the Bible
/api/bible/stats/word?word={term}&version={code}&stream=true|false
curl --no-buffer -H "Authorization: Bearer YOUR_TOKEN" \
"https://plvictor.com/api/bible/stats/word?word=amor&version=nvi&stream=true"
const url = 'https://plvictor.com/api/bible/stats/word?word=amor&version=nvi';
const r = await fetch(url, {
headers: { Authorization: 'Bearer ' + token }
});
const data = await r.json();
console.log(`"amor" appears ${data.data.totalMatches} times`);
import requests
headers = {'Authorization': f'Bearer {TOKEN}'}
res = requests.get('https://plvictor.com/api/bible/stats/word',
params={'word': 'amor', 'version': 'nvi'},
headers=headers)
print(res.json()['data']['totalMatches'])
Available Bible Versions
/api/bible/versions
NVI
Nova Versão Internacional
ACF
Almeida Corrigida Fiel
ARA
Almeida Revista Atualizada
NVT
Nova Versão Transformadora
NTLH
Nova Tradução Linguagem Hoje
KJV
King James Version
+ 7 more versions available
Embeddings API
Semantic biblical search for Brazilian Portuguese — find verses by meaning, not keywords
Available Endpoints
/api/embed/search
Semantic search over biblical verses using a PT-BR embedding model
Semantic Search
Send a phrase or feeling in natural Portuguese and receive the most semantically relevant Bible verses.
/api/embed/search
Request Body
text— Natural language query in Portuguese (required)top_k— Number of results to return (default: 5)
Example Response
{
"query": "sinto que Deus me abandonou",
"results": [
{
"reference": "Isaías 49:14",
"text": "Mas Sião diz: Já me desamparou o Senhor, e o meu Senhor se esqueceu de mim.",
"translation": "ARC",
"theological_justification": "O povo de Israel, no exílio, achou que Deus os tinha esquecido — e Deus respondeu com uma das promessas mais profundas das Escrituras.",
"secondary_verses": [
{
"reference": "Hebreus 13:5",
"text": "Não te deixarei, nem te desampararei.",
"translation": "ARC"
}
]
}
]
}
curl -X POST https://plvictor.com/api/embed/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{"text": "sinto que Deus me abandonou", "top_k": 3}'
const response = await fetch('https://plvictor.com/api/embed/search', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
},
body: JSON.stringify({
text: 'sinto que Deus me abandonou',
top_k: 3
})
});
const data = await response.json();
data.results.forEach(r => {
console.log(`${r.reference}: ${r.text}`);
});
import requests
headers = {
'Authorization': f'Bearer {TOKEN}',
'Content-Type': 'application/json'
}
payload = {'text': 'sinto que Deus me abandonou', 'top_k': 3}
response = requests.post(
'https://plvictor.com/api/embed/search',
json=payload,
headers=headers
)
data = response.json()
for result in data['results']:
print(f"{result['reference']}: {result['text']}")
About the Model
The embedding model is a fine-tuned sentence transformer trained on Brazilian Portuguese biblical content. It runs on edge hardware (Orange Pi 5 / RK3588 NPU) with full privacy — no data is stored or sent to third parties.
Authentication
Secure OAuth 2.0 authentication with PLVictor Accounts
Checking authentication...
Your API Key
Use this API key to authenticate all your API requests. This key is separate from your OAuth login.
OAuth is used only for login. Use your API key for all API requests.
Usage Statistics
Recent Activity
How to Use Your API Key
Include your API key in the Authorization header of every API request:
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://plvictor.com/api/bible/random?version=nvi
Tip: Your API key starts with 'plvictor--' and is different from your OAuth token.
Security Best Practices
- Never commit your API key to version control (git, etc.)
- Store API keys in environment variables (.env files)
- Regenerate your API key immediately if it's compromised
- Use HTTPS for all API requests to keep your key secure
- Don't share your API key publicly or with untrusted applications