API Referansı
Birkaç satır kodla Morlivo çeviri ve transkripsiyonunu uygulamanıza entegre edin.
https://api.morlivo.ai
Kimlik Doğrulama: Authorization: Bearer mrl_...
Kimlik Dogrulama
Tüm API istekleri bir Bearer token gerektirir. API anahtarınızı Ayarlar altındaki kontrol panelinden alın.
Authorization: Bearer mrl_your_api_key_here
API anahtarları şununla başlar mrl_. Gizli tutun. Ele geçirildiyse kontrol panelinden yenileyin.
/v1/translate
Metni bir dilden başka bir dile çevirin. Belirtilmezse kaynak dil otomatik algılanır.
İstek gövdesi JSON
| Alan | Tur | Zorunlu | Aciklama |
|---|---|---|---|
text | string | evet | Çevrilecek metin |
target_language | string | evet | ISO 639-1 kodu (ör. es, fr, de) |
source_language | string | hayır | Belirtilmezse otomatik algılanır |
project_id | integer | hayır | Proje sözlüğü ve stilini uygula |
formality | string | hayır | Register: formal, informal, or default |
Yanıt 200
| Alan | Tur | Aciklama |
|---|---|---|
translated_text | string | Çevrilmiş metin |
source_language | string | Algılanan veya belirtilen kaynak dil |
target_language | string | Hedef dil kodu |
confidence | float | Kalite puanı 0.0 - 1.0 |
validation | object | Kalite doğrulama sonuçları |
Örnekler
curl -X POST https://api.morlivo.ai/api/v1/translate \
-H "Authorization: Bearer mrl_your_key" \
-H "Content-Type: application/json" \
-d '{
"text": "Hello, world!",
"target_language": "es"
}'
import httpx
resp = httpx.post(
"https://api.morlivo.ai/api/v1/translate",
headers={"Authorization": "Bearer mrl_your_key"},
json={
"text": "Hello, world!",
"target_language": "es",
},
)
data = resp.json()
print(data["translated_text"])
# → "¡Hola, mundo!"
const resp = await fetch(
"https://api.morlivo.ai/api/v1/translate",
{
method: "POST",
headers: {
"Authorization": "Bearer mrl_your_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
text: "Hello, world!",
target_language: "es",
}),
}
);
const data = await resp.json();
console.log(data.translated_text);
// → "¡Hola, mundo!"
{
"translated_text": "¡Hola, mundo!",
"source_language": "en",
"target_language": "es",
"confidence": 0.98,
"validation": {
"length_ratio": 1.08,
"language_match": true,
"passed": true
}
}
/v1/transcribe
Bir ses veya video dosyasını metne dönüştürün. 100 MB'a kadar destekler.
İstek gövdesi multipart/form-data
| Alan | Tur | Zorunlu | Aciklama |
|---|---|---|---|
file | file | evet | Ses/video dosyası (mp3, wav, mp4, webm, vb.) |
language | string | hayır | ISO kodu, belirtilmezse otomatik algılanır |
project_id | integer | hayır | İzleme için bir projeye bağla |
response_format | string | hayır | Output format: json, verbose_json, text, srt, vtt |
punctuate | boolean | hayır | Include punctuation (default true) |
Yanıt 200
| Alan | Tur | Aciklama |
|---|---|---|
text | string | Tam transkripsiyon metni |
language | string | Algılanan dil |
duration_seconds | float | Ses süresi |
confidence | float | Kalite puanı 0.0 - 1.0 |
language_confidence | float | Confidence of auto-detected language (null if language was specified) |
segments | array | Zaman damgalı bölümler |
validation | object | Kalite kontrolleri |
Örnekler
curl -X POST https://api.morlivo.ai/api/v1/transcribe \
-H "Authorization: Bearer mrl_your_key" \
-F "file=@meeting.mp3" \
-F "language=en"
import httpx
with open("meeting.mp3", "rb") as f:
resp = httpx.post(
"https://api.morlivo.ai/api/v1/transcribe",
headers={"Authorization": "Bearer mrl_your_key"},
files={"file": ("meeting.mp3", f, "audio/mpeg")},
data={"language": "en"},
)
data = resp.json()
print(data["text"])
{
"text": "Welcome everyone to today's meeting...",
"language": "en",
"duration_seconds": 342.5,
"confidence": 0.95,
"language_confidence": 0.95,
"segments": [
{"start": 0.0, "end": 3.2, "text": "Welcome everyone"},
{"start": 3.2, "end": 6.8, "text": "to today's meeting."}
],
"validation": {
"words_per_minute": 148,
"repetition_detected": false,
"passed": true
}
}
/v1/live/transcribe
Gerçek zamanlı ses akışı yapın ve canlı transkripsiyon sonuçları alın.
Bağlantı
| Parametre | Tur | Zorunlu | Aciklama |
|---|---|---|---|
token | string | evet | Sorgu parametresi olarak API anahtarı |
language | string | hayır | Kaynak dil ipucu (ör. en, fr). Belirtilmezse otomatik tespit edilir. |
Protokol
İkili PCM ses kareleri (16-bit, 16kHz mono)
type alanına sahip JSON mesajları: transcript (kısmi/son metin), status (oturum olayları), error
Alınan mesajlar
| Alan | Tur | Aciklama |
|---|---|---|
type | string | "transcript" | "status" | "error" |
text | string | Transkripsiyonu yapılmış metin (transkripsiyon mesajlarında) |
is_final | boolean | Segment tamamlandığında doğru |
language | string | Tespit edilen dil kodu |
Örnekler
const ws = new WebSocket(
"wss://live.morlivo.ai/v1/live/transcribe?token=mrl_your_key&language=en"
);
navigator.mediaDevices.getUserMedia({ audio: true })
.then(stream => {
const ctx = new AudioContext({ sampleRate: 16000 });
const source = ctx.createMediaStreamSource(stream);
const processor = ctx.createScriptProcessor(4096, 1, 1);
source.connect(processor);
processor.connect(ctx.destination);
processor.onaudioprocess = (e) => {
const pcm = e.inputBuffer.getChannelData(0);
const int16 = new Int16Array(pcm.length);
for (let i = 0; i < pcm.length; i++)
int16[i] = Math.max(-1, Math.min(1, pcm[i])) * 0x7FFF;
ws.send(int16.buffer);
};
});
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === "transcript") {
console.log(msg.is_final ? "FINAL:" : "partial:", msg.text);
}
};
import asyncio, json, websockets
async def live_transcribe():
uri = "wss://live.morlivo.ai/v1/live/transcribe?token=mrl_your_key"
async with websockets.connect(uri) as ws:
# Send audio chunks (PCM 16-bit 16kHz mono)
with open("audio.pcm", "rb") as f:
while chunk := f.read(4096):
await ws.send(chunk)
msg = json.loads(await ws.recv())
if msg["type"] == "transcript":
print(msg["text"], end="\r" if not msg["is_final"] else "\n")
asyncio.run(live_transcribe())
// Session started
{"type": "status", "message": "session_started"}
// Partial transcript (still speaking)
{"type": "transcript", "text": "Hello every", "is_final": false}
// Final transcript (segment complete)
{"type": "transcript", "text": "Hello everyone, welcome to the meeting.",
"is_final": true, "language": "en"}
// Session ended
{"type": "status", "message": "session_ended",
"duration_seconds": 45.2}
/v1/live/translate
Bir dilde ses akışı yapın ve başka bir dilde gerçek zamanlı çevrilmiş metin alın. Otomatik dil algılama ile konuşmadan metne çeviriyi destekler.
Bağlantı
| Parametre | Tur | Zorunlu | Aciklama |
|---|---|---|---|
token | string | evet | Sorgu parametresi olarak API anahtarı |
target_language | string | evet | Çıktı metni için dil (ör. en, es, fr) |
source_language | string | hayır | Kaynak ses dili. Belirtilmezse otomatik tespit edilir. |
Protokol
İkili PCM ses kareleri (16-bit, 16kHz mono)
target_language içinde çevrilmiş metin içeren JSON mesajları. Orijinal konuşmanın transkripsiyonunu ve çevrilmiş çıktıyı içerir.
Alınan mesajlar
| Alan | Tur | Aciklama |
|---|---|---|
type | string | "transcript" | "status" | "error" |
text | string | Hedef dilde çevrilmiş metin |
is_final | boolean | Segment tamamlandığında doğru |
source_language | string | Tespit edilen kaynak dil |
target_language | string | Hedef dil kodu |
Örnekler
const ws = new WebSocket(
"wss://live.morlivo.ai/v1/live/translate" +
"?token=mrl_your_key&target_language=es&source_language=en"
);
// Stream microphone audio (same setup as live transcribe)
// ...
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === "transcript" && msg.is_final) {
console.log(`[${msg.source_language} → ${msg.target_language}]`);
console.log(msg.text);
}
};
import asyncio, json, websockets
async def live_translate():
uri = (
"wss://live.morlivo.ai/v1/live/translate"
"?token=mrl_your_key"
"&source_language=fr&target_language=en"
)
async with websockets.connect(uri) as ws:
with open("french_audio.pcm", "rb") as f:
while chunk := f.read(4096):
await ws.send(chunk)
msg = json.loads(await ws.recv())
if msg["type"] == "transcript" and msg["is_final"]:
print(f"Translation: {msg['text']}")
asyncio.run(live_translate())
// Partial translation
{"type": "transcript", "text": "Hello every",
"is_final": false, "source_language": "fr", "target_language": "en"}
// Final translated segment
{"type": "transcript",
"text": "Hello everyone, welcome to the meeting.",
"is_final": true,
"source_language": "fr", "target_language": "en"}
// Session summary
{"type": "status", "message": "session_ended",
"duration_seconds": 120.5}
/v1/live/rooms
Create a multi-participant translation room. Each participant speaks their own language and receives translated text from other participants.
İstek gövdesi JSON
| Alan | Tur | Zorunlu | Aciklama |
|---|---|---|---|
languages | object | evet | Participant ID to language mapping |
bridge_language | string | hayır | Hub language, default en |
max_participants | int | hayır | Max participants 2-10, default 10 |
mode | string | hayır | interpreter or inline |
Yanıt 200
| Alan | Tur | Aciklama |
|---|---|---|
room_id | string | Unique room identifier |
status | string | Room status |
languages | object | Participant ID to language mapping |
bridge_language | string | Hub language used for translation |
mode | string | Translation mode |
max_participants | int | Maximum number of participants |
Örnekler
curl -X POST https://api.morlivo.ai/api/v1/live/rooms \
-H "Authorization: Bearer mrl_your_key" \
-H "Content-Type: application/json" \
-d '{
"languages": {"alice": "en", "bob": "fr", "carlos": "es"},
"bridge_language": "en",
"mode": "interpreter"
}'
{
"room_id": "room_abc123",
"status": "active",
"languages": {"alice": "en", "bob": "fr", "carlos": "es"},
"bridge_language": "en",
"mode": "interpreter",
"max_participants": 10
}
/v1/live/speech/{room_id}
Connect a participant to a room for real-time speech translation.
Bağlantı
| Parametre | Tur | Zorunlu | Aciklama |
|---|---|---|---|
room_id | string | evet | Room ID from create room response (path param) |
participant | string | evet | Participant ID (query param) |
token | string | evet | Sorgu parametresi olarak API anahtarı |
Örnek
const ws = new WebSocket(
"wss://live.morlivo.ai/v1/live/speech/room_abc123" +
"?token=mrl_your_key&participant=alice"
);
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === "transcript" && msg.is_final) {
console.log(`[${msg.source_language} → ${msg.target_language}]`);
console.log(msg.text);
}
};
/v1/live/rooms/{room_id}/participants
Add a participant to an existing room after creation.
İstek gövdesi JSON
| Alan | Tur | Zorunlu | Aciklama |
|---|---|---|---|
participant_id | string | evet | Unique participant identifier |
language | string | evet | Participant's language code |
Örnek
curl -X POST https://api.morlivo.ai/api/v1/live/rooms/room_abc123/participants \
-H "Authorization: Bearer mrl_your_key" \
-H "Content-Type: application/json" \
-d '{
"participant_id": "diana",
"language": "de"
}'
/v1/languages
List all supported languages with locale, name, and availability status.
Yanıt 200
| Alan | Tur | Aciklama |
|---|---|---|
languages | array | List of supported languages |
languages[].locale | string | Locale code e.g. fr-CA |
languages[].name | string | English name |
languages[].native_name | string | Native name |
languages[].country | string | Country/region |
languages[].status | string | ga or beta |
Örnek
curl https://api.morlivo.ai/api/v1/languages \
-H "Authorization: Bearer mrl_your_key"
{
"languages": [
{"locale": "en-US", "name": "English", "native_name": "English", "country": "United States", "status": "ga"},
{"locale": "fr-CA", "name": "French", "native_name": "Français", "country": "Canada", "status": "ga"},
{"locale": "sw-KE", "name": "Swahili", "native_name": "Kiswahili", "country": "Kenya", "status": "beta"}
]
}
/v1/health
Check API status and database health. No authentication required.
Yanıt 200
| Alan | Tur | Aciklama |
|---|---|---|
status | string | sağlıklı veya bozulmuş |
Örnek
curl https://api.morlivo.ai/api/v1/health
{
"status": "healthy"
}
Uyumluluk Uç Noktaları
Zaten başka bir sağlayıcı mı kullanıyorsunuz? Bir URL değiştirin ve mevcut kodunuzu koruyun. Bu uç noktalar, büyük çeviri ve transkripsiyon API'lerinin istek ve yanıt formatlarını yansıtır.
DeepL
CeviriPOST /api/compat/deepl/v2/translate
Doğrudan yerine geçer api-free.deepl.com
Google Cloud Translation
CeviriPOST /api/compat/google/v3/projects/{"{p}"}/locations/{"{l}"}:translateText
Doğrudan yerine geçer translation.googleapis.com
AWS Translate
CeviriPOST /api/compat/aws/translate
Doğrudan yerine geçer translate.amazonaws.com
OpenAI Whisper
TranskripsiyonPOST /api/compat/openai/v1/audio/transcriptions
Doğrudan yerine geçer api.openai.com
Deepgram
TranskripsiyonPOST /api/compat/deepgram/v1/listen
Doğrudan yerine geçer api.deepgram.com
Uyumluluk uç noktaları, orijinal sağlayıcıyla aynı istek formatını kabul eder ve aynı yanıt yapısını döndürür. İstek/yanıt şemaları için her sağlayıcının belgelerine bakın.
Hatalar
Tüm hatalar detail alanı içeren bir JSON nesnesi döndürür.
| Kod | Anlam | Gerçekleştiğinde |
|---|---|---|
| 400 | Hatalı İstek | Eksik gerekli alanlar, boş metin, desteklenmeyen dosya türü |
| 401 | Yetkisiz | Eksik veya geçersiz API anahtarı |
| 403 | Yasaklandı | API anahtarı geçerli ancak yetersiz izinler veya kota aşıldı |
| 413 | İstek Gövdesi Çok Büyük | Dosya 100 MB yükleme sınırını aşıyor |
| 429 | Hız Sınırlandı | Çok fazla istek. Üstel geri çekilme ile tekrar deneyin. |
| 500 | İç Hata | Beklenmeyen sunucu hatası. Devam ederse destek ile iletişime geçin. |
| 503 | Hizmet Kullanılamıyor | Yapay zeka modeli geçici olarak kullanılamıyor (devre kesici açık). Kısa süre sonra tekrar deneyin. |
{
"detail": "Field 'text' must not be empty."
}
PII Karartma
Herhangi bir çeviri veya transkripsiyon isteğine PII karartma ekleyin. Hangi varlık türlerinin tespit edilip karartılacağını belirtin.
İstek gövdesi JSON
| Alan | Tur | Zorunlu | Aciklama |
|---|---|---|---|
text | string | evet | Çevrilecek metin |
source_language | string | hayır | Belirtilmezse otomatik algılanır |
target_language | string | evet | ISO 639-1 kodu (ör. es, fr, de) |
redact | string[] | hayır | Karartılacak varlık türleri (ör. e-posta, telefon, isim) |
Yanıt 200
| Alan | Tur | Aciklama |
|---|---|---|
translated_text | string | PII karartılmış çevrilmiş metin |
source_language | string | Algılanan veya belirtilen kaynak dil |
target_language | string | Hedef dil kodu |
confidence | float | Kalite puanı 0.0 - 1.0 |
redactions | array | Uygulanan karartmaların listesi (tür ve değiştirme) |
Örnekler
curl -X POST https://api.morlivo.ai/api/v1/translate \
-H "Authorization: Bearer mrl_your_key" \
-H "Content-Type: application/json" \
-d '{
"text": "Contact John Smith at john@example.com or 555-123-4567",
"source_language": "en",
"target_language": "fr",
"redact": ["email", "phone", "name"]
}'
import httpx
resp = httpx.post(
"https://api.morlivo.ai/api/v1/translate",
headers={"Authorization": "Bearer mrl_your_key"},
json={
"text": "Contact John Smith at john@example.com or 555-123-4567",
"source_language": "en",
"target_language": "fr",
"redact": ["email", "phone", "name"],
},
)
data = resp.json()
print(data["translated_text"])
# → "Contactez [NAME_REDACTED] à [EMAIL_REDACTED] ou [PHONE_REDACTED]"
const resp = await fetch(
"https://api.morlivo.ai/api/v1/translate",
{
method: "POST",
headers: {
"Authorization": "Bearer mrl_your_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
text: "Contact John Smith at john@example.com or 555-123-4567",
source_language: "en",
target_language: "fr",
redact: ["email", "phone", "name"],
}),
}
);
const data = await resp.json();
console.log(data.translated_text);
// → "Contactez [NAME_REDACTED] à [EMAIL_REDACTED] ou [PHONE_REDACTED]"
{
"translated_text": "Contactez [NAME_REDACTED] à [EMAIL_REDACTED] ou [PHONE_REDACTED]",
"source_language": "en",
"target_language": "fr",
"confidence": 0.95,
"redactions": [
{"type": "name", "replacement": "[NAME_REDACTED]"},
{"type": "email", "replacement": "[EMAIL_REDACTED]"},
{"type": "phone", "replacement": "[PHONE_REDACTED]"}
]
}
Desteklenen Varlık Türleri
| Varlık | Aciklama | Tespit |
|---|---|---|
email |
E-posta adresleri | Desen tabanlı (dahil) |
phone |
Telefon numaraları | Desen tabanlı (dahil) |
ssn |
Sosyal Güvenlik numaraları | Desen tabanlı (dahil) |
credit_card |
Kredi kartı numaraları | Desen tabanlı (dahil) |
ip_address |
IP adresleri | Desen tabanlı (dahil) |
name |
Kişi isimleri | AI destekli (ek maliyet) |
address |
Fiziksel adresler | AI destekli (ek maliyet) |
medical |
Tıbbi bilgiler | AI destekli (ek maliyet) |
Format tabanlı varlıklar (e-posta, telefon, SSN, kredi kartı, IP) ek maliyet olmaksızın desen eşleştirme kullanılarak tespit edilir. Bağlamsal varlıklar (isim, adres, tıbbi) AI destekli tespit kullanır ve istek başına küçük bir ek ücret uygulanır.
Entegrasyona hazır mısınız?
API anahtarınızı almak ve çevirmeye başlamak için ücretsiz bir hesap oluşturun.