סנכרון ל-CRM
סיכום, החלטות ומשימות לעסקה ב-HubSpot, Salesforce או Monday לפי דומיין המשתתפים.
גרסה 1
כל מה שמסכם יודע על הפגישות שלכם — פגישות, תמלולים, סיכומים, החלטות ומשימות — זמין עכשיו למערכות שלכם, בקריאה מאובטחת, בעברית ובאנגלית, עם אותן הרשאות בדיוק כמו בדשבורד. ועם webhooks, מסכם מודיע לכם ברגע שמשהו משתנה.
https://mesakem.com/api/v1ה-API הוא REST מעל HTTPS עם JSON ב-UTF-8. כל בקשה מזוהה במפתח API אישי שפועל בשמכם, באזור עבודה אחד, ורואה בדיוק את מה שהדשבורד מראה לכם — לא יותר. פגישה שנמחקה במסכם מחזירה 404 מיד.
סיכום, החלטות ומשימות לעסקה ב-HubSpot, Salesforce או Monday לפי דומיין המשתתפים.
משימות מפגישות ל-Asana, ClickUp או Jira, עם אחראי ותאריך יעד.
סיכומים ב-Markdown או HTML ישר ל-Notion או Confluence.
שעות פגישה ללקוח, זמן דיבור ומגמות — סנכרון מצטבר עם updated_since.
תמלולים וסיכומים כמקור ידע לסוכן פנימי.
תמלולים (VTT/SRT) וסיכומים לארכיון שלכם, כולל קבצי DOCX.
פתחו בדשבורד את הגדרות ← API ו-Webhooks ולחצו על "יצירת מפתח". תנו שם, בחרו גישה ותוקף. לפתיחת ההגדרות
העתיקו את המפתח (msk_live_…) — הוא מוצג פעם אחת בלבד. שמרו אותו בכספת סודות, לא בקוד.
בצעו בקשה ראשונה: GET /me מאשר שהמפתח תקין ומראה את ההרשאות שלו.
קראו את הפגישות האחרונות, ואז את הסיכום של אחת מהן.
export MESAKEM_API_KEY="msk_live_…" # from Settings → API & webhooks
# 1. Check the key
curl https://mesakem.com/api/v1/me -H "Authorization: Bearer $MESAKEM_API_KEY"
# 2. Latest meetings
curl "https://mesakem.com/api/v1/meetings?limit=5" -H "Authorization: Bearer $MESAKEM_API_KEY"
# 3. A summary as Markdown
curl "https://mesakem.com/api/v1/meetings/run_…/summary?format=markdown" -H "Authorization: Bearer $MESAKEM_API_KEY"שלחו את המפתח בכותרת Authorization: Bearer msk_live_…. כלים בלי קוד יכולים לשלוח אותו גם ב-X-Api-Key. עוגיות לא נקראות אף פעם. מפתח שגוי, שבוטל או שפג תוקפו מחזיר 401 בלי לומר למה.
Authorization: Bearer msk_live_AbC1…wxYz
X-Api-Key: msk_live_AbC1…wxYz| הרשאה | מה הוא פותח |
|---|---|
meetings:read | פגישות, פגישה אחת ומשתתפים |
transcripts:read | תמלולים בכל הפורמטים |
summaries:read | סיכומים ומסמכים, כולל DOCX |
recordings:read | קישורי הקלטה ל-5 דקות |
tasks:read | המשימות שלכם ורשימות התיוג |
calendar:read | פגישות קרובות מהיומן שלכם |
team:read | חברי הצוות בארגון (לבעלים ולמנהלים) |
webhooks:read | נקודות ה-Webhook שלכם, יומני המשלוחים וקטלוג האירועים |
webhooks:write | יצירה, שינוי, בדיקה, החלפת סוד, שליחה חוזרת ומחיקה של נקודות (תוכניות בתשלום) |
settings:read | מצב ההצטרפות האוטומטית מהיומן |
shares:read | הקישור הציבורי של פגישה |
bot:write | שליחה, תזמון וביטול של הבוט |
tasks:write | יצירה ועדכון של משימות ורשימות תיוג |
uploads:write | העלאת הקלטות |
settings:write | שינוי מצב ההצטרפות האוטומטית |
meetings:write | שינוי שם ומחיקה של פגישות — רק בבחירה ידנית |
shares:write | יצירה וביטול של קישור ציבורי — רק בבחירה ידנית |
rooms:read | החדרים שלכם והחדרים המשותפים, הפריטים שבהם וההחלטות והניתוחים השמורים |
rooms:write | יצירה, שינוי שם, ארכיון והוספה או הסרה של פגישות ושיחות |
calls:read | שיחות הטלפון שלכם: תמלול, סיכום וקישור להקלטה |
search:read | חיפוש מילים בפגישות, משימות, חדרים ואנשים (עם ההרשאה של כל סוג) |
templates:read | תבניות הסיכום המובנות ושלכם |
templates:write | יצירה, עדכון, העברה לארכיון וקביעת ברירת מחדל של התבניות שלכם |
כל תשובה מחזירה RateLimit-Limit, RateLimit-Remaining ו-RateLimit-Reset (וגם X-RateLimit-*). מעבר למגבלה מחזיר 429 עם Retry-After בשניות.
| לכל מפתח | 60 בקשות לדקה |
|---|---|
| לכל אזור עבודה | 20,000 בקשות ליום (UTC) |
| לכל כתובת IP לפני אימות | 120 בקשות לדקה |
| שינויי webhooks לכל מפתח | 20 לדקה (יצירה, עדכון, מחיקה, החלפת סוד, בדיקה, שליחה חוזרת) |
| שליחה ותזמון של הבוט, לכל משתמש | 10 לדקה · 60 לשעה · 200 ליום |
| שליחה ותזמון של הבוט, לכל אזור עבודה | 20 לדקה · 120 לשעה · 300 ליום |
| העלאות, לכל משתמש | 10 לדקה, ועד 3 העלאות בתהליך |
HTTP/1.1 429 Too Many Requests
Retry-After: 21
RateLimit-Limit: 60
RateLimit-Remaining: 0
RateLimit-Reset: 21
X-Request-Id: apireq_mfa1b2c3XyZ0aBcDeFgHiJה-webhooks שולחים לכם אירוע ברגע שסיכום מוכן — בלי בקשות מיותרות. ראו את הפרק Webhooks.
אם חייבים למשוך: GET /meetings?updated_since=… לכל היותר פעם ב-5 דקות, ושמרו את ה-updated_at האחרון.
שלחו את ה-ETag האחרון ב-If-None-Match. לתמלולים ולסיכומים נבדקת רק הגרסה, ו-304 חוזר בלי גוף — כמעט בלי עלות.
על 429 או 5xx המתינו לפי Retry-After והוסיפו המתנה הדרגתית אקראית.
# Only what changed since your last sync, oldest change first
curl "https://mesakem.com/api/v1/meetings?updated_since=2026-10-17T08:00:00Z" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H 'If-None-Match: "c-…"' # → 304 Not Modified when nothing changedרשימות מחזירות { data, next_cursor, has_more }. שלחו limit (1–100, ברירת מחדל 25) ואת ה-cursor מהעמוד הקודם. הסמן אטום וחתום: הוא שייך למפתח, לאזור העבודה ולמסננים של הבקשה, וכל שינוי בהם מחזיר 400 invalid_cursor.
# First page
curl "https://mesakem.com/api/v1/meetings?limit=100" -H "Authorization: Bearer $MESAKEM_API_KEY"
# Next page: pass next_cursor back unchanged, with the SAME filters
curl "https://mesakem.com/api/v1/meetings?limit=100&cursor=<next_cursor>" -H "Authorization: Bearer $MESAKEM_API_KEY"כל שגיאה מחזירה אותו מבנה קבוע. השדה code יציב; message בעברית או באנגלית לפי Accept-Language; request_id עוזר לנו לאתר את הבקשה.
{
"error": {
"code": "insufficient_scope",
"message": "The key is missing a required scope.",
"details": [{ "field": "scope", "message": "Requires transcripts:read." }],
"request_id": "apireq_mfa1b2c3XyZ0aBcDeFgHiJ"
}
}| HTTP | code | משמעות |
|---|---|---|
400 | bad_request | פרמטר לא תקין, לא מוכר או כפול |
400 | invalid_cursor | סמן ממפתח, נתיב או מסננים אחרים |
401 | unauthorized | מפתח חסר, שגוי, מבוטל או שפג תוקפו |
403 | insufficient_scope | למפתח חסרה ההרשאה (details מציין איזו) |
403 | plan_required | התוכנית לא כוללת את החלק הזה |
404 | not_found | לא קיים או לא נגיש לכם — בלי לרמוז מה מהשניים |
413 | payload_too_large | התשובה גדולה מדי; הקטינו limit או דפדפו |
429 | rate_limited | חריגה ממגבלה; ראו Retry-After |
500 | internal_error | תקלה אצלנו |
403 | quota_exceeded | מכסת הפגישות של התוכנית לא מאפשרת (reason מפרט) |
409 | meeting_bot_already_active | כבר יש בוט בפגישה; meeting_id הוא הפגישה הקיימת |
409 | idempotency_key_reused | אותו Idempotency-Key עם בקשה אחרת |
409 | idempotency_in_progress | הבקשה הראשונה עם המפתח עדיין רצה |
409 | conflict | מתנגש במצב הנוכחי (reason מפרט, למשל calendar_event_control_locked) |
415 | unsupported_media_type | סוג תוכן או קובץ שלא נתמך |
422 | unsupported_recipient | שיתוף עם משתמש או צוות — רק קישור ציבורי נתמך |
422 | unprocessable | תקין אבל אי אפשר לבצע (reason מפרט) |
בתוכניות בתשלום המפתח יכול גם לפעול: לשלוח את הבוט לפגישה, לתזמן או לבטל אותו, לקבוע מתי הוא מצטרף אוטומטית, לנהל משימות, להעלות הקלטות ולשתף פגישה בקישור. כל פעולה עוברת באותו קוד ובאותן בדיקות כמו בדשבורד, ונרשמת ביומן הפעולות.
כשנקבעת פגישה, שלחו את הבוט עם start_time ו-Idempotency-Key לפי מזהה הזימון. כשהסיכום מוכן תקבלו webhook, ואז קראו את הסיכום.
# A meeting was booked: send Mesakem to it, at its start time.
curl -X POST "https://mesakem.com/api/v1/meetings/bot" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: booking-48213" \
-d '{"meeting_url":"https://zoom.us/j/1234567890?pwd=abc123","title":"Discovery call — Acme","start_time":"2026-10-20T07:00:00Z"}'
# 202 → {"meeting_id":"run_…","status":"scheduling"}
# 409 meeting_bot_already_active → error.meeting_id is the meeting that already has the bot{
"error": {
"code": "plan_required",
"message": "Your plan does not include this part of the API.",
"details": [
{ "field": "scope", "message": "bot:write is not included in this plan." },
{ "field": "plan", "message": "The trial includes read-only API access. Upgrade to Pro for writes: https://mesakem.com/dashboard/billing/pro?cycle=annual" }
],
"request_id": "apireq_mfa1b2c3XyZ0aBcDeFgHiJ",
"upgrade_url": "https://mesakem.com/dashboard/billing/pro?cycle=annual"
}
}Webhooks הופכים את הכיוון: במקום שהמערכת שלכם תשאל את ה-API כל כמה דקות אם משהו השתנה, מסכם שולח אליה בקשת POST חתומה ברגע שמשהו קורה — סיכום מוכן, משימה נוצרה, פגישה נמחקה. אתם שומעים על השינוי מיד, בלי בקשות מבוזבזות ובלי לפספס אירוע בין בדיקה לבדיקה.
האירוע יוצא רגע אחרי שהשינוי נשמר — לא בסבב הבדיקה הבא שלכם.
כל משלוח חתום לפי Standard Webhooks ונושא רק מזהים, סטטוס ומספרים. את הפרטים מושכים ב-API, עם ההרשאות של המפתח.
משלוח שנכשל נשלח שוב — עד 9 ניסיונות בכ-45 שעות — עם יומן משלוחים ושליחה חוזרת.
כל נקודה מקבלת רק את האירועים שבחרתם, ואפשר לצמצם עוד לפי מקור הפגישה ולפי חדרים.
data.links.api, כשצריךצרו נקודת Webhook: בהגדרות ← API ו-Webhooks, או בבקשת POST /webhooks עם מפתח שיש לו webhooks:write (בתוכניות בתשלום). לפתיחת ההגדרות
בחרו את האירועים שתרצו לקבל. לשני אירועים יש גם שם חלופי, ואפשר להירשם גם בו.
העתיקו את הסוד לחתימה (whsec_…). הוא מוצג פעם אחת בלבד; שמרו אותו בכספת סודות.
שלחו אירוע בדיקה (webhook.test) מההגדרות או ב-POST /webhooks/{endpoint_id}/test. התשובה מראה את קוד הסטטוס שלכם, את זמן התגובה ואת תחילת התשובה.
אמתו את החתימה בכל בקשה וענו 2xx תוך 10 שניות.
# 1. Create the endpoint (a key with webhooks:write — or use Settings → API & webhooks)
curl -X POST "https://mesakem.com/api/v1/webhooks" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://hooks.example.com/mesakem",
"events": ["summary.ready", "action_items.created", "meeting.deleted"],
"description": "CRM sync"
}'
# → 201 Created. Store "secret" (whsec_…) now: it is never shown again.
# 2. Send webhook.test and see what your endpoint answered
curl -X POST "https://mesakem.com/api/v1/webhooks/whk_…/test" \
-H "Authorization: Bearer $MESAKEM_API_KEY"
# → { "delivered": true, "status": 200, "latency_ms": 162, … }בתוכנית הניסיון: נקודת Webhook אחת, שמנהלים בהגדרות. ניהול נקודות דרך ה-API (webhooks:write) כלול בתוכניות בתשלום.
24 סוגי אירועים, ועוד webhook.test שנשלח רק כשמבקשים בדיקה. כל נקודה נרשמת לרשימת אירועים משלה, ואפשר לצמצם עוד עם filters (מקורות פגישה וחדרים). אותה רשימה זמינה גם ב-GET /webhook-event-types.
שמות חלופיים: נרשמתם בשם החלופי? השדה type במשלוח יהיה השם החלופי. נרשמתם לשני השמות? יגיע משלוח אחד, בשם הראשי.
| אירוע | מתי הוא נשלח | שדות ב-data |
|---|---|---|
| פגישות | ||
meeting.scheduled | פגישה נקבעה לבוט (מהיומן, מקישור או ידנית). | object: "meeting"meeting_idsourcescheduled_start_timetitle |
meeting.bot_status_changed | הבוט מצטרף, ממתין בלובי, לא אושר או הוצא מהפגישה. | object: "meeting"meeting_idbot_statusprevious_status |
meeting.started | ההקלטה התחילה. | object: "meeting"meeting_idstart_time |
meeting.ended | הפגישה הסתיימה והעיבוד התחיל. | object: "meeting"meeting_idend_timeduration_seconds |
meeting.failed | הפגישה הסתיימה בלי הקלטה (נכשלה, בוטלה או שהבוט לא אושר). | object: "meeting"meeting_idstatusfailure_category |
meeting.deleted | פגישה נמחקה. מחקו גם את העותק אצלכם. | object: "meeting"meeting_id |
| הקלטות, תמלולים וסיכומים | ||
recording.ready | ההקלטה נשמרה ואפשר להוריד אותה. | object: "recording"meeting_idrecording_idduration_seconds |
transcript.readyשם חלופיmeeting.transcript_ready | תמלול מוכן. | object: "transcript"meeting_idtranscript_idlanguagesegment_count |
summary.readyשם חלופיmeeting.initial_summary_ready | הסיכום הראשון של פגישה מוכן. | object: "summary"meeting_idsummary_iddocument_idslanguagecounts |
summary.updated | סיכום נוצר מחדש או נערך. | object: "summary"meeting_idsummary_idedited |
action_items.created | משימות לביצוע מפגישה או משיחה נוספו למשימות. | object: "action_items"meeting_idtask_idscount |
| שיחות טלפון | ||
call.transcript_ready | תמלול של שיחת טלפון מוכן. | object: "call"call_idmeeting_idtranscript_id |
call.summarized | שיחת טלפון סוכמה. | object: "call"call_idmeeting_idsummary_id |
| משימות | ||
task.created | משימה נוצרה. | object: "task"task_idstatus |
task.updated | משימה השתנתה (כותרת, סטטוס, תאריך יעד או פריטים). | object: "task"task_idstatuschanged |
task.deleted | משימה נמחקה. | object: "task"task_id |
| קישורים ציבוריים | ||
share.created | נוצר קישור ציבורי לפגישה או לחדר. | object: "share"share_idresource |
share.revoked | קישור ציבורי בוטל. | object: "share"share_idresource |
| חדרים | ||
room.created | חדר נוצר. | object: "room"room_id |
room.updated | שם החדר או ההגדרות שלו השתנו. | object: "room"room_id |
room.archived | חדר הועבר לארכיון. | object: "room"room_id |
room.meeting_added | פגישה נוספה לחדר. | object: "room"room_idmeeting_id |
room.meeting_removed | פגישה הוסרה מחדר. | object: "room"room_idmeeting_id |
| העלאות | ||
upload.failed | לא הצלחנו לעבד הקלטה שהועלתה. | object: "upload"upload_idreason |
| מערכת | ||
webhook.testבדיקה בלבד | אירוע בדיקה, נשלח רק מההגדרות או מנקודת הבדיקה. | object: "webhook"endpoint_id |
אירועים של פגישה או משימה כוללים גם data.links.api ו-data.links.app.
כל משלוח הוא POST עם גוף JSON ב-UTF-8. המעטפה זהה בכל האירועים; רק data משתנה. המטען רזה בכוונה: מזהים, סטטוס ומספרים — בלי טקסט של תמלול או סיכום, בלי כתובות מייל ובלי קישורי שיתוף.
POST /mesakem HTTP/1.1
Host: hooks.example.com
Content-Type: application/json
User-Agent: Mesakem-Webhooks/1.0
webhook-id: msg_1a2b3c4d5e6f708192a3b4c5d6e7f809
webhook-timestamp: 1792317141
webhook-signature: v1,hPEWJKsYRZkotC6qTrqona6rJhYw7hL1L0LA3CTlWD8=
{
"id": "msg_1a2b3c4d5e6f708192a3b4c5d6e7f809",
"type": "summary.ready",
"api_version": "2026-10",
"created_at": "2026-10-18T09:52:20.000Z",
"workspace_id": "workspace_1a2b3c4d",
"data": {
"object": "summary",
"meeting_id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"summary_id": "summary_2b7d0c1e-8f9a-4b3c-9d2e-5f6a7b8c9d0e",
"document_ids": [
"doc_sum_2b7d0c1e-8f9a-4b3c-9d2e-5f6a7b8c9d0e",
"doc_act_2b7d0c1e-8f9a-4b3c-9d2e-5f6a7b8c9d0e",
"doc_dec_2b7d0c1e-8f9a-4b3c-9d2e-5f6a7b8c9d0e"
],
"language": "he",
"counts": { "action_items": 5, "decisions": 2 },
"links": {
"api": "https://mesakem.com/api/v1/meetings/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b/summary",
"app": "https://mesakem.com/dashboard/meeting/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b"
}
}
}| שדה | משמעות |
|---|---|
id | מזהה ההודעה, זהה לכותרת webhook-id. נשאר זהה בניסיונות חוזרים ובשליחה חוזרת. |
type | שם האירוע, או השם החלופי אם נרשמתם בו. |
api_version | גרסת המבנה: 2026-10. |
created_at | מתי האירוע קרה (ISO 8601, UTC). מיינו לפיו, לא לפי סדר ההגעה. |
workspace_id | אזור העבודה של האירוע. |
data.object | סוג המשאב: meeting, summary, task… |
data.links | api — כתובת ה-API לפרטים המלאים; app — הדף בדשבורד. |
| כותרת | משמעות |
|---|---|
webhook-id | msg_… — המפתח שלכם למניעת כפילויות |
webhook-timestamp | שניות Unix של הניסיון הזה |
webhook-signature | v1,<base64> — שתי חתימות, מופרדות ברווח, בזמן החלפת סוד |
Content-Type | application/json |
User-Agent | Mesakem-Webhooks/1.0 |
X-Webhook-Signature | sha256=<hex> — רק בחתימה הפשוטה (simple_hmac) |
כל משלוח חתום לפי Standard Webhooks — אותו תקן ש-Svix ואחרים משתמשים בו — כך שאפשר להשתמש בספרייה מוכנה. בלי ספרייה, אלה הצעדים:
קחו את הגוף הגולמי, בדיוק כפי שהגיע — לפני פענוח JSON.
דחו בקשה ש-webhook-timestamp שלה רחוק ביותר מ-5 דקות מהשעון שלכם (הגנה מפני שידור חוזר).
חשבו HMAC-SHA256 על <webhook-id>.<webhook-timestamp>.<body> עם הסוד אחרי פענוח base64 (בלי whsec_), וקודדו את התוצאה ב-base64.
השוו, בהשוואה בזמן קבוע, לכל ערך v1,… בכותרת webhook-signature. מספיקה התאמה אחת.
import express from "express";
import { Webhook } from "standardwebhooks"; // npm i standardwebhooks
const wh = new Webhook(process.env.MESAKEM_WEBHOOK_SECRET); // whsec_…
const app = express();
// express.raw: verify the body exactly as sent, BEFORE any JSON parsing
app.post("/mesakem/webhook", express.raw({ type: "application/json" }), async (req, res) => {
let event;
try {
event = wh.verify(req.body, req.headers); // signature + 5-minute window
} catch {
return res.status(400).end();
}
if (await seen(req.headers["webhook-id"])) return res.status(204).end(); // at least once: dedupe
await queue.add(event); // answer fast, work later
res.status(204).end();
});החלפה (בהגדרות או ב-POST /webhooks/{endpoint_id}/rotate-secret) מחזירה סוד חדש שחותם מיד. במשך 24 שעות כל משלוח נושא שתי חתימות — החדשה ואחריה הישנה — ולכן קוד שבודק כל חתימה ממשיך לעבוד עד שתעדכנו את הסוד.
למקבל שלא יכול לאמת Standard Webhooks: נקודה שהוגדרה עם signature_format: "simple_hmac" מקבלת גם X-Webhook-Signature: sha256=<hex> — HMAC-SHA256 על הגוף בלבד, עם מחרוזת הסוד המלאה (כולל whsec_) כמפתח. לכותרת הזו אין חותמת זמן ואין לה חפיפה בהחלפת סוד, ולכן עדיף לעבור לאימות הרגיל כשאפשר.
import { createHmac, timingSafeEqual } from "node:crypto";
// Only for endpoints with signature_format "simple_hmac":
// X-Webhook-Signature: sha256=<hex HMAC-SHA256 of the raw body, keyed with the FULL secret string>
export function verifySimpleHmac(rawBody, headers, secret = process.env.MESAKEM_WEBHOOK_SECRET) {
const expected = Buffer.from(`sha256=${createHmac("sha256", secret).update(rawBody).digest("hex")}`);
const given = Buffer.from(String(headers["x-webhook-signature"] ?? ""));
return given.length === expected.length && timingSafeEqual(given, expected);
}בדקו את הקוד שלכם מול הערכים האלה (הגוף הוא הבתים המדויקים, בשורה אחת). חותמת הזמן ישנה, אז כבו לרגע את בדיקת 5 הדקות או העבירו שעון משלכם.
{
"secret": "whsec_MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLaSw",
"webhook-id": "msg_0f1e2d3c4b5a69788796a5b4c3d2e1f0",
"webhook-timestamp": "1792314000",
"body": "{\"id\":\"msg_0f1e2d3c4b5a69788796a5b4c3d2e1f0\",\"type\":\"webhook.test\",\"api_version\":\"2026-10\",\"created_at\":\"2026-10-18T09:00:00.000Z\",\"workspace_id\":\"workspace_1a2b3c4d\",\"data\":{\"object\":\"webhook\",\"endpoint_id\":\"whk_3c2b1a0f9e8d7c6b5a493827161504f3\"}}",
"webhook-signature": "v1,BTWmnJ208A8o6942h9e4GevByejb0CwCw/lva2zO6jM=",
"X-Webhook-Signature": "sha256=42538b7323812ccd84b1dba444c3dfe2f769ecda320fa7d7e8fdbebf0e2cf1e2"
}תשובת 2xx תוך 10 שניות היא הצלחה. כל דבר אחר הוא ניסיון שנכשל, והתשובה שלכם קובעת אם ננסה שוב:
| התשובה שלכם | מה קורה |
|---|---|
2xx | הצלחה (אם הגיעה תוך 10 שניות). |
5xx · 408 · timeout · network | ננסה שוב לפי הלוח. |
429 · 503 + Retry-After | ננסה שוב, ונחכה לפחות לפי Retry-After (עד שעה). |
410 Gone | הנקודה מושבתת מיד, והמשלוחים שממתינים לה מבוטלים. |
3xx | כשלון בלי ניסיון חוזר — לא עוקבים אחרי הפניות. הגדירו את הכתובת הסופית. |
4xx | כל 4xx אחר: כשלון בלי ניסיון חוזר. אפשר לשלוח שוב מיומן המשלוחים. |
| ניסיון | מתי |
|---|---|
| 1 | מיד |
| 2 | 10 שניות אחרי הקודם |
| 3 | דקה אחרי הקודם |
| 4 | 5 דקות אחרי הקודם |
| 5 | 30 דקות אחרי הקודם |
| 6 | שעתיים אחרי הקודם |
| 7 | 6 שעות אחרי הקודם |
| 8 | 12 שעות אחרי הקודם |
| 9 | 24 שעות אחרי הקודם |
לכל המתנה נוסף פיזור אקראי של ±10%. אחרי הניסיון ה-9 (כ-45 שעות) המשלוח נשאר failed ביומן, ומשם אפשר לשלוח אותו שוב.
נקודה שנכשלה 50 פעמים ברצף, לאורך 3 ימים לפחות, מושבתת אוטומטית, והבעלים שלה מקבלים מייל. אחרי התיקון, הפעילו אותה מחדש בהגדרות או ב-PATCH עם enabled: true — ומונה הכשלונות מתאפס.
כל אירוע יגיע לפחות פעם אחת, ולפעמים יותר (למשל אם עניתם 2xx אבל החיבור נפל). הסדר לא מובטח: ניסיון חוזר של אירוע ישן יכול להגיע אחרי אירוע חדש.
כל משלוח נשמר 30 יום, עם המצב שלו, מספר הניסיונות, קוד הסטטוס האחרון, זמן התגובה ו-512 הבתים הראשונים מהתשובה שלכם. רואים אותו בהגדרות או ב-GET /webhooks/{endpoint_id}/deliveries, מהחדש לישן.
שליחה חוזרת (POST …/deliveries/{delivery_id}/redeliver, תשובה 202) פותחת סדרת ניסיונות חדשה למשלוח שהסתיים — עם אותו webhook-id, כך שמנגנון מניעת הכפילויות שלכם מזהה אותו.
# The last 30 days, newest first
curl "https://mesakem.com/api/v1/webhooks/whk_…/deliveries?limit=25" \
-H "Authorization: Bearer $MESAKEM_API_KEY"
# Send a finished delivery again — same webhook-id — answers 202 Accepted
curl -X POST "https://mesakem.com/api/v1/webhooks/whk_…/deliveries/whd_…/redeliver" \
-H "Authorization: Bearer $MESAKEM_API_KEY"| מצב | משמעות |
|---|---|
pending | ממתין לניסיון הראשון |
delivering | נשלח עכשיו |
retry_scheduled | נכשל; הניסיון הבא ב-next_attempt_at |
succeeded | התקבלה תשובת 2xx |
failed | נגמרו הניסיונות, או תשובה שלא מנסים אחריה שוב — אפשר לשלוח שוב |
cancelled | בוטל, למשל כי הנקודה הושבתה או שהגישה לפגישה בוטלה |
אמתו את החתימה, שימו את האירוע בתור וענו 2xx מיד. טיפול שנמשך יותר מ-10 שניות נחשב כשלון ויישלח שוב.
webhook-idהמשלוח הוא לפחות פעם אחת. שמרו את webhook-id לכמה ימים ודלגו על מזהה שכבר ראיתם — ניסיונות חוזרים ושליחה חוזרת משתמשים באותו מזהה.
created_atאירועים יכולים להגיע שלא לפי הסדר. השוו created_at (או updated_at של המשאב ב-API) במקום לסמוך על סדר ההגעה.
data.links.apiהמטען רזה בכוונה. משכו את הסיכום, התמלול או המשימה מהקישור עם מפתח ה-API — תמיד תקבלו את הגרסה העדכנית, עם ההרשאות העדכניות.
על meeting.deleted ו-task.deleted מחקו את מה ששמרתם. פגישה שנמחקה מחזירה 404 ב-API מיד.
410 כשסיימתםמקבל שיצא משימוש יכול לענות 410 — הנקודה מושבתת מיד ולא נמשיך לנסות.
3xx). הגדירו את הכתובת הסופית.| ניסיון | Pro וארגונים | |
|---|---|---|
| נקודות Webhook | 1 | עד 10 לאדם |
| ניהול הנקודות | בהגדרות | בהגדרות וב-API (webhooks:write) |
קריאת נקודות ויומנים ב-API (webhooks:read) | כלול | כלול |
| כל האירועים, חתימה, ניסיונות חוזרים ויומן משלוחים | כלול | כלול |
האינטגרציה של מסכם ל-Zapier בנויה על אותם webhooks: טריגרים מיידיים כמו New Summary ו-New Action Item, וחיפוש של פגישה או משימה (Find Meeting, Find Task), שמתחברים לכלים שאתם כבר עובדים איתם בלי שורת קוד. היא פרטית: כל מי שמחזיק בקישור ההזמנה יכול להוסיף אותה לחשבון ה-Zapier שלו.
פותחים את קישור ההזמנה ומוסיפים את Mesakem לחשבון ה-Zapier.
יוצרים מפתח API בהגדרות של מסכם. לטריגרים צריך את ההרשאה webhooks:write (ניהול webhooks), בתוכנית בתשלום.
ב-Zapier בוחרים ב-Mesakem, מדביקים את המפתח ובונים Zap. כשמפעילים אותו נוצרת בשבילו נקודת webhook אחת, וכשמכבים אותו היא נמחקת.
צומת קהילתי (community node) של מסכם ל-n8n בהתקנה עצמית (self-hosted): טריגר מיידי על אותם webhooks, ופעולות על ה-API. החבילה מפורסמת ב-npm עם provenance, והקוד שלה ב-GitHub.
ב-n8n פותחים Settings ← Community Nodes ← Install.
מדביקים את שם החבילה n8n-nodes-mesakem ומתקינים.
יוצרים מפתח API בהגדרות של מסכם, ובאישורי ההתחברות (Credentials) של n8n מוסיפים Mesakem API ומדביקים אותו.
n8n-nodes-mesakem| חלק | מה הוא עושה |
|---|---|
טריגר · Mesakem Trigger | מתחיל תהליך ברגע שמשהו קורה במסכם: סיכום מוכן, פגישה הסתיימה, תמלול מוכן, משימה נוצרה או השתנתה, ועוד, מכל 24 סוגי האירועים. הפרטים נמשכים לפי מזהה, בשתי בקשות API לכל היותר. |
פגישות · Meeting | Get, Get Many, Get Summary, Get Transcript, Get Upcoming |
משימות · Task | Get, Get Many, Create, Update, Delete |
הבוט · Notetaker | Send, Schedule, Cancel: שליחה לקישור של פגישה, תזמון לפגישה מהיומן, או ביטול |
מסמכים · Document | Get: המסמך ב-Markdown, ב-HTML, כטקסט או כ-JSON |
החשבון · Account | Get: המפתח, המשתמש, התוכנית, ההרשאות והמגבלות |
צריך מפתח API של מסכם. טריגרים דורשים מנוי בתשלום: הצומת רושם את ה-webhook שלו בעצמו, ולשם כך צריך את webhooks:write. כדי לקבל אירועים, ה-n8n שלכם צריך כתובת https ציבורית.
חדר מרכז את כל הפגישות והשיחות של לקוח או פרויקט. ב-API רואים בדיוק את החדרים שרואים בדשבורד: החדרים שלכם והחדרים המשותפים של אזור העבודה. חדר פרטי של חבר אחר לא מופיע אף פעם, וחדר לא חושף פגישה או שיחה שאין לכם גישה ישירה אליהן.
DELETE /rooms/{id} מעביר לארכיון, ו-PATCH עם archived: false משחזר. הפגישות עצמן לא משתנות.GET /rooms/{id}/insights מחזיר רק מה שכבר קיים: ההחלטות שבסיכום של כל פגישה, וניתוחים שנעשו בדשבורד. הקריאה לא מייצרת שום ניתוח חדש.curl -X POST "https://mesakem.com/api/v1/rooms" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name": "Acme pilot", "client_name": "Acme"}'
curl -X PUT "https://mesakem.com/api/v1/rooms/$ROOM_ID/meetings/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b" \
-H "Authorization: Bearer $MESAKEM_API_KEY"שיחות שהוקלטו ממערכת הטלפון שחיברתם, עם התמלול, הסיכום וקישור להקלטה ל-5 דקות. רואים רק את השיחות שלכם, ושיחה שנמחקה (או שהפגישה שנוצרה ממנה נמחקה) לא מוחזרת אף פעם.
call_. שיחה שיצרה פגישה מופיעה גם ב-GET /meetings (מקור phone), ו-meeting_id מקשר ביניהן.curl "https://mesakem.com/api/v1/calls?limit=25" \
-H "Authorization: Bearer $MESAKEM_API_KEY"
curl "https://mesakem.com/api/v1/calls/$CALL_ID/summary?format=markdown" \
-H "Authorization: Bearer $MESAKEM_API_KEY"חיפוש מילים במידע שלכם: כותרות וסיכומים של פגישות, כותרות והערות של משימות, שמות חדרים ומוזמנים לפגישות. כל המילים צריכות להופיע (בפגישות גם התחלת מילה מספיקה), והניקוד, סימני הפיסוק וגודל האותיות לא משנים.
GET /search?q= מחזיר פגישות, משימות, חדרים ואנשים יחד, הרלוונטי ביותר קודם. types= מצמצם.GET /meetings?q= ו-GET /tasks?q=.tasks:read, חדרים rooms:read. החיפוש לא מחזיר אף פעם מזהה שאין לכם גישה ישירה אליו.curl "https://mesakem.com/api/v1/search?q=%D7%94%D7%A6%D7%A2%D7%AA%20%D7%9E%D7%97%D7%99%D7%A8&types=meeting,task" \
-H "Authorization: Bearer $MESAKEM_API_KEY"תבנית קובעת איך מסכם כותב את הסיכום: מבנה, טון, דגשים וסעיפים. ה-API מחזיר את התבניות המובנות ואת שלכם, ומאפשר ליצור, לעדכן, להעביר לארכיון ולקבוע ברירת מחדל, בדיוק כמו בעמוד התבניות בדשבורד.
אפשר לבקש מכל עוזר AI שאתם עובדים איתו לנסח תבנית, ולשלוח את התוצאה ל-POST /templates. מסכם לא מפעיל AI על התבנית: היא נבדקת רק לפי הכללים שלמעלה ונשמרת כמו שהיא. בקשה לדוגמה לעוזר:
נסח לי תבנית סיכום של מסכם לשיחות מכירה עם לקוחות חדשים. החזר JSON עם שני שדות: name (עד 120 תווים) ו-instructions (הוראות ברורות, בעברית, עד 12,000 תווים). בהוראות: מה לסכם, אילו סעיפים (צרכים, התנגדויות, תקציב, צעדים הבאים עם אחראי ותאריך), טון ענייני ואורך של עמוד לכל היותר.curl -X POST "https://mesakem.com/api/v1/templates" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"type": "meeting", "name": "Discovery call", "instructions": "Summarize as a discovery call: needs, objections, budget, next steps with owner and date."}'נוצר אוטומטית ממסמך ה-OpenAPI 3.1: קריאה (GET) וכתיבה (POST, PUT, PATCH, DELETE). כל פעולת כתיבה מציינת את ההרשאה שהיא צריכה.
/meכל מפתחפקודה אחת למסד הנתונים. מתאים לבדיקה שהמפתח תקין.
curl "https://mesakem.com/api/v1/me" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "api_key_context",
"key": {
"id": "key_3f2a9c0d4b5e6f708192a3b4c5d6e7f8",
"name": "HubSpot sync",
"display": "msk_live_AbC1…wxYz",
"scopes": [
"meetings:read",
"summaries:read"
],
"created_at": "2026-10-17T08:00:00.000Z",
"expires_at": "2027-10-17T08:00:00.000Z"
},
"user": {
"id": "user_9b8c7d6e",
"name": "Dana Levi",
"email": "dana@acme.co.il"
},
"workspace": {
"id": "workspace_1a2b3c4d",
"kind": "personal",
"plan": "full",
"organization": null
},
"limits": {
"requests_per_minute": 60,
"requests_per_day": 20000
}
}/meetingsmeetings:readמהחדשה לישנה כברירת מחדל. לסנכרון מצטבר העבירו updated_since: התוצאות יגיעו בסדר עולה של updated_at. שמרו את ה-updated_at האחרון ושלחו If-None-Match. עדיף כך (לכל היותר פעם ב-5 דקות) מאשר לקרוא הכול מחדש.
| פרמטרים | סוג | הערות |
|---|---|---|
limit | integer (1–100) | ברירת מחדל 25 |
cursor | string | next_cursor from the previous page of the SAME request (same key and filters). |
status | completed | processing | scheduled | failed | |
from | date-time | ISO 8601 with offset, or YYYY-MM-DD (00:00 UTC). |
to | date-time | |
updated_since | date-time | |
order | recent | updated | |
expand | string | Comma-separated: participants, documents. |
q | string | Keyword search: every word must match (prefix match for meetings). Needs search:read. |
curl "https://mesakem.com/api/v1/meetings?limit=25&updated_since=2026-10-01T00%3A00%3A00Z" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "list",
"data": [
{
"id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"object": "meeting",
"title": "פגישת היכרות — אקמה",
"status": "completed",
"status_detail": "summarized",
"source": "zoom",
"kind": "live_meeting",
"language": "he",
"start_time": "2026-10-15T09:00:12.000Z",
"end_time": "2026-10-15T09:47:40.000Z",
"duration": 2848,
"scheduled_start_time": "2026-10-15T09:00:00.000Z",
"scheduled_end_time": "2026-10-15T10:00:00.000Z",
"has_transcript": true,
"has_recording": true,
"has_summary": true,
"summary_id": "summary_2b7d0c1e-8f9a-4b3c-9d2e-5f6a7b8c9d0e",
"created_by_you": true,
"app_url": "https://mesakem.com/dashboard/meeting/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"participants": [
{
"name": "Dana Levi",
"email": "dana@acme.co.il",
"company": "acme.co.il",
"organizer": true
}
],
"created_at": "2026-10-15T08:58:01.000Z",
"updated_at": "2026-10-15T09:52:18.000Z"
}
],
"next_cursor": "eyJ2IjoxLCJwIjp7InMiOiIyMDI2LTEwLTE1VDA5OjAwOjEyLjAwMDAwMFoifX0.Xn3k2l1PqR8sT6uV0wYz4aBcDeFgHiJk",
"has_more": true
}/meetings/upcomingcalendar:readחלון ברירת המחדל: 336 השעות הבאות (14 ימים). within_hours עד 8760.
| פרמטרים | סוג | הערות |
|---|---|---|
limit | integer (1–100) | ברירת מחדל 25 |
cursor | string | next_cursor from the previous page of the SAME request (same key and filters). |
within_hours | integer (1–8760) | ברירת מחדל 336 |
from | date-time | ISO 8601 with offset, or YYYY-MM-DD (00:00 UTC). |
to | date-time |
curl "https://mesakem.com/api/v1/meetings/upcoming?within_hours=48" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "list",
"data": [
{
"id": "cal_evt_Qm9pZ2h0LXNlcmllcy0x",
"object": "upcoming_meeting",
"title": "סנכרון שבועי",
"start_time": "2026-10-18T07:00:00.000Z",
"end_time": "2026-10-18T07:30:00.000Z",
"meeting_url": "https://zoom.us/j/1234567890",
"source": "zoom",
"organizer": {
"email": "dana@acme.co.il"
},
"bot": {
"decision": "will_join",
"override": null,
"reason": "calendar_auto_record"
},
"series_id": "8d7c6b5a",
"created_at": "2026-10-10T12:00:00.000Z",
"updated_at": "2026-10-16T12:00:00.000Z"
}
],
"next_cursor": null,
"has_more": false
}/meetings/{meeting_id}meetings:read| פרמטרים | סוג | הערות |
|---|---|---|
meeting_id · חובה | string | בנתיב |
expand | string | Comma-separated: participants, documents. |
curl "https://mesakem.com/api/v1/meetings/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"object": "meeting",
"title": "פגישת היכרות — אקמה",
"status": "completed",
"status_detail": "summarized",
"source": "zoom",
"kind": "live_meeting",
"language": "he",
"start_time": "2026-10-15T09:00:12.000Z",
"end_time": "2026-10-15T09:47:40.000Z",
"duration": 2848,
"scheduled_start_time": "2026-10-15T09:00:00.000Z",
"scheduled_end_time": "2026-10-15T10:00:00.000Z",
"has_transcript": true,
"has_recording": true,
"has_summary": true,
"summary_id": "summary_2b7d0c1e-8f9a-4b3c-9d2e-5f6a7b8c9d0e",
"created_by_you": true,
"app_url": "https://mesakem.com/dashboard/meeting/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"participants": [
{
"name": "Dana Levi",
"email": "dana@acme.co.il",
"company": "acme.co.il",
"organizer": true
}
],
"created_at": "2026-10-15T08:58:01.000Z",
"updated_at": "2026-10-15T09:52:18.000Z"
}/meetings/{meeting_id}meetings:writeדורש meetings:write, שלא נכלל באף ערכה מוכנה: יש לסמן אותו במפורש. לבעלי הפגישה בלבד.
| פרמטרים | סוג | הערות |
|---|---|---|
meeting_id · חובה | string | בנתיב |
| שדה | סוג | הערות |
|---|---|---|
title · חובה | string | null | null או "" מחזירים את השם המקורי.עד 180 תווים |
curl -X PATCH "https://mesakem.com/api/v1/meetings/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"title": "Discovery call — Acme (renamed)"
}'{
"id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"object": "meeting",
"title": "פגישת היכרות — אקמה (מעודכן)",
"status": "completed"
}/meetings/{meeting_id}→ 204 No Contentmeetings:writeסופית מבחינתכם, כמו בדשבורד (אין שחזור). דורש meetings:write, שלא נכלל באף ערכה מוכנה. פגישה שהבוט נמצא בה מחזירה 409 meeting_in_progress: קודם DELETE /meetings/{id}/bot.
| פרמטרים | סוג | הערות |
|---|---|---|
meeting_id · חובה | string | בנתיב |
curl -X DELETE "https://mesakem.com/api/v1/meetings/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b" \
-H "Authorization: Bearer $MESAKEM_API_KEY"/meetings/{meeting_id}/participantsmeetings:read| פרמטרים | סוג | הערות |
|---|---|---|
meeting_id · חובה | string | בנתיב |
curl "https://mesakem.com/api/v1/meetings/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b/participants" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "participants",
"meeting_id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"invitees": [
{
"name": "Dana Levi",
"email": "dana@acme.co.il",
"organizer": true,
"company": "acme.co.il"
}
],
"speakers": [
{
"id": "spk_1",
"name": "Dana Levi"
},
{
"id": "spk_2",
"name": "דובר 1"
}
],
"attendance_available": false,
"attendance": null
}/meetings/{meeting_id}/transcripttranscripts:readformat=json מתחלק לעמודים לפי קטעים (limit עד 2000, כ-512KB לעמוד). פורמטי טקסט מחזירים את כל התמלול. תומך ב-If-None-Match ומחזיר 304 אחרי בדיקת גרסה זולה.
| פרמטרים | סוג | הערות |
|---|---|---|
meeting_id · חובה | string | בנתיב |
format | json | text | vtt | srt | |
limit | integer (1–100) | ברירת מחדל 25 |
cursor | string | next_cursor from the previous page of the SAME request (same key and filters). |
curl "https://mesakem.com/api/v1/meetings/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b/transcript?format=json&limit=500" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "transcript",
"meeting_id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"transcript_id": "transcript_7e6d5c4b-3a29-4180-9f8e-7d6c5b4a3928",
"language": "he",
"mode": "segments",
"total_segments": 412,
"speakers": [
{
"id": "spk_1",
"name": "Dana Levi"
},
{
"id": "spk_2",
"name": "דובר 1"
}
],
"segments": [
{
"index": 0,
"speaker_id": "spk_1",
"start_time": 0.84,
"end_time": 6.2,
"text": "בוקר טוב, תודה שהצטרפתם."
},
{
"index": 1,
"speaker_id": "spk_2",
"start_time": 6.4,
"end_time": 11.03,
"text": "שמחים להיות כאן."
}
],
"next_cursor": "eyJ2IjoxLCJwIjp7ImEiOjIsInQiOiJ0cmFuc2NyaXB0In19.Qz8xWv7uT6sR5qP4oN3mL2kJ1iH0gF9e",
"has_more": true,
"created_at": "2026-10-15T09:49:02.000Z"
}/meetings/{meeting_id}/summarysummaries:readתומך ב-If-None-Match ומחזיר 304 אחרי בדיקת גרסה זולה.
| פרמטרים | סוג | הערות |
|---|---|---|
meeting_id · חובה | string | בנתיב |
format | json | markdown | html | text | docx |
curl "https://mesakem.com/api/v1/meetings/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b/summary?format=markdown" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "summary",
"id": "summary_2b7d0c1e-8f9a-4b3c-9d2e-5f6a7b8c9d0e",
"meeting_id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"language": "he",
"template": {
"id": "system_detailed_mesakem",
"name": "מפורט"
},
"title": "פגישת היכרות — אקמה",
"overview": "סקרנו את הצרכים של אקמה ואת לוחות הזמנים.",
"sections": [
{
"kind": "topic",
"title": "תמחור",
"body_markdown": "הוסכם לשלוח הצעה עד יום ראשון."
}
],
"action_items": [
{
"text": "לשלוח הצעת מחיר לאקמה"
}
],
"decisions": [
{
"text": "פיילוט של חודש"
}
],
"open_questions": [
"מי מאשר את התקציב?"
],
"citations": null,
"body_markdown": "## תקציר\nסקרנו את הצרכים של אקמה…",
"body_oversized": false,
"meeting_description": null,
"edited": false,
"structured_stale": false,
"structured_oversized": false,
"documents": [
{
"id": "doc_sum_2b7d0c1e-8f9a-4b3c-9d2e-5f6a7b8c9d0e",
"kind": "summary"
}
],
"created_at": "2026-10-15T09:52:18.000Z",
"updated_at": "2026-10-15T09:52:18.000Z"
}/meetings/{meeting_id}/recordingrecordings:readהקישור בודק את המפתח שוב בכל פתיחה, ורק אז מפנה לקובץ בכתובת קצרת-חיים.
| פרמטרים | סוג | הערות |
|---|---|---|
meeting_id · חובה | string | בנתיב |
curl "https://mesakem.com/api/v1/meetings/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b/recording" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "recording_link",
"meeting_id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"recording_id": "recording_0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
"status": "ready",
"recording_url": "https://mesakem.com/api/v1/r/Zm9yLWV4YW1wbGUtb25seQ",
"expires_at": "2026-10-17T08:05:00.000Z",
"format": "mp4",
"duration": 2848,
"created_at": "2026-10-15T09:48:30.000Z"
}/meetings/upload→ 201 Createduploads:writeהקובץ הוא גוף הבקשה; title ו-language נשלחים ב-query.
| פרמטרים | סוג | הערות |
|---|---|---|
title | string | |
language | string | Conversation language, e.g. he, en, auto. |
summary_language | he | en | |
category | meeting | call | ברירת מחדל meeting |
filename | string | Needed for video/quicktime; otherwise derived from Content-Type. |
גוף הבקשה: הקובץ עצמו. קובץ השמע או הווידאו עצמו, עד 4MB. קבצים גדולים יותר: POST /uploads.
curl -X PUT "https://mesakem.com/api/v1/meetings/upload?title=Support+call&language=he" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: audio/mp4" \
--data-binary @call.m4a{
"object": "upload",
"id": "recjob_8a1b2c3d4e5f60718293a4b5c6d7e8f9",
"meeting_id": "run_upload_8a1b2c3d4e5f60718293a4b5c6d7e8f9",
"filename": "call.m4a",
"content_type": "audio/mp4",
"size_bytes": 3145728,
"app_url": "https://mesakem.com/dashboard/meeting/run_upload_8a1b2c3d4e5f60718293a4b5c6d7e8f9",
"created_at": "2026-10-18T09:00:00.000Z",
"status": "processing",
"upload_id": "recjob_8a1b2c3d4e5f60718293a4b5c6d7e8f9"
}/meetings/{meeting_id}/permissionsshares:readמסכם משתף רק בקישור ציבורי: ברשימה יש perm_anyone או כלום.
| פרמטרים | סוג | הערות |
|---|---|---|
meeting_id · חובה | string | בנתיב |
curl "https://mesakem.com/api/v1/meetings/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b/permissions" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "list",
"data": [
{
"id": "perm_anyone",
"object": "permission",
"recipient": {
"type": "anyone"
},
"role": "read",
"status": "ready",
"share_url": "https://mesakem.com/s#Zm9yLWV4YW1wbGU",
"created_at": "2026-10-18T09:00:00.000Z"
}
],
"share_url": "https://mesakem.com/s#Zm9yLWV4YW1wbGU",
"next_cursor": null,
"has_more": false
}/meetings/{meeting_id}/permissions→ 201 Createdshares:writerecipient {"type":"anyone"}, role read. נמען מסוג user או team מחזיר 422 unsupported_recipient: הפגישות של חברי צוות נשארות פרטיות.
| פרמטרים | סוג | הערות |
|---|---|---|
meeting_id · חובה | string | בנתיב |
| שדה | סוג | הערות |
|---|---|---|
recipient · חובה | object | רק anyone (קישור ציבורי לקריאה בלבד). נמען user או team מחזיר 422 unsupported_recipient. |
role | "read" |
curl -X POST "https://mesakem.com/api/v1/meetings/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b/permissions" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"recipient": {
"type": "anyone"
},
"role": "read"
}'{
"id": "perm_anyone",
"object": "permission",
"recipient": {
"type": "anyone"
},
"role": "read",
"status": "ready",
"share_url": "https://mesakem.com/s#Zm9yLWV4YW1wbGU",
"created_at": "2026-10-18T09:00:00.000Z"
}/meetings/{meeting_id}/permissions/{permission_id}→ 204 No Contentshares:writepermission_id הוא perm_anyone. אפשר לקרוא שוב בלי נזק.
| פרמטרים | סוג | הערות |
|---|---|---|
meeting_id · חובה | string | בנתיב |
permission_id · חובה | string | בנתיב |
curl -X DELETE "https://mesakem.com/api/v1/meetings/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b/permissions/perm_anyone" \
-H "Authorization: Bearer $MESAKEM_API_KEY"/documents/{document_id}summaries:readמזהים: doc_sum_… (סיכום), doc_act_… (משימות), doc_dec_… (החלטות). docx מוחזר ב-base64.
| פרמטרים | סוג | הערות |
|---|---|---|
document_id · חובה | string | בנתיב |
format | json | markdown | html | text | raw | docx |
curl "https://mesakem.com/api/v1/documents/doc_sum_2b7d0c1e-8f9a-4b3c-9d2e-5f6a7b8c9d0e?format=markdown" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"id": "doc_act_2b7d0c1e-8f9a-4b3c-9d2e-5f6a7b8c9d0e",
"object": "document",
"kind": "action_items",
"meeting_id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"title": "משימות",
"format": "markdown",
"language": "he",
"content": "# משימות\n\n- לשלוח הצעת מחיר לאקמה\n",
"created_at": "2026-10-15T09:52:18.000Z",
"updated_at": "2026-10-15T09:52:18.000Z"
}/taskstasks:read| פרמטרים | סוג | הערות |
|---|---|---|
limit | integer (1–100) | ברירת מחדל 25 |
cursor | string | next_cursor from the previous page of the SAME request (same key and filters). |
status | active | all | open | in_progress | done | snoozed | delegated | cancelled | ברירת מחדל active |
source | meeting_summary | manual | agent_chat | call_summary | |
meeting_id | string | |
updated_since | date-time | |
due_after | date-time | |
due_before | date-time | |
order | recent | updated | |
ids | string | GET /tasks: 1 to 50 comma-separated task ids (any status). Only the ones your key can read come back. |
q | string | Keyword search: every word must match (prefix match for meetings). Needs search:read. |
curl "https://mesakem.com/api/v1/tasks?status=active&limit=25" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "list",
"data": [
{
"id": "agent_task_5c1f9a2b",
"object": "task",
"privacy": "visible",
"title": "לשלוח הצעת מחיר לאקמה",
"description": null,
"status": "open",
"source": {
"type": "meeting_summary",
"meeting_id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"summary_id": "summary_2b7d0c1e-8f9a-4b3c-9d2e-5f6a7b8c9d0e"
},
"assignee": {
"name": "Dana Levi",
"email": "dana@acme.co.il"
},
"due_at": "2026-10-20T09:00:00.000Z",
"snoozed_until": null,
"items_count": 2,
"app_url": "https://mesakem.com/dashboard/tasks",
"created_at": "2026-10-15T09:52:20.000Z",
"updated_at": "2026-10-16T07:10:00.000Z"
}
],
"next_cursor": null,
"has_more": false
}/tasks→ 201 Createdtasks:write| שדה | סוג | הערות |
|---|---|---|
title · חובה | string | עד 180 תווים |
description | string | null | עד 4000 תווים |
status | string | אחד מ: openin_progressdonesnoozeddelegatedcancelledברירת מחדל "open" |
due_at | date-time | null | |
assignee | object | null | |
items | array<string> | שורות ברשימת התיוג.≤ 24 פריטים |
curl -X POST "https://mesakem.com/api/v1/tasks" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"title": "Send Acme the proposal",
"due_at": "2026-10-20T09:00:00Z",
"items": [
"Confirm pricing with finance"
]
}'{
"id": "agent_task_5c1f9a2b",
"object": "task",
"privacy": "visible",
"title": "לשלוח הצעת מחיר לאקמה",
"description": null,
"status": "open",
"source": {
"type": "manual"
},
"assignee": {
"name": "Dana Levi",
"email": "dana@acme.co.il"
},
"due_at": "2026-10-20T09:00:00.000Z",
"snoozed_until": null,
"items_count": 1,
"app_url": "https://mesakem.com/dashboard/tasks",
"created_at": "2026-10-18T09:00:00.000Z",
"updated_at": "2026-10-18T09:00:00.000Z",
"description_oversized": false,
"items": [
{
"id": "agent_task_item_1",
"title": "לאשר תמחור מול הכספים",
"completed": false,
"position": 1000
}
],
"items_offset": 0,
"items_has_more": false
}/tasks/{task_id}tasks:read| פרמטרים | סוג | הערות |
|---|---|---|
task_id · חובה | string | בנתיב |
items_limit | integer (1–100) | With expand=meetings / calls. |
items_offset | integer (0–) | ברירת מחדל 0 |
curl "https://mesakem.com/api/v1/tasks/agent_task_5c1f9a2b?items_limit=100" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"id": "agent_task_5c1f9a2b",
"object": "task",
"privacy": "visible",
"title": "לשלוח הצעת מחיר לאקמה",
"description": null,
"status": "open",
"source": {
"type": "meeting_summary",
"meeting_id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"summary_id": "summary_2b7d0c1e-8f9a-4b3c-9d2e-5f6a7b8c9d0e"
},
"assignee": {
"name": "Dana Levi",
"email": "dana@acme.co.il"
},
"due_at": "2026-10-20T09:00:00.000Z",
"snoozed_until": null,
"items_count": 2,
"app_url": "https://mesakem.com/dashboard/tasks",
"created_at": "2026-10-15T09:52:20.000Z",
"updated_at": "2026-10-16T07:10:00.000Z",
"description_oversized": false,
"items": [
{
"id": "agent_task_item_1",
"title": "לאשר תמחור מול הכספים",
"completed": true,
"position": 1000
},
{
"id": "agent_task_item_2",
"title": "לשלוח ב-PDF",
"completed": false,
"position": 2000
}
],
"items_offset": 0,
"items_has_more": false
}/tasks/{task_id}tasks:write| פרמטרים | סוג | הערות |
|---|---|---|
task_id · חובה | string | בנתיב |
| שדה | סוג | הערות |
|---|---|---|
title | string | עד 180 תווים |
description | string | null | עד 4000 תווים |
status | string | אחד מ: openin_progressdonesnoozeddelegatedcancelled |
due_at | date-time | null | |
assignee | object | null | Replaces the assignee; null clears it. |
curl -X PATCH "https://mesakem.com/api/v1/tasks/agent_task_5c1f9a2b" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"status": "done"
}'{
"id": "agent_task_5c1f9a2b",
"object": "task",
"privacy": "visible",
"title": "לשלוח הצעת מחיר לאקמה",
"description": null,
"status": "in_progress",
"source": {
"type": "manual"
},
"assignee": {
"name": "Dana Levi",
"email": "dana@acme.co.il"
},
"due_at": "2026-10-20T09:00:00.000Z",
"snoozed_until": null,
"items_count": 1,
"app_url": "https://mesakem.com/dashboard/tasks",
"created_at": "2026-10-18T09:00:00.000Z",
"updated_at": "2026-10-18T09:00:00.000Z",
"description_oversized": false,
"items": [
{
"id": "agent_task_item_1",
"title": "לאשר תמחור מול הכספים",
"completed": false,
"position": 1000
}
],
"items_offset": 0,
"items_has_more": false
}/tasks/{task_id}tasks:writeבמסכם אין מחיקה מוחלטת של משימה: היא נשמרת בסטטוס cancelled.
| פרמטרים | סוג | הערות |
|---|---|---|
task_id · חובה | string | בנתיב |
curl -X DELETE "https://mesakem.com/api/v1/tasks/agent_task_5c1f9a2b" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"id": "agent_task_5c1f9a2b",
"object": "task",
"privacy": "visible",
"title": "לשלוח הצעת מחיר לאקמה",
"description": null,
"status": "cancelled",
"source": {
"type": "manual"
},
"assignee": {
"name": "Dana Levi",
"email": "dana@acme.co.il"
},
"due_at": "2026-10-20T09:00:00.000Z",
"snoozed_until": null,
"items_count": 1,
"app_url": "https://mesakem.com/dashboard/tasks",
"created_at": "2026-10-18T09:00:00.000Z",
"updated_at": "2026-10-18T09:00:00.000Z",
"description_oversized": false,
"items": [
{
"id": "agent_task_item_1",
"title": "לאשר תמחור מול הכספים",
"completed": false,
"position": 1000
}
],
"items_offset": 0,
"items_has_more": false
}/tasks/{task_id}/items→ 201 Createdtasks:write| פרמטרים | סוג | הערות |
|---|---|---|
task_id · חובה | string | בנתיב |
| שדה | סוג | הערות |
|---|---|---|
title · חובה | string | עד 180 תווים |
curl -X POST "https://mesakem.com/api/v1/tasks/agent_task_5c1f9a2b/items" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"title": "Attach the PDF"
}'{
"id": "agent_task_5c1f9a2b",
"object": "task",
"privacy": "visible",
"title": "לשלוח הצעת מחיר לאקמה",
"description": null,
"status": "open",
"source": {
"type": "manual"
},
"assignee": {
"name": "Dana Levi",
"email": "dana@acme.co.il"
},
"due_at": "2026-10-20T09:00:00.000Z",
"snoozed_until": null,
"items_count": 2,
"app_url": "https://mesakem.com/dashboard/tasks",
"created_at": "2026-10-18T09:00:00.000Z",
"updated_at": "2026-10-18T09:00:00.000Z",
"description_oversized": false,
"items": [
{
"id": "agent_task_item_1",
"title": "לאשר תמחור מול הכספים",
"completed": false,
"position": 1000
},
{
"id": "agent_task_item_2",
"title": "לשלוח ב-PDF",
"completed": false,
"position": 2000
}
],
"items_offset": 0,
"items_has_more": false,
"item": {
"id": "agent_task_item_2",
"title": "לשלוח ב-PDF",
"completed": false,
"position": 2000
}
}/tasks/{task_id}/items/{item_id}tasks:write| פרמטרים | סוג | הערות |
|---|---|---|
task_id · חובה | string | בנתיב |
item_id · חובה | string | בנתיב |
| שדה | סוג | הערות |
|---|---|---|
completed · חובה | boolean |
curl -X PATCH "https://mesakem.com/api/v1/tasks/agent_task_5c1f9a2b/items/agent_task_item_2" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"completed": true
}'{
"id": "agent_task_5c1f9a2b",
"object": "task",
"privacy": "visible",
"title": "לשלוח הצעת מחיר לאקמה",
"description": null,
"status": "open",
"source": {
"type": "manual"
},
"assignee": {
"name": "Dana Levi",
"email": "dana@acme.co.il"
},
"due_at": "2026-10-20T09:00:00.000Z",
"snoozed_until": null,
"items_count": 1,
"app_url": "https://mesakem.com/dashboard/tasks",
"created_at": "2026-10-18T09:00:00.000Z",
"updated_at": "2026-10-18T09:00:00.000Z",
"description_oversized": false,
"items": [
{
"id": "agent_task_item_1",
"title": "לאשר תמחור מול הכספים",
"completed": true,
"position": 1000
}
],
"items_offset": 0,
"items_has_more": false,
"item": {
"id": "agent_task_item_1",
"title": "לאשר תמחור מול הכספים",
"completed": true,
"position": 1000
}
}/tasks/{task_id}/items/{item_id}→ 204 No Contenttasks:write| פרמטרים | סוג | הערות |
|---|---|---|
task_id · חובה | string | בנתיב |
item_id · חובה | string | בנתיב |
curl -X DELETE "https://mesakem.com/api/v1/tasks/agent_task_5c1f9a2b/items/agent_task_item_2" \
-H "Authorization: Bearer $MESAKEM_API_KEY"/team/membersteam:readבאזור עבודה אישי מוחזרת רשימה ריקה ו-team_id ריק. מפתח ארגון (msk_org_…, נוצר בלוח הבקרה של הארגון) מחזיר את כל החברים הפעילים בארגון שלו.
| פרמטרים | סוג | הערות |
|---|---|---|
limit | integer (1–100) | ברירת מחדל 25 |
cursor | string | next_cursor from the previous page of the SAME request (same key and filters). |
curl "https://mesakem.com/api/v1/team/members?limit=25" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "list",
"team_id": "org_5e4d3c2b",
"data": [
{
"id": "user_1f2e3d4c",
"name": "Noa Cohen",
"email": "noa@acme.co.il",
"role": "member"
}
],
"next_cursor": null,
"has_more": false
}/webhookswebhooks:readcurl "https://mesakem.com/api/v1/webhooks" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "list",
"data": [
{
"object": "webhook_endpoint",
"id": "whk_3c2b1a0f9e8d7c6b5a493827161504f3",
"url": "https://hooks.acme.co.il/mesakem",
"description": "CRM sync",
"events": [
"summary.ready",
"action_items.created",
"meeting.deleted"
],
"filters": {},
"signature_format": "standard",
"enabled": true,
"status": "healthy",
"disabled_reason": null,
"disabled_at": null,
"secret_hint": "Qx9k",
"secret_rotation_ends_at": null,
"failure_streak": 0,
"last_attempt_at": "2026-10-18T09:52:21.000Z",
"last_success_at": "2026-10-18T09:52:21.000Z",
"last_status": 200,
"created_at": "2026-10-18T08:00:00.000Z",
"updated_at": "2026-10-18T08:00:00.000Z"
}
],
"limit": 10,
"has_more": false,
"next_cursor": null
}/webhooks→ 201 Createdwebhooks:writeמחזיר את הסוד לחתימה (whsec_…) פעם אחת בלבד. הכתובת חייבת להיות https בשרת ציבורי; כתובות פרטיות, מקומיות ושל שירותי מטא-דאטה נחסמות, עכשיו ובכל שליחה.
| שדה | סוג | הערות |
|---|---|---|
url · חובה | uri | https בלבד, פורט 443 או 8443, שרת ציבורי.עד 2048 תווים |
events · חובה | array<string> | 1–64 פריטיםשמות אירועים או שמות חלופיים — ראו את הקטלוג |
description | string | עד 200 תווים |
filters.sources | array<string> | רק פגישות מהמקורות האלה (השדה source של הפגישה).אחד מ: google_meetzoomteamsphoneuploaddesktopemailunknown |
filters.room_ids | array<string> | רק פגישות בחדרים האלה, ואירועים של החדרים עצמם.≤ 50 פריטים |
signature_format | standard | simple_hmac | simple_hmac שולח גם את הכותרת X-Webhook-Signature, למקבלים שלא יכולים לאמת Standard Webhooks.ברירת מחדל "standard" |
enabled | boolean | ברירת מחדל true |
curl -X POST "https://mesakem.com/api/v1/webhooks" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://hooks.example.com/mesakem",
"events": [
"summary.ready",
"action_items.created",
"meeting.deleted"
],
"description": "CRM sync"
}'{
"object": "webhook_endpoint",
"id": "whk_3c2b1a0f9e8d7c6b5a493827161504f3",
"url": "https://hooks.acme.co.il/mesakem",
"description": "CRM sync",
"events": [
"summary.ready",
"action_items.created",
"meeting.deleted"
],
"filters": {},
"signature_format": "standard",
"enabled": true,
"status": "healthy",
"disabled_reason": null,
"disabled_at": null,
"secret_hint": "Qx9k",
"secret_rotation_ends_at": null,
"failure_streak": 0,
"last_attempt_at": "2026-10-18T09:52:21.000Z",
"last_success_at": "2026-10-18T09:52:21.000Z",
"last_status": 200,
"created_at": "2026-10-18T08:00:00.000Z",
"updated_at": "2026-10-18T08:00:00.000Z",
"secret": "whsec_MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLaSw"
}/webhooks/{endpoint_id}webhooks:read| פרמטרים | סוג | הערות |
|---|---|---|
endpoint_id · חובה | string | בנתיב |
curl "https://mesakem.com/api/v1/webhooks/whk_3c2b1a0f9e8d7c6b5a493827161504f3" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "webhook_endpoint",
"id": "whk_3c2b1a0f9e8d7c6b5a493827161504f3",
"url": "https://hooks.acme.co.il/mesakem",
"description": "CRM sync",
"events": [
"summary.ready",
"action_items.created",
"meeting.deleted"
],
"filters": {},
"signature_format": "standard",
"enabled": true,
"status": "healthy",
"disabled_reason": null,
"disabled_at": null,
"secret_hint": "Qx9k",
"secret_rotation_ends_at": null,
"failure_streak": 0,
"last_attempt_at": "2026-10-18T09:52:21.000Z",
"last_success_at": "2026-10-18T09:52:21.000Z",
"last_status": 200,
"created_at": "2026-10-18T08:00:00.000Z",
"updated_at": "2026-10-18T08:00:00.000Z"
}/webhooks/{endpoint_id}webhooks:writeשלחו רק את השדות שמשתנים. enabled=true מפעיל מחדש נקודה שהושבתה אחרי כשלונות.
| פרמטרים | סוג | הערות |
|---|---|---|
endpoint_id · חובה | string | בנתיב |
| שדה | סוג | הערות |
|---|---|---|
url | uri | עד 2048 תווים |
events | array<string> | 1–64 פריטיםשמות אירועים או שמות חלופיים — ראו את הקטלוג |
description | string | null | עד 200 תווים |
filters.sources | array<string> | רק פגישות מהמקורות האלה (השדה source של הפגישה).אחד מ: google_meetzoomteamsphoneuploaddesktopemailunknown |
filters.room_ids | array<string> | רק פגישות בחדרים האלה, ואירועים של החדרים עצמם.≤ 50 פריטים |
signature_format | standard | simple_hmac | |
enabled | boolean | true מפעיל מחדש נקודה שהושבתה אחרי כשלונות ומאפס את מונה הכשלונות. |
curl -X PATCH "https://mesakem.com/api/v1/webhooks/whk_3c2b1a0f9e8d7c6b5a493827161504f3" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"events": [
"summary.ready",
"summary.updated",
"meeting.deleted"
],
"enabled": true
}'{
"object": "webhook_endpoint",
"id": "whk_3c2b1a0f9e8d7c6b5a493827161504f3",
"url": "https://hooks.acme.co.il/mesakem",
"description": "CRM sync (v2)",
"events": [
"summary.ready",
"action_items.created",
"meeting.deleted"
],
"filters": {},
"signature_format": "standard",
"enabled": true,
"status": "healthy",
"disabled_reason": null,
"disabled_at": null,
"secret_hint": "Qx9k",
"secret_rotation_ends_at": null,
"failure_streak": 0,
"last_attempt_at": "2026-10-18T09:52:21.000Z",
"last_success_at": "2026-10-18T09:52:21.000Z",
"last_status": 200,
"created_at": "2026-10-18T08:00:00.000Z",
"updated_at": "2026-10-18T10:00:00.000Z"
}/webhooks/{endpoint_id}webhooks:writeמשלוחים שממתינים לה מבוטלים.
| פרמטרים | סוג | הערות |
|---|---|---|
endpoint_id · חובה | string | בנתיב |
curl -X DELETE "https://mesakem.com/api/v1/webhooks/whk_3c2b1a0f9e8d7c6b5a493827161504f3" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "webhook_endpoint",
"id": "whk_3c2b1a0f9e8d7c6b5a493827161504f3",
"deleted": true
}/webhooks/{endpoint_id}/rotate-secretwebhooks:writeהסוד החדש חותם מיד; במשך 24 שעות כל משלוח נושא גם את החתימה הישנה, כך שאפשר לעבור בלי הפסקה.
| פרמטרים | סוג | הערות |
|---|---|---|
endpoint_id · חובה | string | בנתיב |
curl -X POST "https://mesakem.com/api/v1/webhooks/whk_3c2b1a0f9e8d7c6b5a493827161504f3/rotate-secret" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "webhook_endpoint",
"id": "whk_3c2b1a0f9e8d7c6b5a493827161504f3",
"url": "https://hooks.acme.co.il/mesakem",
"description": "CRM sync",
"events": [
"summary.ready",
"action_items.created",
"meeting.deleted"
],
"filters": {},
"signature_format": "standard",
"enabled": true,
"status": "healthy",
"disabled_reason": null,
"disabled_at": null,
"secret_hint": "Lm3p",
"secret_rotation_ends_at": "2026-10-19T10:00:00.000Z",
"failure_streak": 0,
"last_attempt_at": "2026-10-18T09:52:21.000Z",
"last_success_at": "2026-10-18T09:52:21.000Z",
"last_status": 200,
"created_at": "2026-10-18T08:00:00.000Z",
"updated_at": "2026-10-18T08:00:00.000Z",
"secret": "whsec_Lm3pZx8rW2vT6yQ1nB5kD9fH4jS7aC0eG2iK"
}/webhooks/{endpoint_id}/testwebhooks:writeשולח webhook.test מיד ומחזיר את הסטטוס, זמן התגובה ו-512 הבתים הראשונים מהתשובה. שום דבר לא נשמר.
| פרמטרים | סוג | הערות |
|---|---|---|
endpoint_id · חובה | string | בנתיב |
curl -X POST "https://mesakem.com/api/v1/webhooks/whk_3c2b1a0f9e8d7c6b5a493827161504f3/test" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "webhook_test",
"endpoint_id": "whk_3c2b1a0f9e8d7c6b5a493827161504f3",
"message_id": "msg_0f1e2d3c4b5a69788796a5b4c3d2e1f0",
"delivered": true,
"status": 200,
"latency_ms": 162,
"error": null,
"response_snippet": "ok"
}/webhooks/{endpoint_id}/deliverieswebhooks:readמהחדש לישן. כל שורה היא משלוח אחד עם הניסיון האחרון שלו.
| פרמטרים | סוג | הערות |
|---|---|---|
endpoint_id · חובה | string | בנתיב |
limit | integer (1–100) | ברירת מחדל 25 |
cursor | string | next_cursor from the previous page of the SAME request (same key and filters). |
curl "https://mesakem.com/api/v1/webhooks/whk_3c2b1a0f9e8d7c6b5a493827161504f3/deliveries?limit=25" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "list",
"data": [
{
"object": "webhook_delivery",
"id": "whd_9f8e7d6c5b4a39281706f5e4d3c2b1a0",
"endpoint_id": "whk_3c2b1a0f9e8d7c6b5a493827161504f3",
"event_id": "msg_1a2b3c4d5e6f708192a3b4c5d6e7f809",
"type": "summary.ready",
"state": "succeeded",
"attempt": 1,
"max_attempts": 9,
"last_status": 200,
"last_error": null,
"latency_ms": 184,
"next_attempt_at": null,
"response_snippet": "{\"ok\":true}",
"redelivery_of": null,
"created_at": "2026-10-18T09:52:20.000Z",
"completed_at": "2026-10-18T09:52:21.000Z"
},
{
"object": "webhook_delivery",
"id": "whd_0a1b2c3d4e5f60718293a4b5c6d7e8f9",
"endpoint_id": "whk_3c2b1a0f9e8d7c6b5a493827161504f3",
"event_id": "msg_1a2b3c4d5e6f708192a3b4c5d6e7f809",
"type": "meeting.ended",
"state": "retry_scheduled",
"attempt": 3,
"max_attempts": 9,
"last_status": 503,
"last_error": "http_503",
"latency_ms": 10000,
"next_attempt_at": "2026-10-18T09:58:00.000Z",
"response_snippet": "Service Unavailable",
"redelivery_of": null,
"created_at": "2026-10-18T09:52:20.000Z",
"completed_at": null
}
],
"has_more": false,
"next_cursor": null
}/webhooks/{endpoint_id}/deliveries/{delivery_id}/redeliver→ 202 Acceptedwebhooks:writeסדרת ניסיונות חדשה למשלוח שהסתיים, עם אותו webhook-id (סננו כפילויות לפיו).
| פרמטרים | סוג | הערות |
|---|---|---|
endpoint_id · חובה | string | בנתיב |
delivery_id · חובה | string | בנתיב |
curl -X POST "https://mesakem.com/api/v1/webhooks/whk_3c2b1a0f9e8d7c6b5a493827161504f3/deliveries/whd_9f8e7d6c5b4a39281706f5e4d3c2b1a0/redeliver" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "webhook_delivery",
"id": "whd_5e4d3c2b1a0f9e8d7c6b5a4938271605",
"endpoint_id": "whk_3c2b1a0f9e8d7c6b5a493827161504f3",
"event_id": "msg_1a2b3c4d5e6f708192a3b4c5d6e7f809",
"type": "summary.ready",
"state": "pending",
"attempt": 0,
"max_attempts": 9,
"last_status": null,
"last_error": null,
"latency_ms": null,
"next_attempt_at": null,
"response_snippet": null,
"redelivery_of": "whd_9f8e7d6c5b4a39281706f5e4d3c2b1a0",
"created_at": "2026-10-18T11:00:00.000Z",
"completed_at": null
}/webhook-event-typeswebhooks:readכל סוגי האירועים, השם החלופי שלהם (אם יש) והשדות במטען, עם תיאור בעברית ובאנגלית.
curl "https://mesakem.com/api/v1/webhook-event-types" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "list",
"data": [
{
"object": "webhook_event_type",
"type": "meeting.scheduled",
"alias": null,
"group": "meetings",
"data_object": "meeting",
"fields": [
"meeting_id",
"source",
"scheduled_start_time",
"title"
],
"description": "A meeting was scheduled for the notetaker (calendar, link or manual).",
"description_he": "פגישה נקבעה לבוט (מהיומן, מקישור או ידנית).",
"description_en": "A meeting was scheduled for the notetaker (calendar, link or manual)."
},
{
"object": "webhook_event_type",
"type": "meeting.bot_status_changed",
"alias": null,
"group": "meetings",
"data_object": "meeting",
"fields": [
"meeting_id",
"bot_status",
"previous_status"
],
"description": "The notetaker is joining, waiting in the lobby, was not admitted or was removed.",
"description_he": "הבוט מצטרף, ממתין בלובי, לא אושר או הוצא מהפגישה.",
"description_en": "The notetaker is joining, waiting in the lobby, was not admitted or was removed."
}
],
"has_more": false,
"next_cursor": null
}/meetings/bot→ 202 Acceptedbot:writeדורש bot:write בתוכנית בתשלום. מגבלות קשיחות לכל משתמש ולכל אזור עבודה (לדקה, לשעה וליום) מגינות מפני עלויות שבורחות, ומכסת הפגישות של התוכנית חלה. פגישה שכבר יש בה בוט של מסכם מחזירה 409 meeting_bot_already_active עם ה-meeting_id שלה. שלחו Idempotency-Key כדי שניסיון חוזר לא ישלח בוט שני.
| שדה | סוג | הערות |
|---|---|---|
meeting_url · חובה | string | קישור Zoom, Google Meet או Microsoft Teams (אפשר גם להדביק את כל ההזמנה).עד 1024 תווים |
title | string | עד 180 תווים |
language | string | שפת השיחה, למשל he, en או auto. ברירת מחדל: שפת הבוט השמורה של בעל המפתח. |
summary_language | he | en | |
summary_recipient_email | email | נמען מאומת של אזור העבודה. ברירת מחדל: בעל המפתח, ואם אינו מאומת — נמען ברירת המחדל. |
start_time | date-time | להצטרף בזמן הזה במקום עכשיו (עד 60 יום קדימה). |
end_time | date-time |
curl -X POST "https://mesakem.com/api/v1/meetings/bot" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"meeting_url": "https://zoom.us/j/1234567890?pwd=abc123",
"title": "Discovery call — Acme"
}'{
"object": "bot_dispatch",
"meeting_id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"status": "scheduling",
"status_detail": "queued",
"scheduled_start_time": null,
"app_url": "https://mesakem.com/dashboard/meeting/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b"
}/meetings/{meeting_id}/bot→ 202 Acceptedbot:writeevent_id הוא מזהה cal_evt_… מ-GET /meetings/upcoming. אותו מתג כמו "להצטרף" ביומן שבדשבורד.
| פרמטרים | סוג | הערות |
|---|---|---|
meeting_id · חובה | string | בנתיב |
| שדה | סוג | הערות |
|---|---|---|
apply_to_series | boolean | להצטרף גם לכל הפגישות הבאות בסדרה החוזרת.ברירת מחדל false |
curl -X POST "https://mesakem.com/api/v1/meetings/cal_evt_Qm9pZ2h0LXNlcmllcy0x/bot" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"apply_to_series": false
}'{
"object": "bot_schedule",
"event_id": "cal_evt_Qm9pZ2h0LXNlcmllcy0x",
"status": "scheduling",
"meeting_id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"admission": {
"accepted": true,
"reason": null
},
"apply_to_series": false,
"start_time": "2026-10-20T07:00:00.000Z"
}/meetings/{meeting_id}/bot→ 202 Acceptedbot:writecal_evt_…: הבוט לא יצטרף ("לדלג" בדשבורד). run_…: הבוט יוצא מהשיחה עכשיו, והקטע שהוקלט מתומלל ומסוכם כרגיל. לבעלי הפגישה בלבד.
| פרמטרים | סוג | הערות |
|---|---|---|
meeting_id · חובה | string | בנתיב |
apply_to_series | true | false | cal_evt_… only: also skip every future meeting of the series. |
curl -X DELETE "https://mesakem.com/api/v1/meetings/cal_evt_Qm9pZ2h0LXNlcmllcy0x/bot" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "bot_schedule",
"event_id": "cal_evt_Qm9pZ2h0LXNlcmllcy0x",
"status": "cancelling",
"cancelled_meetings": 1,
"apply_to_series": false
}/settings/notetaker-automationsettings:readcurl "https://mesakem.com/api/v1/settings/notetaker-automation" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "notetaker_automation",
"automation": "JOIN_AS_HOST",
"allowed": true
}/settings/notetaker-automationsettings:writeMANUAL: אף פעם לא אוטומטית. JOIN_ALL_EVENTS: כל פגישה עם קישור נתמך. JOIN_EXTERNAL_ONLY: רק פגישות עם אנשים מחוץ לדומיין שלכם. JOIN_AS_HOST: רק פגישות שאתם מארגנים.
| שדה | סוג | הערות |
|---|---|---|
automation · חובה | MANUAL | JOIN_ALL_EVENTS | JOIN_EXTERNAL_ONLY | JOIN_AS_HOST |
curl -X PUT "https://mesakem.com/api/v1/settings/notetaker-automation" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"automation": "JOIN_AS_HOST"
}'{
"object": "notetaker_automation",
"automation": "JOIN_EXTERNAL_ONLY",
"allowed": true
}/uploads→ 201 Createduploads:writeשלחו PUT של הקובץ ל-upload.url עם הכותרות שבתשובה, ואז POST /uploads/{upload_id}/complete. עד 3 העלאות בתהליך בו-זמנית.
| שדה | סוג | הערות |
|---|---|---|
filename · חובה | string | סיומת mp3, wav, m4a, mp4 או webm.עד 180 תווים |
content_type · חובה | string | אחד מ: audio/mpegaudio/mp3audio/wavaudio/x-wavaudio/mp4audio/m4aaudio/x-m4aaudio/aacaudio/webmvideo/mp4video/webmvideo/quicktime |
size_bytes · חובה | integer | הגודל המדויק בבתים; עד 200MB. |
title | string | עד 180 תווים |
language | string | |
summary_language | he | en | |
category | meeting | call | ברירת מחדל "meeting" |
curl -X POST "https://mesakem.com/api/v1/uploads" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"filename": "call.m4a",
"content_type": "audio/mp4",
"size_bytes": 3145728,
"language": "he"
}'{
"object": "upload",
"id": "recjob_8a1b2c3d4e5f60718293a4b5c6d7e8f9",
"meeting_id": "run_upload_8a1b2c3d4e5f60718293a4b5c6d7e8f9",
"filename": "call.m4a",
"content_type": "audio/mp4",
"size_bytes": 3145728,
"app_url": "https://mesakem.com/dashboard/meeting/run_upload_8a1b2c3d4e5f60718293a4b5c6d7e8f9",
"created_at": "2026-10-18T09:00:00.000Z",
"status": "awaiting_upload",
"upload": {
"url": "https://storage.example/uploaded-recordings/…?X-Amz-Signature=…",
"method": "PUT",
"headers": {
"content-type": "audio/mp4",
"content-length": "3145728"
},
"expires_at": "2026-10-18T09:15:00.000Z"
}
}/uploads/{upload_id}/complete→ 202 Accepteduploads:writeבודק את הגודל והסוג של הקובץ שנשמר, ואז מכניס לתור תמלול וסיכום.
| פרמטרים | סוג | הערות |
|---|---|---|
upload_id · חובה | string | בנתיב |
| שדה | סוג | הערות |
|---|---|---|
size_bytes | integer | ברירת מחדל: הגודל שהוצהר ב-POST /uploads. |
curl -X POST "https://mesakem.com/api/v1/uploads/recjob_8a1b2c3d4e5f60718293a4b5c6d7e8f9/complete" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"{
"object": "upload",
"id": "recjob_8a1b2c3d4e5f60718293a4b5c6d7e8f9",
"meeting_id": "run_upload_8a1b2c3d4e5f60718293a4b5c6d7e8f9",
"filename": "call.m4a",
"content_type": "audio/mp4",
"size_bytes": 3145728,
"app_url": "https://mesakem.com/dashboard/meeting/run_upload_8a1b2c3d4e5f60718293a4b5c6d7e8f9",
"created_at": "2026-10-18T09:00:00.000Z",
"status": "processing"
}/uploads/{upload_id}meetings:readהאובייקט ש-upload.failed מציין: מצב וקוד שגיאה. למי שהעלה בלבד.
| פרמטרים | סוג | הערות |
|---|---|---|
upload_id · חובה | string | בנתיב |
curl "https://mesakem.com/api/v1/uploads/recjob_8a1b2c3d4e5f60718293a4b5c6d7e8f9" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "upload",
"id": "recjob_8a1b2c3d4e5f60718293a4b5c6d7e8f9",
"meeting_id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"status": "failed",
"category": "meeting",
"filename": "interview.m4a",
"content_type": "audio/mp4",
"size_bytes": 18234567,
"duration": null,
"error_code": "transcription_failed",
"app_url": "https://mesakem.com/dashboard/meeting/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"created_at": "2026-10-16T09:00:00.000Z",
"updated_at": "2026-10-16T09:04:00.000Z"
}/roomsrooms:readהחדרים שלכם והחדרים המשותפים באזור העבודה; חדר פרטי של חבר אחר לא מוצג לעולם. המונים כוללים רק פריטים שאתם יכולים לקרוא.
| פרמטרים | סוג | הערות |
|---|---|---|
limit | integer (1–100) | ברירת מחדל 25 |
cursor | string | next_cursor from the previous page of the SAME request (same key and filters). |
archived | true | false | ברירת מחדל false |
search | string | Room name, description or client name contains this (case-insensitive). |
curl "https://mesakem.com/api/v1/rooms?limit=25" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "list",
"data": [
{
"id": "room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a",
"object": "room",
"name": "אקמה — פיילוט",
"description": "כל הפגישות עם אקמה",
"client_name": "Acme",
"keywords": [
"אקמה",
"פיילוט"
],
"visibility": "private",
"archived": false,
"created_by_you": true,
"meeting_count": 4,
"call_count": 1,
"last_activity_at": "2026-10-16T10:00:00.000Z",
"app_url": "https://mesakem.com/dashboard/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a",
"created_at": "2026-09-01T08:00:00.000Z",
"updated_at": "2026-10-16T10:00:00.000Z"
}
],
"next_cursor": null,
"has_more": false
}/rooms→ 201 Createdrooms:write| שדה | סוג | הערות |
|---|---|---|
name · חובה | string | The room's name (title is accepted as the same field).עד 120 תווים |
title | string | Same as name.עד 120 תווים |
description | string | null | עד 4000 תווים |
client_name | string | null | עד 200 תווים |
keywords | array<string> | ≤ 100 פריטים |
curl -X POST "https://mesakem.com/api/v1/rooms" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme pilot",
"client_name": "Acme"
}'{
"id": "room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a",
"object": "room",
"name": "אקמה — פיילוט",
"description": "כל הפגישות עם אקמה",
"client_name": "Acme",
"keywords": [
"אקמה",
"פיילוט"
],
"visibility": "private",
"archived": false,
"created_by_you": true,
"meeting_count": 0,
"call_count": 0,
"last_activity_at": "2026-10-16T10:00:00.000Z",
"app_url": "https://mesakem.com/dashboard/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a",
"created_at": "2026-09-01T08:00:00.000Z",
"updated_at": "2026-10-16T10:00:00.000Z"
}/rooms/{room_id}rooms:readexpand=meetings,calls מציג את הפריטים שלו (האחרון שנוסף ראשון).
| פרמטרים | סוג | הערות |
|---|---|---|
room_id · חובה | string | בנתיב |
expand | string | Comma-separated: participants, documents. |
items_limit | integer (1–100) | With expand=meetings / calls. |
curl "https://mesakem.com/api/v1/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a?expand=meetings" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"id": "room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a",
"object": "room",
"name": "אקמה — פיילוט",
"description": "כל הפגישות עם אקמה",
"client_name": "Acme",
"keywords": [
"אקמה",
"פיילוט"
],
"visibility": "private",
"archived": false,
"created_by_you": true,
"meeting_count": 4,
"call_count": 1,
"last_activity_at": "2026-10-16T10:00:00.000Z",
"app_url": "https://mesakem.com/dashboard/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a",
"created_at": "2026-09-01T08:00:00.000Z",
"updated_at": "2026-10-16T10:00:00.000Z",
"meetings": [
{
"id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"object": "meeting",
"title": "פגישת היכרות — אקמה",
"status": "completed",
"source": "zoom",
"start_time": "2026-10-15T09:00:12.000Z",
"added_at": "2026-10-15T10:00:00.000Z"
}
],
"meetings_has_more": false
}/rooms/{room_id}rooms:write| פרמטרים | סוג | הערות |
|---|---|---|
room_id · חובה | string | בנתיב |
| שדה | סוג | הערות |
|---|---|---|
name | string | The room's name (title is accepted as the same field).עד 120 תווים |
title | string | Same as name.עד 120 תווים |
description | string | null | עד 4000 תווים |
client_name | string | null | עד 200 תווים |
keywords | array<string> | ≤ 100 פריטים |
archived | boolean | true archives, false restores. |
curl -X PATCH "https://mesakem.com/api/v1/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme — customer"
}'{
"id": "room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a",
"object": "room",
"name": "אקמה — לקוח",
"description": "כל הפגישות עם אקמה",
"client_name": "Acme",
"keywords": [
"אקמה",
"פיילוט"
],
"visibility": "private",
"archived": false,
"created_by_you": true,
"meeting_count": 4,
"call_count": 1,
"last_activity_at": "2026-10-16T10:00:00.000Z",
"app_url": "https://mesakem.com/dashboard/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a",
"created_at": "2026-09-01T08:00:00.000Z",
"updated_at": "2026-10-16T10:00:00.000Z"
}/rooms/{room_id}→ 202 Acceptedrooms:writeאין מחיקה סופית של חדר: DELETE מעביר לארכיון (PATCH עם archived=false משחזר). הפגישות שבו לא משתנות.
| פרמטרים | סוג | הערות |
|---|---|---|
room_id · חובה | string | בנתיב |
curl -X DELETE "https://mesakem.com/api/v1/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"id": "room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a",
"object": "room",
"name": "אקמה — פיילוט",
"description": "כל הפגישות עם אקמה",
"client_name": "Acme",
"keywords": [
"אקמה",
"פיילוט"
],
"visibility": "private",
"archived": true,
"created_by_you": true,
"meeting_count": 4,
"call_count": 1,
"last_activity_at": "2026-10-16T10:00:00.000Z",
"app_url": "https://mesakem.com/dashboard/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a",
"created_at": "2026-09-01T08:00:00.000Z",
"updated_at": "2026-10-16T10:00:00.000Z"
}/rooms/{room_id}/meetings/{meeting_id}→ 204 No Contentrooms:write| פרמטרים | סוג | הערות |
|---|---|---|
room_id · חובה | string | בנתיב |
meeting_id · חובה | string | בנתיב |
curl -X PUT "https://mesakem.com/api/v1/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a/meetings/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"/rooms/{room_id}/meetings/{meeting_id}→ 204 No Contentrooms:write| פרמטרים | סוג | הערות |
|---|---|---|
room_id · חובה | string | בנתיב |
meeting_id · חובה | string | בנתיב |
curl -X DELETE "https://mesakem.com/api/v1/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a/meetings/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b" \
-H "Authorization: Bearer $MESAKEM_API_KEY"/rooms/{room_id}/calls/{call_id}→ 204 No Contentrooms:write| פרמטרים | סוג | הערות |
|---|---|---|
room_id · חובה | string | בנתיב |
call_id · חובה | string | בנתיב |
curl -X PUT "https://mesakem.com/api/v1/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a/calls/call_Y3JjXzFhMmIzYwoxNzI5MDAwMDAwLjQy" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"/rooms/{room_id}/calls/{call_id}→ 204 No Contentrooms:write| פרמטרים | סוג | הערות |
|---|---|---|
room_id · חובה | string | בנתיב |
call_id · חובה | string | בנתיב |
curl -X DELETE "https://mesakem.com/api/v1/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a/calls/call_Y3JjXzFhMmIzYwoxNzI5MDAwMDAwLjQy" \
-H "Authorization: Bearer $MESAKEM_API_KEY"/rooms/{room_id}/insightsrooms:readמחזיר את מה שכבר קיים: ההחלטות שבסיכום של כל פגישה, וניתוחים שנעשו בדשבורד. הקריאה הזו לא מייצרת דבר.
| פרמטרים | סוג | הערות |
|---|---|---|
room_id · חובה | string | בנתיב |
curl "https://mesakem.com/api/v1/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a/insights" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "room_insights",
"room_id": "room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a",
"source_count": 4,
"decision_log": [
{
"source": {
"type": "meeting",
"id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b"
},
"title": "פגישת היכרות — אקמה",
"occurred_at": "2026-10-15T09:00:12.000Z",
"decisions": [
"פיילוט של חודש"
]
}
],
"analyses": {
"decisions": null,
"trends": {
"kind": "trend_analysis",
"created_at": "2026-10-10T12:00:00.000Z",
"stale": true,
"content": {
"momentum": "…",
"open_threads": [],
"risks": [],
"sentiment_by_meeting": [],
"next_step_suggestions": []
}
}
},
"generated_on_request": false
}/rooms/{room_id}/permissionsshares:read| פרמטרים | סוג | הערות |
|---|---|---|
room_id · חובה | string | בנתיב |
curl "https://mesakem.com/api/v1/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a/permissions" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "list",
"data": [],
"share_url": null,
"next_cursor": null,
"has_more": false
}/rooms/{room_id}/permissionsshares:writeמחזיר 422 עם public_link_in_dashboard: קישור ציבורי לחדר נוצר בדשבורד, שם בוחרים את הפגישות שבו. ביטול עובד כאן.
| פרמטרים | סוג | הערות |
|---|---|---|
room_id · חובה | string | בנתיב |
| שדה | סוג | הערות |
|---|---|---|
recipient · חובה | object | |
role | "read" |
curl -X POST "https://mesakem.com/api/v1/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a/permissions" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"recipient": {
"type": "anyone"
},
"role": "read"
}'{
"id": "perm_anyone",
"object": "permission",
"recipient": {
"type": "anyone"
},
"role": "read",
"status": "ready",
"share_url": "https://mesakem.com/r#…",
"created_at": null
}/rooms/{room_id}/permissions/{permission_id}→ 204 No Contentshares:write| פרמטרים | סוג | הערות |
|---|---|---|
room_id · חובה | string | בנתיב |
permission_id · חובה | string | בנתיב |
curl -X DELETE "https://mesakem.com/api/v1/rooms/room_3c2b1a09-8f7e-4d6c-9b5a-4f3e2d1c0b9a/permissions/perm_anyone" \
-H "Authorization: Bearer $MESAKEM_API_KEY"/callscalls:readשיחות שהוקלטו ממערכת הטלפון המחוברת. שיחה שיצרה פגישה מופיעה גם ב-GET /meetings (מקור phone).
| פרמטרים | סוג | הערות |
|---|---|---|
limit | integer (1–100) | ברירת מחדל 25 |
cursor | string | next_cursor from the previous page of the SAME request (same key and filters). |
from | date-time | ISO 8601 with offset, or YYYY-MM-DD (00:00 UTC). |
to | date-time |
curl "https://mesakem.com/api/v1/calls?limit=25" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "list",
"data": [
{
"id": "call_Y3JjXzFhMmIzYwoxNzI5MDAwMDAwLjQy",
"object": "call",
"title": "דנה לוי",
"provider": "link",
"direction": "outbound",
"duration": 312,
"status": "ready",
"contact_name": "דנה לוי",
"caller": "035551234",
"callee": "0525551234",
"recorded_date": "15/10/2026",
"recorded_time": "11:42",
"start_time": "2026-10-15T08:42:00.000Z",
"language": "he",
"has_transcript": true,
"has_summary": true,
"has_recording": true,
"meeting_id": "run_9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"app_url": "https://mesakem.com/dashboard/meeting/run_9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"created_at": "2026-10-15T08:47:00.000Z",
"updated_at": "2026-10-15T08:51:00.000Z"
}
],
"next_cursor": null,
"has_more": false
}/calls/{call_id}calls:read| פרמטרים | סוג | הערות |
|---|---|---|
call_id · חובה | string | בנתיב |
curl "https://mesakem.com/api/v1/calls/call_Y3JjXzFhMmIzYwoxNzI5MDAwMDAwLjQy" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"id": "call_Y3JjXzFhMmIzYwoxNzI5MDAwMDAwLjQy",
"object": "call",
"title": "דנה לוי",
"provider": "link",
"direction": "outbound",
"duration": 312,
"status": "ready",
"contact_name": "דנה לוי",
"caller": "035551234",
"callee": "0525551234",
"recorded_date": "15/10/2026",
"recorded_time": "11:42",
"start_time": "2026-10-15T08:42:00.000Z",
"language": "he",
"has_transcript": true,
"has_summary": true,
"has_recording": true,
"meeting_id": "run_9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"app_url": "https://mesakem.com/dashboard/meeting/run_9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"created_at": "2026-10-15T08:47:00.000Z",
"updated_at": "2026-10-15T08:51:00.000Z"
}/calls/{call_id}/transcriptcalls:read| פרמטרים | סוג | הערות |
|---|---|---|
call_id · חובה | string | בנתיב |
format | string |
curl "https://mesakem.com/api/v1/calls/call_Y3JjXzFhMmIzYwoxNzI5MDAwMDAwLjQy/transcript" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "call_transcript",
"call_id": "call_Y3JjXzFhMmIzYwoxNzI5MDAwMDAwLjQy",
"meeting_id": "run_9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"language": "he",
"text": "דובר 1: שלום, מדברת דנה…",
"text_oversized": false
}/calls/{call_id}/summarycalls:read| פרמטרים | סוג | הערות |
|---|---|---|
call_id · חובה | string | בנתיב |
format | string |
curl "https://mesakem.com/api/v1/calls/call_Y3JjXzFhMmIzYwoxNzI5MDAwMDAwLjQy/summary?format=markdown" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "call_summary",
"call_id": "call_Y3JjXzFhMmIzYwoxNzI5MDAwMDAwLjQy",
"meeting_id": "run_9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"summary_id": "summary_1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e",
"language": "he",
"body_markdown": "## סיכום\nהלקוחה ביקשה הצעת מחיר…",
"action_items": [
{
"text": "לשלוח הצעת מחיר"
}
],
"decisions": [],
"edited": false,
"created_at": "2026-10-15T08:51:00.000Z"
}/calls/{call_id}/recordingcalls:read| פרמטרים | סוג | הערות |
|---|---|---|
call_id · חובה | string | בנתיב |
curl "https://mesakem.com/api/v1/calls/call_Y3JjXzFhMmIzYwoxNzI5MDAwMDAwLjQy/recording" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "recording_link",
"call_id": "call_Y3JjXzFhMmIzYwoxNzI5MDAwMDAwLjQy",
"meeting_id": "run_9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"recording_id": "recording_5d6e7f8a-9b0c-4d1e-8f2a-3b4c5d6e7f8a",
"status": "ready",
"recording_url": "https://mesakem.com/api/v1/r/Zm9yLWV4YW1wbGUtb25seQ",
"expires_at": "2026-10-18T08:05:00.000Z",
"format": "mp3",
"duration": 312,
"created_at": "2026-10-15T08:47:00.000Z"
}/searchsearch:readחיפוש מילים במידע שלכם: כותרות וסיכומים של פגישות, כותרות ותיאורים של משימות, שמות חדרים ומוזמנים לפגישות. כל המילים צריכות להופיע. התוצאות כפופות לכללי הקריאה של כל משאב.
| פרמטרים | סוג | הערות |
|---|---|---|
q | string | Keyword search: every word must match (prefix match for meetings). Needs search:read. |
types | string | Comma-separated: meeting, task, room, person. Default: every type your key can read. |
limit | integer (1–100) | ברירת מחדל 25 |
from | date-time | ISO 8601 with offset, or YYYY-MM-DD (00:00 UTC). |
to | date-time |
curl "https://mesakem.com/api/v1/search?q=proposal&types=meeting%2Ctask" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "list",
"query": "הצעת מחיר",
"types": [
"meeting",
"task",
"room",
"person"
],
"mode": "keyword",
"data": [
{
"type": "meeting",
"id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b",
"title": "פגישת היכרות — אקמה",
"snippet": "הוסכם לשלוח הצעת מחיר עד יום ראשון…",
"status": "completed",
"source": "zoom",
"start_time": "2026-10-15T09:00:12.000Z",
"match": {
"title": false,
"summary": true
},
"app_url": "https://mesakem.com/dashboard/meeting/run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b"
},
{
"type": "task",
"id": "agent_task_5c1f9a2b",
"title": "לשלוח הצעת מחיר לאקמה",
"snippet": null,
"status": "open",
"updated_at": "2026-10-16T07:10:00.000Z",
"app_url": "https://mesakem.com/dashboard/tasks"
}
],
"has_more": false
}/templatestemplates:read| פרמטרים | סוג | הערות |
|---|---|---|
type | meeting | call | Summary type. The focused built-in template exists for both. |
curl "https://mesakem.com/api/v1/templates?type=meeting" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"object": "list",
"data": [
{
"id": "system_detailed_mesakem",
"object": "template",
"type": "meeting",
"name": "סיכום פגישה של Mesakem",
"instructions": "…",
"built_in": true,
"is_default": true,
"format": "classic",
"source_citations": false,
"editable": false,
"created_at": "2026-10-18T09:00:00.000Z",
"updated_at": "2026-10-18T09:00:00.000Z"
},
{
"id": "summary_template_4a5b6c7d-8e9f-4a0b-9c1d-2e3f4a5b6c7d",
"object": "template",
"type": "meeting",
"name": "שיחת מכירה",
"instructions": "סכם כפגישת מכירה: צורכי הלקוח, התנגדויות, סיכוי סגירה, משימות המשך עם אחראי ותאריך, והודעת המשך קצרה ללקוח.",
"built_in": false,
"is_default": false,
"format": "classic",
"source_citations": false,
"editable": true,
"created_at": "2026-10-18T09:00:00.000Z",
"updated_at": "2026-10-18T09:00:00.000Z"
}
],
"next_cursor": null,
"has_more": false
}/templates→ 201 Createdtemplates:writeנשמרת בדיוק כפי שנשלחה: שום AI לא משכתב או בודק אותה. נסחו אותה איך שנוח לכם ושלחו לכאן.
| שדה | סוג | הערות |
|---|---|---|
name · חובה | string | Shown in the template picker. Not the name of a built-in template.עד 120 תווים |
instructions · חובה | string | How to write the summary: structure, tone, emphasis, sections. Stored exactly as sent.עד 12000 תווים |
type | meeting | call | ברירת מחדל "meeting" |
make_default | boolean | ברירת מחדל false |
source_citations | boolean | ברירת מחדל false |
curl -X POST "https://mesakem.com/api/v1/templates" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"type": "meeting",
"name": "Discovery call",
"instructions": "Summarize as a discovery call: needs, objections, budget, next steps with owner and date."
}'{
"id": "summary_template_4a5b6c7d-8e9f-4a0b-9c1d-2e3f4a5b6c7d",
"object": "template",
"type": "meeting",
"name": "שיחת מכירה",
"instructions": "סכם כפגישת מכירה: צורכי הלקוח, התנגדויות, סיכוי סגירה, משימות המשך עם אחראי ותאריך, והודעת המשך קצרה ללקוח.",
"built_in": false,
"is_default": false,
"format": "classic",
"source_citations": false,
"editable": true,
"created_at": "2026-10-18T09:00:00.000Z",
"updated_at": "2026-10-18T09:00:00.000Z",
"outcome": "created"
}/templates/{template_id}templates:read| פרמטרים | סוג | הערות |
|---|---|---|
template_id · חובה | string | בנתיב |
type | meeting | call | Summary type. The focused built-in template exists for both. |
curl "https://mesakem.com/api/v1/templates/summary_template_4a5b6c7d-8e9f-4a0b-9c1d-2e3f4a5b6c7d" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"id": "summary_template_4a5b6c7d-8e9f-4a0b-9c1d-2e3f4a5b6c7d",
"object": "template",
"type": "meeting",
"name": "שיחת מכירה",
"instructions": "סכם כפגישת מכירה: צורכי הלקוח, התנגדויות, סיכוי סגירה, משימות המשך עם אחראי ותאריך, והודעת המשך קצרה ללקוח.",
"built_in": false,
"is_default": false,
"format": "classic",
"source_citations": false,
"editable": true,
"created_at": "2026-10-18T09:00:00.000Z",
"updated_at": "2026-10-18T09:00:00.000Z"
}/templates/{template_id}templates:write| פרמטרים | סוג | הערות |
|---|---|---|
template_id · חובה | string | בנתיב |
type | meeting | call | Summary type. The focused built-in template exists for both. |
| שדה | סוג | הערות |
|---|---|---|
name | string | עד 120 תווים |
instructions | string | עד 12000 תווים |
make_default | boolean |
curl -X PATCH "https://mesakem.com/api/v1/templates/summary_template_4a5b6c7d-8e9f-4a0b-9c1d-2e3f4a5b6c7d" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "Discovery call (v2)"
}'{
"id": "summary_template_4a5b6c7d-8e9f-4a0b-9c1d-2e3f4a5b6c7d",
"object": "template",
"type": "meeting",
"name": "שיחת מכירה",
"instructions": "סכם כפגישת מכירה: צורכי הלקוח, התנגדויות, סיכוי סגירה, משימות המשך עם אחראי ותאריך, והודעת המשך קצרה ללקוח.",
"built_in": false,
"is_default": false,
"format": "classic",
"source_citations": false,
"editable": true,
"created_at": "2026-10-18T09:00:00.000Z",
"updated_at": "2026-10-18T09:00:00.000Z"
}/templates/{template_id}→ 204 No Contenttemplates:writeאי אפשר לשנות תבניות מובנות. אם זו הייתה ברירת המחדל, התבנית המובנית חוזרת להיות ברירת המחדל.
| פרמטרים | סוג | הערות |
|---|---|---|
template_id · חובה | string | בנתיב |
type | meeting | call | Summary type. The focused built-in template exists for both. |
curl -X DELETE "https://mesakem.com/api/v1/templates/summary_template_4a5b6c7d-8e9f-4a0b-9c1d-2e3f4a5b6c7d" \
-H "Authorization: Bearer $MESAKEM_API_KEY"/templates/{template_id}/defaulttemplates:write| פרמטרים | סוג | הערות |
|---|---|---|
template_id · חובה | string | בנתיב |
type | meeting | call | Summary type. The focused built-in template exists for both. |
curl -X POST "https://mesakem.com/api/v1/templates/summary_template_4a5b6c7d-8e9f-4a0b-9c1d-2e3f4a5b6c7d/default" \
-H "Authorization: Bearer $MESAKEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"{
"id": "summary_template_4a5b6c7d-8e9f-4a0b-9c1d-2e3f4a5b6c7d",
"object": "template",
"type": "meeting",
"name": "שיחת מכירה",
"instructions": "סכם כפגישת מכירה: צורכי הלקוח, התנגדויות, סיכוי סגירה, משימות המשך עם אחראי ותאריך, והודעת המשך קצרה ללקוח.",
"built_in": false,
"is_default": true,
"format": "classic",
"source_citations": false,
"editable": true,
"created_at": "2026-10-18T09:00:00.000Z",
"updated_at": "2026-10-18T09:00:00.000Z"
}/shares/{share_id}shares:readהאובייקט שה-webhooks share.created / share.revoked מציינים. ליוצר הקישור בלבד.
| פרמטרים | סוג | הערות |
|---|---|---|
share_id · חובה | string | בנתיב |
curl "https://mesakem.com/api/v1/shares/pshare_7c6b5a49-3827-4615-9d0c-1b2a3c4d5e6f" \
-H "Authorization: Bearer $MESAKEM_API_KEY"{
"id": "pshare_7c6b5a49-3827-4615-9d0c-1b2a3c4d5e6f",
"object": "share",
"resource": {
"type": "meeting",
"id": "run_6f1c2a4e-0d3b-4e5f-9a7b-1c2d3e4f5a6b"
},
"status": "ready",
"share_url": "https://mesakem.com/s#…",
"created_at": "2026-10-16T09:00:00.000Z",
"revoked_at": null
}| ניסיון | Pro וארגונים | |
|---|---|---|
| גישה ל-API | API מוגבל — קריאה בלבד | API מלא |
| מפתחות פעילים | 2 | 10 |
| נקודות Webhook | 1 (בהגדרות) | עד 10 לאדם |
| ניהול webhooks ב-API (webhooks:write) | — | כלול |
| פעולות כתיבה: בוט, משימות, העלאות ושיתוף | — | כלולות |
| חדרים: קריאה | כלול | כלול |
| חדרים: יצירה ועריכה | — | כלול |
| שיחות טלפון | כלול | כלול |
| חיפוש | כלול | כלול |
| תבניות סיכום: קריאה | כלול | כלול |
| תבניות סיכום: יצירה ועריכה | — | כלול |
מגבלות הקצב הטכניות זהות לכל התוכניות ומפורטות בפרק "מגבלות ושיטות עבודה".