Your AI Connector Docs

API שאלות נפוצות (FAQs)

שאלות נפוצות (FAQs) הן רשומות של שאלות ותשובות שהבוט מבוסס הבינה המלאכותית שלך מסתמך עליהן בעת מענה ללקוחות. כל שאלה נפוצה שייכת לחשבון שלך וניתן לקשר אותה לקמפיין אחד או יותר, כך שניתן לעשות שימוש חוזר באותה תשובה בכל מקום רלוונטי. ה-API של השאלות הנפוצות מאפשר לך לנהל את הספרייה הזו באופן תכנותי — ליצור, לעדכן, לייבא בכמות גדולה, לשנות סדר ולקשר שאלות נפוצות לקמפיינים ישירות מהקוד שלך.

כל נקודות הקצה להלן יחסיות לכתובת ה-URL הבסיסית https://api.youraiconnector.com/v1. כל בקשה חייבת לעבור אימות — ראה גישה ל-API ו-אימות. גישה ל-API היא תכונה בתשלום; ללא גישה זו, בקשות יידחו עם 403.

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


אובייקט השאלה הנפוצה (FAQ)

לכל שאלה נפוצה שחוזרת מה-API יש את המבנה הבא:

שדה סוג תיאור
id string המזהה הייחודי של ה-FAQ.
question string שאלת הלקוח שערך זה עונה עליה.
answer string התשובה שהבוט מבוסס הבינה המלאכותית מספק.
category string | null תווית קטגוריה חופשית אופציונלית.
tags string[] תוויות אופציונליות לארגון שאלות נפוצות.
is_active boolean האם לבוט מותר להשתמש ב-FAQ זה. ברירת המחדל היא true.
is_global boolean מסמן את ה-FAQ ככזה שאינו קשור לקמפיין או לסוכן ספציפי. זה לא גורם ל-FAQ לחול בכל מקום: FAQ משמש רק את הקמפיינים והסוכנים שאליהם הוא מקושר. ברירת המחדל היא false.
usage_count integer כמה פעמים נעשה שימוש ב-FAQ זה בתשובות של הבינה המלאכותית.
order_index integer מיקום התצוגה של FAQ זה בתוך הקמפיין שלו.
campaign_ids string[] מזהים של הקמפיינים שאליהם FAQ זה מקושר.
created_at string | null חותמת זמן בפורמט ISO 8601 של מועד יצירת ה-FAQ.
updated_at string | null חותמת זמן בפורמט ISO 8601 של השינוי האחרון.

השדות שניתן להגדיר הם: question, answer, is_active, is_global, category, tags, ו-order_index. הפלטפורמה מנהלת את כל השאר (נתוני חיפוש, ספירות שימוש, חותמות זמן); כל שדה אחר בגוף הבקשה שלך יתעלם.


רשימת שאלות נפוצות

GET /faqs

מחזיר את השאלות הנפוצות בחשבונך, מהחדשה ביותר לישנה ביותר. ניתן לסנן לפי קמפיין בודד או לפי מצב פעיל.

פרמטרים של שאילתה

פרמטר נדרש תיאור
campaign_id לא החזר רק שאלות נפוצות המקושרות לקמפיין זה.
is_active לא החזר רק שאלות נפוצות עם מצב פעיל זה (true או false). מסנן זה מוחל לכל עמוד, לכן עמוד עשוי להכיל פחות פריטים מ-limit.
limit לא מספר מקסימלי של שאלות נפוצות לעמוד. ברירת המחדל היא 50, המקסימום הוא 100.
cursor לא מזהה שאלה נפוצה להמשך אחריו. העבר את הערך next_cursor מהעמוד הקודם.

cURL

curl "https://api.youraiconnector.com/v1/faqs?campaign_id=campaign123&limit=50&apiKey=YOUR_API_KEY"

JavaScript

