Your AI Connector Docs

ナレッジベース API

ナレッジベースは、AIが読み取る情報源です。ナレッジベースには2つの要素があり、このページではその両方について説明します。

  • ナレッジソース (/kb-sources) — プラットフォームに読み込ませるWebページやアップロードされたドキュメントです。それぞれが読み取られ、セクションに分割され、AIが回答するためのFAQに変換されます。
  • ナレッジグループ (/kb-groups) — FAQをまとめた名前付きのバンドルです。エージェントやキャンペーンに一度の呼び出しで適用できるため、すでにキュレーション済みのナレッジを、次に作成するエージェントで再利用できます。

ソースから生成されたFAQは、手動で作成したFAQと同じライブラリに保存されます。そのため、インポートが完了したら、FAQs APIを使用してそれらを読み取り、編集し、リンクさせることができます。

以下のすべてのエンドポイントは、ベースURL https://api.youraiconnector.com/v1 に対する相対パスです。すべてのリクエストには認証が必要です。APIアクセスおよび認証を参照してください。APIアクセスは有料機能です。有効でない場合、リクエストは 403 で拒否されます。

インポートにはクレジットが必要です。 ページやドキュメントを読み取ってFAQを作成すると、コンテンツの量に比例してクレジットが消費されます。大規模なクロールを実行する前に、インポートの見積もりを行ってください。


インポートの仕組み

インポートはバックグラウンドジョブとして実行され、即座に完了するものではありません。すべてのインポートエンドポイントは即座に source_id を返します。完了するまでそのソースをポーリングしてください。

  1. インポートを開始するPOST /kb-sources/url(1ページ)、POST /kb-sources/file(アップロードされたドキュメント)、または POST /kb-sources/bulk-import(最大100ページ)を使用します。ソースIDと status: "queued" が返されます。
  2. ポーリングstatusqueued または processing ではなくなるまで GET /kb-sources/{sourceId} を実行します。
  3. FAQを読み取る — ステータスが ready になると、生成されたエントリがFAQライブラリ(GET /faqs)に保存されます。

すべてのソースは、以下のいずれかのステータスを報告します。

ステータス 意味
queued 読み取り待ち。まだ課金は発生していません。
processing 現在読み取り中で、FAQに変換中です。
ready 完了。FAQがライブラリに追加されました。
failed インポートできませんでした。error_message に理由が記載されています。
cancelled 読み取り前に停止されました(インポートの停止を参照)。
paused インポート中にAIキーの認証に失敗したため停止されました(一時停止したインポートの再開を参照)。
deleting 一括削除処理が進行中です。
unknown レコードにステータスがありません。準備ができていないものとして扱ってください。

インポートと同時にアタッチする。 任意のインポートエンドポイントで autoLinkToAgentId を渡すと、ソースとそこから生成されるすべてのFAQが、追加のリンク手順なしでそのエージェントのナレッジに直接追加されます。autoLinkToCampaignId を使用すると、従来のキャンペーンに対しても同様の操作が可能です。リンクはベストエフォートで行われます。存在しないIDや別のアカウントに属するIDは警告なしにスキップされ、インポート自体は実行されます。そのため、エージェントを読み戻してリンクが正しく行われたかを確認してください。


Webページをインポートする

POST /kb-sources/url

Webページを1つ、ナレッジベースに追加します。

リクエストフィールド

フィールド 必須 説明
url はい ページの完全な http または https アドレス。
autoLinkToAgentId いいえ インポートしたソースを紐付けるAIエージェントのID。
autoLinkToCampaignId いいえ レガシー。インポートしたソースを紐付けるキャンペーンのID。

cURL

curl -X POST "https://api.youraiconnector.com/v1/kb-sources/url?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/pricing",
    "autoLinkToAgentId": "ag7HkQ2ZpLxR3mNb"
  }'

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/kb-sources/url", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    url: "https://example.com/pricing",
    autoLinkToAgentId: "ag7HkQ2ZpLxR3mNb",
  }),
});
const { source_id } = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/kb-sources/url",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={
        "url": "https://example.com/pricing",
        "autoLinkToAgentId": "ag7HkQ2ZpLxR3mNb",
    },
)
source_id = res.json().get("source_id")

応答202 Accepted

