Sanntidsoversettelse for ditt eget produkt
Ett API for sanntidsoversettelse av tale, tekstoversettelse, tale og video på 32 språk. Forhåndsbetalt kreditt, betal bare for det du bruker, ingen månedsavgift.
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"
}Hva det koster
Hvert kall betales fra den forhåndsbetalte saldoen din. Et kall som feiler hos oss, belastes ikke.
Autentisering
Hver forespørsel sender API-nøkkelen din i Authorization-headeren. Nøkler opprettes og trekkes tilbake i oversikten; alle bruker av samme saldo.
- Registrer deg gratis på sponkly.com og åpne Oversikt → Utvikler-API.
- Fyll på saldo (fra $10) og opprett en API-nøkkel.
- Send forespørsler til https://api.sponkly.com/v1 med Authorization: Bearer <your key>.
Base URL: https://api.sponkly.com/v1
Authorization: Bearer spk_…Signerte forespørsler
Hver API-nøkkel har en signeringshemmelighet. Når du signerer forespørslene dine med den, er en stjålet nøkkel verdiløs alene, en forespørsel kan ikke endres underveis, og samme forespørsel kan ikke sendes to ganger. Slå på «Krev signerte forespørsler» for nøkkelen i oversikten, så avvises alle usignerte forespørsler.
- Ta gjeldende tid i Unix-sekunder og SHA-256 av nøyaktig den bodyen du sender (ved filopplasting: filens byte; for GET og live-socketen: en tom body).
- Slå dem sammen i denne rekkefølgen, adskilt med punktum: tidsstempel, metode, sti med spørrestreng og body-hashen.
- Lag en HMAC-SHA256 av den teksten med signeringshemmeligheten din, som hex med små bokstaver.
- Send den som X-Sponkly-Signature: v1=<signature>, med tiden som X-Sponkly-Timestamp. En signatur gjelder i 5 minutter og for én forespørsel.
- Sender du den samme forespørselen to ganger innen ett sekund (et raskt nytt forsøk eller en spørring)? Oppgi tiden i millisekunder i stedet; det godtas også og holder hver signatur unik.
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" }));Hold nøklene dine trygge
- Kall API-et fra serveren din. Legg aldri en nøkkel eller en signeringshemmelighet i en nettside, en mobilapp eller et offentlig repository.
- Krev signerte forespørsler for alle nøkler i produksjon.
- Legg inn adressene til serverne dine i nøkkelens tillatte adresser, så nøkkelen ikke virker fra noe annet sted.
- Sett en daglig forbruksgrense per nøkkel, så en feil eller lekkasje bare kan koste et begrenset beløp.
- Bruk én nøkkel per app eller miljø, og trekk tilbake en nøkkel med en gang du tror den er avslørt. Du kan også lage en ny signeringshemmelighet når som helst.
- Gjentatte feil nøkler eller signaturer fra én adresse sperrer den adressen i 15 minutter.
/v1/translateTekstoversettelse
Oversetter én tekst eller en liste med opptil 50 til hvilket som helst av de 32 språkene. Utelat kildespråket for å få det gjenkjent automatisk.
# 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"])Felter: text (streng eller array), target (språkkode), source (valgfritt), context (valgfritt, opptil 1 000 tegn som forteller hva teksten handler om). Du betaler per sendt tegn.
wss://api.sponkly.com/v1/live?source=en&target=trSanntidsoversettelse av tale
En WebSocket for tale i sanntid: send lyden mens det snakkes, og motta oversatte undertekster og, hvis du ber om det, en oversatt stemme. Tretten store språk oversettes av en talemodell i sanntid med omtrent 1–2 sekunders forsinkelse; de andre av vår egen strømmepipeline.
// 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.| Melding fra serveren | Hva den betyr |
|---|---|
{"t":"ready","engine":"openai|own"} | Økten er åpen; engine forteller hvilken oversettelsesvei som brukes for dette språket. |
{"t":"partial","text":"…"} | Talen som gjenkjennes akkurat nå (kan fortsatt endre seg). |
{"t":"cap","id","text","done"} | En oversatt linje: vises mens den vokser, endelig når done er true. |
{"t":"pcm","d":"<base64>","r":24000} | En bit av den oversatte stemmen: 16-biters mono-PCM med oppgitt samplingsfrekvens, i base64. Spill av bitene rett etter hverandre. |
{"t":"problem","text":"noMinutes"} | Saldoen din er brukt opp; økten lukkes. |
Parametere: source og target (språkkoder), voice=0 for bare undertekster (halv pris). Send lyd i sanntid (raskere avvises). Opptil 10 økter samtidig per konto, 2 timer hver. Du betaler per sekund oversatt tale; stillhet og musikk er gratis.
/v1/speechTekst til tale
Gjør tekst om til naturlig tale og returnerer selve lydfilen.
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.mp3Felter: text (opptil 4 096 tegn), language, voice (female, male, neutral eller alloy, ash, ballad, coral, echo, fable, onyx, nova, sage, shimmer, verse), format (mp3, wav eller opus), speed (0.5–2). Kostnaden står i headeren X-Sponkly-Cost-Usd.
/v1/transcribeTale til tekst
Last opp en lyd- eller videofil (opptil 25 MB og 60 minutter); få teksten med tidsstempler, og oversettelsen hvis du ber om den.
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/videosVideoteksting og dubbing
Send en video på opptil 5 minutter og få den tilbake oversatt: innbrente undertekster, en oversatt stemme eller begge deler, pluss undertekstfiler på begge språk.
# 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" } } }Felter: target, source (valgfritt), dub (true for en oversatt stemme), subtitles (translated, original, both eller none), content_type (video/mp4 eller video/quicktime), size_bytes, title (valgfritt). Du betaler per sekund video når lengden er kjent. Resultatene kan lastes ned i 7 dager.
/v1/balance · /v1/usage · /v1/languagesSaldo, bruk og språk
Sjekk saldoen og når den eldste kreditten din utløper, list opp de fakturerte kallene dine, og hent språkene og gjeldende priser.
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 }Feil
Feil returneres som JSON med en stabil kode og en lesbar melding.
{ "error": { "code": "insufficient_balance", "message": "…" } }| 400 | invalid_text · invalid_target · text_too_long … | Noe i forespørselen mangler eller er ikke tillatt; meldingen sier hva. |
| 401 | missing_key · invalid_key | Ingen API-nøkkel, eller en nøkkel som er feil eller trukket tilbake. |
| 402 | insufficient_balance | Saldoen din dekker ikke dette kallet. Fyll på saldo i oversikten. |
| 429 | — | For mange forespørsler samtidig. Vent litt og prøv igjen. |
| 502 | translation_failed · speech_failed … | Det feilet hos oss eller hos en leverandør. Du ble ikke belastet; prøv igjen. |
Grenser
- Tekstoversettelse: opptil 50 tekster og 20 000 tegn per forespørsel, 5 000 per tekst.
- Tekst til tale: opptil 4 096 tegn per forespørsel.
- Tale til tekst: filer på opptil 25 MB og 60 minutter.
- Sanntidsoversettelse: opptil 10 økter samtidig per konto, 2 timer hver, lyd i sanntid.
- Videoer: opptil 5 minutter og 4 GB, 3 under behandling samtidig; resultater lagres i 7 dager.
- Grenser per nøkkel per minutt: 300 oversettelser, 120 talesynteser, 60 transkripsjoner og 20 nye videoer.
- 32 språk: engelsk, tyrkisk, tysk, fransk, spansk, italiensk, portugisisk, russisk, japansk, koreansk, kinesisk, arabisk, hindi, nederlandsk, polsk, svensk, norsk, dansk, finsk, gresk, tsjekkisk, rumensk, ungarsk, ukrainsk, hebraisk, thai, vietnamesisk, indonesisk, malayisk, estisk, persisk og katalansk.
Fakturering
- Forhåndsbetalt: fyll på med kort fra $10; hvert kall trekkes fra saldoen din.
- Kortgebyret vises og legges til i kassen, slik at hele kreditten er din å bruke.
- Kreditten kan brukes i 12 måneder etter kjøpet. Den refunderes ikke.
- Et kall som feiler hos oss, belastes ikke, og en video som feiler, refunderes.
- Når saldoen begynner å bli lav, sender vi deg en e-post; ved null avvises kall med 402 til du fyller på.