const res = await fetch(
  "https://api.youraiconnector.com/v1/faqs?campaign_id=campaign123&limit=50",
  { headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await res.json();
console.log(data.faqs, data.next_cursor);

Python

import requests

res = requests.get(
    "https://api.youraiconnector.com/v1/faqs",
    params={"campaign_id": "campaign123", "limit": 50},
    headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()
print(data["faqs"], data["next_cursor"])

תגובה

{
  "success": true,
  "faqs": [
    {
      "id": "aBcD1234eFgH5678",
      "question": "How long does shipping take?",
      "answer": "Standard shipping takes 3-5 business days.",
      "category": "shipping",
      "tags": ["logistics", "delivery"],
      "is_active": true,
      "is_global": false,
      "usage_count": 12,
      "order_index": 0,
      "campaign_ids": ["campaign123"],
      "created_at": "2026-01-01T12:00:00.000Z",
      "updated_at": "2026-01-02T08:30:00.000Z"
    }
  ],
  "next_cursor": "aBcD1234eFgH5678"
}

כאשר next_cursor הוא null, אין יותר תוצאות.


קבלת שאלות נפוצות (FAQ)

GET /faqs/{faqId}

מחזיר שאלת FAQ בודדת לפי המזהה שלה.

cURL

curl "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678?apiKey=YOUR_API_KEY"

JavaScript

const res = await fetch(
  "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678",
  { headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const { faq } = await res.json();

Python

import requests

res = requests.get(
    "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678",
    headers={"X-API-Key": "YOUR_API_KEY"},
)
faq = res.json()["faq"]

תגובה

{
  "success": true,
  "faq": {
    "id": "aBcD1234eFgH5678",
    "question": "How long does shipping take?",
    "answer": "Standard shipping takes 3-5 business days.",
    "category": "shipping",
    "tags": ["logistics"],
    "is_active": true,
    "is_global": false,
    "usage_count": 12,
    "order_index": 0,
    "campaign_ids": ["campaign123"],
    "created_at": "2026-01-01T12:00:00.000Z",
    "updated_at": "2026-01-02T08:30:00.000Z"
  }
}

יצירת שאלת FAQ

POST /faqs

יוצר שאלת FAQ חדשה ומקשר אותה לקמפיין.

שדות הבקשה

שדה נדרש תיאור
campaign_id כן הקמפיין שאליו יש לקשר את ה-FAQ החדש.
question כן שאלת הלקוח שעליה עונה ערך זה.
answer כן התשובה שהבוט צריך לתת.
is_active לא האם הבוט רשאי להשתמש ב-FAQ זה. ברירת המחדל היא true.
is_global לא האם ה-FAQ חל על כל הקמפיינים. ברירת המחדל היא false.
category לא תווית קטגוריה חופשית.
tags לא מערך של תוויות.
order_index לא מיקום תצוגה בתוך הקמפיין. ברירת המחדל היא 0.

cURL

curl -X POST "https://api.youraiconnector.com/v1/faqs?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "campaign_id": "campaign123",
    "question": "How long does shipping take?",
    "answer": "Standard shipping takes 3-5 business days.",
    "category": "shipping",
    "tags": ["logistics"]
  }'

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/faqs", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    campaign_id: "campaign123",
    question: "How long does shipping take?",
    answer: "Standard shipping takes 3-5 business days.",
    category: "shipping",
    tags: ["logistics"],
  }),
});
const { faq_id } = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/faqs",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={
        "campaign_id": "campaign123",
        "question": "How long does shipping take?",
        "answer": "Standard shipping takes 3-5 business days.",
        "category": "shipping",
        "tags": ["logistics"],
    },
)
faq_id = res.json()["faq_id"]

תגובה

{
  "success": true,
  "faq_id": "aBcD1234eFgH5678"
}

עדכון שאלות נפוצות (FAQ)

PUT /faqs/{faqId}

