API-Referenz
Die RAVIRA-API ermöglicht Ihnen den programmatischen Zugriff auf Übersetzungen in professioneller Qualität mit einheitlicher Terminologie. Authentifizieren Sie sich mit einem Bearer-Token und beginnen Sie innerhalb weniger Minuten mit dem Übersetzen.
https://ravira.dev/api/v1Schnellstart
In drei Schritten zu Ihrer ersten Übersetzung:
- 1. Erstellen Sie ein Konto unter ravira.dev/register
- 2. Kaufen Sie ein Zeichenpaket und erstellen Sie einen API-Schlüssel unter Einstellungen → API
- 3. Stellen Sie Ihre erste Anfrage:
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"}'Antwort:
{
"translated_text": "Bună ziua, lume!",
"characters_charged": 13,
"source_lang": "en",
"target_lang": "ro"
}Authentifizierung
Für alle API-Anfragen ist ein Bearer-Token im Authorization Header. API-Schlüssel beginnen mit rk_live_ und werden in Ihren Kontoeinstellungen generiert.
Authorization: Bearer rk_live_YOUR_API_KEYEndpunkte
/api/v1/translateText übersetzen. Authentifizierung erforderlich. Zeichen werden bei erfolgreicher Übersetzung berechnet.
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| Text | Zeichenfolge | Ja | Zu übersetzender Text (max. 100.000 Zeichen) |
| source_lang | Zeichenfolge | Nein | Sprachkennzeichen der Ausgangssprache. Standard: auto |
| target_lang | Zeichenfolge | Nein | Sprachkennzeichen der Zielsprache. Standard: en |
/api/v1/usageGibt das aktuelle Zeichenguthaben und den Verbrauch zurück. Authentifizierung erforderlich.
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/languagesGibt eine Liste der unterstützten Sprachen zurück. Keine Authentifizierung erforderlich.
curl https://ravira.dev/api/v1/languagesCodebeispiele
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!Fehlercodes
| HTTP | Fehlercode | Beschreibung |
|---|---|---|
| 401 | invalid_api_key | API-Schlüssel fehlt, ist ungültig oder wurde widerrufen. |
| 402 | insufficient_balance | Für das Konto sind keine Zeichen mehr verfügbar. Weitere können Sie unter ravira.dev/topup erwerben. |
| 429 | rate_limit_exceeded | Zu viele Anfragen. Bitte langsamer machen und nach dem Wert retry_after (Sekunden) erneut versuchen. |
| 400 | validation_error | Ungültige Anfrageparameter. |
| 500 | server_error | Interner Serverfehler. Versuchen Sie es nach kurzer Zeit erneut. |
Ratenlimits
Es gelten Ratenlimits pro Konto, nicht pro API-Schlüssel.
- 60 Anfragen/Minute pro Konto über alle API-Schlüssel hinweg
- Bei Überschreitung gibt die API Folgendes zurück:
HTTP 429mit einemretry_afterFeld (Sekunden) - Bis zu 5 API-Schlüssel pro Konto zur Projektorganisation
Anwendungsfälle
Mehrsprachige Produktlistungen
Ein Verkäufer auf Amazon oder eBay möchte Produkte automatisch in 5 Sprachen anbieten. Ein API-Aufruf pro Sprache – einheitliche Terminologie auf allen Märkten.
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)Lokalisierte Benutzerbenachrichtigungen
Eine SaaS-Plattform übersetzt alle Benachrichtigungsvorlagen, wenn ein neuer Nutzer seine bevorzugte Sprache festlegt. Keine statischen Übersetzungsdateien – dynamisch und immer auf dem neuesten Stand.
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);
});Vorübersetzung von Verträgen
Eine Anwaltskanzlei erhält Verträge in Fremdsprachen und benötigt eine schnelle Vorübersetzung, bevor sie diese an einen beeidigten Übersetzer weiterleitet. Einheitliche Rechtsterminologie verkürzt die Prüfzeit.
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])Internationale Nachrichtenbeobachtung
Eine Nachrichtenredaktion beobachtet internationale Quellen und übersetzt relevante Artikel automatisch für die Redaktion. Wird stündlich als geplanter Auftrag ausgeführt.
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 startMehrsprachige Stellenanzeigen
Ein Unternehmen, das europaweit Stellen ausschreibt, übersetzt jede Anzeige automatisch. Eine englische Vorlage, innerhalb von Sekunden in 6 Sprachen veröffentlicht.
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);Softwaredokumentation
Ein Entwicklertool übersetzt seine Dokumentation, um internationale Nutzer zu erreichen. Markdown-Dateien werden übersetzt, während Codeblöcke unverändert bleiben.
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])Patientenaufnahmeformulare
Eine Klinik übersetzt Aufnahmeformulare für internationale Patienten. Für den internen Gebrauch und das Wohlbefinden der Patienten – vor klinischen Entscheidungen stets von qualifiziertem medizinischem Personal geprüft.
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)Bereit loszulegen?
Generieren Sie Ihren API-Schlüssel in Sekundenschnelle. Keine Einrichtungsgebühren, keine Abonnements – Sie zahlen nur für die Zeichen, die Sie übersetzen.
Fragen? Schreiben Sie uns an humans@ravira.dev