{
  "success": true,
  "source_id": "kb_src_abc123",
  "status": "queued",
  "batch_id": "batch_9f2a"
}

ステータスが ready または failed になるまで、ソースの確認source_id をポーリングします。

同じページがすでにナレッジベースに存在する場合、新しいキューは作成されず、代わりに 200 が返されます。自動リンクを要求していた場合は、既存のソースが自動的にリンクされます。

{
  "success": true,
  "status": "exists",
  "skipped_duplicate": 1
}

url が欠落している場合、または有効な http/https アドレスではない場合、400 が返されます。


アップロード済みドキュメントのインポート

POST /kb-sources/file

アカウントのファイルストレージにすでに存在するドキュメントをナレッジソースとして追加します。サポートされている形式: PDF、DOCX、TXT、MD、CSV、XLSX。

このエンドポイントはファイルを直接送信しません。 マルチパートアップロード、base64ボディ、URLからのダウンロード機能はありません。すでに存在するファイルの保存場所を指定する必要があります。そのファイルは自身のアップロードフォルダ内に存在しなければなりません(storage_pathusers/{your user id}/uploads/ で始まる必要があります)。そうでない場合、リクエストは 403 で拒否されます。ダッシュボードにファイルをドラッグ&ドロップすると、ファイルはそこに配置されます。ファイルをそこに配置できない場合は、代わりに Webページのインポート を使用してください。

リクエストフィールド

フィールド 必須 説明
storage_path はい アップロードされたファイルの場所。users/{your user id}/uploads/ で始まる必要があります。
filename はい 拡張子を含む元のファイル名。これによりファイルタイプが検出されます。
mime_type はい ファイルのMIMEタイプ(例: application/pdf)。
autoLinkToAgentId いいえ ドキュメントを紐付けるAIエージェントのID。
autoLinkToCampaignId いいえ レガシー。ドキュメントを紐付けるキャンペーンのID。

cURL

curl -X POST "https://api.youraiconnector.com/v1/kb-sources/file?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "storage_path": "users/abc123uid/uploads/handbook.pdf",
    "filename": "handbook.pdf",
    "mime_type": "application/pdf",
    "autoLinkToAgentId": "ag7HkQ2ZpLxR3mNb"
  }'

応答202 Accepted

{
  "success": true,
  "source_id": "kb_src_abc123",
  "status": "queued"
}
ステータス 内容
400 必須フィールドが欠落しているか、読み取り不可能なファイルタイプです。
403 storage_path が自身のアップロードフォルダの外側にあります。

ソースの確認

GET /kb-sources/{sourceId}

すべてのインポートおよび更新の後に続くポーリングです。ステータスが ready または failed になるまで繰り返してください。

cURL

curl "https://api.youraiconnector.com/v1/kb-sources/kb_src_abc123?apiKey=YOUR_API_KEY"

JavaScript

