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.
https://ravira.dev/api/v1Hızlı Başlangıç
İlk çeviriniz için üç adım:
- 1. Şu adreste hesap oluşturun: ravira.dev/register
- 2. Bir karakter paketi satın alın ve şu adreste API anahtarı oluşturun: Ayarlar → API
- 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.
Authorization: Bearer rk_live_YOUR_API_KEYUç noktalar
/api/v1/translateMetni çevirir. Kimlik doğrulaması gerekir. Başarılı olduğunda karakterler ücretlendirilir.
| Parametre | Tür | Gerekli | Açıklama |
|---|---|---|---|
| text | dize | Evet | Çevrilecek metin (en fazla 100.000 karakter) |
| source_lang | dize | Hayır | Kaynak dil kodu. Varsayılan: auto |
| target_lang | dize | Hayır | Hedef dil kodu. Varsayılan: en |
/api/v1/usageMevcut 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"
}/api/v1/languagesDesteklenen dillerin listesini döndürür. Kimlik doğrulama gerektirmez.
curl https://ravira.dev/api/v1/languagesKod Ö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ı
| HTTP | Hata kodu | Açıklama |
|---|---|---|
| 401 | invalid_api_key | API anahtarı eksik, geçersiz veya iptal edilmiş. |
| 402 | insufficient_balance | Hesabınızda kullanılabilir karakter kalmadı. ravira.dev/topup adresinden daha fazla karakter satın alın. |
| 429 | rate_limit_exceeded | Çok fazla istek gönderildi. İstekleri yavaşlatın ve retry_after değerinden (saniye) sonra yeniden deneyin. |
| 400 | doğrulama_hatası | Geçersiz istek parametreleri. |
| 500 | server_error | Sunucu 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 429ile aretry_afteralanı (saniye) - En fazla 5 API anahtarı proje düzenlemesi için hesap başına
Kullanım örnekleri
Ç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)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);
});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])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Ç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);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])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