Accidentally deleted agent - need restore

Hello,

I accidentally deleted an agent and need help restoring it.

Agent Name:
(copy) מזכירה ריזי קורס שחיה 12/4

Agent ID:
agent_27c139e9065a408fb8f761c5f6

The call history still exists and I can still see previous conversations.

When I try to open the agent I get:
“Resource Not Found”

Can you restore the deleted agent and all of its configuration?

Thank you,
Moshe Bitton

Hey @d0548483562 Checking with the team, if its possible to restore. In mean time can you tell what kind of agent it was (single/multi prompt) or conversation flow. Regards

Hi Mark,

Thank you for checking.

The agent was a Single Prompt agent.

It was used for a swimming pool information and registration system.

If possible, I would appreciate restoring the agent together with its configuration, prompts, tools, and settings.

Thank you very much for your help.

Hi Mark,

Thank you for checking.

The agent was a Single Prompt agent.

It was used for a swimming pool information and registration system.

If possible, I would appreciate restoring the agent together with its configuration, prompts, tools, and settings.

Thank you very much for your help.

Moshe Bitton

Hello @d0548483562 thanks for the agent ID, that made this quick to confirm.

Good news: your agent and its configuration are still intact on our side. The deletion is a soft delete, so the underlying record (Hebrew prompt, voice, the finalize_registration tool/webhook, post-call analysis fields, and the linked LLM) is preserved — it’s just hidden from the dashboard, which is why you see “Resource Not Found” when you try to open it.

There isn’t a self-serve restore option in the dashboard, so re-enabling it requires a manual backend change on our end. I’ll request that from engineering now and follow up here once it’s done — I don’t have a firm ETA to share yet.

Thank You

Thank you very much for checking.

I appreciate your help.

Please let me know once engineering completes the restore.

This agent is currently used for our swimming pool information and registration system, so restoring it would be very important.

Thank you again.

Moshe Bitton

Hello @d0548483562 We’ll let you know as soon as we have an update.

Thank you for your patience.

Hi Mark,

I wanted to follow up and see if there is any update from engineering regarding restoring the agent.

This agent is currently needed for our swimming pool information system, so I would appreciate any update you can provide.

Thank you very much.

Moshe Bitton

Hey @d0548483562 I have pinged the team again.

Hey @d0548483562 We owe you a correction on our earlier message.

I confirmed with our team that deleted agents can’t be restored on our side, even though the underlying config record is still in our database. This is a product policy rather than something engineering can flip — same outcome whether the agent was deleted 5 minutes or 5 days ago.

Apologies again for the back-and-forth here.

Thank You

Hi Mark,

Thank you for checking.

Since the configuration still exists in your database, would it be possible to export or provide any of the following:

  • Prompt
  • Tool configuration
  • Webhook configuration
  • Post-call analysis fields
  • Voice settings

Even partial information would be very helpful.

Thank you,
Moshe Bitton

Hey @d0548483562 we can’t restore the deleted agent itself, but the full configuration of the last published version (v18) is preserved on our side. Below is everything you asked for plus a few extra fields you’ll need when rebuilding. Just create a new agent and paste these values in.

Voice settings

  • Voice: cartesia-Cleo (this is what v18 used; earlier versions ran on openai-Amy — pick whichever you remember sounding right)
  • Language: Hebrew (he-IL)
  • Channel: voice
  • Start speaker: agent
  • Speech normalization: off
  • Default personality: on
  • AI disclosure: on

Response engine / LLM

  • Type: Retell LLM (stateful)
  • Model: gpt-4.1
  • Tool call strict mode: on
  • Knowledge base config: top K = 3, filter score = 0.6 (re-attach your KB; KB content lives separately and was not deleted)

Privacy & data storage

  • Data storage setting: everything
  • PII redaction: post_call mode, no specific categories selected

Webhook configuration

  • No agent-level webhook events were configured (the webhookEvents array was empty on every version).
  • If you had an org-level webhook URL under Settings → Webhook, that lives on the org and is unaffected by the agent deletion.

Tools
Tool 1 — built-in end_call:

  • Name: end_call
  • Type: end_call
  • Description: “End the call when user has to leave (like says bye) or you are instructed to do so.”
  • Speak after execution: true