const res = await fetch(
  "https://api.youraiconnector.com/v1/kb-sources/kb_src_abc123",
  { headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const source = await res.json();

Python

import requests

res = requests.get(
    "https://api.youraiconnector.com/v1/kb-sources/kb_src_abc123",
    headers={"X-API-Key": "YOUR_API_KEY"},
)
source = res.json()

レスポンス

{
  "success": true,
  "source_id": "kb_src_abc123",
  "status": "ready",
  "faq_count": 24,
  "section_count": 31,
  "error_message": null
}
フィールド 説明
status string パイプライン内でのソースの位置(ステータステーブルを参照)。
faq_count integer このソースからこれまでに生成されたFAQの数。
section_count integer ソースが分割されたコンテンツセクションの数。
error_message string | null ステータスが failed の場合にインポートが失敗した理由。それ以外の場合は null

ソースの削除

DELETE /kb-sources/{sourceId}

知識ソースを1つ削除します。デフォルトでは、そのソースから生成されたFAQは保持されます。それらも削除するには delete_faqs=true を追加してください。

クエリパラメータ

パラメータ 必須 説明
delete_faqs いいえ このソースから生成されたすべてのFAQも削除するには true に設定します。デフォルトは false です。

cURL

curl -X DELETE "https://api.youraiconnector.com/v1/kb-sources/kb_src_abc123?delete_faqs=true&apiKey=YOUR_API_KEY"

レスポンス

{
  "success": true,
  "faqs_deleted": 24
}

delete_faqs=true を要求しない限り、faqs_deleted0 になります。


複数のページを一度にインポートする

POST /kb-sources/bulk-import

1回の呼び出しで最大100件のWebページを追加します。これは通常、Webサイト上のページを検出またはWebサイト上の新しいページを検索の後のステップとして行われます。すでにナレッジベースにあるページは重複して追加されることはなくスキップされます(要求した場合は、引き続きエージェントにリンクされます)。

リクエストフィールド

フィールド 必須 説明
urls はい インポートするアドレス。1回の呼び出しにつき最低1件、最大100件まで。
autoLinkToAgentId いいえ インポートしたすべてのページを関連付けるAIエージェントのID。
autoLinkToCampaignId いいえ レガシー。インポートしたすべてのページを関連付けるキャンペーンのID。

cURL

curl -X POST "https://api.youraiconnector.com/v1/kb-sources/bulk-import?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "urls": ["https://example.com/pricing", "https://example.com/faq"],
    "autoLinkToAgentId": "ag7HkQ2ZpLxR3mNb"
  }'

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/kb-sources/bulk-import", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    urls: ["https://example.com/pricing", "https://example.com/faq"],
    autoLinkToAgentId: "ag7HkQ2ZpLxR3mNb",
  }),
});
const { queued_source_ids } = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/kb-sources/bulk-import",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={
        "urls": ["https://example.com/pricing", "https://example.com/faq"],
        "autoLinkToAgentId": "ag7HkQ2ZpLxR3mNb",
    },
)
queued_source_ids = res.json()["queued_source_ids"]

応答202 Accepted

{
  "success": true,
  "batch_id": "batch_9f2a",
  "queued": 2,
  "skipped_duplicate": 0,
  "queued_source_ids": ["kb_src_abc123", "kb_src_def456"]
}

queued_source_ids 内の各IDをソースの確認でポーリングします。空の urls 配列、文字列以外のエントリ、または100件を超えるエントリを送信すると 400 が返されます。


複数のソースを一度に削除する

POST /kb-sources/bulk-delete

1回の呼び出しで最大2,000件の知識ソースを削除します。削除はバックグラウンドで実行され、完了するとメールで通知されます。

一括削除ではFAQも常に削除されます。 ソースの削除とは異なり(指定しない限りFAQは保持されます)、このエンドポイントは各ソースを、それによって生成されたFAQとともに削除します。FAQを保持するオプションはありません。

リクエストフィールド

フィールド 必須 説明
sourceIds はい 削除するソースのID。1回の呼び出しにつき最低1つ、最大2,000まで。
domainLabel いいえ このクリーンアップのわかりやすい名前。完了メールでのみ使用されます。

cURL

curl -X POST "https://api.youraiconnector.com/v1/kb-sources/bulk-delete?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "sourceIds": ["kb_src_abc123", "kb_src_def456"],
    "domainLabel": "example.com"
  }'

応答202 Accepted

{
  "success": true,
  "batch_id": "del_batch_31a",
  "queued": 2
}

ウェブサイト上のページを検出する

POST /kb-sources/discover-pages

1つの開始アドレスからウェブサイトを探索し、同じドメイン内で見つかったページをリストアップします。各ページについて、インポートする価値があるかどうかの評価も行います。何もインポートされず、自動的に選択されることもありません。これは、一度に多数のページをインポートする際に何を送信するかを決定する前に行う「サイト上に何があるか」を確認するためのステップです。

リクエストフィールド

フィールド 必須 説明
url はい 探索を開始するアドレス(通常はサイトのホームページ)。
maxPages いいえ 返されるページ数の上限。

cURL

curl -X POST "https://api.youraiconnector.com/v1/kb-sources/discover-pages?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://example.com", "maxPages": 100 }'

レスポンス

