Živý překlad pro váš vlastní produkt
Jedno API pro živý překlad hlasu, překlad textu, řeč a video ve 32 jazycích. Předplacený kredit, platíte jen za to, co využijete, bez měsíčního poplatku.
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"
}Kolik to stojí
Každé volání se platí z předplaceného zůstatku. Volání, které selže na naší straně, se neúčtuje.
Ověřování
Každý požadavek nese váš klíč API v hlavičce Authorization. Klíče se vytvářejí a ruší v přehledu; všechny čerpají ze stejného zůstatku.
- Zaregistrujte se zdarma na sponkly.com a otevřete Přehled → API pro vývojáře.
- Dobijte kredit (od $10) a vytvořte klíč API.
- Posílejte požadavky na https://api.sponkly.com/v1 s hlavičkou Authorization: Bearer <your key>.
Base URL: https://api.sponkly.com/v1
Authorization: Bearer spk_…Podepsané požadavky
Ke každému klíči API patří podpisové tajemství. Když jím požadavky podepisujete, samotný ukradený klíč je k ničemu, požadavek nelze cestou změnit a stejný požadavek nelze poslat dvakrát. Zapněte u klíče v přehledu „Vyžadovat podepsané požadavky“ a každý nepodepsaný požadavek bude odmítnut.
- Vezměte aktuální čas v sekundách Unix a SHA-256 přesně toho těla, které posíláte (u nahrání souboru: bajty souboru; u GET a živého socketu: prázdné tělo).
- Spojte je tečkami v tomto pořadí: časové razítko, metoda, cesta včetně query stringu a hash těla.
- Z tohoto textu vytvořte HMAC-SHA256 svým podpisovým tajemstvím, v šestnáctkovém zápisu malými písmeny.
- Pošlete ho jako X-Sponkly-Signature: v1=<signature> a čas jako X-Sponkly-Timestamp. Podpis platí 5 minut a jen pro jeden požadavek.
- Posíláte stejný požadavek dvakrát během jedné sekundy (rychlé opakování nebo dotazování)? Uveďte čas v milisekundách; je také přijímán a každý podpis zůstane jedinečný.
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" }));Chraňte své klíče
- Volejte API ze svého serveru. Nikdy nedávejte klíč ani podpisové tajemství do webové stránky, mobilní aplikace ani veřejného repozitáře.
- V produkci vyžadujte podepsané požadavky u každého klíče.
- Zadejte adresy svých serverů do povolených adres klíče, aby klíč odjinud nefungoval.
- Nastavte každému klíči denní limit útraty, aby chyba nebo únik stály jen omezenou částku.
- Používejte jeden klíč pro každou aplikaci nebo prostředí a klíč zrušte, jakmile máte podezření, že unikl. Nové podpisové tajemství můžete vytvořit kdykoli.
- Opakované chybné klíče nebo podpisy z jedné adresy tuto adresu na 15 minut zablokují.
/v1/translatePřeklad textu
Přeloží jeden text nebo seznam až 50 textů do kteréhokoli z 32 jazyků. Když zdrojový jazyk vynecháte, rozpozná se automaticky.
# 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"])Pole: text (řetězec nebo pole), target (kód jazyka), source (volitelné), context (volitelné, až 1 000 znaků popisujících, o čem text je). Platíte za každý odeslaný znak.
wss://api.sponkly.com/v1/live?source=en&target=trŽivý překlad hlasu
WebSocket pro živou řeč: posílejte zvuk průběžně, jak se mluví, a dostávejte přeložené titulky a na požádání i přeložený hlas. Třináct hlavních jazyků překládá model řeči v reálném čase se zpožděním asi 1–2 sekundy; ostatní náš vlastní streamovací systém.
// 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.| Zpráva ze serveru | Co znamená |
|---|---|
{"t":"ready","engine":"openai|own"} | Relace je otevřená; engine udává, která cesta překladu tento jazyk obsluhuje. |
{"t":"partial","text":"…"} | Řeč, která se právě rozpoznává (ještě se může změnit). |
{"t":"cap","id","text","done"} | Přeložený řádek: zobrazuje se průběžně, jak přibývá, a je konečný, když je done true. |
{"t":"pcm","d":"<base64>","r":24000} | Část přeloženého hlasu: 16bitové mono PCM v uvedené vzorkovací frekvenci, base64. Přehrávejte části hned za sebou. |
{"t":"problem","text":"noMinutes"} | Došel vám zůstatek; relace se zavře. |
Parametry: source a target (kódy jazyků), voice=0 jen pro titulky (za poloviční cenu). Zvuk posílejte v reálném čase (rychlejší se odmítne). Až 10 relací najednou na účet, každá 2 hodiny. Platíte za každou sekundu přeložené řeči; ticho a hudba jsou zdarma.
/v1/speechPřevod textu na řeč
Převede text na přirozenou řeč a vrátí přímo zvukový soubor.
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.mp3Pole: text (až 4 096 znaků), language, voice (female, male, neutral nebo alloy, ash, ballad, coral, echo, fable, onyx, nova, sage, shimmer, verse), format (mp3, wav nebo opus), speed (0.5–2). Cena je v hlavičce X-Sponkly-Cost-Usd.
/v1/transcribePřevod řeči na text
Nahrajte zvukový nebo video soubor (až 25 MB a 60 minut); dostanete text s časovými značkami a na požádání i jeho překlad.
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/videosTitulky a dabing videí
Pošlete video dlouhé až 5 minut a dostanete ho zpět přeložené: s vypálenými titulky, přeloženým hlasem nebo obojím, plus soubory titulků v obou jazycích.
# 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" } } }Pole: target, source (volitelné), dub (true pro přeložený hlas), subtitles (translated, original, both nebo none), content_type (video/mp4 nebo video/quicktime), size_bytes, title (volitelné). Platíte za každou sekundu videa, jakmile je známa jeho délka. Výsledky jsou ke stažení 7 dní.
/v1/balance · /v1/usage · /v1/languagesZůstatek, využití a jazyky
Zjistěte zůstatek a kdy vyprší váš nejstarší kredit, vypište účtovaná volání a získejte jazyky a aktuální ceny.
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 }Chyby
Chyby se vracejí jako JSON se stálým kódem a srozumitelnou zprávou.
{ "error": { "code": "insufficient_balance", "message": "…" } }| 400 | invalid_text · invalid_target · text_too_long … | V požadavku něco chybí nebo není povoleno; zpráva řekne co. |
| 401 | missing_key · invalid_key | Chybí klíč API, nebo je klíč nesprávný či zrušený. |
| 402 | insufficient_balance | Zůstatek na toto volání nestačí. Dobijte kredit v přehledu. |
| 429 | — | Příliš mnoho požadavků najednou. Chvíli počkejte a zkuste to znovu. |
| 502 | translation_failed · speech_failed … | Selhalo to na naší straně nebo u poskytovatele. Nic jsme vám neúčtovali; zkuste to znovu. |
Limity
- Překlad textu: až 50 textů a 20 000 znaků na požadavek, 5 000 na text.
- Převod textu na řeč: až 4 096 znaků na požadavek.
- Převod řeči na text: soubory až 25 MB a 60 minut.
- Živý překlad: až 10 relací najednou na účet, každá 2 hodiny, zvuk v reálném čase.
- Videa: až 5 minut a 4 GB, 3 zpracovávaná najednou; výsledky se uchovávají 7 dní.
- Limity na klíč za minutu: 300 překladů, 120 převodů na řeč, 60 přepisů a 20 nových videí.
- 32 jazyků: angličtina, turečtina, němčina, francouzština, španělština, italština, portugalština, ruština, japonština, korejština, čínština, arabština, hindština, nizozemština, polština, švédština, norština, dánština, finština, řečtina, čeština, rumunština, maďarština, ukrajinština, hebrejština, thajština, vietnamština, indonéština, malajština, estonština, perština a katalánština.
Účtování
- Předplacení: kredit dobijete kartou od $10; každé volání se strhne ze zůstatku.
- Poplatek za zpracování karty se zobrazí a připočte při placení, takže vám zůstane celý kredit.
- Kredit lze využít 12 měsíců od nákupu. Nelze ho vrátit.
- Volání, které selže na naší straně, se neúčtuje, a za video, které selže, se peníze vrátí.
- Když zůstatek dochází, pošleme vám e-mail; při nule se volání odmítají s kódem 402, dokud kredit nedobijete.