מעדכן חלקית שאלות נפוצות. רק השדות הניתנים לכתיבה שסופקו ישתנו; כל השאר שומרים על ערכם הנוכחי. שינוי ה-question או ה-answer מרענן באופן אוטומטי את נתוני החיפוש של השאלות הנפוצות ברקע.

אם תשלח question או answer, הם חייבים להיות מחרוזות שאינן ריקות. שליחת שדות שאינם מזוהים כניתנים לכתיבה תחזיר 400.

cURL

curl -X PUT "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "is_active": false }'

JavaScript

const res = await fetch(
  "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678",
  {
    method: "PUT",
    headers: {
      "X-API-Key": "YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ is_active: false }),
  }
);
const data = await res.json();

Python

import requests

res = requests.put(
    "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={"is_active": False},
)
data = res.json()

תגובה

{
  "success": true,
  "faq_id": "aBcD1234eFgH5678"
}

מחיקת שאלות נפוצות (FAQ)

DELETE /faqs/{faqId}

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

פרמטרים של שאילתה

פרמטר נדרש תיאור
campaign_id לא הסר גם את ה-FAQ מרשימת ה-FAQ של קמפיין זה.

cURL

curl -X DELETE "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678?campaign_id=campaign123&apiKey=YOUR_API_KEY"

JavaScript

const res = await fetch(
  "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678?campaign_id=campaign123",
  { method: "DELETE", headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await res.json();

Python

import requests

res = requests.delete(
    "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678",
    params={"campaign_id": "campaign123"},
    headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()

תגובה

{
  "success": true
}

מחיקה מרוכזת של שאלות נפוצות (FAQs)

POST /faqs/bulk-delete

מוחק עד 500 שאלות נפוצות בבקשה אחת. כאשר campaign_id מסופק, השאלות הנפוצות שנמחקו מוסרות גם מרשימת ה-FAQ של אותו קמפיין.

שדות הבקשה

שדה נדרש תיאור
faq_ids כן מערך לא ריק של מזהי FAQ למחיקה (מקסימום 500).
campaign_id לא הסר גם את השאלות הנפוצות שנמחקו מרשימת ה-FAQ של קמפיין זה.

cURL

curl -X POST "https://api.youraiconnector.com/v1/faqs/bulk-delete?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "faq_ids": ["faqId1", "faqId2"], "campaign_id": "campaign123" }'

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/faqs/bulk-delete", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    faq_ids: ["faqId1", "faqId2"],
    campaign_id: "campaign123",
  }),
});
const data = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/faqs/bulk-delete",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={"faq_ids": ["faqId1", "faqId2"], "campaign_id": "campaign123"},
)
data = res.json()

תגובה

{
  "success": true,
  "deleted_count": 2
}

שאלות נפוצות (FAQs) לייבוא

POST /faqs/import

ייבוא מרוכז של עד 500 שאלות נפוצות וקישורן לקמפיין אחד. פריטים שה-question שלהם תואם לשאלה נפוצה קיימת בספרייה שלך (ללא תלות באותיות רישיות/קטנות) יעודכנו במקום ליצור כפילות.

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

שדות הבקשה

שדה חובה תיאור
campaign_id כן הקמפיין שאליו מקושרות כל השאלות הנפוצות המיובאות.
faqs כן מערך לא ריק של פריטי שאלות נפוצות (מקסימום 500). לכל פריט חייבים להיות question ו-answer לא ריקים; הוא עשוי לכלול גם is_active, is_global, category, tags, ו-order_index.

cURL

curl -X POST "https://api.youraiconnector.com/v1/faqs/import?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "campaign_id": "campaign123",
    "faqs": [
      { "question": "Do you ship internationally?", "answer": "Yes, we ship to most countries worldwide." },
      { "question": "What is your return policy?", "answer": "You can return any item within 30 days." }
    ]
  }'

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/faqs/import", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    campaign_id: "campaign123",
    faqs: [
      {
        question: "Do you ship internationally?",
        answer: "Yes, we ship to most countries worldwide.",
      },
      {
        question: "What is your return policy?",
        answer: "You can return any item within 30 days.",
      },
    ],
  }),
});
const data = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/faqs/import",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={
        "campaign_id": "campaign123",
        "faqs": [
            {"question": "Do you ship internationally?", "answer": "Yes, we ship to most countries worldwide."},
            {"question": "What is your return policy?", "answer": "You can return any item within 30 days."},
        ],
    },
)
data = res.json()