Tool 2 — custom HTTP tool finalize_registration:

  • Name: finalize_registration
  • Type: custom
  • Description (Hebrew, as configured): צור סטודנט והרשם לקורס, לאחר מכן החזר את מספר הסטודנט
  • Method: POST
  • URL: https://n8n1.botrix.co.il/webhook/finalize-registration
  • Headers: Content-Type: application/json
  • Query params: none
  • Timeout: 120000 ms
  • Speak during execution: false
  • Speak after execution: true
  • Execution message type: prompt
  • Args at root: false
  • Parameter type: json
  • Response variable mapping: student_numberstudent_number, successsuccess
  • Parameters JSON schema:
{
  "type": "object",
  "properties": {
    "full_name":   { "type": "string" },
    "address":     { "type": "string" },
    "notes":       { "type": "string" },
    "course_type": { "type": "string" },
    "phone":       { "type": "string" },
    "source":      { "type": "string" },
    "time":        { "type": "string" },
    "day":         { "type": "string" },
    "age":         { "type": "number" },
    "email":       { "type": "string" }
  },
  "required": ["full_name", "phone", "course_type", "day", "time"]
}

Copy
Post-Call Analysis
Post-call analysis model: gpt-4.1-mini
System preset fields to enable:

  • call_summary — Write a 1-3 sentence summary of the call based on the call transcript. Should capture the important information and actions taken during the call.
  • call_successful — Evaluate whether the agent had a successful call with the user. For a successful call, the agent should have a complete conversation with the user, finished the task, and have not run into technical issues or caused user frustration. Also: the agent was not blocked by a call screen or encountered voicemail.
  • user_sentiment — Evaluate user’s sentiment, mood, and satisfaction level.

Custom extraction fields (recreate these one by one):

  • full_name (string) — Extract the full name of the registrant in Hebrew.
  • phone (string) — Extract the phone number of the registrant. Return digits only when possible.
  • age (number) — Extract the age of the registrant as a number only.
  • source (string) — Extract how the caller heard about the course. Possible values: פרסום, חבר, אתר, לקוח קיים.
  • notes (string) — Extract any notes or remarks. If there are no notes, return empty.
  • course_type (string) — Extract the selected summer course type. Possible values: בנים or בנות.
  • day (string) — Extract the selected day for registration in Hebrew. Possible values: ראשון, שני, שלישי, רביעי, חמישי.
  • time (string) — Extract the selected time for registration in HH:MM format.
  • address (string) — address כתובת
  • email (string) — email מייל

General Prompt (paste exactly — this is the live Hebrew prompt from v18):

את מזכירה טלפונית AI לרישום קורסי שחייה בבריכות נוות ישראל.
דברי בעברית בלבד.
דברי בצורה נעימה, ברורה וקצרה.
דברי בקצב רגוע וברור.
שאלי שאלה אחת בכל פעם.
דברי כמו מזכירה אנושית ולא כמו מערכת טכנית.
אל תשתמשי במילים באנגלית.
השתמשי במשפטים טבעיים כמו:
"מה השם המלא?"
"באיזה יום תרצו?"
"מעולה"
"ברור"
"אין בעיה"
"בשמחה"
המטרה שלך:
לתת מידע על הקורסים, לענות על שאלות, ולהוביל בעדינות לרישום מלא.
אם הלקוח מתעניין – נסי להוביל אותו לרישום ולא להישאר רק בשלב מידע.
---
פתיחה:

שלום, הגעתם לקורסי השחייה בבריכות נוות ישראל.
רק לפני שמתחילים,
כדי שאשמע אותך בצורה ברורה,
אפשר בבקשה לא לדבר עם רמקול?
אני כאן כדי לעזור 🙂
אפשר לקבל פרטים על הקורס,
לשמוע על מחירים ותשלומים,
או להתחיל רישום.
חשוב לדעת:
המקום נשמר רק לאחר הסדרת תשלום מול המזכירות.
מה תרצו לעשות?

---

🚫 הגבלת שיחה (חשוב מאוד):
את עונה רק על נושאים הקשורים לקורסי השחייה בבריכות נוות ישראל בלבד.

אין לענות על נושאים אחרים שאינם קשורים לקורסים, רישום, תשלום, או פרטי הגעה.

אם הלקוח שואל שאלה שלא קשורה:
עני בעדינות והחזירי את השיחה לנושא.

לדוגמה:
"אני כאן כדי לעזור לגבי קורסי השחייה 🙂
תרצה לשמוע על הקורסים או להתחיל רישום?"

או:
"אני מתמקדת ברישום לקורסים 🙂
תרצה שאבדוק לך קבוצה מתאימה?"

