Guider
Tale til tekst
En lydfil
Gi oss en https-lenke til filen. Vi henter den, måler lengden, reserverer prisen for de påbegynte minuttene og gjør den om til tekst. diarize: true skiller mellom dem som snakker. Uten language finner vi språket selv.
curl -X POST "https://api.telkit.no/v1/transcription/jobs" \ -H "Authorization: Bearer $TELKIT_API_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: mote-12-tekst" \ -d '{ "profile": "nettbutikken", "source": { "kind": "url", "url": "https://example.com/opptak/styremote-12.mp3" }, "language": "no", "diarize": true, "name": "Styremøte 12", "externalRef": "mote-12"}'const response = await fetch("https://api.telkit.no/v1/transcription/jobs", { method: "POST", headers: { Authorization: `Bearer ${process.env.TELKIT_API_KEY}`, "Content-Type": "application/json", "Idempotency-Key": "mote-12-tekst", }, body: JSON.stringify({ profile: "nettbutikken", source: { kind: "url", url: "https://example.com/opptak/styremote-12.mp3", }, language: "no", diarize: true, name: "Styremøte 12", externalRef: "mote-12", }),});const answer = await response.json();Jobben går i bakgrunnen. Du får transcription.job.completed når teksten er klar, eller transcription.job.failed med en errorCode. En jobb som feiler, koster ingenting. Du kan også spørre:
curl "https://api.telkit.no/v1/transcription/jobs/0199e4a7-5e3b-7f2c-a4d1-9b6c3e7f8a21" \ -H "Authorization: Bearer $TELKIT_API_KEY"const response = await fetch("https://api.telkit.no/v1/transcription/jobs/0199e4a7-5e3b-7f2c-a4d1-9b6c3e7f8a21", { headers: { Authorization: `Bearer ${process.env.TELKIT_API_KEY}`, },});const answer = await response.json();Hent teksten som json, srt, vtt eller txt:
curl "https://api.telkit.no/v1/transcription/jobs/0199e4a7-5e3b-7f2c-a4d1-9b6c3e7f8a21/result?format=srt" \ -H "Authorization: Bearer $TELKIT_API_KEY"const response = await fetch("https://api.telkit.no/v1/transcription/jobs/0199e4a7-5e3b-7f2c-a4d1-9b6c3e7f8a21/result?format=srt", { headers: { Authorization: `Bearer ${process.env.TELKIT_API_KEY}`, },});const answer = await response.json();I dashbordet kan du også laste opp filer direkte. DELETE /v1/transcription/jobs/:id sletter teksten og lyden.
Direkte lyd over WebSocket
En direkte økt tar imot lyd mens den blir spilt inn, og sender tekstlinjer tilbake med en gang. Slik går det:
- Lag økten. Prisen for
maxMinutesminutter blir reservert, og det du ikke bruker, går tilbake når økten slutter. - Hent en billett. Den kan brukes én gang og gjelder i 60 sekunder.
- Åpne
wss://api.telkit.no/v1/transcription/stream?ticket=<billett>. - Send lyd som binære rammer og les tekstlinjene.
curl -X POST "https://api.telkit.no/v1/transcription/sessions" \ -H "Authorization: Bearer $TELKIT_API_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: diktat-2026-11-02-1" \ -d '{ "profile": "nettbutikken", "encoding": "pcm_s16le", "language": "no", "maxMinutes": 10}'const response = await fetch("https://api.telkit.no/v1/transcription/sessions", { method: "POST", headers: { Authorization: `Bearer ${process.env.TELKIT_API_KEY}`, "Content-Type": "application/json", "Idempotency-Key": "diktat-2026-11-02-1", }, body: JSON.stringify({ profile: "nettbutikken", encoding: "pcm_s16le", language: "no", maxMinutes: 10, }),});const answer = await response.json();curl -X POST "https://api.telkit.no/v1/transcription/sessions/0199e4a8-6f4c-7a3d-b5e2-ac7d4f8a9b32/ticket" \ -H "Authorization: Bearer $TELKIT_API_KEY"const response = await fetch("https://api.telkit.no/v1/transcription/sessions/0199e4a8-6f4c-7a3d-b5e2-ac7d4f8a9b32/ticket", { method: "POST", headers: { Authorization: `Bearer ${process.env.TELKIT_API_KEY}`, },});const answer = await response.json();Lyden du sender
pcm_s16le: 16-bits PCM, little-endian, mono, 16 kHz. Ellermulaw: μ-law, 8 kHz.- Rammer på 100 til 250 millisekunder virker best.
- Send
{ "type": "stop" }som tekst når du er ferdig, og{ "type": "ping" }for å holde forbindelsen i live.
Det vi sender tilbake
| type | Betyr |
|---|---|
ready | Økten er klar. Sier hvor mange sekunder lyd den kan ta imot. |
partial | En linje som kan endre seg. En senere linje med samme segment erstatter den. |
final | En linje som ikke endrer seg mer. |
error | Noe gikk galt. Koden står i code. |
ended | Økten er over: hvorfor, hvor mange sekunder lyd og prisen. |
{ "type": "final", "segment": 3, "text": "Da går vi videre til neste sak.", "startMs": 18400, "endMs": 20150, "language": "no"}Én økt har én forbindelse. Faller forbindelsen, er økten over, og du betaler for lyden som kom fram. Når økten er over, får du også hendelsen transcription.session.ended. En økt du ikke trenger likevel, lukker du slik:
curl -X POST "https://api.telkit.no/v1/transcription/sessions/0199e4a8-6f4c-7a3d-b5e2-ac7d4f8a9b32/close" \ -H "Authorization: Bearer $TELKIT_API_KEY"const response = await fetch("https://api.telkit.no/v1/transcription/sessions/0199e4a8-6f4c-7a3d-b5e2-ac7d4f8a9b32/close", { method: "POST", headers: { Authorization: `Bearer ${process.env.TELKIT_API_KEY}`, },});const answer = await response.json();En samtale mens den pågår
Skriv ned en samtale i telkit mens den pågår. mode: "caller" skriver ned den som ringer, all skriver ned alle.
curl -X POST "https://api.telkit.no/v1/calls/0199e4a3-1f6d-7a2b-8c55-3e9d0a7b4c21/transcription/start" \ -H "Authorization: Bearer $TELKIT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "mode": "all", "language": "no"}'const response = await fetch("https://api.telkit.no/v1/calls/0199e4a3-1f6d-7a2b-8c55-3e9d0a7b4c21/transcription/start", { method: "POST", headers: { Authorization: `Bearer ${process.env.TELKIT_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ mode: "all", language: "no", }),});const answer = await response.json();Linjene kommer som server-sent events. Strømmen fungerer som hendelsesstrømmen: hver linje har en posisjon, og du fortsetter med Last-Event-ID.
curl -N "https://api.telkit.no/v1/calls/0199e4a3-1f6d-7a2b-8c55-3e9d0a7b4c21/transcript/stream" \ -H "Authorization: Bearer $TELKIT_API_KEY" \ -H "Accept: text/event-stream"const response = await fetch("https://api.telkit.no/v1/calls/0199e4a3-1f6d-7a2b-8c55-3e9d0a7b4c21/transcript/stream", { headers: { Authorization: `Bearer ${process.env.TELKIT_API_KEY}`, Accept: "text/event-stream", },});const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();for (;;) { const { value, done } = await reader.read(); if (done) break; // Each event is "id:", "event:" and "data:" lines, ended by an empty line. console.log(value);}Når samtalen er over, blir linjene satt sammen til én tekst, og du får call.transcript.ready. Linjene kommer ikke som webhooks, fordi de er for mange.