API för videotranskribering och anteckningar
Skicka en ljud- eller videofil från din server och få tillbaka en tidsstämplad transkription, AI-anteckningar och färdiga nedladdningar. API:t använder samma bearbetning som webbplatsen och Chrome-tillägget.
- Bas-URL
https://api.video-to-notes.com- Autentisering
- API-nyckel som bearer-token
- Format
- JSON över HTTPS; filer går direkt till lagringen via signerade URL:er
- Åtkomst
- Ingår i aktiva Basic- och Plus-abonnemang; använder dina abonnemangstimmar
Snabbstart
De här stegen tar en fil från din disk till en transkription och anteckningar. Du behöver ett aktivt Basic- eller Plus-abonnemang, en terminal och, för exempelklienten, Python 3.12 eller senare.
1. Skapa en API-nyckel
Logga in på webbplatsen (till exempel på prissidan), öppna API-nycklar i kontofältet, namnge nyckeln och ange ett utgångsdatum om du vill. Kopiera hemligheten när den visas: den visas bara en gång. Upp till tre nycklar kan vara aktiva samtidigt.
2. Spara nyckeln i en miljövariabel
Håll nyckeln borta från källkod, kommandoradsargument och loggar. Exemplen läser nyckeln från VTN_API_KEY och bas-URL:en från 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. Kontrollera ditt konto
Det här anropet bekräftar att nyckeln fungerar och returnerar ditt abonnemang, dina återstående abonnemangssekunder, de format som stöds och de aktuella gränserna.
# 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. Transkribera en fil
Ladda ned exempelklienten i Python. Den behöver bara standardbiblioteket. Den laddar upp filen i delar, startar jobbet, väntar på det och sparar varje resultatsida.
python client.py run meeting.mp4 --state meeting.state.json \
--output meeting.jsonl --download meeting-filesVill du bara bearbeta en del av en inspelning lägger du till --start och --end i sekunder från filens början. --audio-language ger en språkhint och --notes-language väljer anteckningarnas språk. Utan de här alternativen bearbetas hela filen och språken identifieras automatiskt.
python client.py run lecture.webm --state lecture.state.json \
--start 30 --end 3630 --audio-language ru --notes-language enTillståndsfilen sparar uppladdnings-ID:t och begärans identitet, aldrig nyckeln. Om kommandot avbryts kör du det igen med samma tillståndsfil: det hittar samma jobb och du debiteras inte två gånger. Använd en ny tillståndsfil för varje nytt jobb.
5. Läs resultaten
meeting.jsonl innehåller en JSON-resultatsida per rad: transkriptionstext med tider, anteckningar i Markdown, luckor och varningar. meeting-files innehåller nedladdningarna, till exempel transkriptionen som TXT och anteckningarna som Markdown, HTML och PDF. Klienten har även de här kommandona:
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_IDFöredrar du curl? Bash-snabbstarten kör samma steg för uppladdning, jobb och resultat med curl och jq.
bash quickstart.sh meeting.mp4Så fungerar ett jobb
Varje integration följer samma sex steg. API-referensen visar varje anrop med ett exempel på begäran och svar.
- Kontrollera kontot.
GET /api/v1/accountreturnerar ditt abonnemang, återstående sekunder, format som stöds och gränser. - Skapa en uppladdning.
POST /api/v1/uploadsmed filstorleken i byte och filändelsen. Svaret anger delstorleken och antalet delar. - Ladda upp delarna. Hämta signerade URL:er med
POST /api/v1/uploads/{upload_id}/parts, skicka varje del med en HTTP-PUTdirekt till lagringen, spara varjeETagoch anropa sedanPOST /api/v1/uploads/{upload_id}/complete. - Starta jobbet.
POST /api/v1/jobsmed uppladdnings-ID:t och enIdempotency-Key-header. Servern kontrollerar den faktiska filen, planerar arbetet och reserverar tiden i ditt abonnemang. - Fråga efter status.
GET /api/v1/jobs/{job_id}tills tillståndet är slutgiltigt, och vänta minstpoll_after_secondsmellan anropen. - Läs resultatet.
GET /api/v1/jobs/{job_id}/resultoch följnext_cursortills den är null. Ladda ned filerna iartifactsinnan länkarna upphör att gälla.
Ett jobb slutar som completed, completed_with_gaps, interrupted, cancelled, failed eller expired. charged_seconds visar hur mycket av ditt abonnemang jobbet har använt.
Bästa praxis
De här vanorna skyddar dina nycklar, förhindrar dubbeldebitering och gör långa jobb pålitliga.
Håll nycklarna hemliga
- Anropa API:t bara från en server eller ett skript som du kontrollerar. Lägg aldrig en nyckel i webbläsarkod, en mobilapp, en URL eller versionshantering.
- Läs in nyckeln från en miljövariabel eller en hemlighetshanterare, och håll den borta från loggar, felrapporter och kommandoradsargument.
- Använd en nyckel per integration med ett utgångsdatum, så att du kan byta eller återkalla en nyckel utan att röra de andra.
- För att byta nyckel skapar du den nya, driftsätter den och återkallar sedan den gamla. Jobb som redan har startat fortsätter.
- Om en nyckel kan ha läckt, till exempel i en chatt, ett ärende eller en commit, återkallar du den direkt i panelen API-nycklar.
Gör det säkert att upprepa skapandet av jobb
- Generera en slumpmässig
Idempotency-Key, till exempel ett UUID, för varje nytt jobb och spara den med uppladdnings-ID:t innan du skickar begäran. - Om svaret går förlorat skickar du samma begäran med samma nyckel igen. Du får tillbaka det ursprungliga jobbet och debiteras inte två gånger.
- Återanvänd aldrig en nyckel för en annan fil eller andra alternativ: API:t svarar då med 409
IDEMPOTENCY_CONFLICT.
Fråga med måtta och hantera gränser
- Vänta minst fem sekunder mellan statusanrop, och längre när
poll_after_secondsber om det. - Vid 429 eller 503 väntar du enligt headern
Retry-Afterellererror.retry_after_secondsoch försöker sedan igen med lite slumpmässig fördröjning. - Upprepa en begäran oförändrad bara när
error.retryableär true. Rätta annars begäran först. - Ett konto kör en uppladdning och ett jobb åt gången. Lägg dina filer i kö och skicka nästa när det aktuella jobbet är klart.
Styr hur många timmar du använder
- Kontrollera
remaining_secondsinnan du laddar upp. Ett jobb som behöver mer tid än du har misslyckas medINSUFFICIENT_BALANCE; API:t kortar aldrig ditt urval för att det ska få plats. - Skicka ett
rangenär du bara behöver en del av en inspelning. Bara det valda ljudet debiteras. - Avbryt jobb som du inte längre behöver. Färdiga delar finns kvar och reserverad tid som inte användes återförs.
- Avbryt uppladdningar som du inte kommer att använda, så att nästa uppladdning kan starta.
Samla in fullständiga resultat
- Följ
next_cursortills den är null. En sida innehåller högst 32 objekt. - Behandla
gap-objekt som ljud som inte kunde bearbetas, inte som tystnad, och kontrollerawarnings. - Ladda ned filerna i
artifactsmedan länkarna gäller (upp till tio minuter); hämta sidan igen för nya länkar. - Spara det du behöver: resultatfiler sparas i cirka 24 timmar och återställningen av transkriptionen i cirka 48 timmar.
- Läs de fält du behöver och ignorera resten.
Vanliga frågor
Vem kan använda API:t?
Alla med ett aktivt Basic- eller Plus-abonnemang. API-åtkomst ingår i båda abonnemangen och har inget separat pris. Utan aktivt abonnemang avvisas nya jobb med PLAN_REQUIRED. Se abonnemang och priser.
Hur räknas API-användningen?
API-jobb använder samma abonnemangstimmar som webbplatsen och Chrome-tillägget. Servern mäter den faktiska längden på det valda ljudet; charged_seconds i jobbstatusen och på varje resultatsida visar exakt mängd. För ett jobb med luckor som inte kan återställas förklarar användarvillkoren hur det saknade ljudet debiteras.
Vilka filformat och filstorlekar stöds?
Video: MP4, M4V, MOV, WebM, MKV, OGV, AVI, WMV, ASF, FLV, MPG, MPEG, VOB, TS, MTS, M2TS, 3GP, 3G2 och MXF. Ljud: MP3, M4A, AAC, WAV, FLAC, OGG, OGA, OPUS, WMA, AMR, AIFF, AIF, CAF och AC3. En fil får vara upp till 8 GiB. Den måste innehålla ett ljudspår som går att avkoda; kopieringsskyddade filer kan inte läsas.
Vilka språk kan jag använda?
Automatisk identifiering är standard. Du kan också ge en hint om ljudets språk eller välja anteckningarnas språk med en av fler än 60 språkkoder, till exempel en, de, es, fr, ja eller zh. Kontoanropet visar alla värden som accepteras just nu.
Hur lång tid tar ett jobb?
Det beror på hur långt det valda ljudet är och på den aktuella belastningen. Jobb körs i bakgrunden, så du kan ladda upp en lång inspelning och titta tillbaka senare. completed_units och total_units i jobbstatusen visar förloppet.
Kan jag anropa API:t från en webbläsare eller en mobilapp?
Nej. En API-nyckel ger åtkomst till dina abonnemangstimmar och måste därför stanna på en server som du kontrollerar. För en webb- eller mobilapp skickar du filerna till din egen backend och anropar API:t därifrån.
Kan jag skicka en YouTube-länk eller en annan URL?
Nej. API:t bearbetar filer som du laddar upp; det laddar inte ned URL:er eller YouTube-videor.
Finns det webhooks eller e-postaviseringar?
Nej. Fråga efter jobbstatus och respektera poll_after_seconds. API-jobb skickar ingen e-post.
Vad händer om min anslutning bryts?
Om en del inte laddas upp begär du en ny signerad URL för den delen och skickar den igen innan uppladdningen löper ut. Om svaret på skapandet av jobbet går förlorat upprepar du begäran med samma Idempotency-Key och får tillbaka samma jobb. Ett pågående jobb är inte beroende av din anslutning.
Hur länge sparas resultaten?
Resultatsidor och nedladdningsfiler sparas i cirka 24 timmar efter att jobbet är klart, och transkriptionen kan återställas i cirka 48 timmar. Varje svar anger exakt tid i expires_at, så spara det du behöver före dess.
Vad händer om jag återkallar en nyckel eller mitt abonnemang upphör?
Att återkalla en nyckel stoppar inte jobb som redan har startat; läs deras resultat med en annan nyckel. När ditt abonnemang upphör kan en giltig nyckel fortfarande läsa status och resultat och avbryta jobb tills innehållet löper ut, men nya uppladdningar, nya jobb och återupptagning kräver ett aktivt abonnemang.
Vad händer med filerna jag laddar upp?
Vi strävar efter att radera uppladdade källfiler inom 24 timmar efter uppladdningen. Raderingen kan ta längre tid. Integritetspolicyn förklarar vad som sparas och hur länge.
Finns det ett SDK eller en OpenAPI-fil?
Det finns inget SDK-paket. Använd OpenAPI 3.1-filen för att generera en klient eller importera API:t i ett verktyg som Postman eller Insomnia, eller utgå från exemplen i Python och curl.
Vilka hastighetsgränser gäller?
Ett konto kör en uppladdning och ett jobb åt gången, kan starta upp till 10 uppladdningar på sammanlagt 20 GiB per UTC-dygn, skapa 12 jobb per minut och skicka 60 andra begäranden per minut med alla sina nycklar. Kontoanropet returnerar de värden som gäller för dig.
Filer och exempel
Exemplen och kontraktsfilerna publiceras med webbplatsen och stämmer med API:t i drift.
- client.py: exempelklient för Python 3.12+, bara standardbiblioteket
- quickstart.sh: Bash-exempel med curl och jq
- openapi.json: OpenAPI 3.1-beskrivning av varje endpoint, med exempel
- paid-api.schema.json: JSON Schema för varje begäran och svar
Hjälp
Är något oklart eller fungerar inte? Kontakta oss och ange request_id från felsvaret, tidpunkten och endpointen. Skicka aldrig din API-nyckel till oss.