Reaaliaikainen käännös omaan tuotteeseesi
Yksi API reaaliaikaiseen puheen käännökseen, tekstin käännökseen, puheeseen ja videoihin 32 kielellä. Ennakkoon ladattu krediitti, maksat vain käytöstä, ei kuukausimaksua.
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"
}Mitä se maksaa
Jokainen kutsu maksetaan ennakkoon ladatusta saldostasi. Meidän päässämme epäonnistuneesta kutsusta ei veloiteta.
Todennus
Jokainen pyyntö sisältää API-avaimesi Authorization-otsakkeessa. Avaimet luodaan ja perutaan hallintapaneelissa; kaikki käyttävät samaa saldoa.
- Rekisteröidy ilmaiseksi osoitteessa sponkly.com ja avaa Hallintapaneeli → Kehittäjä-API.
- Lisää krediittiä (alkaen $10) ja luo API-avain.
- Lähetä pyynnöt osoitteeseen https://api.sponkly.com/v1 otsakkeella Authorization: Bearer <your key>.
Base URL: https://api.sponkly.com/v1
Authorization: Bearer spk_…Allekirjoitetut pyynnöt
Jokaisella API-avaimella on allekirjoitussalaisuus. Kun allekirjoitat pyyntösi sillä, pelkkä varastettu avain on hyödytön, pyyntöä ei voi muuttaa matkalla eikä samaa pyyntöä voi lähettää kahdesti. Ota avaimelle käyttöön ”Vaadi allekirjoitetut pyynnöt” hallintapaneelissa, niin jokainen allekirjoittamaton pyyntö hylätään.
- Ota nykyinen aika Unix-sekunteina ja SHA-256 täsmälleen siitä rungosta, jonka lähetät (tiedostolatauksessa tiedoston tavut; GET-pyynnöissä ja live-socketissa tyhjä runko).
- Yhdistä ne pisteillä erotettuina tässä järjestyksessä: aikaleima, metodi, polku kyselymerkkijonoineen ja rungon tiiviste.
- Laske tästä tekstistä HMAC-SHA256 allekirjoitussalaisuudellasi heksadesimaalina pienin kirjaimin.
- Lähetä se muodossa X-Sponkly-Signature: v1=<signature> ja aika otsakkeessa X-Sponkly-Timestamp. Allekirjoitus on voimassa 5 minuuttia ja kelpaa yhteen pyyntöön.
- Lähetätkö saman pyynnön kahdesti sekunnin sisällä (nopea uusintayritys tai kysely)? Anna aika millisekunteina; sekin hyväksytään, ja jokainen allekirjoitus pysyy yksilöllisenä.
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" }));Pidä avaimesi turvassa
- Kutsu API:a palvelimeltasi. Älä koskaan laita avainta tai allekirjoitussalaisuutta verkkosivulle, mobiilisovellukseen tai julkiseen repositorioon.
- Vaadi allekirjoitetut pyynnöt kaikille tuotannon avaimille.
- Lisää palvelimiesi osoitteet avaimen sallittuihin osoitteisiin, niin avain ei toimi mistään muualta.
- Aseta jokaiselle avaimelle päivittäinen kulutusraja, niin virhe tai vuoto voi maksaa vain rajallisesti.
- Käytä yhtä avainta sovellusta tai ympäristöä kohden ja peru avain heti, kun epäilet sen paljastuneen. Voit myös luoda uuden allekirjoitussalaisuuden milloin tahansa.
- Toistuvat väärät avaimet tai allekirjoitukset samasta osoitteesta lukitsevat osoitteen 15 minuutiksi.
/v1/translateTekstin käännös
Kääntää yhden tekstin tai enintään 50 tekstin listan mille tahansa 32 kielestä. Jätä lähdekieli pois, niin se tunnistetaan automaattisesti.
# 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"])Kentät: text (merkkijono tai taulukko), target (kielikoodi), source (valinnainen), context (valinnainen, enintään 1 000 merkkiä siitä, mistä tekstissä on kyse). Maksat jokaisesta lähetetystä merkistä.
wss://api.sponkly.com/v1/live?source=en&target=trReaaliaikainen puheen käännös
WebSocket reaaliaikaiselle puheelle: lähetä ääni sitä mukaa kuin puhutaan ja vastaanota käännetty tekstitys sekä pyydettäessä käännetty ääni. Kolmetoista suurta kieltä kääntää reaaliaikainen puhemalli noin 1–2 sekunnin viiveellä, muut oma striimausputkemme.
// 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.| Palvelimen viesti | Mitä se tarkoittaa |
|---|---|
{"t":"ready","engine":"openai|own"} | Istunto on auki; engine kertoo, mikä käännösreitti palvelee tätä kieltä. |
{"t":"partial","text":"…"} | Parhaillaan tunnistettava puhe (se voi vielä muuttua). |
{"t":"cap","id","text","done"} | Käännetty rivi: näytetään sen kasvaessa, lopullinen kun done on true. |
{"t":"pcm","d":"<base64>","r":24000} | Pala käännettyä ääntä: 16-bittistä mono-PCM:ää annetulla näytteenottotaajuudella, base64. Toista palat peräkkäin. |
{"t":"problem","text":"noMinutes"} | Saldosi loppui; istunto suljetaan. |
Parametrit: source ja target (kielikoodit), voice=0 pelkälle tekstitykselle (puoleen hintaan). Lähetä ääni reaaliajassa (nopeampi hylätään). Enintään 10 samanaikaista istuntoa tiliä kohden, kukin 2 tuntia. Maksat jokaisesta käännetyn puheen sekunnista; hiljaisuus ja musiikki ovat ilmaisia.
/v1/speechTekstistä puheeksi
Muuttaa tekstin luonnolliseksi puheeksi ja palauttaa itse äänitiedoston.
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.mp3Kentät: text (enintään 4 096 merkkiä), language, voice (female, male, neutral tai alloy, ash, ballad, coral, echo, fable, onyx, nova, sage, shimmer, verse), format (mp3, wav tai opus), speed (0.5–2). Hinta on X-Sponkly-Cost-Usd-otsakkeessa.
/v1/transcribePuheesta tekstiksi
Lataa ääni- tai videotiedosto (enintään 25 MB ja 60 minuuttia); saat tekstin aikaleimoineen ja pyydettäessä sen käännöksen.
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/videosVideon tekstitys ja jälkiäänitys
Lähetä enintään 5 minuutin video ja saat sen takaisin käännettynä: tekstitys poltettuna videoon, käännetty ääni tai molemmat sekä tekstitystiedostot molemmilla kielillä.
# 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" } } }Kentät: target, source (valinnainen), dub (true käännetylle äänelle), subtitles (translated, original, both tai none), content_type (video/mp4 tai video/quicktime), size_bytes, title (valinnainen). Maksat videon jokaisesta sekunnista, kun sen pituus on selvillä. Tulokset ovat ladattavissa 7 päivää.
/v1/balance · /v1/usage · /v1/languagesSaldo, käyttö ja kielet
Tarkista saldosi ja milloin vanhin krediittisi vanhenee, listaa laskutetut kutsusi ja hae kielet ja nykyiset hinnat.
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 }Virheet
Virheet palautetaan JSON-muodossa pysyvän koodin ja luettavan viestin kera.
{ "error": { "code": "insufficient_balance", "message": "…" } }| 400 | invalid_text · invalid_target · text_too_long … | Pyynnöstä puuttuu jotain tai siinä on jotain, mikä ei ole sallittua; viesti kertoo mitä. |
| 401 | missing_key · invalid_key | API-avain puuttuu, tai avain on väärä tai peruttu. |
| 402 | insufficient_balance | Saldosi ei riitä tähän kutsuun. Lisää krediittiä hallintapaneelissa. |
| 429 | — | Liian monta pyyntöä kerralla. Odota hetki ja yritä uudelleen. |
| 502 | translation_failed · speech_failed … | Virhe tapahtui meidän päässämme tai palveluntarjoajalla. Sinua ei veloitettu; yritä uudelleen. |
Rajat
- Tekstin käännös: enintään 50 tekstiä ja 20 000 merkkiä pyyntöä kohden, 5 000 tekstiä kohden.
- Tekstistä puheeksi: enintään 4 096 merkkiä pyyntöä kohden.
- Puheesta tekstiksi: tiedostot enintään 25 MB ja 60 minuuttia.
- Reaaliaikainen käännös: enintään 10 samanaikaista istuntoa tiliä kohden, kukin 2 tuntia, ääni reaaliajassa.
- Videot: enintään 5 minuuttia ja 4 GB, 3 työn alla kerrallaan; tulokset säilytetään 7 päivää.
- Rajat avainta kohden minuutissa: 300 käännöstä, 120 puhetta, 60 litterointia ja 20 uutta videota.
- 32 kieltä: englanti, turkki, saksa, ranska, espanja, italia, portugali, venäjä, japani, korea, kiina, arabia, hindi, hollanti, puola, ruotsi, norja, tanska, suomi, kreikka, tšekki, romania, unkari, ukraina, heprea, thai, vietnam, indonesia, malaiji, viro, persia ja katalaani.
Laskutus
- Ennakkomaksu: lisää krediittiä kortilla alkaen $10; jokainen kutsu veloitetaan saldostasi.
- Kortin käsittelykulu näytetään ja lisätään maksaessa, joten koko krediitti jää sinun käyttöösi.
- Krediittiä voi käyttää 12 kuukautta ostosta. Sitä ei palauteta.
- Meidän päässämme epäonnistuneesta kutsusta ei veloiteta, ja epäonnistunut video hyvitetään.
- Kun saldosi on vähissä, lähetämme sinulle sähköpostia; nollassa kutsut hylätään koodilla 402, kunnes lisäät krediittiä.