ダッシュボードに戻る

ドキュメント

Asyntaiの使い方を学ぶ

APIリファレンス

Asyntai REST APIでカスタム連携を構築

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 文字列 いいえ セッションソースでフィルタリング: widgetapiwhatsappinstagrammessengergorgiasfreshchatzapier

レスポンス

{
  "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日の合計コンテンツに適用されます。

プラン 文字/日
Starter100,000
Standard500,000
Pro2,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}/

ナレッジベースのエントリを削除します。idGET /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を削除します。idGET /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までお問い合わせください。