תיעוד ה-API של KolWrite
מאמתים עם מפתח ה-API, יוצרים משימה ומקבלים את התוצאה: תמלול עם חותמת זמן לכל מילה ותוויות דוברים, ב-JSON, ב-TXT או ב-SRT.
אימות
יש לאמת כל בקשת API באמצעות מפתח ה-API הייחודי שלכם. יש לכלול אותו בכותרות הבקשה:
x-api-key: YOUR_API_KEY
אפשר ליצור ולנהל את מפתחות ה-API שלכם במקטע מסוף KolWrite לאחר יצירת חשבון.
התחלה מהירה
התחילו במהירות בעזרת הדוגמאות הבסיסיות האלה.
1. התחלת התמלול
שלחו בקשת POST לנקודת הקצה `/transcribe` עם כתובת ה-URL של קובץ האודיו שברצונכם לתמלל.
בקשה:
POST https://app.kolwrite.com/transcribe
Content-Type: application/json
x-api-key: YOUR_API_KEY
{
"audio_url": "https://salford.figshare.com/ndownloader/files/14630270"
}
תגובה:
ה-API מחזיר `jobId` שישמש אתכם לאחזור תוצאות התמלול.
{
"jobId": "34c63d45-4cb5-473b-bc60-25c175e69c57"
}
2. קבלת תוצאת התמלול
מ־Send a GET request עד the `/transcribe/{jobId}` endpoint using the `jobId` received from the previous step.
בקשה:
GET https://app.kolwrite.com/transcribe/34c63d45-4cb5-473b-bc60-25c175e69c57
x-api-key: YOUR_API_KEY
תגובה (דוגמה):
לאחר שסטטוס המשימה הוא COMPLETED, התגובה תכלול את פרטי התמלול.
{
"jobId": "34c63d45-4cb5-473b-bc60-25c175e69c57",
"status": "COMPLETED",
"result": {
"language": "en",
"segments": [
{
"start": 0.5,
"end": 3.2,
"text": "Hello everyone, welcome to today's meeting.",
"speaker": "Speaker 1",
"words": [
{
"start": 0.5,
"end": 0.8,
"word": "Hello"
},
{
"start": 0.9,
"end": 1.4,
"word": "everyone"
},
{
"start": 1.5,
"end": 1.9,
"word": "welcome"
}
]
}
]
}
}
מודלים ויחידות שימוש
השימוש במודל נמדד ביחידות שימוש לשנייה, ללא חיוב מינימלי. בתשלום, בקבלות ובמסמכי המס מוצג מטבע התשלום שבו בוצעה הרכישה בפועל.
יחידת שימוש אחת היא יחידת החיוב של ה-API, שהוצגה בעבר כ-$1.00 במסוף ה-API.
חשבונות חיוב ישראליים זכאים רוכשים יחידות שימוש ב-ILS במחיר נטו של ILS 3.60 ליחידה, לפני מע״מ. לפני התשלום יוצגו יחידות השימוש, הסכום נטו, המע״מ והסכום הסופי ב-ILS. חשבונות אחרים רוכשים יחידות שימוש ב-USD במחיר של USD 1.20 ליחידה, אלא אם חלים תנאי הזמנה נפרדים.
| מודל | ערך API | יחידות שימוש / שעה | מתאים ל |
|---|---|---|---|
| Base | base | 0.40 | תמלול חסכוני, חותמות זמן ברמת המילה והפרדת דוברים |
| Oracle Mini | oracle_mini | 0.80 | תמלול Oracle מהיר עם תרגום אופציונלי לכל שפת יעד נתמכת, הפרדת דוברים והפרדת ערוצים; אפשרות התרגום הזולה ביותר במשפחת Oracle |
| Oracle | oracle | 1.20 | תמלול לסביבת ייצור ותהליכי עבודה רב-לשוניים |
| Oracle Pro | oracle_pro | 1.40 | איכות פרימיום לסביבת ייצור |
| Oracle Max | oracle_max | 3.00 | איכות מרבית לאודיו מורכב או רגיש במיוחד |
| Core | core | 1.00 | תמלול רב-תכליתי מהדור הקודם |
| Edge | edge | 1.20 | תמלול מהדור הקודם בדיוק גבוה יותר |
תוספים: הפרדת דוברים רגילה ו- standard הפרדה לפי ערוצים כלולות. הפרדת דוברים Pro מוסיפה 0.20 יחידות שימוש לכל שעת אודיו. overlap
הפרדת ערוצים מחויבת בתעריף הדגם שנבחר לפי הגבוה מבין משך ההקלטה או סך זמן הדיבור שזוהה בכל ערוציה הפיזיים; לאף מצב ערוצים אין תוספת תשלום עבור דיאריזציה. Oracle Mini מפעיל אוטומטית יישור חותמות זמן כאשר נבחרת דיאריזציה או הפרדת ערוצים.
נקודות קצה של ה-API
POST /upload
העלו קובץ שמע או וידאו מקומי והשתמשו בערך המוחזר fileUrl בתור audio_url ב- POST /transcribe. בחרו בהעלאת Base64 מובנית לקבצים קטנים, או בהעלאה ישירה לאחסון לקבצים גדולים יותר.
העלאת Base64 מובנית (עד 4 MiB)
לקבצים בגודל של עד 4 MiB (4,194,304 בתים), שלחו את הבתים של המדיה בקידוד Base64 בבקשת API אחת.
POST /upload
Content-Type: application/json
x-api-key: YOUR_API_KEY
{
"filename": "clip.mp3",
"contentType": "audio/mpeg",
"content": "<base64-encoded media bytes>"
}
contentType הוא אופציונלי, ואם הוא מושמט הוא מוסק משם הקובץ. שלחו את בתי המדיה הגולמיים בקידוד Base64 בשדה content, ללא הקידומת data:...;base64, . מגבלת 4 MiB חלה על קובץ המדיה לאחר הפענוח.
התגובה כוללת fileUrl. השתמשו בו בתור audio_url בעת יצירת משימת התמלול.
העלאה ישירה לאחסון (עד 100 MiB)
לקבצים גדולים יותר, בקשו טופס חתום עבור האחסון שלנו שתואם ל-S3, העלו את הקובץ ישירות ולאחר מכן צרו את משימת התמלול. גודל העלאה מרבי: 100 MiB (104,857,600 בתים). הטופס החתום תקף למשך 60 דקות. כתובת ה-URL לקריאה שמוחזרת תקפה למשך 24 שעות, זמן שמספיק לשירות התמלול לאחזר את המדיה.
1. בקשו טופס העלאה חתום
POST /upload
Content-Type: application/json
x-api-key: YOUR_API_KEY
{
"filename": "meeting.mp3",
"contentType": "audio/mpeg"
}
contentType הוא אופציונלי, ואם הוא מושמט הוא מוסק משם הקובץ. ה-API מחזיר uploadUrl, uploadFields, fileUrl, וכן uploadExpiresIn.
שימוש uploadUrl כדי להעלות את הקובץ לאחסון שלנו שתואם ל-S3. לאחר מכן השתמשו ב- fileUrl בתור audio_url בעת יצירת משימת התמלול.
2. העלו את הקובץ ישירות לאחסון
// upload is the JSON response from POST /upload
const form = new FormData();
for (const [name, value] of Object.entries(upload.uploadFields)) {
form.append(name, value);
}
form.append('file', file, file.name);
await fetch(upload.uploadUrl, { method: 'POST', body: form });
שלחו את השדות בדיוק כפי שהוחזרו ואל תוסיפו כותרת הרשאה מותאמת אישית לבקשת ה-POST לאחסון.
3. צרו את משימת התמלול
POST /transcribe
Content-Type: application/json
x-api-key: YOUR_API_KEY
{
"audio_url": "<fileUrl returned by POST /upload>",
"model": "oracle"
}
POST /transcribe
שולח קובץ אודיו לתמלול אסינכרוני עם הפרדת דוברים אופציונלית.
פרמטרים בגוף הבקשה
| פרמטר | סוג | חובה | תיאור |
|---|---|---|---|
| audio_url | string | חובה | כתובת ה-URL הציבורית והנגישה של קובץ האודיו או הווידאו לתמלול. |
| language | string | אופציונלי | רמז לקוד השפה (למשל "he", "en", "es"). אם לא יוזן קוד, השפה תזוהה אוטומטית. Default: "auto" |
| translate_to | string | אופציונלי | קוד השפה שאליה יש לתרגם את התמלול (למשל "en", "es", "fr"). אם יוזן קוד, טקסט הפלט יהיה בשפה שצוינה. הערה: פרמטר זה פועל רק עם משפחת המודלים Oracle. |
| word_timestamps | boolean | אופציונלי | האם לכלול חותמות זמן ברמת מילה ב-JSON או SRT כאשר הדגם הנבחר תומך ביישור מילים. Oracle Mini מפעיל אוטומטית יישור עבור דיאריזציית דוברים והפרדת ערוצים; תמלול Oracle Mini רגיל מחזיר חותמות זמן ברמת מקטע. אין לכך השפעה על פלט TXT. ברירת מחדל: true |
| model | string | אופציונלי | מציין באיזה מודל תמלול להשתמש: מודלים נוכחיים: • base: תמלול חסכוני עם חותמות זמן ברמת המילה והפרדת דוברים אופציונלית, 0.40 יחידות שימוש לשעה• oracle_mini: שכבת התרגום הזולה ביותר במשפחת Oracle עם עיבוד דוברים אופציונלי, 0.80 יחידות שימוש/שעה• oracle: שכבת Oracle לשימוש מקצועי, 1.20 יחידות שימוש לשעה• oracle_pro: שכבת Oracle פרימיום, 1.40 יחידות שימוש לשעה• oracle_max: שכבת Oracle באיכות מרבית, 3.00 יחידות שימוש לשעהמודלים קודמים: • core: מודל מדור קודם ומהיר יותר, 1.00 יחידות שימוש לשעה
• edge: מודל מדור קודם ומדויק יותר, 1.20 יחידות שימוש לשעהDefault: "core" |
| output_format | string | אופציונלי | הפורמט הרצוי לפלט התמלול: • json: פלט מפורט עם מקטעים וחותמות זמן• txt: תמלול טקסט פשוט• srt: פורמט כתוביות SubRipDefault: "json" |
| include_diarization | boolean | אופציונלי | האם להפעיל דיאריזציית דוברים (זיהוי דוברים שונים באודיו). כאשר האפשרות מופעלת, המקטעים יכללו תוויות דוברים. Oracle Mini מפעיל אוטומטית יישור חותמות זמן למצב זה. ברירת מחדל: false |
| pro_diarization | boolean | אופציונלי | מפעיל את מודל הדיאריזציה המתקדם לדיוק גבוה יותר, במיוחד באודיו מאתגר. מוסיף 0.20 קרדיטים לשעת אודיו. Oracle Mini מפעיל אוטומטית יישור חותמות זמן למצב זה. ברירת מחדל: false |
| num_speakers | integer | אופציונלי | מספר הדוברים הצפוי באודיו. משמש רק כאשר
include_diarization הוא true. אם לא יוגדר ערך, המערכת תזהה אוטומטית את מספר הדוברים.ברירת מחדל: auto |
| channel_speaker_separation | string | אופציונלי | מפריד קלט סטריאו או רב-ערוצי מסוג audio_url לפי ערוץ אודיו פיזי. השתמשו ב- standard לדוברים שמדברים בתורם, או overlap לדיבור חופף. אי אפשר לשלבו עם דיאריזציה. Oracle Mini מפעיל אוטומטית יישור חותמות זמן לכל אחד ממצבי הערוצים.Default: "off" |
| channel_labels | object | אופציונלי | מיפוי אופציונלי של אינדקסי ערוצים שמתחילים ב-0, לדוגמה {"0":"Agent","1":"Customer"}. התוויות מוחזרות בכל מקטע ומילה. |
| webhook_url | string | אופציונלי | כתובת HTTPS ציבורית שמקבלת בקשת POST כשמשימת התמלול מסתיימת או נכשלת. החזירו כל סטטוס 2xx כדי לאשר את המסירה. |
| webhook_secret | string | אופציונלי | סוד אופציונלי לחתימה על מטעני webhook. כותרת החתימה בנויה כך: sha256=<hex digest>. |
בקשה לדוגמה (עם הפרדת דוברים):
{
"audio_url": "https://salford.figshare.com/ndownloader/files/14630270",
"word_timestamps": true,
"model": "edge",
"output_format": "json",
"include_diarization": true,
"num_speakers": 2
}
תגובה:
מחזיר אובייקט שמכיל את ה-`jobId` של משימת התמלול שנשלחה.
{
"jobId": "34c63d45-4cb5-473b-bc60-25c175e69c57"
}
GET /transcribe/{jobId}
מאחזר את הסטטוס ואת התוצאה של משימת תמלול מסוימת.
פרמטרים של הנתיב
| פרמטר | סוג | חובה | תיאור |
|---|---|---|---|
| jobId | string | חובה | המזהה של משימת התמלול, שהתקבל בתגובה לבקשת POST אל `/transcribe`. |
גוף התגובה
| שדה | סוג | תיאור |
|---|---|---|
| jobId | string | המזהה של משימת התמלול המבוקשת. |
| status | string | סטטוס המשימה הנוכחי: PENDING, IN_PROGRESS, COMPLETED, או FAILED |
| result | object | string | פלט התמלול (מופיע רק כשהסטטוס הוא COMPLETED). המבנה תלוי בערך `output_format` המבוקש. |
| error | string | הודעת שגיאה (מופיעה רק כשהסטטוס הוא FAILED). |
תגובה לדוגמה (פלט JSON עם הפרדת דוברים):
{
"jobId": "34c63d45-4cb5-473b-bc60-25c175e69c57",
"status": "COMPLETED",
"result": {
"language": "en",
"segments": [
{
"start": 0.5,
"end": 3.2,
"text": "Hello everyone, welcome to today's meeting.",
"speaker": "Speaker 1",
"words": [
{
"start": 0.5,
"end": 0.8,
"word": "Hello"
},
{
"start": 0.9,
"end": 1.4,
"word": "everyone"
}
]
},
{
"start": 4.1,
"end": 6.8,
"text": "Thank you. Let's begin with the quarterly review.",
"speaker": "Speaker 2",
"words": [
{
"start": 4.1,
"end": 4.5,
"word": "Thank"
},
{
"start": 4.6,
"end": 4.9,
"word": "you"
}
]
}
]
}
}
הפרדת דוברים
הפרדת דוברים היא תהליך של זיהוי והפרדה בין דוברים שונים בהקלטת אודיו. כשהאפשרות מופעלת, KolWrite מנתחת את האודיו, מזהה חילופי דוברים ומסמנת כל מקטע בהתאם.
דיאריזציית דוברים והפרדת ערוצים זמינות בכל הדגמים המופיעים. Oracle Mini מפעיל אוטומטית יישור חותמות זמן בכל בחירה של מצב דוברים.
איך מפעילים הפרדת דוברים
כדי להפעיל הפרדת דוברים, הגדירו את include_diarization הפרמטר לערך true בבקשת התמלול שלכם:
{
"audio_url": "https://example.com/meeting-audio.mp3",
"include_diarization": true,
"num_speakers": 3
}
מיטוב מספר הדוברים
לקבלת התוצאות הטובות ביותר, ציינו את מספר הדוברים הצפוי באמצעות num_speakers הפרמטר. אם אינכם יודעים את המספר המדויק, תוכלו:
- השמיטו את הפרמטר (המערכת תזהה אוטומטית)
- הגדירו טווח משוער לפי ההערכה הטובה ביותר שלכם
הפרדת דוברים Pro
לדיוק גבוה יותר בזיהוי דוברים, במיוחד בתנאים אקוסטיים מאתגרים, אפשר להפעיל הפרדת דוברים Pro. תכונה זו כרוכה בתוספת של 0.20 יחידות שימוש לכל שעת אודיו.
כדי להשתמש בו, הגדירו את pro_diarization הפרמטר לערך true. ניתן להשתמש בפרמטר זה יחד עם include_diarization.
{
"audio_url": "https://example.com/panel-discussion.mp3",
"include_diarization": true,
"pro_diarization": true
}
הפרדת דוברים לפי ערוצים
הפרדה לפי ערוצים מתמללת כל ערוץ אודיו פיזי בנפרד ומסמנת את המקטעים והמילים המוחזרים בשדות הפיזיים channel ו- speaker. נדרש מקור בעל שניים עד שמונה ערוצים שיצוין בפרמטר audio_url ואי אפשר לשלבו עם דיאריזציה רגילה או Pro. Oracle Mini מפעיל אוטומטית יישור חותמות זמן לכל אחד ממצבי הערוצים.
שימוש standard כאשר הדוברים מדברים בתורם; החיוב הוא פעם אחת לפי תעריף האודיו של המודל שנבחר. השתמשו ב- overlap כאשר דוברים עשויים לדבר במקביל; החיוב הוא לפי תעריף המודל שנבחר, לפי הגבוה מבין משך ההקלטה או סך זמן הדיבור שזוהה בכל ערוציה הפיזיים.
{
"audio_url": "https://example.com/stereo-call.wav",
"model": "oracle",
"channel_speaker_separation": "overlap",
"channel_labels": {"0": "Agent", "1": "Customer"}
}
Webhooks לסיום
הגדרה webhook_url כדי לקבל transcription.completed ו- transcription.failed אירועים. במקרה של כשל במסירה מתבצעים ניסיונות חוזרים, אך הלקוחות צריכים להמשיך לתמוך ב- GET /transcribe/{jobId} כמקור המידע הקובע.
{
"audio_url": "https://example.com/meeting-audio.mp3",
"output_format": "json",
"webhook_url": "https://example.com/kolwrite-webhook",
"webhook_secret": "replace-with-your-secret"
}
כל מסירה כוללת X-KolWrite-Event, X-KolWrite-Job-Id, X-KolWrite-Delivery-Id, וכן X-KolWrite-Timestamp. המסירה מתבצעת לפחות פעם אחת; ניסיונות חוזרים משתמשים באותו מזהה מסירה, לכן יש להסיר אירועים כפולים באמצעות X-KolWrite-Delivery-Id. כאשר מוגדר סוד, חשבו HMAC-SHA256 על timestamp + "." + raw_request_body ולהשוות מול X-KolWrite-Signature.
{
"event": "transcription.completed",
"jobId": "34c63d45-4cb5-473b-bc60-25c175e69c57",
"status": "COMPLETED",
"createdAt": "2026-07-10T09:30:00+00:00",
"model": "base",
"output_format": "json",
"result_available": true,
"result_omitted": false,
"result_size_bytes": 12480,
"result": { "language": "en", "segments": [] }
}
עבור output_format: "json", ה-webhook result השדה הוא אובייקט JSON. תוצאות TXT ו-SRT נמסרות כמחרוזות.
בתוצאות גדולות עשוי להופיע result_omitted עד true; את התוצאה המלאה יש למשוך מ- GET /transcribe/{jobId}. אירועים שנכשלו כוללים שדה error שדה.
פורמט פלט עם הפרדת דוברים
כשהפרדת דוברים מופעלת, כל מקטע בפלט JSON יכלול speaker שדה שמזהה את הדובר (למשל "דובר 1", "דובר 2" וכן הלאה).
פורמטי פלט
פורמט JSON
פלט מפורט עם מקטעים, חותמות זמן ונתונים אופציונליים ברמת המילה.
פורמט TXT
תמלול בטקסט פשוט עם תוויות דוברים (כאשר הפרדת דוברים מופעלת).
פורמט SRT
פורמט כתוביות SubRip עם חותמות זמן, התואם לנגני וידאו ולעורכי כתוביות.
מצב השירות
עיינו ב- דף הסטטוס של KolWrite API לקבלת זמינות בזמן אמת, היסטוריית זמן פעילות ותקריות ברמת השירות.
GET /health אינו דורש מפתח API ומחזיר את המצב הנוכחי של ה-API, קליטת המשימות ועיבוד התמלול. תגובת 200 פירושה שהשירות פעיל או פועל באופן חלקי; תגובת 503 פירושה שהמצב הנוכחי אינו ידוע או אינו זמין. שתי התגובות כוללות פרטי סטטוס בפורמט JSON.
GET /health/history?period=24h מחזיר היסטוריית זמינות תמציתית. התקופות הנתמכות הן 24h, 7d, וכן 30d.
קודי סטטוס
| סטטוס | תיאור |
|---|---|
| PENDING | המשימה ממתינה לעיבוד בתור. |
| IN_PROGRESS | המשימה מעובדת כעת על ידי שירות התמלול שלנו. |
| COMPLETED | המשימה הסתיימה בהצלחה. התוצאות זמינות בתגובה. |
| FAILED | עיבוד המשימה נכשל. בדקו את הודעת השגיאה לפרטים. |