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.

Basis-URLhttps://ravira.dev/api/v1

Schnellstart

In drei Schritten zu Ihrer ersten Übersetzung:

  1. 1. Erstellen Sie ein Konto unter ravira.dev/register
  2. 2. Kaufen Sie ein Zeichenpaket und erstellen Sie einen API-Schlüssel unter Einstellungen → API
  3. 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.

Wichtig: Ihr API-Schlüssel wird bei der Erstellung nur einmal angezeigt. Bewahren Sie ihn sicher auf – er kann nicht wiederhergestellt werden.
Authorization: Bearer rk_live_YOUR_API_KEY

Endpunkte

POST/api/v1/translate

Text übersetzen. Authentifizierung erforderlich. Zeichen werden bei erfolgreicher Übersetzung berechnet.

ParameterTypErforderlichBeschreibung
TextZeichenfolgeJaZu übersetzender Text (max. 100.000 Zeichen)
source_langZeichenfolgeNeinSprachkennzeichen der Ausgangssprache. Standard: auto
target_langZeichenfolgeNeinSprachkennzeichen der Zielsprache. Standard: en
GET/api/v1/usage

Gibt 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"
}
GET/api/v1/languages

Gibt eine Liste der unterstützten Sprachen zurück. Keine Authentifizierung erforderlich.

curl https://ravira.dev/api/v1/languages

Codebeispiele

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

HTTPFehlercodeBeschreibung
401invalid_api_keyAPI-Schlüssel fehlt, ist ungültig oder wurde widerrufen.
402insufficient_balanceFür das Konto sind keine Zeichen mehr verfügbar. Weitere können Sie unter ravira.dev/topup erwerben.
429rate_limit_exceededZu viele Anfragen. Bitte langsamer machen und nach dem Wert retry_after (Sekunden) erneut versuchen.
400validation_errorUngültige Anfrageparameter.
500server_errorInterner 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 429 mit einem retry_after Feld (Sekunden)
  • Bis zu 5 API-Schlüssel pro Konto zur Projektorganisation

Anwendungsfälle

E-Commerce

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)
SaaS

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);
});
Recht

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])
Journalismus

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 start
Personalwesen

Mehrsprachige 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);
Technisch

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])
Medizin

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