{
  "success": true,
  "source_type": "sitemap",
  "pages": [
    {
      "url": "https://example.com/pricing",
      "title": "Pricing",
      "depth": 1,
      "score": 95,
      "recommendation": "add",
      "reason_key": "core_page"
    }
  ]
}
フィールド 説明
source_type string ページの検出方法 — sitemap(サイト自身のサイトマップ)または link_discovery(リンクを辿る)。
url string ページの完全なアドレス。
title string | null 読み取り可能な場合のページタイトル。
depth integer 開始ページから何リンク先でそのページが見つかったか。
score integer 知識としてどの程度有用か(0から100まで)。
recommendation string add(インポートする価値が十分にある、スコア90以上)、maybe(境界線)、または skip(変更履歴、法的ページ、重複した翻訳など、アシスタントの役に立つことがほとんどないコンテンツ)。
reason_key string 推奨の背後にある、機械可読な安定した理由(例: core_pagechangelog_historylegal_pagelocale_duplicate)。

探索はベストエフォートで行われます。 サイトが読み取れない場合でもレスポンスは 200 となり、success: false、空の pages リスト、および error メッセージが返されます。pages を読み取る前に success を確認してください。

url が欠落していると 400 が返されます。


インポートにかかるコストを見積もる

POST /kb-sources/estimate-cost

インポートを実行する前に、提案されたインポートで何クレジット消費するかを算出します。ページがフェッチされ、ドキュメントが読み取られてサイズが測定されますが、何もインポートされず、見積もり自体でクレジットが消費されることはありません。

リクエストフィールド

フィールド 必須 説明
urls いいえ インポートを検討しているページのアドレス。
files いいえ 検討中のアップロード済みファイル。各エントリには storage_pathfilenamemime_type が必要です。
tier いいえ インポートを実行するAI品質ティア。これにより、実際に請求される金額と一致する見積もりが得られます。標準レートの場合は省略してください。

urlsfiles、またはその両方を送信してください。

cURL

curl -X POST "https://api.youraiconnector.com/v1/kb-sources/estimate-cost?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "urls": ["https://example.com/pricing"] }'

レスポンス

{
  "success": true,
  "estimates": [
    { "ref": "https://example.com/pricing", "chunks": 7, "credits": 7 }
  ],
  "total_chunks": 7,
  "total_credits": 7
}

各行は ref 内のURLまたはストレージパスをエコーバックするため、入力と照合できます。読み取れなかったページやファイルも1つのチャンクとしてカウントされ、行が作成され、error が付与されます。


インポートを停止する

POST /kb-sources/cancel-import

インポートキューで待機中のページを停止します。予想以上に大規模になったクロールの「インポートを停止」ボタンです。待機中のページのキャンセルには費用はかかりません。まだ読み取られていないためです。

すでに処理中のページは停止されません。処理が進行中であり、いずれにせよ課金されるため、そのまま完了します。レスポンスには、それらがいくつあったかが報告されます。

リクエストフィールド

フィールド 必須 説明
host いいえ このウェブサイト上の待機中のページのみを停止します(例: docs.example.com)。指定しない場合、アカウント内のすべての待機中のインポートが停止されます。

cURL

curl -X POST "https://api.youraiconnector.com/v1/kb-sources/cancel-import?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "host": "docs.example.com" }'

レスポンス

{
  "success": true,
  "cancelled": 412,
  "in_flight": 3
}

一時停止したインポートを再開する

POST /kb-sources/resume-import

お客様自身のAIキーが機能しなくなったために一時停止されたインポートを再開します。

これを呼び出すことは、現在有効なキーでインポートを完了することへの同意となります。お客様自身のキーがまだダウンしている場合は、プラットフォームのクレジットを消費する可能性があることに注意してください。

リクエストフィールド

フィールド 必須 説明
host いいえ このウェブサイト上で一時停止されたページのみを再開します。指定しない場合、一時停止中のすべてが再開されます。

cURL

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

レスポンス

{
  "success": true,
  "resumed": 58
}

ウェブサイト上の新しいページを見つける

POST /kb-sources/refresh-domain

すでにインポート済みのウェブサイトを探索し、まだナレッジベースに含まれていないページのみを報告します。各ページにはページ探索と同じ推奨事項が示されます。何もインポートされず、何も変更されません。

2つのフォローアップは意図的に別々の呼び出しとなっているため、この呼び出しを中断しても費用はかかりません。

リクエストフィールド

フィールド 必須 説明
baseUrl はい ウェブサイト上の任意のアドレス、またはホスト名のみ。
maxPages いいえ 探索するページ数の上限。

cURL

curl -X POST "https://api.youraiconnector.com/v1/kb-sources/refresh-domain?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "baseUrl": "https://example.com" }'

