Referință API
API-ul RAVIRA îți oferă acces programatic la servicii de traducere de nivel profesional, cu terminologie consecventă. Autentifică-te cu un token Bearer și începe să traduci în câteva minute.
https://ravira.dev/api/v1Pornire rapidă
Trei pași până la prima traducere:
- 1. Creează un cont la ravira.dev/register
- 2. Cumpără un pachet de caractere și generează o cheie API în Setări → API
- 3. Trimite prima cerere:
curl -X POST https://ravira.dev/api/v1/translate \
-H "Authorization: Bearer rk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Hello, world!", "source_lang": "en", "target_lang": "ro"}'Răspuns:
{
"translated_text": "Bună ziua, lume!",
"characters_charged": 13,
"source_lang": "en",
"target_lang": "ro"
}Autentificare
Toate cererile API necesită un token Bearer în antetul Authorization . Cheile API încep cu rk_live_ și sunt generate în setările contului.
Authorization: Bearer rk_live_YOUR_API_KEYPuncte finale
/api/v1/translateTraduce text. Necesită autentificare. Caracterele sunt taxate numai dacă operațiunea reușește.
| Parametru | Tip | Obligatoriu | Descriere |
|---|---|---|---|
| text | șir | Da | Text de tradus (maximum 100.000 de caractere) |
| source_lang | șir | Nu | Codul limbii sursă. Implicit: auto |
| target_lang | șir | Nu | Codul limbii țintă. Implicit: en |
/api/v1/usageReturnează soldul curent de caractere și utilizarea. Necesită autentificare.
curl https://ravira.dev/api/v1/usage \
-H "Authorization: Bearer rk_live_YOUR_API_KEY"{
"characters_balance": 500000,
"characters_used": 12500,
"characters_expires_at": "2027-01-01T00:00:00"
}/api/v1/languagesReturnează lista limbilor acceptate. Nu necesită autentificare.
curl https://ravira.dev/api/v1/languagesExemple de cod
Python
import requests
API_KEY = "rk_live_YOUR_API_KEY"
BASE_URL = "https://ravira.dev/api/v1"
def translate(text, target_lang="ro", source_lang="auto"):
response = requests.post(
f"{BASE_URL}/translate",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"text": text, "source_lang": source_lang, "target_lang": target_lang}
)
response.raise_for_status()
return response.json()["translated_text"]
result = translate("Hello, world!", target_lang="ro")
print(result) # Bună ziua, lume!JavaScript
const API_KEY = "rk_live_YOUR_API_KEY";
const BASE_URL = "https://ravira.dev/api/v1";
async function translate(text, targetLang = "ro", sourceLang = "auto") {
const response = await fetch(`${BASE_URL}/translate`, {
method: "POST",
headers: {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ text, source_lang: sourceLang, target_lang: targetLang }),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
return data.translated_text;
}
const result = await translate("Hello, world!", "ro");
console.log(result); // Bună ziua, lume!Coduri de eroare
| HTTP | Cod de eroare | Descriere |
|---|---|---|
| 401 | invalid_api_key | Cheia API lipsește, este invalidă sau a fost revocată. |
| 402 | insufficient_balance | Contul nu mai are caractere disponibile. Cumpără mai multe la ravira.dev/topup. |
| 429 | rate_limit_exceeded | Prea multe solicitări. Încetiniți și încercați din nou după valoarea retry_after secunde. |
| 400 | validation_error | Parametri de solicitare nevalizi. |
| 500 | server_error | Eroare internă a serverului. Reîncearcă după o scurtă pauză. |
Limite de utilizare
Limitele de frecvență se aplică per cont, nu per cheie API.
- 60 de solicitări/minut per cont, pentru toate cheile API
- La depășirea limitei, API-ul returnează
HTTP 429cu un câmpretry_aftercâmp secunde - Până la 5 chei API per cont, pentru organizarea proiectelor
Cazuri de utilizare
Anunțuri de produse în mai multe limbi
Un vânzător de pe Amazon sau eBay vrea să publice automat anunțuri de produse în 5 limbi. Câte un apel API pentru fiecare limbă — terminologie consecventă pe toate piețele.
import requests
API_KEY = "rk_live_YOUR_API_KEY"
BASE_URL = "https://ravira.dev/api/v1"
def translate_product(product):
languages = {"ro": "Romanian", "de": "German", "fr": "French", "es": "Spanish"}
translations = {}
for lang_code, lang_name in languages.items():
response = requests.post(
BASE_URL + "/translate",
headers={"Authorization": "Bearer " + API_KEY},
json={"text": product["title"] + "
" + product["description"],
"source_lang": "en", "target_lang": lang_code}
)
translations[lang_code] = response.json()["translated_text"]
return translations
product = {
"title": "Wireless Noise-Cancelling Headphones",
"description": "Premium over-ear headphones with 30-hour battery."
}
result = translate_product(product)Notificări localizate pentru utilizatori
O platformă SaaS traduce toate șabloanele de notificări când un utilizator nou își setează limba preferată. Fără fișiere statice de traducere — conținut dinamic, mereu actualizat.
const API_KEY = "rk_live_YOUR_API_KEY";
const BASE_URL = "https://ravira.dev/api/v1";
async function localizeNotifications(userId, targetLang) {
const templates = {
welcome: "Welcome to our platform! Your account is ready.",
trial_ending: "Your free trial ends in 3 days.",
payment_success: "Payment confirmed. Thank you!",
usage_alert: "You have used 80% of your monthly quota."
};
const localized = {};
for (const [key, text] of Object.entries(templates)) {
const res = await fetch(BASE_URL + "/translate", {
method: "POST",
headers: {
"Authorization": "Bearer " + API_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({ text, source_lang: "en", target_lang: targetLang })
});
localized[key] = (await res.json()).translated_text;
}
return localized;
}
// New user from Romania
localizeNotifications("user_123", "ro").then(t => {
console.log(t.welcome);
});Pretraducerea contractelor
O firmă de avocatură primește contracte în limbi străine și are nevoie de o pretraducere rapidă înainte de a le trimite unui traducător autorizat. Terminologia juridică consecventă reduce timpul de verificare.
import requests
API_KEY = "rk_live_YOUR_API_KEY"
BASE_URL = "https://ravira.dev/api/v1"
def pretranslate_contract(contract_text, source_lang):
"""Pre-translate a contract for internal review."""
response = requests.post(
BASE_URL + "/translate",
headers={"Authorization": "Bearer " + API_KEY},
json={
"text": contract_text,
"source_lang": source_lang,
"target_lang": "en"
}
)
return response.json()["translated_text"]
# Translate a German contract for English-speaking lawyers
with open("vertrag_2026.txt", "r") as f:
german_contract = f.read()
english_draft = pretranslate_contract(german_contract, "de")
print("Pre-translation ready for legal review.")
print(english_draft[:200])Monitorizarea știrilor internaționale
O redacție monitorizează surse internaționale și traduce automat articolele relevante pentru editori. Procesul rulează ca o sarcină programată în fiecare oră.
import requests
import schedule
import time
API_KEY = "rk_live_YOUR_API_KEY"
BASE_URL = "https://ravira.dev/api/v1"
def translate_article(article, source_lang):
response = requests.post(
BASE_URL + "/translate",
headers={"Authorization": "Bearer " + API_KEY},
json={"text": article, "source_lang": source_lang, "target_lang": "en"}
)
return response.json()["translated_text"]
def monitor_and_translate():
# Fetch articles from your news source here
articles = [
{"text": "Neue Wirtschaftsdaten zeigen starkes Wachstum...", "lang": "de"},
{"text": "Les negociations commerciales reprennent...", "lang": "fr"},
]
for article in articles:
translated = translate_article(article["text"], article["lang"])
print("Translated:", translated[:80] + "...")
# Run every hour
schedule.every().hour.do(monitor_and_translate)
monitor_and_translate() # Run immediately on startAnunțuri de angajare în mai multe limbi
O companie care publică anunțuri de angajare în toată Europa le traduce automat. Un singur text-sursă în engleză, publicat în 6 limbi în câteva secunde.
const API_KEY = "rk_live_YOUR_API_KEY";
const BASE_URL = "https://ravira.dev/api/v1";
const TARGET_MARKETS = ["de", "fr", "es", "it", "pl", "ro"];
async function publishJobPosting(jobDescription) {
const postings = {};
for (const lang of TARGET_MARKETS) {
const res = await fetch(BASE_URL + "/translate", {
method: "POST",
headers: {
"Authorization": "Bearer " + API_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({
text: jobDescription,
source_lang: "en",
target_lang: lang
})
});
postings[lang] = (await res.json()).translated_text;
}
console.log("Published in " + Object.keys(postings).length + " languages");
return postings;
}
const job = "Senior Backend Engineer. Remote. Competitive salary.";
publishJobPosting(job);Documentație software
Un instrument pentru dezvoltatori își traduce documentația pentru a ajunge la utilizatori internaționali. Fișierele Markdown sunt traduse, în timp ce blocurile de cod rămân nemodificate.
import requests
import re
API_KEY = "rk_live_YOUR_API_KEY"
BASE_URL = "https://ravira.dev/api/v1"
def translate_markdown(md_text, target_lang):
"""Translate markdown, preserving code blocks."""
# Extract code blocks before translation
code_blocks = {}
def save_code(match):
key = f"CODE_BLOCK_{len(code_blocks)}"
code_blocks[key] = match.group(0)
return key
protected = re.sub(r"```[\s\S]*?```", save_code, md_text)
# Translate text only
response = requests.post(
BASE_URL + "/translate",
headers={"Authorization": "Bearer " + API_KEY},
json={"text": protected, "source_lang": "en", "target_lang": target_lang}
)
translated = response.json()["translated_text"]
# Restore code blocks
for key, block in code_blocks.items():
translated = translated.replace(key, block)
return translated
with open("README.md") as f:
readme = f.read()
translated_readme = translate_markdown(readme, "ro")
print(translated_readme[:300])Formulare de internare a pacienților
O clinică traduce formularele de internare pentru pacienții internaționali. Pentru uz intern și confortul pacienților — formularele sunt verificate întotdeauna de personal medical calificat înainte de luarea deciziilor clinice.
import requests
API_KEY = "rk_live_YOUR_API_KEY"
BASE_URL = "https://ravira.dev/api/v1"
def translate_intake_form(form_data, patient_lang):
"""
Translate patient intake form for non-English speaking patients.
For internal use only. Always reviewed by qualified medical staff.
"""
fields_to_translate = [
"chief_complaint", "medical_history", "current_medications", "allergies"
]
translated = {}
for field in fields_to_translate:
if field in form_data:
response = requests.post(
BASE_URL + "/translate",
headers={"Authorization": "Bearer " + API_KEY},
json={
"text": form_data[field],
"source_lang": patient_lang,
"target_lang": "en"
}
)
translated[field] = response.json()["translated_text"]
return translated
patient_form = {
"chief_complaint": "Durere puternica in piept de 2 zile",
"allergies": "Penicilina, Ibuprofen"
}
english_form = translate_intake_form(patient_form, "ro")
print("For medical staff review:", english_form)Gata să începi?
Generează-ți cheia API în câteva secunde. Fără taxe de configurare, fără abonamente — plătești doar pentru caracterele pe care le traduci.
Ai întrebări? Scrie-ne la humans@ravira.dev