Reaalajas tõlge sinu enda tootesse
Üks API reaalajas kõnetõlke, tekstitõlke, kõne ja video jaoks 32 keeles. Ettemakstud krediit, maksad ainult kasutuse eest, kuutasu pole.
curl https://api.sponkly.com/v1/translate \
-H "Authorization: Bearer $SPONKLY_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Merhaba dünya", "target": "en"}'
{
"translation": "Hello world",
"target": "en",
"characters": 13,
"cost_usd": "0.000130"
}Mis see maksab
Iga päring makstakse sinu ettemakstud saldost. Meie poolel ebaõnnestunud päringu eest tasu ei võeta.
Autentimine
Iga päring sisaldab sinu API-võtit Authorization-päises. Võtmeid luuakse ja tühistatakse töölaual; kõik kulutavad sama saldot.
- Registreeru tasuta saidil sponkly.com ja ava Töölaud → Arendaja API.
- Lisa krediiti (alates $10) ja loo API-võti.
- Saada päringud aadressile https://api.sponkly.com/v1 päisega Authorization: Bearer <your key>.
Base URL: https://api.sponkly.com/v1
Authorization: Bearer spk_…Allkirjastatud päringud
Igal API-võtmel on allkirjastamise saladus. Kui allkirjastad sellega oma päringud, on varastatud võti üksi kasutu, päringut ei saa teel muuta ja sama päringut ei saa kaks korda saata. Lülita töölaual võtme jaoks sisse „Nõua allkirjastatud päringuid“ ja iga allkirjastamata päring lükatakse tagasi.
- Võta praegune aeg Unix-sekundites ja täpselt saadetava keha SHA-256 (faili üleslaadimisel faili baidid; GET-päringu ja reaalajas socketi puhul tühi keha).
- Ühenda need punktidega eraldatult selles järjekorras: ajatempel, meetod, tee koos päringustringiga ja keha räsi.
- Arvuta sellest tekstist HMAC-SHA256 oma allkirjastamise saladusega, väiketähtedega kuueteistkümnendkujul.
- Saada see kujul X-Sponkly-Signature: v1=<signature> ja aeg päises X-Sponkly-Timestamp. Allkiri kehtib 5 minutit ja ainult ühe päringu jaoks.
- Kas saadate sama päringu ühe sekundi jooksul kaks korda (kiire kordus või päringute küsitlus)? Andke aeg millisekundites; ka see on lubatud ja hoiab iga allkirja ainulaadsena.
X-Sponkly-Timestamp: 1792693200
X-Sponkly-Signature: v1=hex( HMAC-SHA256( signing_secret,
"1792693200" + "." + "POST" + "." + "/v1/translate" + "." + hex(SHA-256(body)) ) )// Node.js 18+
import crypto from "node:crypto";
async function sponkly(method, path, body) {
const raw = body === undefined ? "" : JSON.stringify(body);
const ts = Math.floor(Date.now() / 1000).toString();
const hash = crypto.createHash("sha256").update(raw).digest("hex");
const sig = crypto.createHmac("sha256", process.env.SPONKLY_SIGNING_SECRET)
.update(`${ts}.${method}.${path}.${hash}`).digest("hex");
const res = await fetch("https://api.sponkly.com" + path, {
method,
headers: {
Authorization: `Bearer ${process.env.SPONKLY_KEY}`,
"Content-Type": "application/json",
"X-Sponkly-Timestamp": ts,
"X-Sponkly-Signature": `v1=${sig}`,
},
body: raw || undefined,
});
return res.json();
}
console.log(await sponkly("POST", "/v1/translate", { text: "Merhaba dünya", target: "en" }));Hoia oma võtmeid turvaliselt
- Kutsu API-t oma serverist. Ära pane kunagi võtit ega allkirjastamise saladust veebilehele, mobiilirakendusse ega avalikku repositooriumisse.
- Nõua tootmises iga võtme puhul allkirjastatud päringuid.
- Lisa oma serverite aadressid võtme lubatud aadresside hulka, et võti mujalt ei töötaks.
- Määra igale võtmele päevane kululimiit, et viga või leke saaks maksta vaid piiratud summa.
- Kasuta igale rakendusele või keskkonnale eraldi võtit ja tühista võti kohe, kui arvad, et see võis lekkida. Uue allkirjastamise saladuse saad luua igal ajal.
- Korduvad valed võtmed või allkirjad ühelt aadressilt lukustavad selle aadressi 15 minutiks.
/v1/translateTekstitõlge
Tõlgib ühe teksti või kuni 50 tekstist koosneva loendi ükskõik millisesse 32 keelest. Jäta lähtekeel määramata, et see tuvastataks automaatselt.
# One text, or up to 50: "text": ["Good morning", "Thank you"]
curl https://api.sponkly.com/v1/translate \
-H "Authorization: Bearer $SPONKLY_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Bugün hava çok güzel.", "target": "en", "source": "tr"}'// JavaScript (Node 18+, Deno, Bun)
const res = await fetch("https://api.sponkly.com/v1/translate", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.SPONKLY_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ text: ["Good morning", "Thank you"], target: "de" }),
});
const { translations } = await res.json(); // [{ text: "Guten Morgen" }, { text: "Danke" }]# Python
import os, requests
r = requests.post("https://api.sponkly.com/v1/translate",
headers={"Authorization": f"Bearer {os.environ['SPONKLY_KEY']}"},
json={"text": "How are you?", "target": "ja", "context": "A message to a hotel guest"})
print(r.json()["translation"])Väljad: text (string või massiiv), target (keelekood), source (valikuline), context (valikuline, kuni 1000 tähemärki, mis kirjeldavad, millest tekst räägib). Maksad iga saadetud tähemärgi eest.
wss://api.sponkly.com/v1/live?source=en&target=trReaalajas kõnetõlge
WebSocket reaalajas kõne jaoks: saada heli rääkimise ajal ja saa tagasi tõlgitud subtiitrid ning soovi korral tõlgitud hääl. Kolmteist suuremat keelt tõlgib reaalajas kõnemudel umbes 1–2-sekundilise viivitusega, ülejäänuid meie oma voogedastuslahendus.
// Node.js (npm i ws). Send 16 kHz mono 16-bit PCM in ~100 ms frames, in real time.
import WebSocket from "ws";
const ws = new WebSocket("wss://api.sponkly.com/v1/live?source=en&target=tr&voice=1", {
headers: { Authorization: `Bearer ${process.env.SPONKLY_KEY}` },
});
ws.on("message", (raw) => {
const e = JSON.parse(raw);
if (e.t === "cap" && e.done) console.log("caption:", e.text); // a translated line
if (e.t === "pcm") play(Buffer.from(e.d, "base64"), e.r); // translated voice, 24 kHz PCM
});
microphone.on("data", (frame) => ws.send(frame)); // binary frames
// Browsers cannot set headers: new WebSocket(url, ["sponkly-key", key]). Never put your key in a public page —
// open the socket from your server, or from an app only your own team uses.| Serveri sõnum | Tähendus |
|---|---|
{"t":"ready","engine":"openai|own"} | Seanss on avatud; engine näitab, milline tõlketee seda keelt teenindab. |
{"t":"partial","text":"…"} | Parajasti tuvastatav kõne (võib veel muutuda). |
{"t":"cap","id","text","done"} | Tõlgitud rida: kuvatakse kasvamise ajal, lõplik, kui done on true. |
{"t":"pcm","d":"<base64>","r":24000} | Tõlgitud hääle tükk: 16-bitine mono-PCM antud sagedusega, base64-kujul. Esita tükid järjest. |
{"t":"problem","text":"noMinutes"} | Saldo sai otsa; seanss suletakse. |
Parameetrid: source ja target (keelekoodid), voice=0 ainult subtiitrite jaoks (poole hinnaga). Saada heli reaalajas (kiiremini saatmine lükatakse tagasi). Kuni 10 samaaegset seanssi konto kohta, igaüks kuni 2 tundi. Maksad iga tõlgitud kõnesekundi eest; vaikus ja muusika on tasuta.
/v1/speechTekst kõneks
Muudab teksti loomulikuks kõneks ja tagastab helifaili enda.
curl https://api.sponkly.com/v1/speech \
-H "Authorization: Bearer $SPONKLY_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Merhaba, hoş geldiniz.", "language": "tr", "voice": "female", "format": "mp3"}' \
--output welcome.mp3Väljad: text (kuni 4096 tähemärki), language, voice (female, male, neutral või alloy, ash, ballad, coral, echo, fable, onyx, nova, sage, shimmer, verse), format (mp3, wav või opus), speed (0.5–2). Hind on päises X-Sponkly-Cost-Usd.
/v1/transcribeKõne tekstiks
Laadi üles heli- või videofail (kuni 25 MB ja 60 minutit); saad teksti ajatemplitega ja soovi korral ka selle tõlke.
curl https://api.sponkly.com/v1/transcribe \
-H "Authorization: Bearer $SPONKLY_KEY" \
-F [email protected] \
-F language=tr \
-F translate_to=en
{ "text": "…", "language": "tr", "duration_seconds": 182.4,
"segments": [{ "start": 0.0, "end": 4.2, "text": "…" }],
"translation": { "text": "…", "target": "en" }, "cost_usd": "0.030430" }/v1/videosVideo subtiitrid ja dubleerimine
Saada kuni 5-minutiline video ja saa see tõlgituna tagasi: sissepõletatud subtiitrid, tõlgitud hääl või mõlemad, lisaks subtiitrifailid mõlemas keeles.
# 1. Ask for a video: dubbed into Turkish, with Turkish subtitles
curl https://api.sponkly.com/v1/videos -H "Authorization: Bearer $SPONKLY_KEY" -H "Content-Type: application/json" \
-d '{"target": "tr", "dub": true, "subtitles": "translated", "content_type": "video/mp4", "size_bytes": 48211022}'
# → { "id": "…", "upload": { "method": "PUT", "url": "https://…", "headers": { "Content-Type": "video/mp4" } } }
# 2. Upload the file to that link
curl -X PUT -H "Content-Type: video/mp4" --data-binary @talk.mp4 "<upload.url>"
# 3. Start it, then poll until "status": "ready"
curl -X POST https://api.sponkly.com/v1/videos/<id>/start -H "Authorization: Bearer $SPONKLY_KEY"
curl https://api.sponkly.com/v1/videos/<id> -H "Authorization: Bearer $SPONKLY_KEY"
# → { "status": "ready", "cost_usd": "0.500000",
# "result": { "video_url": "https://…", "subtitles": { "tr": "https://…srt", "en": "https://…srt" } } }Väljad: target, source (valikuline), dub (true tõlgitud hääle jaoks), subtitles (translated, original, both või none), content_type (video/mp4 või video/quicktime), size_bytes, title (valikuline). Maksad iga videosekundi eest, kui pikkus on teada. Tulemusi saab alla laadida 7 päeva.
/v1/balance · /v1/usage · /v1/languagesSaldo, kasutus ja keeled
Vaata oma saldot ja seda, millal vanim krediit aegub, loetle arveldatud päringud ning hangi keeled ja kehtivad hinnad.
curl https://api.sponkly.com/v1/balance -H "Authorization: Bearer $SPONKLY_KEY"
# → { "balance_usd": "48.213400", "next_expiry": "2027-10-22T09:12:00.000Z" }
curl "https://api.sponkly.com/v1/usage?limit=20" -H "Authorization: Bearer $SPONKLY_KEY"
# → { "data": [{ "product": "live", "units": 312.5, "unit": "second", "cost_usd": "0.520834", … }], "has_more": false }Vead
Vead tagastatakse JSON-ina püsiva koodi ja loetava sõnumiga.
{ "error": { "code": "insufficient_balance", "message": "…" } }| 400 | invalid_text · invalid_target · text_too_long … | Päringust puudub midagi või midagi pole lubatud; sõnum ütleb, mis. |
| 401 | missing_key · invalid_key | API-võti puudub, on vale või tühistatud. |
| 402 | insufficient_balance | Saldost ei piisa selle päringu jaoks. Lisa krediiti töölaual. |
| 429 | — | Liiga palju samaaegseid päringuid. Oota hetk ja proovi uuesti. |
| 502 | translation_failed · speech_failed … | Tõrge tekkis meie või teenusepakkuja poolel. Tasu ei võetud; proovi uuesti. |
Piirangud
- Tekstitõlge: kuni 50 teksti ja 20 000 tähemärki päringu kohta, 5000 teksti kohta.
- Tekst kõneks: kuni 4096 tähemärki päringu kohta.
- Kõne tekstiks: failid kuni 25 MB ja 60 minutit.
- Reaalajas tõlge: kuni 10 samaaegset seanssi konto kohta, igaüks 2 tundi, heli reaalajas.
- Videod: kuni 5 minutit ja 4 GB, korraga valmib 3; tulemusi hoitakse 7 päeva.
- Piirmäärad võtme kohta: 300 tõlget, 120 kõnet, 60 transkriptsiooni ja 20 uut videot minutis.
- 32 keelt: inglise, türgi, saksa, prantsuse, hispaania, itaalia, portugali, vene, jaapani, korea, hiina, araabia, hindi, hollandi, poola, rootsi, norra, taani, soome, kreeka, tšehhi, rumeenia, ungari, ukraina, heebrea, tai, vietnami, indoneesia, malai, eesti, pärsia ja katalaani.
Arveldus
- Ettemaks: lisa krediiti kaardiga alates $10; iga päring võetakse sinu saldost.
- Kaardimakse tasu kuvatakse ja lisatakse maksmisel, et kogu krediit jääks sinu kasutusse.
- Krediiti saab kasutada 12 kuu jooksul pärast ostu. Seda ei tagastata.
- Meie poolel ebaõnnestunud päringu eest tasu ei võeta ja ebaõnnestunud video eest makstakse raha tagasi.
- Kui saldo hakkab otsa saama, saadame sulle e-kirja; nulli juures lükatakse päringud koodiga 402 tagasi, kuni lisad krediiti.