API til videotransskription og noter
Send en lyd- eller videofil fra din server, og få en transskription med tidsstempler, AI-noter og færdige downloads tilbage. API’et bruger den samme behandling som webstedet og Chrome-udvidelsen.
- Basis-URL
https://api.video-to-notes.com- Godkendelse
- API-nøgle som bearer-token
- Format
- JSON over HTTPS; filer går direkte til lageret via signerede URL’er
- Adgang
- Indgår i aktive Basic- og Plus-abonnementer; bruger dine abonnementstimer
Kom hurtigt i gang
Disse trin fører en fil fra din disk til en transskription og noter. Du skal bruge et aktivt Basic- eller Plus-abonnement, en terminal og, til eksempelklienten, Python 3.12 eller nyere.
1. Opret en API-nøgle
Log ind på webstedet (for eksempel på prissiden), åbn API-nøgler i kontolinjen, giv nøglen et navn og angiv eventuelt en udløbsdato. Kopiér hemmeligheden, når den vises: den vises kun én gang. Op til tre nøgler kan være aktive ad gangen.
2. Gem nøglen i en miljøvariabel
Hold nøglen ude af kildekode, kommandolinjeargumenter og logfiler. Eksemplerne læser nøglen fra VTN_API_KEY og basis-URL’en fra VTN_API_BASE.
export VTN_API_BASE="https://api.video-to-notes.com"
read -rs VTN_API_KEY && export VTN_API_KEY # paste the key, press Enter$env:VTN_API_BASE = "https://api.video-to-notes.com"
$env:VTN_API_KEY = Read-Host "API key" -MaskInput3. Tjek din konto
Dette kald bekræfter, at nøglen virker, og returnerer dit abonnement, dine resterende abonnementssekunder, de understøttede formater og de aktuelle grænser.
# Sends the key through stdin, so it never appears in the process list.
vtn() {
printf 'header = "Authorization: Bearer %s"\n' "$VTN_API_KEY" |
curl -s --config - "$@"
}
vtn "$VTN_API_BASE/api/v1/account"$headers = @{ Authorization = "Bearer $env:VTN_API_KEY" }
Invoke-RestMethod "$env:VTN_API_BASE/api/v1/account" -Headers $headers |
ConvertTo-Json -Depth 54. Transskribér en fil
Download eksempelklienten i Python. Den kræver kun standardbiblioteket. Den uploader filen i dele, starter jobbet, venter på det og gemmer hver resultatside.
python client.py run meeting.mp4 --state meeting.state.json \
--output meeting.jsonl --download meeting-filesVil du kun behandle en del af en optagelse, tilføjer du --start og --end i sekunder fra filens begyndelse. --audio-language giver et sproghint, og --notes-language vælger notesproget. Uden disse indstillinger behandles hele filen, og sprogene genkendes automatisk.
python client.py run lecture.webm --state lecture.state.json \
--start 30 --end 3630 --audio-language ru --notes-language enStatusfilen gemmer upload-id’et og anmodningens identitet, aldrig nøglen. Hvis kommandoen stopper, kører du den igen med den samme statusfil: den finder det samme job, og du bliver ikke opkrævet to gange. Brug en ny statusfil til hvert nyt job.
5. Læs resultaterne
meeting.jsonl indeholder én JSON-resultatside pr. linje: transskriptionstekst med tider, noter i Markdown, huller og advarsler. meeting-files indeholder downloadene, for eksempel transskriptionen som TXT og noterne som Markdown, HTML og PDF. Klienten har også disse kommandoer:
python client.py account
python client.py status JOB_ID
python client.py result JOB_ID --output results.jsonl --download files
python client.py cancel JOB_ID
python client.py resume JOB_IDForetrækker du curl? Bash-lynstarten kører de samme trin for upload, job og resultat med curl og jq.
bash quickstart.sh meeting.mp4Sådan fungerer et job
Alle integrationer følger de samme seks trin. API-referencen viser hvert kald med et eksempel på en anmodning og et svar.
- Tjek kontoen.
GET /api/v1/accountreturnerer dit abonnement, de resterende sekunder, de understøttede formater og grænserne. - Opret en upload.
POST /api/v1/uploadsmed filstørrelsen i byte og filtypenavnet. Svaret angiver størrelsen på delene og antallet af dele. - Upload delene. Hent signerede URL’er med
POST /api/v1/uploads/{upload_id}/parts, send hver del med en HTTP-PUTdirekte til lageret, gem hvertETag, og kald derefterPOST /api/v1/uploads/{upload_id}/complete. - Start jobbet.
POST /api/v1/jobsmed upload-id’et og enIdempotency-Key-header. Serveren tjekker den faktiske fil, planlægger arbejdet og reserverer tiden i dit abonnement. - Spørg efter status.
GET /api/v1/jobs/{job_id}, indtil tilstanden er endelig, og vent mindstpoll_after_secondsmellem kaldene. - Læs resultatet.
GET /api/v1/jobs/{job_id}/result, og følgnext_cursor, indtil den er null. Download filerne iartifacts, før deres links udløber.
Et job ender som completed, completed_with_gaps, interrupted, cancelled, failed eller expired. charged_seconds viser, hvor meget af dit abonnement jobbet har brugt.
God praksis
Disse vaner beskytter dine nøgler, forhindrer dobbeltopkrævning og gør lange job pålidelige.
Hold nøglerne hemmelige
- Kald kun API’et fra en server eller et script, du selv styrer. Læg aldrig en nøgle i browserkode, en mobilapp, en URL eller versionsstyring.
- Indlæs nøglen fra en miljøvariabel eller en hemmelighedsmanager, og hold den ude af logfiler, fejlrapporter og kommandolinjeargumenter.
- Brug én nøgle pr. integration med en udløbsdato, så du kan udskifte eller tilbagekalde én nøgle uden at røre de andre.
- For at udskifte en nøgle opretter du den nye, tager den i brug og tilbagekalder derefter den gamle. Job, der allerede er startet, kører videre.
- Hvis en nøgle kan være lækket, for eksempel i en chat, en sag eller et commit, så tilbagekald den straks i panelet API-nøgler.
Gør oprettelse af job sikker at gentage
- Generér en tilfældig
Idempotency-Key, for eksempel et UUID, til hvert nyt job, og gem den sammen med upload-id’et, før du sender anmodningen. - Hvis svaret går tabt, sender du den samme anmodning med den samme nøgle igen. Du får det oprindelige job tilbage og betaler ikke to gange.
- Genbrug aldrig en nøgle til en anden fil eller andre indstillinger: API’et svarer så med 409
IDEMPOTENCY_CONFLICT.
Spørg med måde og håndtér grænser
- Vent mindst fem sekunder mellem statuskald, og længere, når
poll_after_secondsbeder om det. - Ved 429 eller 503 venter du som angivet i headeren
Retry-Aftereller ierror.retry_after_secondsog prøver derefter igen med en lille tilfældig forsinkelse. - Gentag kun en anmodning uændret, når
error.retryableer true. Ellers skal du rette anmodningen først. - En konto kører én upload og ét job ad gangen. Sæt dine filer i kø, og send den næste, når det aktuelle job er færdigt.
Styr, hvor mange timer du bruger
- Tjek
remaining_seconds, før du uploader. Et job, der kræver mere tid, end du har, mislykkes medINSUFFICIENT_BALANCE; API’et forkorter aldrig dit udvalg, så det passer. - Send et
range, når du kun skal bruge en del af en optagelse. Kun den valgte lyd opkræves. - Annullér job, du ikke længere har brug for. Færdige dele forbliver tilgængelige, og reserveret tid, der ikke blev brugt, gives tilbage.
- Afbryd uploads, du ikke vil bruge, så den næste upload kan starte.
Hent fuldstændige resultater
- Følg
next_cursor, indtil den er null. En side indeholder højst 32 elementer. - Behandl
gap-elementer som lyd, der ikke kunne behandles, ikke som stilhed, og tjekwarnings. - Download filerne i
artifacts, mens deres links er gyldige (op til ti minutter); hent siden igen for at få nye links. - Gem det, du har brug for: resultatfiler opbevares i cirka 24 timer og gendannelse af transskriptionen i cirka 48 timer.
- Læs de felter, du har brug for, og ignorér resten.
Ofte stillede spørgsmål
Hvem kan bruge API’et?
Alle med et aktivt Basic- eller Plus-abonnement. API-adgang indgår i begge abonnementer og har ingen særskilt pris. Uden et aktivt abonnement afvises nye job med PLAN_REQUIRED. Se abonnementer og priser.
Hvordan tælles brugen af API’et?
API-job bruger de samme abonnementstimer som webstedet og Chrome-udvidelsen. Serveren måler den faktiske længde af den valgte lyd; charged_seconds i jobstatus og på hver resultatside viser den nøjagtige mængde. For et job med huller, der ikke kan gendannes, forklarer vilkårene, hvordan den manglende lyd opkræves.
Hvilke filformater og filstørrelser understøttes?
Video: MP4, M4V, MOV, WebM, MKV, OGV, AVI, WMV, ASF, FLV, MPG, MPEG, VOB, TS, MTS, M2TS, 3GP, 3G2 og MXF. Lyd: MP3, M4A, AAC, WAV, FLAC, OGG, OGA, OPUS, WMA, AMR, AIFF, AIF, CAF og AC3. En fil må være op til 8 GiB. Den skal indeholde et lydspor, der kan afkodes; kopibeskyttede filer kan ikke læses.
Hvilke sprog kan jeg bruge?
Automatisk genkendelse er standard. Du kan også give et hint om lydens sprog eller vælge notesproget med en af mere end 60 sprogkoder, for eksempel en, de, es, fr, ja eller zh. Kontokaldet viser alle de værdier, der accepteres lige nu.
Hvor lang tid tager et job?
Det afhænger af længden på den valgte lyd og af den aktuelle belastning. Job kører i baggrunden, så du kan uploade en lang optagelse og kigge forbi senere. completed_units og total_units i jobstatus viser fremskridtet.
Kan jeg kalde API’et fra en browser eller en mobilapp?
Nej. En API-nøgle giver adgang til dine abonnementstimer, så den skal blive på en server, du selv styrer. Til en web- eller mobilapp sender du filerne til din egen backend og kalder API’et derfra.
Kan jeg sende et YouTube-link eller en anden URL?
Nej. API’et behandler filer, du uploader; det downloader ikke URL’er eller YouTube-videoer.
Findes der webhooks eller e-mailbeskeder?
Nej. Spørg efter jobstatus, og overhold poll_after_seconds. API-job sender ikke e-mails.
Hvad sker der, hvis min forbindelse afbrydes?
Hvis en del ikke kan uploades, anmoder du om en ny signeret URL til den del og sender den igen, før uploaden udløber. Hvis svaret på oprettelsen af jobbet går tabt, gentager du anmodningen med den samme Idempotency-Key og får det samme job tilbage. Et igangværende job afhænger ikke af din forbindelse.
Hvor længe opbevares resultaterne?
Resultatsider og downloadfiler opbevares i cirka 24 timer, efter at jobbet er færdigt, og transskriptionen kan gendannes i cirka 48 timer. Hvert svar angiver det nøjagtige tidspunkt i expires_at, så gem det, du har brug for, inden da.
Hvad sker der, hvis jeg tilbagekalder en nøgle, eller mit abonnement ophører?
At tilbagekalde en nøgle stopper ikke job, der allerede er startet; læs deres resultater med en anden nøgle. Når dit abonnement ophører, kan en gyldig nøgle stadig læse status og resultater og annullere job, indtil indholdet udløber, men nye uploads, nye job og genoptagelse kræver et aktivt abonnement.
Hvad sker der med de filer, jeg uploader?
Vi tilstræber at slette uploadede kildefiler inden for 24 timer efter upload. Sletningen kan tage længere tid. Privatlivspolitikken forklarer, hvad der gemmes, og hvor længe.
Findes der et SDK eller en OpenAPI-fil?
Der findes ingen SDK-pakke. Brug OpenAPI 3.1-filen til at generere en klient eller importere API’et i et værktøj som Postman eller Insomnia, eller tag udgangspunkt i eksemplerne i Python og curl.
Hvilke hastighedsgrænser gælder?
En konto kører én upload og ét job ad gangen, kan starte op til 10 uploads på i alt 20 GiB pr. UTC-døgn, oprette 12 job pr. minut og sende 60 andre anmodninger pr. minut med alle sine nøgler tilsammen. Kontokaldet returnerer de værdier, der gælder for dig.
Filer og eksempler
Eksemplerne og kontraktfilerne udgives sammen med webstedet og svarer til API’et i drift.
- client.py: eksempelklient til Python 3.12+, kun standardbiblioteket
- quickstart.sh: Bash-eksempel med curl og jq
- openapi.json: OpenAPI 3.1-beskrivelse af hvert endpoint, med eksempler
- paid-api.schema.json: JSON Schema for hver anmodning og hvert svar
Hjælp
Er noget uklart, eller virker det ikke? Kontakt os, og angiv request_id fra fejlsvaret, tidspunktet og endpointet. Send aldrig din API-nøgle til os.