תגובה

{
  "success": true,
  "faq_ids": ["aBcD1234eFgH5678", "iJkL9012mNoP3456"],
  "imported_count": 2
}

faq_ids הם מזהי השאלות הנפוצות שנוצרו או עודכנו, לפי הסדר שבו סיפקת אותם.


סידור מחדש של שאלות נפוצות

POST /faqs/reorder

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

שדות הבקשה

שדה חובה תיאור
campaign_id כן הקמפיין שאת השאלות הנפוצות שלו משנים את סדרן.
ordered_faq_ids כן מערך לא ריק של כל מזהי השאלות הנפוצות של הקמפיין בסדר התצוגה הרצוי (מקסימום 500).

cURL

curl -X POST "https://api.youraiconnector.com/v1/faqs/reorder?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "campaign_id": "campaign123",
    "ordered_faq_ids": ["faqId2", "faqId1", "faqId3"]
  }'

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/faqs/reorder", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    campaign_id: "campaign123",
    ordered_faq_ids: ["faqId2", "faqId1", "faqId3"],
  }),
});
const data = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/faqs/reorder",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={
        "campaign_id": "campaign123",
        "ordered_faq_ids": ["faqId2", "faqId1", "faqId3"],
    },
)
data = res.json()

תגובה

{
  "success": true
}

אם הקמפיין או אחד ממזהי השאלות הנפוצות לא נמצא בחשבונך, הבקשה תחזיר 404 One or more FAQs were not found.


קישור שאלה נפוצה לקמפיין

POST /faqs/{faqId}/link

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

שדות הבקשה

שדה חובה תיאור
campaign_id כן הקמפיין שאליו יש לקשר את השאלה הנפוצה.

cURL

curl -X POST "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678/link?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "campaign_id": "campaign456" }'

JavaScript

const res = await fetch(
  "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678/link",
  {
    method: "POST",
    headers: {
      "X-API-Key": "YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ campaign_id: "campaign456" }),
  }
);
const data = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678/link",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={"campaign_id": "campaign456"},
)
data = res.json()

תגובה

{
  "success": true,
  "faq_id": "aBcD1234eFgH5678",
  "campaign_id": "campaign456"
}

ביטול קישור של שאלות נפוצות לקמפיין

POST /faqs/{faqId}/unlink

מסיר שאלות נפוצות מקמפיין מבלי למחוק את השאלות עצמן. השאלות הנפוצות נשארות בספרייה שלך וממשיכות להיות מקושרות לכל קמפיין אחר.

שדות הבקשה

שדה נדרש תיאור
campaign_id כן הקמפיין שממנו יש להסיר את השאלות הנפוצות.

cURL

curl -X POST "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678/unlink?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "campaign_id": "campaign456" }'

JavaScript

const res = await fetch(
  "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678/unlink",
  {
    method: "POST",
    headers: {
      "X-API-Key": "YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ campaign_id: "campaign456" }),
  }
);
const data = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678/unlink",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={"campaign_id": "campaign456"},
)
data = res.json()

תגובה

{
  "success": true,
  "faq_id": "aBcD1234eFgH5678",
  "campaign_id": "campaign456"
}

בנייה מחדש של נתוני החיפוש עבור שאלות נפוצות

POST /faqs/{faqId}/rebuild-embeddings

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

נקודת קצה זו מחזירה 202 Accepted מכיוון שהעבודה נמשכת לאחר שליחת התגובה. ה-status הוא תמיד "processing" — בצע אחזור חוזר של השאלות הנפוצות מאוחר יותר אם עליך לוודא את השלמת הפעולה.

