APIリファレンス
Asyntai REST APIでカスタム連携を構築
有料プランが必要: APIアクセスはStarter、Standard、およびProプランで利用可能です。 料金を見る
概要
Asyntai APIを使用すると、AI搭載のカスタマーサポートを任意のアプリケーションに統合できます。メッセージを送信し、ウェブサイトのコンテンツとナレッジベースで学習されたインテリジェントな応答を受信できます。
認証
すべてのAPIリクエストにはAPIキーによる認証が必要です。APIキーはAPI設定ページから取得できます。
以下のいずれかの方法でAPIキーをリクエストに含めてください:
- Authorizationヘッダー(推奨):
Authorization: Bearer YOUR_API_KEY - X-API-Keyヘッダー:
X-API-Key: YOUR_API_KEY
APIキーは安全に保管してください。 キーを持っている人は誰でもAPIを通じてアカウントにアクセスできます。クライアントサイドのコードに公開しないでください。
ベースURL
https://asyntai.com/api/v1/
エンドポイント
POST /chat/
メッセージを送信してAI生成の回答を受け取る。
リクエストボディ
{
"message": "What are your business hours?",
"session_id": "user_123", // optional
"website_id": 1 // optional
}
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
message |
文字列 | はい | AIに送信するユーザーのメッセージ |
session_id |
文字列 | いいえ | 会話の一意の識別子です。同じsession_idを使用して会話履歴を維持できます。 |
website_id |
整数 | いいえ | 特定のウェブサイトID。指定しない場合は、プライマリウェブサイトが使用されます。 |
レスポンス
{
"success": true,
"response": "Our business hours are Monday-Friday, 9 AM to 5 PM EST.",
"session_id": "user_123"
}
例(cURL)
curl -X POST https://asyntai.com/api/v1/chat/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message": "What are your business hours?", "session_id": "user_123"}'
例(Python)
import requests
response = requests.post(
"https://asyntai.com/api/v1/chat/",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"message": "What are your business hours?",
"session_id": "user_123"
}
)
data = response.json()
print(data["response"])
例(JavaScript)
const response = await fetch("https://asyntai.com/api/v1/chat/", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
message: "What are your business hours?",
session_id: "user_123"
})
});
const data = await response.json();
console.log(data.response);
GET /websites/
アカウントに関連するすべてのウェブサイトを一覧表示。
レスポンス
{
"success": true,
"websites": [
{
"id": 1,
"name": "My Website",
"domain": "example.com",
"is_primary": true
}
]
}
例(cURL)
curl https://asyntai.com/api/v1/websites/ \
-H "Authorization: Bearer YOUR_API_KEY"
GET /conversations/
特定のセッションの会話履歴を取得。
クエリパラメータ
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
session_id |
文字列 | はい | 履歴を取得するセッションID |
limit |
整数 | いいえ | 返すメッセージの最大数(デフォルト: 50、最大: 100) |
レスポンス
{
"success": true,
"session_id": "user_123",
"messages": [
{
"role": "user",
"content": "What are your business hours?",
"timestamp": "2024-01-15T10:30:00Z"
},
{
"role": "assistant",
"content": "Our business hours are Monday-Friday, 9 AM to 5 PM EST.",
"timestamp": "2024-01-15T10:30:01Z"
}
]
}
例(cURL)
curl "https://asyntai.com/api/v1/conversations/?session_id=user_123&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /sessions/
最近のチャットセッション一覧を取得します。セッションIDを確認し、/conversations/に渡して完全なメッセージ履歴を取得できます。
クエリパラメータ
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
limit |
整数 | いいえ | 返す最近のセッションの数(デフォルト: 20、最大: 100) |
website_id |
文字列 | いいえ | 特定のウェブサイトIDでセッションをフィルタリングします |
source |
文字列 | いいえ | セッションソースでフィルタリング: widget、api、whatsapp、instagram、messenger、gorgias、freshchat、zapier |
レスポンス
{
"success": true,
"sessions": [
{
"session_id": "session_abc123def",
"source": "widget",
"message_count": 5,
"first_message": "What are your business hours?",
"first_message_at": "2024-01-15T10:30:00Z",
"last_message_at": "2024-01-15T10:35:00Z",
"website_domain": "example.com"
}
]
}
例(cURL)
curl "https://asyntai.com/api/v1/sessions/?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /leads/
収集したリードを取得 — チャット会話中に訪問者が送信したメールアドレスと電話番号。
クエリパラメータ
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
limit |
整数 | いいえ | 返すリード数(デフォルト: 50、最大: 100) |
website_id |
文字列 | いいえ | 特定のウェブサイトIDでリードをフィルタリング |
レスポンス
{
"success": true,
"leads": [
{
"session_id": "session_abc123def",
"email": "visitor@example.com",
"phone": "+1234567890",
"page_url": "https://example.com/pricing",
"started_at": "2024-01-15T10:30:00Z"
}
]
}
| フィールド | タイプ | 説明 |
|---|---|---|
session_id |
文字列 | チャットセッションID。完全なチャット履歴を表示するには、これを/conversations/に渡してください。 |
email |
文字列またはnull | 訪問者が提供したメールアドレス、収集されなかった場合はnull |
phone |
文字列またはnull | 訪問者が提供した電話番号、収集されなかった場合はnull |
page_url |
文字列またはnull | 訪問者がチャットしていたページのURL |
started_at |
文字列 | チャットセッション開始のISO 8601タイムスタンプ |
例(cURL)
curl "https://asyntai.com/api/v1/leads/?limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
例(Python)
import requests
response = requests.get(
"https://asyntai.com/api/v1/leads/",
headers={"Authorization": "Bearer YOUR_API_KEY"},
params={"limit": 20}
)
leads = response.json()["leads"]
for lead in leads:
print(f"{lead['email'] or ''} | {lead['phone'] or ''}")
GET /account/
アカウント情報と使用状況の統計を取得します。
レスポンス
{
"success": true,
"account": {
"email": "you@example.com",
"plan": "starter",
"messages_used": 150,
"messages_limit": 2500
}
}
例(cURL)
curl https://asyntai.com/api/v1/account/ \
-H "Authorization: Bearer YOUR_API_KEY"
複数のウェブサイトをお持ちですか? ナレッジベースのエンドポイントはプライマリウェブサイトがデフォルトです。複数のウェブサイトをお持ちの場合は、 website_id を渡して特定のウェブサイトを対象にします。ウェブサイトIDは次を使用して確認できます GET /websites/.
1日のアップロード上限: ナレッジベースのアップロード(テキスト、URL、スプレッドシート)には、プランに基づく1日の文字数制限があります。これはすべてのナレッジベースエンドポイントを通じてアップロードされた1日の合計コンテンツに適用されます。
| プラン | 文字/日 |
|---|---|
| Starter | 100,000 |
| Standard | 500,000 |
| Pro | 2,000,000 |
GET /knowledge/
ナレッジベースのエントリ一覧を取得します。これらはAIチャットボットが質問に回答するために使用するコンテンツソースです。
クエリパラメータ
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
limit |
整数 | いいえ | 返すエントリ数(デフォルト:50、最大:100) |
website_id |
文字列 | いいえ | ウェブサイトIDでフィルタ(デフォルトはプライマリウェブサイト) |
レスポンス
{
"success": true,
"entries": [
{
"id": "abc-123-def",
"type": "text",
"title": "Business Hours",
"description": "Manual text content (150 words)",
"created_at": "2024-01-15T10:30:00Z"
},
{
"id": "ghi-456-jkl",
"type": "url",
"title": "About Us - Example",
"description": "Content from https://example.com/about",
"created_at": "2024-01-14T09:00:00Z"
}
]
}
例(cURL)
curl "https://asyntai.com/api/v1/knowledge/?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /knowledge/text/
ナレッジベースにカスタムテキストコンテンツを追加します。AIはこれを使用して訪問者の質問に回答します。
リクエストボディ
{
"title": "Return Policy",
"content": "We offer a 30-day return policy on all items. Items must be unused and in original packaging. Refunds are processed within 5-7 business days.",
"website_id": "123"
}
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
title |
文字列 | はい | このナレッジエントリのタイトル |
content |
文字列 | はい | テキストコンテンツ(最小10文字) |
website_id |
文字列 | いいえ | 対象ウェブサイト(デフォルトはプライマリウェブサイト) |
レスポンス
{
"success": true,
"id": "abc-123-def",
"title": "Return Policy",
"chunks_created": 1
}
例(cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/text/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title": "Return Policy", "content": "We offer a 30-day return policy..."}'
POST /knowledge/url/
ナレッジベースにウェブページを追加します。コンテンツは自動的に取得・抽出されます。
リクエストボディ
{
"url": "https://example.com/faq",
"website_id": "123"
}
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
url |
文字列 | はい | コンテンツを取得するURL |
website_id |
文字列 | いいえ | 対象ウェブサイト(デフォルトはプライマリウェブサイト) |
レスポンス
{
"success": true,
"id": "abc-123-def",
"title": "FAQ - Example",
"url": "https://example.com/faq",
"chunks_created": 5
}
例(cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/url/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/faq"}'
POST /knowledge/spreadsheet/
CSVまたはExcel(.xlsx)スプレッドシートをナレッジベースにアップロードします。各行が個別のナレッジエントリになり、商品カタログ、FAQリスト、料金表、ディレクトリに最適です。
リクエスト
multipart/form-data(ファイルアップロード)として送信してください。JSONではありません。
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
file |
ファイル | はい | .csvまたは.xlsxファイルです。最初の行は列ヘッダーである必要があります。アップロードあたりの最大行数:Starter 500行、Standard 2,000行、Pro 10,000行。超過した行は切り捨てられます。 |
website_id |
文字列 | いいえ | 対象ウェブサイト(デフォルトはプライマリウェブサイト) |
レスポンス
{
"success": true,
"id": "abc-123-def",
"title": "products.csv",
"rows_processed": 15,
"chunks_created": 15
}
例(cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/spreadsheet/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@products.csv"
DELETE /knowledge/{id}/
ナレッジベースのエントリを削除します。idはGET /knowledge/のレスポンスから取得できます。
レスポンス
{
"success": true,
"message": "Knowledge base entry deleted"
}
例(cURL)
curl -X DELETE "https://asyntai.com/api/v1/knowledge/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
ヒント: webhookは以下からも管理できます: API設定 ページからコードなしで管理できます。
GET /webhooks/
登録済みのwebhook一覧を取得します。
レスポンス
{
"success": true,
"webhooks": [
{
"id": "abc-123-def",
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"is_active": true,
"created_at": "2024-01-15T10:30:00Z"
}
]
}
例(cURL)
curl "https://asyntai.com/api/v1/webhooks/" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /webhooks/
リアルタイムのイベント通知を受信するための新しいwebhookを登録します。
利用可能なイベント
| イベント | 説明 |
|---|---|
message.received |
訪問者がメッセージを送信し、応答を受信しました |
conversation.started |
新しいチャットセッションが開始されました |
escalation.requested |
AIがオペレーターへのエスカレーションをトリガーしました |
takeover.started |
オペレーターがチャットセッションを引き継ぎました |
リクエストボディ
{
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"website_id": "123"
}
| パラメータ | タイプ | 必須 | 説明 |
|---|---|---|---|
url |
文字列 | はい | webhook POSTリクエストを受信するHTTPS URL |
events |
配列 | はい | サブスクライブするイベントのリスト(上記の表を参照) |
website_id |
文字列 | いいえ | 対象ウェブサイト(デフォルトはプライマリウェブサイト) |
レスポンス
{
"success": true,
"webhook": {
"id": "abc-123-def",
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"secret": "whsec_abc123...",
"created_at": "2024-01-15T10:30:00Z"
}
}
webhookの検証: 各webhookには secret secret(作成時のみ表示)が含まれます。URLへのすべてのPOSTには X-Webhook-Signature ヘッダー — シークレットキーで署名されたリクエストボディのHMAC-SHA256です。
例(cURL)
curl -X POST "https://asyntai.com/api/v1/webhooks/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/webhook", "events": ["message.received"]}'
DELETE /webhooks/{id}/
webhookを削除します。idはGET /webhooks/のレスポンスから取得できます。
レスポンス
{
"success": true,
"message": "Webhook deleted"
}
例(cURL)
curl -X DELETE "https://asyntai.com/api/v1/webhooks/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
エラーレスポンス
すべてのエラーレスポンスは以下の形式に従います:
{
"success": false,
"error": "Error message describing what went wrong"
}
| ステータスコード | 説明 |
|---|---|
400 |
Bad Request - 無効なパラメータまたは必須フィールドの欠落 |
401 |
Unauthorized - 無効または欠落したAPIキー |
429 |
Too Many Requests - プランのメッセージ上限に達しました |
503 |
Service Unavailable - AIサービスが一時的に利用できません |
レート制限
APIの使用はサブスクリプションプランによって制限されます:
- Free: 100メッセージ/月
- Starter($39/月): 2,500メッセージ/月
- Standard($139/月): 15,000メッセージ/月
- Pro($449/月): 50,000メッセージ/月
お困りですか?
ご質問や問題がございましたら、hello@asyntai.comまでお問い合わせください。