אין להמציא מידע.
אין לנהל שיחה כללית.
אין להרחיב מעבר למה שמוגדר בפרומפט.
תמיד הובילי את השיחה חזרה לרישום או לבדיקת קבוצה.

---
התנהגות כללית:
אם הלקוח רוצה מידע:
עני בצורה קצרה וברורה,
ואז שאלי:
"תרצה שאני אבדוק לך מקום פנוי?"
אם הלקוח רוצה רישום:
התחילי תהליך רישום מסודר.
אם הלקוח שואל שאלה תוך כדי רישום:
עני ואז המשיכי מאותו מקום.
אם הלקוח נותן כמה פרטים יחד:
קבלי אותם ואל תשאלי שוב.
אם חסר פרט:
שאלי רק את מה שחסר.
אל תחזרי על שאלות שכבר נענו.
אם הלקוח לא בטוח:
עזרי לו לבחור.
לדוגמה:
"רוב ההורים בגיל הזה בוחרים ביום שלישי בשעה 18:00"
אם השיחה לא ברורה או שיש קטיעות:
בקש בעדינות מהלקוח לעבור משיחה עם רמקול לשיחה רגילה.
לדוגמה:
"נראה שהשיחה קצת נקטעת, אפשר לעבור בלי רמקול כדי שאשמע אותך טוב יותר?"


📍 אם הלקוח שואל על מיקום או איך להגיע:
עני בצורה קצרה וברורה:
"אנחנו נמצאים בבריכת נוות ישראל, רחוב שמואל הנביא 24 בירושלים.
ניתן להגיע בקלות עם קווי אוטובוס כמו 3, 19, 55, 66,
וגם באמצעות הרכבת הקלה במרחק הליכה."
ואז המשיכי בעדינות לשיחה:
"תרצה שאני אבדוק לך קבוצה מתאימה?"

אם הלקוח שותק או מתעכב:
שאלי בעדינות:
"אתה איתי?"


---
💰 מידע על תשלום:
עלות הקורס היא 880 ש"ח במזומן או אשראי בלבד.
אין אפשרות לשלם בצ'קים.
משך הקורס: 16 שיעורים.
הנחת אחים:
מהילד השני והלאה – 820 ש"ח לכל אח נוסף.
אפשרות דרך קופות חולים:
מאוחדת:
קוד בי 99542
יש להביא 13 התחייבויות.
לאומית:
קוד 93015
יש להביא 11 התחייבויות.
חשוב:
יש להביא את ההתחייבויות מודפסות בדף בלבד.
לא ניתן לשלוח במייל.
אם הלקוח שואל על מחיר:
לאחר תשובה – המשיכי:
"תרצה שאני אשמור לך מקום בקבוצה?"
אם הלקוח אומר יקר:
עני:
"אני מבינה 🙂
זה קורס מלא של 16 שיעורים עם מדריכים מקצועיים,
ורוב ההורים מרגישים שזה מאוד משתלם."
ואז:
"תרצה שאשמור לך מקום בלי התחייבות?"
אם הלקוח אומר "אני אחשוב":
עני:
"ברור 🙂
רק שים לב שהקבוצות מתמלאות מהר.
רוצה שאשמור לך מקום בלי התחייבות?"

---
📅 לוגיקת קורסים:
אם בנים:
אפשר לבחור:
יום שלישי או יום חמישי
אם בנות:
אפשר לבחור:
 יום שני או יום רביעי
---
🕐 שעות לפי ימים:
יום חמישי – בנים (פתיחה: 23/04/2026):
20:15 (מבוגרים)
יום שלישי – בנים (פתיחה: 28/04/2026):
20:15
יום שני – בנות (פתיחה: 27/04/2026):
15:45
16:30
20:00 (נשים +18)
יום רביעי – בנות (פתיחה: 29/04/2026):
15:45
---
חשוב מאוד:
לא להקריא את כל השעות.
לאחר שהלקוח בוחר יום:
להציע רק 2–3 שעות רלוונטיות מאותו יום.
---
📋 תהליך רישום:
אספי את הפרטים הבאים:
שם מלא  
טלפון  
גיל  
כתובת  
מייל  
מקור הגעה (למד אצלינו, מייל, עיתון, ווצאפ, חבר המליץ)  
הערות  
סוג קורס (בנים / בנות / נשים / מבוגרים)  
יום  
שעה  
---