レスポンス

{
  "success": true,
  "source_type": "sitemap",
  "discovered": 249,
  "new_pages": [
    {
      "url": "https://example.com/new-guide",
      "score": 95,
      "recommendation": "add",
      "reason_key": "core_page"
    }
  ],
  "new_urls_queued": 0,
  "existing_refresh_queued": 249
}
フィールド 説明
discovered 整数 サイト内で合計で見つかったページ数。
new_pages 配列 まだナレッジベースに含まれていないページ。自動的にキューには入りません。必要なものをインポートしてください。
new_urls_queued 整数 常に 0。後方互換性のために保持されています。このエンドポイントは何もキューに入れません。
existing_refresh_queued 整数 このサイトから既にインポート済みで、再読み込みの準備ができているページ数。この呼び出しによってキューに入るものはありません。
batch_id 文字列 バッチが作成された場合にのみ存在します。

ディスカバリーと同様に、これもソフトに失敗します。読み取れないサイトでも 200 を返し、success: false、空の new_pages、および error が含まれます。baseUrl が欠落しているか空の場合は、400 を返します。


ウェブサイトの全ページを更新

POST /kb-sources/trigger-domain-refresh

ウェブサイトから既にインポートしたすべてのページを再読み込みし、FAQがサイトの現在のコンテンツに追従するようにします。変更されたセクションは更新され、新しいセクションは追加され、削除されたセクションは破棄されます。

これは処理をキューに入れ、即座に値を返します。その後に ウェブサイトの更新を追跡 を実行し、ウェブサイトの更新を停止 で停止します。

リクエストフィールド

フィールド 必須 説明
baseUrl はい ウェブサイト上の任意のアドレス、またはホスト名のみ。

cURL

curl -X POST "https://api.youraiconnector.com/v1/kb-sources/trigger-domain-refresh?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "baseUrl": "https://example.com" }'

レスポンス

{
  "success": true,
  "queued": 249
}

ウェブサイトの更新を追跡

GET /kb-sources/domain-refresh-status

ウェブサイトの更新がどの程度進んでいるかを示し、「249ページ中221ページ完了」のような進捗を表示できるようにします。

クエリパラメータ

パラメータ 必須 説明
baseUrl はい ウェブサイト上の任意のアドレス、またはホスト名のみ。

cURL

curl "https://api.youraiconnector.com/v1/kb-sources/domain-refresh-status?baseUrl=https://example.com&apiKey=YOUR_API_KEY"

レスポンス

{
  "success": true,
  "job": {
    "domainBatchId": "job_7c1e",
    "host": "example.com",
    "total": 249,
    "pending": 28,
    "succeeded": 219,
    "failed": 2,
    "skippedDuplicate": 0,
    "status": "refreshing",
    "startedAtIso": "2026-06-15T09:00:00.000Z"
  }
}

そのウェブサイトで更新が実行されていない場合、jobnull になります。これまでに完了したページ数は total から pending を引いたものです。ジョブの status は、refreshing(ページ処理中)、deduplicating(終了時のクリーンアップパス)、または最終的な completedfailedcancelled のいずれかです。domainBatchId は保持しておいてください。これはキャンセルエンドポイントに渡す値です。

baseUrl が欠落しているか空の場合は、400 を返します。


ウェブサイトの更新を停止する

POST /kb-sources/refresh-domain/cancel

まだページ処理中のウェブサイトの更新を停止します。完了済みのページは更新されたコンテンツを保持しますが、未開始のページは破棄され、再読み込み中だったページは以前の状態に戻ります。

リクエストフィールド

フィールド 必須 説明
jobId はい ウェブサイトの更新を追跡によって返される domainBatchId です。

cURL

curl -X POST "https://api.youraiconnector.com/v1/kb-sources/refresh-domain/cancel?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "jobId": "job_7c1e" }'

レスポンス

{
  "success": true,
  "status": "cancelled",
  "cancelled_units": 28,
  "sources_reset": 3,
  "sources_cancelled": 25
}
フィールド 説明
status string この呼び出し後の更新の状態: cancelleddeduplicatingcompleted、または failed
cancelled_units integer キャンセルが実行された時点で残っていた作業量。繰り返しキャンセルした場合は 0 となります。
sources_reset integer 処理から取り除かれ、ready に戻されたページ数。
sources_cancelled integer この更新で新規に追加され、キューに入っていたもののキャンセルされたページ数。

