תמלול לאפליקציות ולמוצרי SaaS
הוסיפו למוצר הודעות קוליות, תמלולי פגישות, כתוביות או אודיו שאפשר לחפש בו, עם REST API אסינכרוני: מעלים, פותחים משימה, מקבלים webhook ושומרים את המקטעים.
הזרימה בפרודקשן
- השרת שלכם קורא ל־
POST /uploadעבור הקובץ של המשתמש ומחזיר ללקוח את הטופס החתום, או מעלה אותו בעצמו (עד 100 MiB). - פותחים משימה עם ה־
fileUrlשחזר בתורaudio_urlועם ה־webhook_urlשלכם. - מאמתים את חתימת ה־webhook, מסננים כפילויות לפי
X-KolWrite-Delivery-Id, וקוראים ל־GET /transcribe/{jobId}אםresult_omittedהוא true. - שומרים את ה־
segments(טקסט, זמנים, דוברים) ומציגים אותם; מייצאיםsrtאוtxtלפי הצורך.
בקשת המשימה:
{
"audio_url": "<fileUrl from POST /upload>",
"model": "oracle",
"language": "auto",
"include_diarization": true,
"output_format": "json",
"webhook_url": "https://api.example.com/hooks/kolwrite",
"webhook_secret": "<random secret>"
}
אימות webhooks
import crypto from "node:crypto";
// Express-style handler; rawBody is the exact request body as received.
export function verifyKolWrite(req, rawBody, secret) {
const timestamp = req.headers["x-kolwrite-timestamp"];
const expected = "sha256=" + crypto.createHmac("sha256", secret)
.update(timestamp + "." + rawBody).digest("hex");
const given = req.headers["x-kolwrite-signature"] || "";
return given.length === expected.length &&
crypto.timingSafeEqual(Buffer.from(given), Buffer.from(expected));
}
כל משלוח מגיע לפחות פעם אחת, ונשלח שוב אם נכשל. GET /transcribe/{jobId} נשאר מקור האמת.
בחירת מודל לכל משימה
| צורך במוצר | הגדרה | למה |
|---|---|---|
| אודיו נקי בהיקף גדול ובזול | model: "base" | 0.40 יחידות שימוש (0.48 דולר) לשעה |
| ברירת מחדל לקבצים של משתמשים | model: "oracle" | איכות פרודקשן, כולל תרגום |
| תמלול בשפה אחרת | מודל Oracle + translate_to | משימה אחת, טקסט מתורגם |
| מי אמר מה | include_diarization: true | כלול במחיר |
| כתוביות | output_format: "srt" | מוכן לנגני וידאו |
מגבלות שכדאי לתכנן סביבן
- העלאה ב־Base64 בתוך הבקשה: עד 4 MiB של מדיה. העלאה חתומה: עד 100 MiB.
- הטופס החתום פג אחרי 60 דקות; כתובת הקריאה אחרי 24 שעות.
- המשימות אסינכרוניות: הציגו התקדמות לפי
PENDINGו־IN_PROGRESS. - אי אפשר לשלב
channel_speaker_separationעם זיהוי דוברים.
שאלות ותשובות
יש SDK?
ה־API הוא HTTPS ו־JSON פשוטים, כך שכל לקוח HTTP מתאים. קובץ OpenAPI 3.1 בכתובת /openapi.json עובד עם מחוללי קוד.
איך נמנעים מעיבוד כפול של webhooks?
מסננים לפי X-KolWrite-Delivery-Id; ניסיונות חוזרים משתמשים באותו מזהה.
איך מחויב השימוש?
לפי שנייה של אודיו, בתעריף יחידות השימוש של המודל, בלי מינימום. יחידת שימוש אחת היא 1.20 דולר.