תיעוד ה-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 יחידות שימוש / שעה מתאים ל
Basebase0.40תמלול חסכוני, חותמות זמן ברמת המילה והפרדת דוברים
Oracle Minioracle_mini0.80תמלול Oracle מהיר עם תרגום אופציונלי לכל שפת יעד נתמכת, הפרדת דוברים והפרדת ערוצים; אפשרות התרגום הזולה ביותר במשפחת Oracle
Oracleoracle1.20תמלול לסביבת ייצור ותהליכי עבודה רב-לשוניים
Oracle Prooracle_pro1.40איכות פרימיום לסביבת ייצור
Oracle Maxoracle_max3.00איכות מרבית לאודיו מורכב או רגיש במיוחד
Corecore1.00תמלול רב-תכליתי מהדור הקודם
Edgeedge1.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: פורמט כתוביות SubRip
Default: "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 עיבוד המשימה נכשל. בדקו את הודעת השגיאה לפרטים.