v1.0.0

API संदर्भ

कोड की कुछ पंक्तियों के साथ Morlivo अनुवाद और ट्रांसक्रिप्शन को अपने एप्लिकेशन में एकीकृत करें।

बेस URL: https://api.morlivo.ai प्रमाणीकरण: Authorization: Bearer mrl_...

प्रमाणीकरण

सभी API अनुरोधों के लिए एक Bearer टोकन आवश्यक है। सेटिंग्स के अंतर्गत डैशबोर्ड से अपनी API कुंजी प्राप्त करें।

हेडर
Authorization: Bearer mrl_your_api_key_here

API कुंजियाँ इससे शुरू होती हैं mrl_. उन्हें गोपनीय रखें। समझौता होने पर डैशबोर्ड से रोटेट करें।

POST

/v1/translate

एक भाषा से दूसरी भाषा में पाठ का अनुवाद करें। छोड़ने पर स्रोत भाषा स्वतः पहचानी जाती है।

अनुरोध बॉडी JSON

फ़ील्डप्रकारआवश्यकविवरण
textstringहाँअनुवाद के लिए पाठ
target_languagestringहाँISO 639-1 कोड (जैसे es, fr, de)
source_languagestringनहींछोड़ने पर स्वतः पहचाना जाता है
project_idintegerनहींप्रोजेक्ट शब्दावली और शैली लागू करें
formalitystringनहींRegister: formal, informal, or default

प्रतिक्रिया 200

फ़ील्डप्रकारविवरण
translated_textstringअनुवादित पाठ
source_languagestringपहचानी गई या प्रदान की गई स्रोत भाषा
target_languagestringलक्ष्य भाषा कोड
confidencefloatगुणवत्ता स्कोर 0.0 - 1.0
validationobjectगुणवत्ता मान्यता परिणाम

उदाहरण

curl
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"
  }'
Python
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!"
JavaScript
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
  }
}
POST

/v1/transcribe

ऑडियो या वीडियो फ़ाइल को पाठ में ट्रांसक्राइब करें। 100 MB तक समर्थित।

अनुरोध बॉडी multipart/form-data

फ़ील्डप्रकारआवश्यकविवरण
filefileहाँऑडियो/वीडियो फ़ाइल (mp3, wav, mp4, webm, आदि)
languagestringनहींISO कोड, छोड़ने पर स्वतः पहचाना जाता है
project_idintegerनहींट्रैकिंग के लिए प्रोजेक्ट से लिंक करें
response_formatstringनहींOutput format: json, verbose_json, text, srt, vtt
punctuatebooleanनहींInclude punctuation (default true)

प्रतिक्रिया 200

फ़ील्डप्रकारविवरण
textstringपूर्ण प्रतिलेखित पाठ
languagestringपहचानी गई भाषा
duration_secondsfloatऑडियो अवधि
confidencefloatगुणवत्ता स्कोर 0.0 - 1.0
language_confidencefloatConfidence of auto-detected language (null if language was specified)
segmentsarrayटाइमस्टैम्प वाले खंड
validationobjectगुणवत्ता जाँच

उदाहरण

curl
curl -X POST https://api.morlivo.ai/api/v1/transcribe \
  -H "Authorization: Bearer mrl_your_key" \
  -F "file=@meeting.mp3" \
  -F "language=en"
Python
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
  }
}
WebSocket

/v1/live/transcribe

रीयल-टाइम में ऑडियो स्ट्रीम करें और लाइव ट्रांसक्रिप्शन परिणाम प्राप्त करें।

कनेक्शन

पैरामीटरप्रकारआवश्यकविवरण
tokenstringहाँAPI कुंजी क्वेरी पैरामीटर के रूप में
languagestringनहींस्रोत भाषा संकेत (जैसे en, fr)। छोड़ने पर स्वतः पहचानी जाती है।

प्रोटोकॉल

भेजें

बाइनरी PCM ऑडियो फ़्रेम (16-बिट, 16kHz मोनो)

प्राप्त करें

type फ़ील्ड के साथ JSON संदेश: transcript (आंशिक/अंतिम टेक्स्ट), status (सत्र इवेंट), error

प्राप्त संदेश

फ़ील्डप्रकारविवरण
typestring"transcript" | "status" | "error"
textstringट्रांसक्राइब किया गया टेक्स्ट (ट्रांसक्रिप्ट संदेशों पर)
is_finalbooleanजब खंड पूर्ण हो तो True
languagestringपहचाना गया भाषा कोड

उदाहरण

JavaScript
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);
  }
};
Python
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}
WebSocket

/v1/live/translate