2回キャンセルしても問題はありません。2回目の呼び出しでも同じ最終状態が報告されます。更新がクリーンアップフェーズに移行すると停止できなくなり、応答には success: falsereason: "already_finalizing" が含まれます。jobId が欠落している場合は 400 が返され、アカウント内に存在しないジョブを指定した場合は 404 が返されます。


単一ソースを更新する

POST /kb-sources/{sourceId}/refresh

すでにインポート済みのウェブページを再読み込みし、FAQをそのページの現在のコンテンツと同期させます。変更されたセクションは更新され、新しいセクションは追加され、削除されたセクションは破棄されます。

cURL

curl -X POST "https://api.youraiconnector.com/v1/kb-sources/kb_src_abc123/refresh?apiKey=YOUR_API_KEY"

応答202 Accepted

{
  "success": true,
  "source_id": "kb_src_abc123",
  "status": "queued"
}

ステータスが queued および processing ではなくなるまでソースをポーリングします。アカウント内に存在しないソースIDを指定した場合は 404 が返されます。


最も関連性の高いページを選択する

POST /kb-sources/select-relevant-pages

AIに、候補リストの中からビジネスを最もよく説明している5つのページを選択させます。これはウェブサイトからキャンペーンのプレイブックを生成する際に使用されます。これにはクレジットを消費します。

リクエストフィールド

フィールド 必須 説明
urls はい 選択対象となる候補ページのURL。通常はページ検出から取得します。
homeUrl はい 選択のコンテキストとして使用されるサイトのホームページ。

cURL

curl -X POST "https://api.youraiconnector.com/v1/kb-sources/select-relevant-pages?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "homeUrl": "https://example.com",
    "urls": ["https://example.com/about", "https://example.com/pricing"]
  }'

レスポンス

{
  "success": true,
  "pages": [
    { "url": "https://example.com/pricing", "title": "Pricing", "type": "pricing" }
  ]
}

これはリソースではなくヘルパーです。失敗した場合でも 200 を返し、success: false、空の pages リスト、および error メッセージが含まれます。


ナレッジグループ

ナレッジグループとは、「配送と返品」、「オンボーディング」といったFAQの名前付きバンドルであり、1回の呼び出しでエージェントやキャンペーンに適用できます。グループはコピーではなく参照を保持します。FAQ自体は単一のライブラリ内に留まるため、FAQs API を使用してFAQを編集すると、それが使用されているすべての場所で更新が反映されます。

グループの適用は不足しているものを追加するだけであるため、同じグループを2回適用しても問題はなく、2回目には added_count0 として返されます。


ナレッジグループを作成する

POST /kb-groups

グループを作成します。最初は空の状態です。グループにFAQを追加 を使用してFAQを追加してください。

リクエストフィールド

フィールド 必須 説明
name はい グループの名前。

cURL

curl -X POST "https://api.youraiconnector.com/v1/kb-groups?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Shipping and returns" }'

JavaScript

const res = await fetch("https://api.youraiconnector.com/v1/kb-groups", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ name: "Shipping and returns" }),
});
const { group_id } = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/kb-groups",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={"name": "Shipping and returns"},
)
group_id = res.json()["group_id"]

レスポンス201 Created

{
  "success": true,
  "group_id": "kbg_abc123"
}

ナレッジグループの名前を変更する

PUT /kb-groups/{groupId}

グループの名前を変更します。グループ内のFAQには影響しません。

リクエストフィールド

フィールド 必須 説明
name はい グループの新しい名前。

cURL

curl -X PUT "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Shipping, returns and refunds" }'

レスポンス

{
  "success": true,
  "group_id": "kbg_abc123",
  "name": "Shipping, returns and refunds"
}

ナレッジグループを削除する

DELETE /kb-groups/{groupId}

グループを削除します。削除されるのはバンドルのみであり、グループ内のFAQはライブラリに残ります。また、すでにグループが適用されていたものについては、そのFAQが保持されます。

cURL

curl -X DELETE "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123?apiKey=YOUR_API_KEY"

レスポンス

{
  "success": true
}

FAQをグループに追加する

POST /kb-groups/{groupId}/faqs

