Référence de l’API
L’API RAVIRA vous donne accès par programmation à des traductions de qualité professionnelle, avec une terminologie cohérente. Authentifiez-vous avec un jeton Bearer et commencez à traduire en quelques minutes.
https://ravira.dev/api/v1Démarrage rapide
Trois étapes pour obtenir votre première traduction:
- 1. Créez un compte sur ravira.dev/register
- 2. Achetez un pack de caractères et générez une clé API dans Paramètres → API
- 3. Effectuez votre première requête:
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éponse:
{
"translated_text": "Bună ziua, lume!",
"characters_charged": 13,
"source_lang": "en",
"target_lang": "ro"
}Authentification
Toutes les requêtes API nécessitent un jeton Bearer dans l’ Authorization en-tête. Les clés API commencent par rk_live_ et sont générés dans les paramètres de votre compte.
Authorization: Bearer rk_live_YOUR_API_KEYPoints de terminaison
/api/v1/translateTraduire le texte. Authentification requise. Les caractères sont facturés en cas de réussite.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| texte | chaîne | Oui | Texte à traduire (100 000 caractères max.) |
| source_lang | chaîne | Non | Code langage source. Valeur par défaut: auto |
| target_lang | chaîne | Non | Code langage cible. Valeur par défaut: en |
/api/v1/usageRenvoie le solde actuel de caractères et leur utilisation. Authentification requise.
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/languagesRenvoie la liste des langues prises en charge. Aucune authentification requise.
curl https://ravira.dev/api/v1/languagesExemples de code
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!Codes d’erreur
| HTTP | Code d’erreur | Description |
|---|---|---|
| 401 | invalid_api_key | Clé API manquante, invalide ou révoquée. |
| 402 | insufficient_balance | Le compte n’a plus de caractères disponibles. Achetez-en davantage sur ravira.dev/topup. |
| 429 | rate_limit_exceeded | Trop de requêtes. Ralentissez et réessayez après le délai indiqué par retry_after (secondes). |
| 400 | erreur_de_validation | Paramètres de requête non valides. |
| 500 | server_error | Erreur interne du serveur. Réessayez après un court délai. |
Limites de débit
Des limites de débit s’appliquent par compte, et non par clé API.
- 60 requêtes/minute par compte, toutes clés API confondues
- En cas de dépassement, l’API renvoie
HTTP 429avec unretry_afterchamp (secondes) - Jusqu’à 5 clés API par compte, pour l’organisation des projets
Cas d’utilisation
Référencements de produits multilingues
Un vendeur sur Amazon ou eBay souhaite publier automatiquement ses produits dans 5 langues. Un appel API par langue, avec une terminologie cohérente sur tous les marchés.
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)Notifications utilisateur localisées
Une plateforme SaaS traduit tous les modèles de notification lorsqu’un nouvel utilisateur définit sa langue préférée. Aucun fichier de traduction statique: les traductions sont dynamiques et toujours à jour.
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);
});Pré-traduction de contrats
Un cabinet d’avocats reçoit des contrats en langues étrangères et a besoin d’une prétraduction rapide avant de les envoyer à un traducteur agréé. Une terminologie juridique cohérente réduit le temps de révision.
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])Veille de l’actualité internationale
Une rédaction surveille des sources internationales et traduit automatiquement les articles pertinents pour les journalistes. La tâche programmée s’exécute toutes les heures.
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 startOffres d’emploi multilingues
Une entreprise qui publie des offres d’emploi dans toute l’Europe traduit automatiquement chaque annonce. Une seule source en anglais, publiée en 6 langues en quelques secondes.
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);Documentation logicielle
Un outil de développement traduit sa documentation pour toucher des utilisateurs internationaux. Les fichiers Markdown sont traduits, tandis que les blocs de code restent inchangés.
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])Formulaires d’admission des patients
Une clinique traduit les formulaires d’admission des patients étrangers. Pour un usage interne et le confort des patients, les traductions sont toujours vérifiées par du personnel médical qualifié avant toute décision clinique.
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)Prêt à commencer?
Générez votre clé API en quelques secondes. Aucun frais d’installation ni abonnement: payez uniquement les caractères que vous traduisez.
Des questions? Écrivez-nous à humans@ravira.dev