एक भाषा में ऑडियो स्ट्रीम करें और रीयल-टाइम में दूसरी भाषा में अनुवादित टेक्स्ट प्राप्त करें। स्वचालित भाषा पहचान के साथ स्पीच-टू-टेक्स्ट अनुवाद का समर्थन करता है।

कनेक्शन

पैरामीटरप्रकारआवश्यकविवरण
tokenstringहाँAPI कुंजी क्वेरी पैरामीटर के रूप में
target_languagestringहाँआउटपुट टेक्स्ट के लिए भाषा (जैसे en, es, fr)
source_languagestringनहींस्रोत ऑडियो भाषा। छोड़ने पर स्वतः पहचानी जाती है।

प्रोटोकॉल

भेजें

बाइनरी PCM ऑडियो फ़्रेम (16-बिट, 16kHz मोनो)

प्राप्त करें

target_language में अनुवादित टेक्स्ट के साथ JSON संदेश। मूल भाषण की ट्रांसक्रिप्ट और अनुवादित आउटपुट दोनों शामिल हैं।

प्राप्त संदेश

फ़ील्डप्रकारविवरण
typestring"transcript" | "status" | "error"
textstringलक्ष्य भाषा में अनुवादित टेक्स्ट
is_finalbooleanजब खंड पूर्ण हो तो True
source_languagestringपहचानी गई स्रोत भाषा
target_languagestringलक्ष्य भाषा कोड

उदाहरण

JavaScript
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);
  }
};
Python
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}
POST

/v1/live/rooms

Create a multi-participant translation room. Each participant speaks their own language and receives translated text from other participants.

अनुरोध बॉडी JSON

फ़ील्डप्रकारआवश्यकविवरण
languagesobjectहाँParticipant ID to language mapping
bridge_languagestringनहींHub language, default en
max_participantsintनहींMax participants 2-10, default 10
modestringनहींinterpreter or inline

प्रतिक्रिया 200

फ़ील्डप्रकारविवरण
room_idstringUnique room identifier
statusstringRoom status
languagesobjectParticipant ID to language mapping
bridge_languagestringHub language used for translation
modestringTranslation mode
max_participantsintMaximum number of participants

उदाहरण

curl
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
}
WebSocket

/v1/live/speech/{room_id}

Connect a participant to a room for real-time speech translation.

कनेक्शन

पैरामीटरप्रकारआवश्यकविवरण
room_idstringहाँRoom ID from create room response (path param)
participantstringहाँParticipant ID (query param)
tokenstringहाँAPI कुंजी क्वेरी पैरामीटर के रूप में

उदाहरण

JavaScript
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);
  }
};
POST

/v1/live/rooms/{room_id}/participants

Add a participant to an existing room after creation.

अनुरोध बॉडी JSON

फ़ील्डप्रकारआवश्यकविवरण
participant_idstringहाँUnique participant identifier
languagestringहाँParticipant's language code

उदाहरण

curl
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"
  }'
GET

/v1/languages

List all supported languages with locale, name, and availability status.

प्रतिक्रिया 200

फ़ील्डप्रकारविवरण
languagesarrayList of supported languages
languages[].localestringLocale code e.g. fr-CA
languages[].namestringEnglish name
languages[].native_namestringNative name
languages[].countrystringCountry/region
languages[].statusstringga or beta

उदाहरण

curl
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"}
  ]
}
GET

/v1/health

Check API status and database health. No authentication required.

प्रतिक्रिया 200

फ़ील्डप्रकारविवरण
statusstringस्वस्थ या अवक्रमित

उदाहरण

curl
curl https://api.morlivo.ai/api/v1/health
प्रतिक्रिया
{
  "status": "healthy"
}

संगतता एंडपॉइंट

पहले से किसी अन्य प्रदाता का उपयोग कर रहे हैं? एक URL बदलें और अपना मौजूदा कोड रखें। ये एंडपॉइंट प्रमुख अनुवाद और ट्रांसक्रिप्शन APIs के अनुरोध और प्रतिक्रिया प्रारूपों को प्रतिबिंबित करते हैं।

DL

DeepL

अनुवाद
POST /api/compat/deepl/v2/translate

इसके लिए ड्रॉप-इन प्रतिस्थापन api-free.deepl.com

G

Google Cloud Translation

अनुवाद
POST /api/compat/google/v3/projects/{"{p}"}/locations/{"{l}"}:translateText

इसके लिए ड्रॉप-इन प्रतिस्थापन translation.googleapis.com

A

AWS Translate

अनुवाद
POST /api/compat/aws/translate

इसके लिए ड्रॉप-इन प्रतिस्थापन translate.amazonaws.com

OA