既存のFAQをグループに追加します。これはバンドルを変更するだけで、FAQ自体をエージェントに紐付けるわけではありません。エージェントへの紐付けにはグループの適用を行ってください。

リクエストフィールド

フィールド 必須 説明
faq_id はい 追加するFAQのID。

cURL

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

レスポンス

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

FAQをグループから削除する

DELETE /kb-groups/{groupId}/faqs/{faqId}

FAQをグループから削除します。FAQ自体は削除されず、グループが既に適用されているエージェントは引き続きそのFAQを保持します。

cURL

curl -X DELETE "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/faqs/aBcD1234eFgH5678?apiKey=YOUR_API_KEY"

レスポンス

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

エージェントにグループを適用する

POST /kb-groups/{groupId}/apply-to-agent

グループ内のすべてのFAQを1回の呼び出しでAIエージェントの知識に追加します。既にキュレーション済みの知識ベースを新しいエージェントに素早く付与する方法です。

リクエストフィールド

フィールド 必須 説明
agent_id はい グループを適用するAIエージェントのID。

cURL

curl -X POST "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/apply-to-agent?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "agent_id": "ag7HkQ2ZpLxR3mNb" }'

JavaScript

const res = await fetch(
  "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/apply-to-agent",
  {
    method: "POST",
    headers: {
      "X-API-Key": "YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ agent_id: "ag7HkQ2ZpLxR3mNb" }),
  }
);
const { added_count } = await res.json();

Python

import requests

res = requests.post(
    "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/apply-to-agent",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={"agent_id": "ag7HkQ2ZpLxR3mNb"},
)
added_count = res.json()["added_count"]

レスポンス

{
  "success": true,
  "group_id": "kbg_abc123",
  "agent_id": "ag7HkQ2ZpLxR3mNb",
  "added_count": 12
}

added_count は実際に何件のFAQが追加されたかを示します。グループが空の場合や既に適用済みの場合、値は 0 になります。


キャンペーンにグループを適用する

POST /kb-groups/{groupId}/apply-to-campaign

上記呼び出しのクラシックキャンペーン版です。エージェントベースのアカウントでは、代わりにエージェントにグループを適用するを使用してください。

リクエストフィールド

フィールド 必須 説明
campaign_id はい グループを適用するキャンペーンのID。

cURL

curl -X POST "https://api.youraiconnector.com/v1/kb-groups/kbg_abc123/apply-to-campaign?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "campaign_id": "campaign123" }'

レスポンス

{
  "success": true,
  "group_id": "kbg_abc123",
  "campaign_id": "campaign123",
  "added_count": 12
}

ナレッジベースAPIエラー

これらのエンドポイントは、標準のエラーエンベロープを返します:

{
  "success": false,
  "error": "Knowledge base source not found."
}
ステータス ナレッジベースエンドポイントで発生する場合
400 必須フィールドが欠落しているか無効です。空の url、欠落している baseUrl または jobId、一括インポートで100件を超えるURL、一括削除で2,000件を超えるID、または読み取り不可能なファイルタイプなどが該当します。
402 インポートを実行するためのクレジットが不足しています。チャージしてから再度お試しください。
403 自身のアップロードフォルダー外の storage_path、またはプランにAPIアクセスが含まれていません。
404 ソース、グループ、FAQ、エージェント、キャンペーン、または更新ジョブが見つかりませんでした。存在しないか、別のアカウントに属しています。

ソフトフェイルはエラーではありません。 ディスカバリー(discover-pagesrefresh-domain)およびページ選択ヘルパーは、Webサイトを読み取れない場合、リクエストを失敗させるのではなく、200success: false、および error メッセージを返します。データを読み取る前に、必ず success を確認してください。

すべてのエンドポイントが返す共通コード(401403(プランにAPIアクセスが含まれていない)、429(レート制限)、500)については、再試行のガイダンスと共にエラーとページネーションに記載されています。


関連情報

  • FAQs API — ソースが生成するFAQの読み取り、編集、リンクを行います。
  • FAQの管理 — ダッシュボード上の同じナレッジベースです。
  • AIエージェント — ソースやグループを紐付けるエージェントです。
  • APIアクセス — APIキーを生成します。
  • 認証 — キーを渡すためのすべての方法です。