API Başvurusu

RAVIRA API, tutarlı terminolojiyle profesyonel düzeyde çeviriye programatik erişim sağlar. Bir taşıyıcı belirteçle kimlik doğrulaması yapın ve dakikalar içinde çeviri yapmaya başlayın.

Temel URLhttps://ravira.dev/api/v1

Hızlı Başlangıç

İlk çeviriniz için üç adım:

  1. 1. Şu adreste hesap oluşturun: ravira.dev/register
  2. 2. Bir karakter paketi satın alın ve şu adreste API anahtarı oluşturun: Ayarlar → API
  3. 3. İlk isteğinizi gönderin:
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"}'

Yanıt:

{
  "translated_text": "Bună ziua, lume!",
  "characters_charged": 13,
  "source_lang": "en",
  "target_lang": "ro"
}

Kimlik doğrulama

Tüm API isteklerinde şu başlıkta bir taşıyıcı belirteç gerekir: Authorization başlığı. API anahtarları şu ifadeyle başlar: rk_live_ ve hesap ayarlarınızda oluşturulur.

Önemli: API anahtarınız oluşturulurken yalnızca bir kez gösterilir. Güvenli bir yerde saklayın; kurtarılamaz.
Authorization: Bearer rk_live_YOUR_API_KEY

Uç noktalar

POST/api/v1/translate

Metni çevirir. Kimlik doğrulaması gerekir. Başarılı olduğunda karakterler ücretlendirilir.

ParametreTürGerekliAçıklama
textdizeEvetÇevrilecek metin (en fazla 100.000 karakter)
source_langdizeHayırKaynak dil kodu. Varsayılan: auto
target_langdizeHayırHedef dil kodu. Varsayılan: en
GET/api/v1/usage

Mevcut karakter bakiyesini ve kullanımını döndürür. Kimlik doğrulama gerektirir.

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

Desteklenen dillerin listesini döndürür. Kimlik doğrulama gerektirmez.

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

Kod Örnekleri

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!

Hata Kodları

HTTPHata koduAçıklama
401invalid_api_keyAPI anahtarı eksik, geçersiz veya iptal edilmiş.
402insufficient_balanceHesabınızda kullanılabilir karakter kalmadı. ravira.dev/topup adresinden daha fazla karakter satın alın.
429rate_limit_exceededÇok fazla istek gönderildi. İstekleri yavaşlatın ve retry_after değerinden (saniye) sonra yeniden deneyin.
400doğrulama_hatasıGeçersiz istek parametreleri.
500server_errorSunucu hatası. Kısa bir süre sonra yeniden deneyin.

İstek Sınırları

İstek sınırları geçerlidir hesap başına, API anahtarı başına değil.

  • Dakikada 60 istek tüm API anahtarları için hesap başına
  • Aşıldığında API şu yanıtı döndürür: HTTP 429 ile a retry_after alanı (saniye)
  • En fazla 5 API anahtarı proje düzenlemesi için hesap başına

Kullanım örnekleri

E-ticaret

Çok dilli ürün listeleri

Amazon veya eBay'de satış yapan bir satıcı, ürünlerini otomatik olarak 5 dilde listelemek ister. Dil başına bir API çağrısı; tüm pazarlarda tutarlı terminoloji.

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

Yerelleştirilmiş kullanıcı bildirimleri

Bir SaaS platformu, yeni bir kullanıcı tercih ettiği dili belirlediğinde tüm bildirim şablonlarını çevirir. Statik çeviri dosyaları yoktur; çeviriler dinamik ve her zaman günceldir.

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

Sözleşme ön çevirisi

Bir hukuk bürosu, yabancı dillerde sözleşmeler alır ve bunları yeminli çevirmene göndermeden önce hızlı bir ön çeviriye ihtiyaç duyar. Tutarlı hukuk terminolojisi, inceleme süresini kısaltır.

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

Uluslararası haber takibi

Bir haber merkezi, uluslararası kaynakları takip eder ve ilgili makaleleri editörler için otomatik olarak çevirir. Her saat başı zamanlanmış bir görev olarak çalışır.

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
İnsan Kaynakları

Çok dilli iş ilanları

Avrupa genelinde iş ilanı yayımlayan bir şirket, her ilanı otomatik olarak çevirir. İngilizce tek bir kaynak, saniyeler içinde 6 dilde yayımlanır.

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);
Teknik

Yazılım belgeleri

Bir geliştirici aracı, uluslararası kullanıcılara ulaşmak için belgelerini çevirir. Markdown dosyaları çevrilirken kod bloklarına dokunulmaz.

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])
Tıp

Hasta kabul formları

Bir klinik, yurt dışından gelen hastalar için hasta kabul formlarını çevirir. Klinik kararlar alınmadan önce mutlaka yetkin sağlık personeli tarafından gözden geçirilir; amaç kurum içinde kullanım ve hastaların kendilerini rahat hissetmesidir.

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)

Başlamaya hazır mısınız?

API anahtarınızı saniyeler içinde oluşturun. Kurulum ücreti veya abonelik yok; yalnızca çevirdiğiniz karakterler için ödeme yapın.

Sorularınız mı var? Bize şu adresten yazın: humans@ravira.dev