OpenAI Whisper

प्रतिलेखन
POST /api/compat/openai/v1/audio/transcriptions

इसके लिए ड्रॉप-इन प्रतिस्थापन api.openai.com

DG

Deepgram

प्रतिलेखन
POST /api/compat/deepgram/v1/listen

इसके लिए ड्रॉप-इन प्रतिस्थापन api.deepgram.com

संगतता एंडपॉइंट मूल प्रदाता के समान अनुरोध प्रारूप स्वीकार करते हैं और समान प्रतिक्रिया संरचना लौटाते हैं। उनके अनुरोध/प्रतिक्रिया स्कीमा के लिए प्रत्येक प्रदाता के दस्तावेज़ देखें।

त्रुटियाँ

सभी त्रुटियाँ एक detail फ़ील्ड के साथ JSON ऑब्जेक्ट लौटाती हैं।

कोडअर्थजब यह होता है
400 खराब अनुरोध आवश्यक फ़ील्ड अनुपस्थित, खाली टेक्स्ट, असमर्थित फ़ाइल प्रकार
401 अनधिकृत अनुपस्थित या अमान्य API कुंजी
403 निषिद्ध API कुंजी मान्य है लेकिन अपर्याप्त अनुमतियाँ या कोटा पार हो गया
413 पेलोड बहुत बड़ा फ़ाइल 100 MB अपलोड सीमा से अधिक है
429 दर सीमित बहुत अधिक अनुरोध। एक्सपोनेंशियल बैकऑफ़ के साथ पुनः प्रयास करें।
500 आंतरिक त्रुटि अप्रत्याशित सर्वर त्रुटि। यदि यह बनी रहती है तो सहायता से संपर्क करें।
503 सेवा अनुपलब्ध AI मॉडल अस्थायी रूप से अनुपलब्ध (सर्किट ब्रेकर खुला)। शीघ्र पुनः प्रयास करें।
त्रुटि प्रतिक्रिया प्रारूप
{
  "detail": "Field 'text' must not be empty."
}
POST

PII रिडक्शन

किसी भी अनुवाद या ट्रांसक्रिप्शन अनुरोध में PII रिडक्शन जोड़ें। पहचानने और हटाने के लिए एंटिटी प्रकार निर्दिष्ट करें।

POST /v1/translate POST /v1/transcribe

अनुरोध बॉडी JSON

फ़ील्डप्रकारआवश्यकविवरण
textstringहाँअनुवाद के लिए पाठ
source_languagestringनहींछोड़ने पर स्वतः पहचाना जाता है
target_languagestringहाँISO 639-1 कोड (जैसे es, fr, de)
redactstring[]नहींरिडैक्ट करने के लिए एंटिटी प्रकार (जैसे email, phone, name)

प्रतिक्रिया 200

फ़ील्डप्रकारविवरण
translated_textstringPII रिडैक्ट किया गया अनुवादित टेक्स्ट
source_languagestringपहचानी गई या प्रदान की गई स्रोत भाषा
target_languagestringलक्ष्य भाषा कोड
confidencefloatगुणवत्ता स्कोर 0.0 - 1.0
redactionsarrayलागू किए गए रिडक्शन की सूची (प्रकार और प्रतिस्थापन)

उदाहरण

curl
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"]
  }'
Python
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]"
JavaScript
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]"}
  ]
}

समर्थित एंटिटी प्रकार

एंटिटीविवरणपहचान
email ईमेल पते पैटर्न-आधारित (शामिल)
phone फ़ोन नंबर पैटर्न-आधारित (शामिल)
ssn सामाजिक सुरक्षा नंबर (SSN) पैटर्न-आधारित (शामिल)
credit_card क्रेडिट कार्ड नंबर पैटर्न-आधारित (शामिल)
ip_address IP पते पैटर्न-आधारित (शामिल)
name व्यक्ति के नाम AI-संचालित (अतिरिक्त लागत)
address भौतिक पते AI-संचालित (अतिरिक्त लागत)
medical चिकित्सा जानकारी AI-संचालित (अतिरिक्त लागत)

प्रारूप-आधारित एंटिटी (email, phone, SSN, credit card, IP) बिना अतिरिक्त लागत के पैटर्न मिलान का उपयोग करके पहचानी जाती हैं। प्रासंगिक एंटिटी (name, address, medical) AI-संचालित पहचान का उपयोग करती हैं और प्रति अनुरोध एक छोटा अतिरिक्त शुल्क लगता है।

एकीकृत करने के लिए तैयार हैं?

अपनी API कुंजी पाने और अनुवाद शुरू करने के लिए एक मुफ़्त खाता बनाएँ।