cURL

curl -X POST "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678/rebuild-embeddings?apiKey=YOUR_API_KEY"

JavaScript

const res = await fetch(
  "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678/rebuild-embeddings",
  { method: "POST", headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678/rebuild-embeddings",
    headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()

תגובה

{
  "success": true,
  "faq_id": "aBcD1234eFgH5678",
  "status": "processing"
}

ניהול שאלות נפוצות בסיוע בינה מלאכותית

נקודות הקצה להלן חורגות מפעולות CRUD פשוטות: הן מפעילות את אותם כלי בינה מלאכותית שבהם משתמש עורך השאלות הנפוצות בלוח הבקרה — איתור כפילויות, יצירת ערכים מתוך מסמך, והתאמת שאלות נפוצות למשימות פתוחות של פערי ידע. גופי הבקשה בקבוצה זו משתמשים בשמות שדות camelCase (campaignId, taskId, sourceIds…), התואמים את מבני הבקשה של האפליקציה עצמה, ולא ב-snake_case המשמשים במקומות אחרים בדף זה — העתק את הדוגמאות להלן במקום לנחש את שם השדה.

פיצול שאלה נפוצה לעותק המיועד לקמפיין בלבד

POST /faqs/{faqId}/fork-for-campaign

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

שדות הבקשה

שדה נדרש תיאור
campaign_id כן הקמפיין שעבורו יש להגביל את העותק החדש, ושממנו יש לקשר מחדש מהשאלה המקורית.
question כן השאלה עבור העותק החדש והספציפי לקמפיין.
answer כן התשובה עבור העותק החדש והספציפי לקמפיין.

cURL

curl -X POST "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678/fork-for-campaign?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "campaign_id": "campaign456",
    "question": "How long does shipping take to the EU?",
    "answer": "For EU orders, shipping takes 7-10 business days."
  }'

JavaScript

const res = await fetch(
  "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678/fork-for-campaign",
  {
    method: "POST",
    headers: {
      "X-API-Key": "YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      campaign_id: "campaign456",
      question: "How long does shipping take to the EU?",
      answer: "For EU orders, shipping takes 7-10 business days.",
    }),
  }
);
const data = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/faqs/aBcD1234eFgH5678/fork-for-campaign",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={
        "campaign_id": "campaign456",
        "question": "How long does shipping take to the EU?",
        "answer": "For EU orders, shipping takes 7-10 business days.",
    },
)
data = res.json()

תגובה201 Created

{
  "success": true,
  "faq_id": "nEwFaQiD9012mNoP",
  "campaign_id": "campaign456",
  "original_faq_id": "aBcD1234eFgH5678"
}

מציאת שאלות נפוצות כמעט כפולות

POST /faqs/dedupe

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

שדות הבקשה

שדה נדרש תיאור
sourceIds לא מערך של מזהי מקור של בסיס ידע כדי להגביל את ניקוי הכפילויות. השאר ריק כדי לסרוק את כל ספריית השאלות הנפוצות שלך.

cURL

curl -X POST "https://api.youraiconnector.com/v1/faqs/dedupe?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/faqs/dedupe", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({}),
});
const data = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/faqs/dedupe",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={},
)
data = res.json()

תגובה202 Accepted

{
  "success": true,
  "job_id": "dedupJob_aBc123"
}

המשימה רצה ברקע ובדרך כלל לוקחת כמה דקות בספרייה גדולה. אין נקודת קצה נפרדת לסטטוס — בצע אחזור מחדש ל-GET /faqs לאחר המתנה קצרה כדי לראות מה השתנה. כשתסיים לעבור על התוצאה, קרא לנקודת הקצה של הסגירה להלן כדי לנקות אותה.

סגירת תוצאת בדיקת כפילויות

POST /faqs/dedupe/dismiss

