AIで自由に構築
REST APIにより、AIチャットボットの機能をあらゆるアプリケーションに組み込めます
curl -X POST https://asyntai.com/api/v1/chat/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message": "営業時間を教えてください。"}'
シンプルなREST API
メッセージ送信とAI応答の取得は、単一のエンドポイントで完結します。cURL、Python、JavaScript など、HTTPリクエストを送れる言語であれば利用できます。複雑なSDKは不要です。
{
"success": true,
"response": "営業は月曜から金曜、
9時から18時までです。ご用件をどうぞ。",
"session_id": "abc123"
}
的確な応答
AIは貴社の事業内容を把握しています。ウェブサイト、資料、独自の指示をもとに、どのような質問にも正確で文脈に沿った回答を返します。
{
"message": "私の前の質問は何でしたか。",
"session_id": "user_12345"
}
# AIが会話を記憶します
会話の記憶
セッションIDを使うと会話の文脈が保たれます。AIは以前のメッセージを記憶し、複数のやり取りを通じて一貫した回答を返します。
開発者のための設計
AIチャットボット機能をアプリに組み込むために必要なものがすべて揃っています
RESTful設計
標準的な作法に沿った、分かりやすいREST APIです。理解しやすく、組み込みやすく、保守も容易です。
シンプルな認証
APIキーによる安全な認証です。ヘッダーにキーを入れるだけでリクエストを送れます。
短い応答時間
速度を重視した設計です。AIの応答は秒単位ではなくミリ秒単位で返ります。
セッション管理
セッションIDによる会話追跡を標準で備えています。複数のメッセージにわたる文脈を手間なく維持できます。
多言語対応
AIは利用者の言語を判別し、その言語で応答します。追加の作業なしで世界中の利用者に対応できます。
安全で安定
HTTPS暗号化、レート制限、99.9%の稼働率。連携は安全で、常に利用できます。
利用の流れ
3つの簡単な手順でAIチャットボットAPIを使い始められます
登録してAPIキーを取得
アカウントを作成し、ダッシュボードでAPIキーを発行します。AIはウェブサイトの内容を自動で取り込みます。
最初のリクエストを送る
チャットのエンドポイントにメッセージを含むPOSTリクエストを送ります。AIが処理し、的確な応答を返します。
どこにでも組み込める
モバイルアプリ、ウェブサイト、社内ツール、独自のプラットフォームなど、どこでもAPIを利用できます。
活用例
AIチャットボットAPIは汎用性が高く、思いつくあらゆるプラットフォームやアプリでAIサポートを実現できます。
- ✓ モバイルアプリ(iOS、Android、React Native)
- ✓ 独自のウェブアプリケーション
- ✓ 社内サポートツール
- ✓ 音声アシスタントとIVRシステム
- ✓ Slackボット、Discordボットなど
import requests
response = requests.post(
"https://asyntai.com/api/v1/chat/",
headers={"Authorization": "Bearer API_KEY"},
json={"message": "こんにちは。"}
)
print(response.json()["response"])
選ばれる理由
最小限の手間で高機能なAIチャットボット連携を構築できます
より早く公開
数か月のAI開発が不要になります。APIを組み込めば、今日からアプリに高度なチャットボット機能を追加できます。
常に最新
AIの知識はダッシュボードからいつでも更新できます。事業の変化に合わせてAPIを変更する必要はありません。
費用対効果が高い
使った分だけのお支払いです。インフラ費用、AI学習の費用、保守の手間はかかりません。
よくある質問
AIチャットボットAPIについて知っておきたいこと
最初のリクエスト
POSTを1回送るだけで、ナレッジベースに基づくAIの回答が返ります。SDKの導入は不要です。
curl -X POST https://asyntai.com/api/v1/chat/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message": "日本への発送は可能ですか。"}'
# 200 OK
{
"success": true,
"response": "はい、日本へは3〜5日で発送します。",
"session_id": "api_1042_87"
}
最初の呼び出しの前にナレッジベースに内容を登録してください。APIは自社の資料、価格、規約に基づいて回答します。ナレッジベースが空の場合、回答は一般的なものになります。
認証
すべてのリクエストはヘッダーにAPIキーを含めます。2つのヘッダー形式が使え、動作は同じです。どちらかを選んでください。キーは設定 → APIで発行します。
ヘッダーのみ対応します。キーをクエリ文字列から読み取ることはありません。URLに含めたキーはサーバーログ、プロキシログ、ブラウザ履歴、Refererヘッダーに残るため、その方法には対応していません。
# 方式A - ベアラートークン
Authorization: Bearer YOUR_API_KEY
# 方式B - 専用ヘッダー
X-API-Key: YOUR_API_KEY
チャットのエンドポイント
POST https://asyntai.com/api/v1/chat/
リクエストボディ
| 項目 | 型 | 必須 | 説明 |
|---|---|---|---|
message | string | 必須 | 利用者のメッセージ。空の場合は400を返します。 |
session_id | string | 任意 | 会話ごとに独自に決める識別子。同じ値を再送すると文脈が保たれます。省略するとアカウント全体で1つのセッションを共有します。 |
website_id | integer | 任意 | どのエージェントが回答するか。省略した場合は主要サイト、なければアカウントの最初のサイトが使われます。 |
レスポンスボディ
| 項目 | 型 | 説明 |
|---|---|---|
success | boolean | AIが回答を生成した場合はtrue。 |
response | string | 回答の本文。 |
session_id | string | このメッセージが記録されたセッション。次の呼び出しで送り返してください。 |
会話の記憶
固定のsession_idを渡すと、その会話の直近10件が文脈として渡されます。そのため「それはいくらですか」といった追加の質問も正しく解釈されます。利用者ごとに異なるsession_idを使ってください。省略すると、アカウントのすべての呼び出しが1つの履歴を共有します。本番環境では通常望ましくありません。
// 1回目の呼び出し
{ "message": "日本への発送は可能ですか。", "session_id": "user-8842" }
// 2回目の呼び出し - session_idが同じなので「それ」が伝わります
{ "message": "それはいくらですか。", "session_id": "user-8842" }
組み込みの例
コピーして貼り付け、キーを差し替えてください。
const res = await fetch('https://asyntai.com/api/v1/chat/', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
message: '日本への発送は可能ですか。',
session_id: 'user-8842'
})
});
const data = await res.json();
if (!data.success) throw new Error(data.error);
console.log(data.response);
// APIキーをブラウザのコードに含めないでください。自社サーバーまたは
// エッジ関数から呼び出し、結果を中継してください。
import requests
resp = requests.post(
"https://asyntai.com/api/v1/chat/",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"message": "日本への発送は可能ですか。",
"session_id": "user-8842",
},
timeout=30,
)
data = resp.json()
if not data["success"]:
raise RuntimeError(data["error"])
print(data["response"])
$ch = curl_init('https://asyntai.com/api/v1/chat/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'message' => '日本への発送は可能ですか。',
'session_id' => 'user-8842',
]),
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
if (empty($data['success'])) {
throw new Exception($data['error']);
}
echo $data['response'];
const ASYNTAI_KEY = process.env.ASYNTAI_API_KEY;
export async function ask(message, sessionId) {
const res = await fetch('https://asyntai.com/api/v1/chat/', {
method: 'POST',
headers: {
'X-API-Key': ASYNTAI_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({ message, session_id: sessionId })
});
if (res.status === 429) throw new Error('月間メッセージ上限に達しました');
const data = await res.json();
if (!data.success) throw new Error(data.error);
return data.response;
}
curl -X POST https://asyntai.com/api/v1/chat/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"message": "日本への発送は可能ですか。",
"session_id": "user-8842"
}'
エラー応答
失敗時は必ず{"success": false, "error": "..."}と、次のいずれかのステータスコードを返します。
| Status | 意味 | 対処 |
|---|---|---|
400 | JSONの形式が不正、messageが無い、またはアカウントに属さないwebsite_idを指定しています。 | 送信内容を修正してください。errorの文字列に原因が示されます。 |
401 | APIキーが無いか、どのアカウントとも一致しません。 | ヘッダー名と、キーが再発行されていないかを確認してください。 |
403 | アカウントがFreeプランです。API利用にはStarter、Standard、Proのいずれかが必要です。 | プランを変更してください。 |
429 | 月間メッセージ上限に達しました。ボディには"limit_reached": trueも含まれます。 | 送信を控えてプランを変更するか、次の請求期間をお待ちください。 |
503 | AIサービスがこのリクエストに応答できませんでした。 | 間隔を空けて再試行してください。一時的な事象です。 |
ステータスコードだけでなくsuccessも確認してください。大量に送信する場合は429を個別に処理してください。そうしないと、上限到達が利用者には単なる障害に見えます。
エンドポイント一覧
ベースURLはhttps://asyntai.com/api/v1/です。すべてのエンドポイントで同じ認証を使います。
Chat
| メソッド | パス | 用途 |
|---|---|---|
| POST | /chat/ | メッセージを送り、AIの回答を受け取ります。 |
サイトとエージェント
| メソッド | パス | 用途 |
|---|---|---|
| GETPOST | /websites/ | エージェントの一覧取得、または作成して読み取りを開始します。 |
| GET | /websites/{id}/ | エージェントの詳細。 |
| GETPATCH | /websites/{id}/settings/ | ウィジェット設定の取得または変更。 |
| GETPUT | /websites/{id}/instructions/ | AIの指示の取得または置き換え。 |
ナレッジベース
| メソッド | パス | 用途 |
|---|---|---|
| GET | /knowledge/ | AIが参照できる内容の一覧。 |
| POST | /knowledge/text/ | テキストを追加します。 |
| POST | /knowledge/url/ | URLでページを追加します。 |
| POST | /knowledge/spreadsheet/ | 表計算ファイルを追加します。 |
| GETDELETE | /knowledge/{context_id}/ | 項目の取得または削除。 |
| POSTPUT | /knowledge/{context_id}/tags/ | 項目のタグを管理します。 |
会話とデータ
| メソッド | パス | 用途 |
|---|---|---|
| GET | /conversations/ | 過去の会話。 |
| GET | /sessions/ | メッセージ件数付きのセッション。 |
| GET | /leads/ | チャットボットが取得した連絡先。 |
| GET | /account/ | プラン、利用量、上限。 |
Webhooks
| メソッド | パス | 用途 |
|---|---|---|
| GETPOST | /webhooks/ | Webhookの一覧取得または登録。 |
| DELETE | /webhooks/{webhook_id}/ | Webhookを削除します。 |
条件と上限
| 項目 | 内容 |
|---|---|
| プラン | API利用には有料プラン(Starter、Standard、Pro)が必要です。Freeアカウントは403を受け取ります。 |
| メッセージ上限 | APIのメッセージは、ウィジェットの会話と同じ月間上限に算入されます。現在値はGET /api/v1/account/で確認できます。 |
| 履歴の件数 | session_idごとに直近10件までが文脈として渡されます。 |
| 通信 | HTTPSのみ。リクエストとレスポンスのボディはJSONです。 |
| キーの再発行 | 設定 → APIでキーを再発行できます。古いキーは直ちに使えなくなります。 |