PLVictor APIs

Free, open, and powerful APIs for Bible data and authentication. No credit card required.

API Status: Operational

Bible 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
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

https://plvictor.com/api

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

GET /api/bible/versions

List all available Bible versions

GET /api/bible/books?version=nvi

Get all books overview

GET /api/bible/books/{book}/chapters/{chapter}

Get all verses from a specific chapter

GET /api/bible/random?version=nvi&book=Salmos

Get a random verse (optional book filter)

GET /api/bible/search?q=amor&limit=50&version=nvi

Full-text search in Bible verses

GET /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

GET /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
curl -H "Authorization: Bearer YOUR_TOKEN" \
  "https://plvictor.com/api/bible/random?version=nvi&book=Salmos"
JavaScript
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}`);
Python
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

GET /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
curl -H "Authorization: Bearer YOUR_TOKEN" \
  "https://plvictor.com/api/bible/search?q=amor&limit=20&version=nvi"
JavaScript
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}`)
);
JavaScript (Streaming)
// 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);
    }
  }
}
Python
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

GET /api/bible/stats/word?word={term}&version={code}&stream=true|false
curl
curl --no-buffer -H "Authorization: Bearer YOUR_TOKEN" \
  "https://plvictor.com/api/bible/stats/word?word=amor&version=nvi&stream=true"
JavaScript
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`);
Python
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

GET /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

POST /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.

POST /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
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}'
JavaScript
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}`);
});
Python
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.

Learn more about the Embeddings Bíblicas PT-BR project

Authentication

Secure OAuth 2.0 authentication with PLVictor Accounts

Checking authentication...