מנקה את משימת ניקוי הכפילויות שהסתיימה כך שהיא תפסיק להופיע כתוצאה פעילה. פעולה אידמפוטנטית — בטוחה להפעלה גם אם אין מה לסגור. מחזירה 409 אם המשימה עדיין queued או processing (לא ניתן לסגור הרצה שטרם הסתיימה).

cURL

curl -X POST "https://api.youraiconnector.com/v1/faqs/dedupe/dismiss?apiKey=YOUR_API_KEY"

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/faqs/dedupe/dismiss", {
  method: "POST",
  headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/faqs/dedupe/dismiss",
    headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()

תגובה

{ "success": true }

יצירת שאלות נפוצות ממסמכים שהועלו

POST /faqs/generate-from-documents

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

נקודת קצה זו אינה נושאת את הקובץ: storagePath חייב להצביע על קובץ שכבר נמצא תחת תיקיית ההעלאות שלך (users/{your user id}/uploads/), לפי אותה מוסכמה כמו ייבוא מסמך שהועלה ב-API של מאגר הידע.

שדות הבקשה

שדה נדרש תיאור
campaignId כן הקמפיין שעבורו מוצעות השאלות הנפוצות שנוצרו.
uploadedFiles כן מערך לא ריק של קבצים לקריאה, כל אחד { storagePath, fileName, mimeType }. storagePath חייב להתחיל ב-users/{your user id}/uploads/.

cURL

curl -X POST "https://api.youraiconnector.com/v1/faqs/generate-from-documents?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "campaignId": "campaign123",
    "uploadedFiles": [
      { "storagePath": "users/abc123uid/uploads/handbook.pdf", "fileName": "handbook.pdf", "mimeType": "application/pdf" }
    ]
  }'

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/faqs/generate-from-documents", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    campaignId: "campaign123",
    uploadedFiles: [
      { storagePath: "users/abc123uid/uploads/handbook.pdf", fileName: "handbook.pdf", mimeType: "application/pdf" },
    ],
  }),
});
const data = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/faqs/generate-from-documents",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={
        "campaignId": "campaign123",
        "uploadedFiles": [
            {"storagePath": "users/abc123uid/uploads/handbook.pdf", "fileName": "handbook.pdf", "mimeType": "application/pdf"},
        ],
    },
)
data = res.json()

תגובה202 Accepted

{
  "success": true,
  "faqCount": 6,
  "reusedCount": 2,
  "modifiedCount": 1,
  "newCount": 3
}

faqCount הוא המספר הכולל של שינויים מוצעים הממתינים לבדיקה; reusedCount, modifiedCount ו-newCount מפרקים זאת לשאלות נפוצות שתואמות לרשומה קיימת ללא שינוי, כאלו שה-AI מציע לערוך, וכאלו שהן חדשות לגמרי. קבצים שהועלו נמחקים מהאחסון ברגע שהעיבוד מסתיים, בין אם הוא מצליח ובין אם לא.

החלת שינויי שאלות נפוצות שנסקרו

POST /faqs/apply-optimization

מחיל (או מוחק) קבוצה ממתינה של שינויי שאלות נפוצות שהוצעו על ידי ה-AI — הסוג שנוצר על ידי יצירת שאלות נפוצות ממסמכים לעיל, או על ידי סקירת אופטימיזציית השאלות הנפוצות בלוח הבקרה. אתה בוחר בדיוק אילו שינויים מוצעים לקבל; כל מה שלא ציינת נשאר ללא שינוי (שינוי שהושמט לעולם אינו מטופל כדחייה שמוחקת משהו).

שדות הבקשה

שדה נדרש תיאור
campaignId אחד משניים אלו הקמפיין ששינויי השאלות הנפוצות הממתינים שלו מוחלים.
agentId אחד משניים אלו סוכן ה-AI ששינויי השאלות הנפוצות הממתינים שלו מוחלים, בחשבון מבוסס סוכן. ספק בדיוק אחד מ-campaignId / agentId, לעולם לא את שניהם.
acceptedChanges כן מערך השינויים שאתה מקבל, כל אחד { action, faq_id?, faq_ref_path?, question?, answer?, edit_scope? }. action הוא אחד מ-keep, remove, add_from_library, create_new, modify. שלח מערך ריק כדי למחוק את הקבוצה הממתינה מבלי להחיל דבר.