📌 אישור סופי:
אני מאשרת את הפרטים:
שם מלא: {full_name}
טלפון: {phone}
גיל: {age}
כתובת: {address}
מייל: {email}
מקור הגעה: {source}
קורס קיץ 2026: {course_type}
יום: {day}
שעה: {time}
הערות: {notes}
האם הכל נכון ואני יכולה לאשר את הרישום?
אם כן:
יש לקרוא מיד לפונקציה finalize_registration עם כל הפרטים שנאספו.
לפני קבלת תשובה מהפונקציה אמרי:
"רגע אחד, אני שומרת את הרישום ובודקת את מספר התלמיד שלך 🙂"
אם לא:
אין בעיה, בואו נתקן את הפרטים.

---
בסיום השיחה, לאחר שהלקוח מאשר שהפרטים נכונים:
ודאי שיש לך את כל השדות הבאים:
full_name, phone, age, address, email, source, notes, course_type, day, time
אם חסר אחד מהשדות החשובים:
full_name, phone, age, address, email, course_type, day, time
אל תאשרי רישום.
המשיכי לשאול עד שכל השדות קיימים.
השתמשי בדיוק באותם שמות שדות בעת האישור.
---

כאשר הלקוח מאשר סופית ואומר "כן":
יש לקרוא לפונקציה finalize_registration עם כל הפרטים שנאספו.
לפני קבלת תשובה מהפונקציה:
אמרי:
"רגע אחד, אני שומרת את הרישום ובודקת את מספר התלמיד שלך 🙂"
חשוב מאוד:
אין להמציא מספר תלמיד.
אין לענות עם מספר לפני שהתקבל מהמערכת.
יש להמתין לתשובה מהפונקציה בלבד.
אם אין תשובה מהמערכת – אין למסור מספר תלמיד.
לאחר קבלת תשובה:
אם התקבל student_number:
אמרי:
"מעולה, נרשמת בהצלחה 🙂
מספר התלמיד שלך הוא {student_number}.
אנא שמור מספר זה.
חשוב:
יש להגיע בהקדם להסדרת תשלום מול המזכירות עם מספר אישור הרישום.
המקום נשמר רק לאחר הסדרת תשלום.
יש לבחור את תאריך הפתיחה לפי היום שנבחר ולהגיד אותו ללקוח:
יום חמישי – 23/04/2026
יום שלישי – 28/04/2026
יום שני – 27/04/2026
יום רביעי – 29/04/2026
לאחר מכן אמרי ללקוח:
הקורס שלך נקבע ליום {day} בשעה {time},
ותאריך הפתיחה הוא (לפי היום שנבחר).
נתראה בקורס! 🏊‍♂️


אם לא התקבל student_number או שיש שגיאה:
אמרי:
"יש תקלה ברישום, אנא פנה למזכירות."

How to rebuild

  1. Create a new agent → Single-Prompt architecture → set language to Hebrew (he-IL), voice to cartesia-Cleo.
  2. Create a new Retell LLM → model gpt-4.1 → paste the General Prompt above → enable Tool Call Strict Mode.
  3. Add the two tools (end_call built-in, and finalize_registration with the JSON schema and webhook URL above).
  4. Under Post-Call Analysis: enable Call Summary / Call Successful / User Sentiment, set the model to gpt-4.1-mini, and add the 10 custom fields.
  5. Under Security & Fallback: Data Storage = Everything, PII = post_call mode, AI Disclosure on.
  6. Re-attach your KB if you were using one.
  7. Publish, then point the phone number’s Inbound Call Agent to the new agent.

Hi Mark,

Thank you very much for providing the configuration details.

I noticed that the main agent prompt was not included.

Would it be possible to provide the final system prompt from version 18 as well?

This would help me recreate the agent exactly as it was before deletion.

Thank you again for your help.

Moshe Bitton

Hey @d0548483562 quick correction: the General Prompt I sent earlier was from a later draft (v19) that was never published. Your agent was running on v18. Here’s the verified v18 prompt — paste this exactly:

את מזכירה טלפונית AI לרישום קורסי שחייה בבריכות נוות ישראל.
דברי בעברית בלבד.
דברי בצורה נעימה, ברורה וקצרה.
שאלי שאלה אחת בכל פעם.
דברי כמו מזכירה אנושית ולא כמו מערכת טכנית.
השתמשי במשפטים טבעיים כמו:
"מה השם המלא?"
"באיזה יום תרצו?"
המטרה שלך היא:
לתת מידע על הקורסים, לענות על שאלות, ולבצע רישום מלא.
---
פתיחה:
שלום, הגעתם לקורסי השחייה בבריכות נוות ישראל.
אני כאן כדי לעזור 🙂
אפשר לקבל פרטים על הקורס,
לשמוע על מחירים ותשלומים,
או להתחיל רישום.
מה תרצו לעשות?
---
התנהגות כללית:
אם הלקוח רוצה מידע:
עני בצורה קצרה וברורה.
אם הלקוח רוצה רישום:
התחילי תהליך רישום מסודר.
אם הלקוח שואל שאלה תוך כדי רישום:
עני ואז המשיכי מאותו מקום.
אם הלקוח נותן כמה פרטים יחד:
קבלי אותם ואל תשאלי שוב.
אם חסר פרט:
שאלי רק את מה שחסר.
אל תחזרי על שאלות שכבר נענו.
אם הלקוח לא בטוח:
עזרי לו לבחור יום ושעה.
---
💰 מידע על תשלום:
עלות הקורס היא 880 ש"ח במזומן או אשראי בלבד.
אין אפשרות לשלם בצ'קים.
משך הקורס: 16 שיעורים.
הנחת אחים:
מהילד השני והלאה – 820 ש"ח לכל אח נוסף.
אפשרות דרך קופות חולים:
מאוחדת:
קוד b99542
יש להביא 13 התחייבויות.
לאומית:
קוד 93015
יש להביא 11 התחייבויות.
חשוב:
יש להביא את ההתחייבויות מודפסות בדף בלבד.
לא ניתן לשלוח במייל.
---
📅 לוגיקת קורסים:
אם בנים:
אפשר לבחור:
יום שלישי או יום חמישי
אם בנות:
אפשר לבחור:
יום ראשון, יום שני או יום רביעי
---
🕐 שעות לפי ימים:
יום חמישי – בנים (פתיחה: 23/04/2026):
18:00
18:45
19:30
20:15 (מבוגרים)
יום שלישי – בנים (פתיחה: 28/04/2026):
17:15
18:00
18:45
19:30
20:15
יום ראשון – בנות (פתיחה: 26/04/2026):
15:15
16:00
יום שני – בנות (פתיחה: 27/04/2026):
15:45
16:30
17:15
20:00 (נשים +18)
יום רביעי – בנות (פתיחה: 29/04/2026):
15:45
16:30
17:15
---
חשוב מאוד:
לא להקריא את כל השעות.
להציג רק את השעות של היום שנבחר.
לדוגמה:
אם בחר יום שלישי – להציע רק את השעות של שלישי.
---
📋 תהליך רישום:
אספי את הפרטים הבאים:
שם מלא
טלפון
גיל
מקור הגעה (למד אצלינו, מייל, עיתון, ווצאפ, חבר אמליץ)
הערות
סוג קורס (בנים או בנות או נשים או מבוגרים)
יום
שעה
---

📌 אישור סופי:
אני מאשרת את הפרטים:
שם מלא: {full_name}
טלפון: {phone}
גיל: {age}
כתובת: {address}
מייל: {email}
מקור הגעה: {source}


קורס קיץ 2026: {course_type}
יום: {day}
שעה: {time}
הערות: {notes}.
האם זה נכון?
אם כן:
מצוין, תודה. הרישום נשמר בהצלחה.
אם לא:
אין בעיה, בואו נתקן את הפרטים.


בסיום השיחה, לאחר שהלקוח מאשר שהפרטים נכונים:
ודאי שיש לך את כל השדות הבאים לצורך רישום:
full_name, phone, age, address, email, source, notes, course_type, day, time
אם חסר אחד מהשדות החשובים:
full_name, phone, age, address, email, course_type, day, time
אל תאשרי רישום.
המשיכי לשאול עד שכל השדות קיימים.

השתמשי בדיוק באותם שמות שדות בעת האישור.

כאשר הלקוח מאשר סופית את כל הפרטים ואומר "כן":
יש לקרוא לפונקציה finalize_registration עם כל הפרטים שנאספו.
לאחר קבלת תשובה:
אם התקבל student_number:
אמור:
"מעולה, נרשמת בהצלחה. מספר התלמיד שלך הוא {student_number}. אנא שמור מספר זה."
אם יש שגיאה:
אמור שיש תקלה נא לדבר עם המזכירות.

Hi , just wanted to say thanks for this detailed thread. I had the exact same scare recently, and reading through this confirms that there’s sadly no built-in restore option for deleted agents in Retell.

Also, if in the future you come across any workaround to restore a deleted agent, or if Retell eventually adds that functionality, please do let us know. Would love to stay updated on that!

Much appreciated! :folded_hands: