API संदर्भ
कोड की कुछ पंक्तियों के साथ Morlivo अनुवाद और ट्रांसक्रिप्शन को अपने एप्लिकेशन में एकीकृत करें।
https://api.morlivo.ai
प्रमाणीकरण: Authorization: Bearer mrl_...
प्रमाणीकरण
सभी API अनुरोधों के लिए एक Bearer टोकन आवश्यक है। सेटिंग्स के अंतर्गत डैशबोर्ड से अपनी API कुंजी प्राप्त करें।
Authorization: Bearer mrl_your_api_key_here
API कुंजियाँ इससे शुरू होती हैं mrl_. उन्हें गोपनीय रखें। समझौता होने पर डैशबोर्ड से रोटेट करें।
/v1/translate
एक भाषा से दूसरी भाषा में पाठ का अनुवाद करें। छोड़ने पर स्रोत भाषा स्वतः पहचानी जाती है।
अनुरोध बॉडी JSON
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
text | string | हाँ | अनुवाद के लिए पाठ |
target_language | string | हाँ | ISO 639-1 कोड (जैसे es, fr, de) |
source_language | string | नहीं | छोड़ने पर स्वतः पहचाना जाता है |
project_id | integer | नहीं | प्रोजेक्ट शब्दावली और शैली लागू करें |
formality | string | नहीं | Register: formal, informal, or default |
प्रतिक्रिया 200
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
translated_text | string | अनुवादित पाठ |
source_language | string | पहचानी गई या प्रदान की गई स्रोत भाषा |
target_language | string | लक्ष्य भाषा कोड |
confidence | float | गुणवत्ता स्कोर 0.0 - 1.0 |
validation | object | गुणवत्ता मान्यता परिणाम |
उदाहरण
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
ऑडियो या वीडियो फ़ाइल को पाठ में ट्रांसक्राइब करें। 100 MB तक समर्थित।
अनुरोध बॉडी multipart/form-data
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
file | file | हाँ | ऑडियो/वीडियो फ़ाइल (mp3, wav, mp4, webm, आदि) |
language | string | नहीं | ISO कोड, छोड़ने पर स्वतः पहचाना जाता है |
project_id | integer | नहीं | ट्रैकिंग के लिए प्रोजेक्ट से लिंक करें |
response_format | string | नहीं | Output format: json, verbose_json, text, srt, vtt |
punctuate | boolean | नहीं | Include punctuation (default true) |
प्रतिक्रिया 200
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
text | string | पूर्ण प्रतिलेखित पाठ |
language | string | पहचानी गई भाषा |
duration_seconds | float | ऑडियो अवधि |
confidence | float | गुणवत्ता स्कोर 0.0 - 1.0 |
language_confidence | float | Confidence of auto-detected language (null if language was specified) |
segments | array | टाइमस्टैम्प वाले खंड |
validation | object | गुणवत्ता जाँच |
उदाहरण
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
रीयल-टाइम में ऑडियो स्ट्रीम करें और लाइव ट्रांसक्रिप्शन परिणाम प्राप्त करें।
कनेक्शन
| पैरामीटर | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
token | string | हाँ | API कुंजी क्वेरी पैरामीटर के रूप में |
language | string | नहीं | स्रोत भाषा संकेत (जैसे en, fr)। छोड़ने पर स्वतः पहचानी जाती है। |
प्रोटोकॉल
बाइनरी PCM ऑडियो फ़्रेम (16-बिट, 16kHz मोनो)
type फ़ील्ड के साथ JSON संदेश: transcript (आंशिक/अंतिम टेक्स्ट), status (सत्र इवेंट), error
प्राप्त संदेश
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
type | string | "transcript" | "status" | "error" |
text | string | ट्रांसक्राइब किया गया टेक्स्ट (ट्रांसक्रिप्ट संदेशों पर) |
is_final | boolean | जब खंड पूर्ण हो तो True |
language | string | पहचाना गया भाषा कोड |
उदाहरण
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
एक भाषा में ऑडियो स्ट्रीम करें और रीयल-टाइम में दूसरी भाषा में अनुवादित टेक्स्ट प्राप्त करें। स्वचालित भाषा पहचान के साथ स्पीच-टू-टेक्स्ट अनुवाद का समर्थन करता है।
कनेक्शन
| पैरामीटर | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
token | string | हाँ | API कुंजी क्वेरी पैरामीटर के रूप में |
target_language | string | हाँ | आउटपुट टेक्स्ट के लिए भाषा (जैसे en, es, fr) |
source_language | string | नहीं | स्रोत ऑडियो भाषा। छोड़ने पर स्वतः पहचानी जाती है। |
प्रोटोकॉल
बाइनरी PCM ऑडियो फ़्रेम (16-बिट, 16kHz मोनो)
target_language में अनुवादित टेक्स्ट के साथ JSON संदेश। मूल भाषण की ट्रांसक्रिप्ट और अनुवादित आउटपुट दोनों शामिल हैं।
प्राप्त संदेश
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
type | string | "transcript" | "status" | "error" |
text | string | लक्ष्य भाषा में अनुवादित टेक्स्ट |
is_final | boolean | जब खंड पूर्ण हो तो True |
source_language | string | पहचानी गई स्रोत भाषा |
target_language | string | लक्ष्य भाषा कोड |
उदाहरण
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.
अनुरोध बॉडी JSON
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
languages | object | हाँ | Participant ID to language mapping |
bridge_language | string | नहीं | Hub language, default en |
max_participants | int | नहीं | Max participants 2-10, default 10 |
mode | string | नहीं | interpreter or inline |
प्रतिक्रिया 200
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
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 |
उदाहरण
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.
कनेक्शन
| पैरामीटर | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
room_id | string | हाँ | Room ID from create room response (path param) |
participant | string | हाँ | Participant ID (query param) |
token | string | हाँ | API कुंजी क्वेरी पैरामीटर के रूप में |
उदाहरण
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.
अनुरोध बॉडी JSON
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
participant_id | string | हाँ | Unique participant identifier |
language | string | हाँ | Participant's language code |
उदाहरण
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.
प्रतिक्रिया 200
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
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 |
उदाहरण
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.
प्रतिक्रिया 200
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
status | string | स्वस्थ या अवक्रमित |
उदाहरण
curl https://api.morlivo.ai/api/v1/health
{
"status": "healthy"
}
संगतता एंडपॉइंट
पहले से किसी अन्य प्रदाता का उपयोग कर रहे हैं? एक URL बदलें और अपना मौजूदा कोड रखें। ये एंडपॉइंट प्रमुख अनुवाद और ट्रांसक्रिप्शन APIs के अनुरोध और प्रतिक्रिया प्रारूपों को प्रतिबिंबित करते हैं।
DeepL
अनुवादPOST /api/compat/deepl/v2/translate
इसके लिए ड्रॉप-इन प्रतिस्थापन api-free.deepl.com
Google Cloud Translation
अनुवादPOST /api/compat/google/v3/projects/{"{p}"}/locations/{"{l}"}:translateText
इसके लिए ड्रॉप-इन प्रतिस्थापन translation.googleapis.com
AWS Translate
अनुवादPOST /api/compat/aws/translate
इसके लिए ड्रॉप-इन प्रतिस्थापन translate.amazonaws.com
OpenAI Whisper
प्रतिलेखनPOST /api/compat/openai/v1/audio/transcriptions
इसके लिए ड्रॉप-इन प्रतिस्थापन api.openai.com
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."
}
PII रिडक्शन
किसी भी अनुवाद या ट्रांसक्रिप्शन अनुरोध में PII रिडक्शन जोड़ें। पहचानने और हटाने के लिए एंटिटी प्रकार निर्दिष्ट करें।
अनुरोध बॉडी JSON
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
text | string | हाँ | अनुवाद के लिए पाठ |
source_language | string | नहीं | छोड़ने पर स्वतः पहचाना जाता है |
target_language | string | हाँ | ISO 639-1 कोड (जैसे es, fr, de) |
redact | string[] | नहीं | रिडैक्ट करने के लिए एंटिटी प्रकार (जैसे email, phone, name) |
प्रतिक्रिया 200
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
translated_text | string | PII रिडैक्ट किया गया अनुवादित टेक्स्ट |
source_language | string | पहचानी गई या प्रदान की गई स्रोत भाषा |
target_language | string | लक्ष्य भाषा कोड |
confidence | float | गुणवत्ता स्कोर 0.0 - 1.0 |
redactions | array | लागू किए गए रिडक्शन की सूची (प्रकार और प्रतिस्थापन) |
उदाहरण
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]"}
]
}
समर्थित एंटिटी प्रकार
| एंटिटी | विवरण | पहचान |
|---|---|---|
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 कुंजी पाने और अनुवाद शुरू करने के लिए एक मुफ़्त खाता बनाएँ।