cURL

curl -X POST "https://api.youraiconnector.com/v1/faqs/apply-optimization?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "campaignId": "campaign123",
    "acceptedChanges": [
      { "action": "create_new", "question": "Do you ship to the EU?", "answer": "Yes, EU shipping takes 7-10 business days." },
      { "action": "remove", "faq_ref_path": "users/abc123uid/faqs/oldFaqId" }
    ]
  }'

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/faqs/apply-optimization", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    campaignId: "campaign123",
    acceptedChanges: [
      { action: "create_new", question: "Do you ship to the EU?", answer: "Yes, EU shipping takes 7-10 business days." },
      { action: "remove", faq_ref_path: "users/abc123uid/faqs/oldFaqId" },
    ],
  }),
});
const data = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/faqs/apply-optimization",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={
        "campaignId": "campaign123",
        "acceptedChanges": [
            {"action": "create_new", "question": "Do you ship to the EU?", "answer": "Yes, EU shipping takes 7-10 business days."},
            {"action": "remove", "faq_ref_path": "users/abc123uid/faqs/oldFaqId"},
        ],
    },
)
data = res.json()

תגובה

{
  "success": true,
  "message": "Applied 2 FAQ changes",
  "faq_count": 7
}

faq_count הוא סך כל השאלות הנפוצות המקושרות של הקמפיין (או הסוכן) לאחר ההחלה. אם לא הייתה קבוצת שינויים ממתינה להחלה, התגובה היא { "success": true, "message": "No pending FAQ changes to apply" }.

מציאת שאלות נפוצות דומות למשימה

POST /faqs/similar-for-task

מדרג את ספריית השאלות הנפוצות שלך לפי רלוונטיות לשאלה של משימת פער ידע — אותה בדיקה שנמצאת מאחורי בורר “השתמש בשאלה נפוצה קיימת” בלוח הבקרה. לקריאה בלבד. taskId חייב להצביע על משימה מסוג faq_update.

נקודת קצה זו תמיד משיבה 200, גם במקרה של כשל צפוי כמו משימה לא ידועה — בדוק את success בגוף התגובה במקום את סטטוס ה-HTTP.

שדות הבקשה

שדה נדרש תיאור
taskId כן משימת ה-faq_update שעבורה יש למצוא התאמות.
limit לא מספר התאמות מרבי להחזרה. ברירת המחדל היא 20, עם תקרה של 50.

cURL

curl -X POST "https://api.youraiconnector.com/v1/faqs/similar-for-task?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "taskId": "task789", "limit": 10 }'

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/faqs/similar-for-task", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ taskId: "task789", limit: 10 }),
});
const data = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/faqs/similar-for-task",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={"taskId": "task789", "limit": 10},
)
data = res.json()

תגובה

{
  "success": true,
  "data": {
    "task_id": "task789",
    "matches": [
      {
        "faq_id": "aBcD1234eFgH5678",
        "question": "How long does shipping take?",
        "answer": "Standard shipping takes 3-5 business days.",
        "category": "shipping",
        "created_at": "2026-01-01T12:00:00.000Z",
        "similarity": 0.81,
        "embedding_similarity": 0.81,
        "keyword_similarity": 0.6,
        "bm25_score": 4.2,
        "distance": 0.19
      }
    ]
  }
}

ההתאמות ממוינות לפי similarity (התאמה סמנטית כשהיא זמינה, או חפיפת מילות מפתח אחרת), מהטובה ביותר לראשונה. במקרה של כשל רך, המבנה הוא { "success": false, "error": "...", "error_code": 404 }error_code משקף את מה שהיה אמור להיות סטטוס ה-HTTP בדרך כלל.

פתרון משימה באמצעות שאלות נפוצות (FAQ) קיימות

POST /faqs/resolve-task

פותר משימת פער ידע על ידי קישורה לשאלות נפוצות (FAQ) שכבר קיימות אצלך (במקום כתיבת חדשות), שולח את התשובה של אותן שאלות נפוצות לאיש הקשר שהפעיל את הפער, ומסמן את המשימה כהושלמה. השתמש בזה לאחר ש-מציאת שאלות נפוצות דומות למשימה מעלה שאלות נפוצות קיימות שכבר מכסות את השאלה.

בדומה לנקודת הקצה שלעיל, זו תמיד משיבה 200 — בדוק את success בגוף התגובה.

שדות הבקשה

שדה נדרש תיאור
taskId כן משימת ה-faq_update לפתרון.
faqId כן השאלות הנפוצות (FAQ) הקיימות לקישור ושליחה כתשובה.

cURL

curl -X POST "https://api.youraiconnector.com/v1/faqs/resolve-task?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "taskId": "task789", "faqId": "aBcD1234eFgH5678" }'

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/faqs/resolve-task", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ taskId: "task789", faqId: "aBcD1234eFgH5678" }),
});
const data = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/faqs/resolve-task",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={"taskId": "task789", "faqId": "aBcD1234eFgH5678"},
)
data = res.json()

תגובה

{
  "success": true,
  "data": {
    "task_id": "task789",
    "faq_id": "aBcD1234eFgH5678",
    "follow_up_status": "published"
  }
}

follow_up_status מדווח לך מה קרה עם המשך הטיפול באיש הקשר: published (נשלח מיד), queued (ה-AI כבר היה באמצע מענה לאיש קשר זה, לכן זה יישלח בהמשך), skipped_no_contact (למשימה אין איש קשר מקושר), או skipped_no_campaign (אין קמפיין שדרכו ניתן לשלוח את זה).


שגיאות API של שאלות נפוצות (FAQs)

נקודות קצה של שאלות נפוצות מחזירות את מעטפת השגיאה הסטנדרטית:

{
  "success": false,
  "error": "FAQ not found"
}
סטטוס מתי זה קורה בנקודת קצה של שאלות נפוצות (FAQ)
400 שדה נדרש חסר או לא תקין (למשל question ריק, campaign_id חסר, או יותר מ-500 פריטים בבקשה מרוכזת).
404 השאלות הנפוצות או הקמפיין לא נמצאו — או שהם לא קיימים או שהם שייכים לחשבון אחר.
409 POST /faqs/dedupe נקרא בזמן שעבודת מניעת כפילויות כבר queued/processing, או ש-POST /faqs/dedupe/dismiss נקרא בזמן שהעבודה טרם הסתיימה.

הקודים המשותפים שכל נקודת קצה יכולה להחזיר — 401, 403 (התוכנית שלך אינה כוללת גישת API), 429 (מגבלת קצב) ו-500 — מפורטים עם הנחיות לניסיון חוזר ב-שגיאות ועימוד.

POST /faqs/similar-for-task ו-POST /faqs/resolve-task הם שני החריגים בדף זה: הם משיבים 200 גם עבור כשל צפוי (משימה לא ידועה, סוג משימה שגוי) ומציבים את הסטטוס האמיתי ב-error_code שבגוף התגובה במקום זאת — ראה כל נקודת קצה לעיל.


קשור

  • API של קמפיינים — הקמפיינים שאליהם מקושרות השאלות הנפוצות שלך.
  • API של בסיס ידע — ייבוא אתרים ומסמכים לשאלות נפוצות באופן אוטומטי, וריכוז שאלות נפוצות לקבוצות ידע לשימוש חוזר.
  • גישת API — יצירת מפתח ה-API שלך.
  • אימות — כל הדרכים להעברת המפתח שלך.