クイックスタート:60秒で最初のリクエスト

ワークスペースでAPIキーを作成し、エクスポートして、会話を一覧してみてください。キーはワークスペースごとにスコープされ、読み取り専用または読み書き可能にできます。

curl https://api.inteligenciaviva.com/v1/workspaces/WORKSPACE_ID/conversations \
  -H "Authorization: Bearer sk_live_..."

すべてのレスポンスはJSONです。コレクションのエンドポイントは`data`配列を返します。エラーは`code`と`message`を持つ`error`オブジェクトと、対応するHTTPステータスを返します。

無料API ― アカウント不要、キー不要

無料の層もAPIを話します。`POST /v1/free/widget-snippet`は、無料ページのビジュアルジェネレーターが組み立てるのとまったく同じ設定を受け取り、貼り付け可能なHTMLスニペットを返します ― 認証も登録も不要です。クライアントのサイト向けにウィジェットを一括生成したり、スケジュール変更時にCIから埋め込みを再生成したり、あるいは1セントも払う前にAPIに触れてみるために使ってください。

curl -X POST https://api.inteligenciaviva.com/v1/free/widget-snippet \
  -H "Content-Type: application/json" \
  -d @widget-config.json
# → { "snippet": "<link rel=\"stylesheet\" ..." }

認証

すべてのリクエストは、`Authorization`ヘッダーにBearerトークンとしてAPIキーを載せます。キーの作成と失効はAPI自体またはダッシュボードから、ワークスペース単位で行います ― キーを失効させると、そのアクセスは即座に切断されます。

アカウントレベルのセッションエンドポイント(`/v1/auth`配下の登録、ログイン、Googleサインイン、チケット交換、プロフィール、アカウント削除)は私たち自身のアプリを支えています。サーバー間の連携では、ユーザーセッションよりも常にワークスペースのAPIキーを優先してください。

Authorization: Bearer sk_live_...

リソースリファレンス

以下のすべてのルートは、特記なき限り`https://api.inteligenciaviva.com/v1/workspaces/{workspaceId}`からぶら下がります。これは現在のバックエンドに実際にマウントされている面です ― 願望ではありません。

横断受信トレイ /inbox

GET/conversationsこの資格情報が担当するすべてのワークスペースの会話を、活動順の単一リストで返します。
GET/conversations/{id}どのワークスペースにあるかを知らずに会話を探します。workspace_id を返します。
GET/workspacesこの資格情報が担当できるワークスペースと、それぞれでの役割。

会話 /conversations

GET/会話を一覧します。状態でフィルタできます。
GET/{id}1件の会話を、その状態、チャネル、連絡先、担当割り当てとともに返します。
GET/{id}/messagesメッセージ履歴(訪問者、人間のエージェント、AI、システム)。
POST/{id}/messagesエージェントとして会話にメッセージを送信します。
POST/{id}/assign会話を人間のエージェントまたは部署に割り当てます。
POST/{id}/resolve会話をクローズします。AIが単独でクローズした場合、課金対象の解決として数えられます。
POST/ウィジェット外から会話を開きます(既存スレッドの移行など)。
GET/{id}/ai-turns「その根拠は?」— AI の各ターンの記録:根拠、モデル、所要時間、引き継ぎの理由。
GET/{id}/portal-caseこの会話がポータルのサポート板に開いた案件の状態と返信。状態は向こうで変わるため、都度取得します。
POST/{id}/readチームが既読にします(未読カウンタ)。
POST/{id}/reopenクローズした会話を履歴ごと再開します。これがないと誤操作は取り消せませんでした。
POST/{id}/archiveアーカイブ/解除。閉じることも失うこともなく受信箱から外れます。本文は {valor:true|false}。
POST/{id}/pin上部に固定/解除。固定したものは受信箱の1ページ目の先頭に並びます。本文: {valor:true|false}。
POST/{id}/muteN時間だけ通知をミュート。{horas:null} で解除します。
POST/{id}/unread未読に戻す:既読マークをお客さまの最後のメッセージの手前まで戻します。

連絡先 /contacts

GET/連絡先を一覧します。
GET/{id}1件の連絡先を、そのアイデンティティと会話履歴とともに返します。

AIエージェント /ai-agents

GET/ワークスペースのAIエージェントを一覧します。
POST/AIエージェントを作成します:指示、部署、確信度のしきい値。
PATCH/{id}指示、しきい値、部署を更新します。
GET/{id}/knowledge-sourcesこのエージェントに接続された知識ソース。
POST/{id}/knowledge-sourcesこのエージェントに知識ソースを接続します。
GET/{aiAgentId}AI エージェント 1 件:指示、確信度のしきい値、ツール、部門。

知識(RAG) /knowledge-sources

POST/documentドキュメントを、回答の根拠となる知識としてインデックスします。
POST/urlURLをインデックスします。
GET/{id}ソースの状態とメタデータ。
DELETE/{id}ソースとそのベクトルを削除します。
POST/{id}/reindexURL のソースを削除せずに読み直します。取得に失敗した場合は何も変更されません。
GET/ナレッジソースと索引状態の一覧。

チャネル /channels

GET/チャネルを一覧します。今日稼働しているのはウェブチャットとAPI。追加のチャネルは提供され次第つながります。
PUT/{id}/credentialsチャネルの認証情報を設定します。
PUT/{id}/statusチャネルを有効化または無効化します。
POST/チャネルを作成します。
GET/{channelId}チャネル 1 件(種別・状態・設定)。
GET/{channelId}/snippet顧客がサイトに貼る 1 行。それ以外はすべてここで設定します。
GET/{channelId}/configチャット設定:公開中のもの(`config`)と、このチャネルが上書きするもの(`settings`)。別物です。
PUT/{channelId}/config設定を保存します。保存と公開は同一の手順:CDN が失敗すれば PUT も失敗します。
POST/{channelId}/config/publish設定を変更せずに CDN へ再公開します。
POST/{channelId}/avatarアシスタントの顔画像をアップロード(512 KB 以下)。R2 に保存し CDN が配信します。
POST/republicar-todosワークスペースの全チャネルを再公開します。文言パック変更時は cron が行いますが、待たずに実行できます。

人間のエージェントと部署 /agents · /departments

GET/agentsワークスペース内の人間のエージェントを一覧します。
POST/agents/{userId}/departmentsエージェントを部署に所属させます。
GET/departments部署を一覧します。
PUT/departments/{id}/routing-rules受信する会話のルーティングルールを設定します。
POST/agentsワークスペースに人を招待します(役割と部門つき)。
GET/agents/{userId}チームメンバー 1 名。
POST/departments部門をルーティング規則つきで作成します。
GET/departments/{id}部門 1 件。

Webhook・キー・課金・アナリティクス /webhooks · /api-keys · /billing · /analytics

POST/webhooksエンドポイントを登録します。署名用シークレットは一度だけ受け取れます。
DELETE/webhooks/{id}エンドポイントを削除します。
POST/api-keysキーを作成します(読み取り専用または読み書き)。
DELETE/api-keys/{id}キーを即座に失効させます。
GET/billing/subscriptionプラン、含まれるAI解決件数、今期の利用量。
GET/analyticsワークスペースの集計メトリクス。
GET/webhooksWebhook のエンドポイント一覧。
GET/webhooks/{id}/deliveriesWebhook の配信履歴(再試行を含む)。失敗の原因がどちら側かを示します。
GET/api-keysキー一覧。秘密値は返しません(接頭辞のみ)。

エージェント用ツール /conversations/{id} · /canned-responses · /tags · /presence

GET/conversations/{id}/notes会話の内部メモ。訪問者には決して表示されません。
POST/conversations/{id}/notes内部メモを追加します。
DELETE/conversations/{id}/notes/{noteId}内部メモを削除します。
GET/canned-responsesワークスペースの定型返信(ショートカット付き)。
POST/canned-responses定型返信を作成します。
PATCH/canned-responses/{cannedId}定型返信を編集します。
DELETE/canned-responses/{cannedId}定型返信を削除します。
POST/presence在席のハートビート。人が対応可能であることを示します。セッション専用 — API キーによる送信は画面を見ている人ではないため、400 で拒否されます。
GET/presence現在オンラインの担当者がいるか。引き継ぎが待つか転送されるかを決めます。
GET/ai-usageワークスペースの日次推論使用量と、消費の多い会話。
GET/tagsワークスペースのタグ。
GET/conversations/{id}/tags会話に付いたタグ。
POST/conversations/{id}/tags会話にタグを付けます。存在しない場合は作成します。
DELETE/conversations/{id}/tags/{tagId}会話からタグを外します。
POST/conversations/{id}/transfer会話を部門へ転送します。ルーティング規則より優先され、手動の転送は自動で取り消されません。
POST/contacts/{contactId}/block連絡先をブロックします。詳細なしの 403 を返します — 悪用者に検知方法は説明しません。

添付・デバイス・ワークスペース /conversations/{id}/attachments · /devices · /workspaces

POST/conversations/{id}/attachmentsエージェントとして添付をアップロード。厳格な許可リストと 10 MB 制限:ブラウザが実行できるものは通しません。
GET/conversations/{id}/attachments会話の添付一覧。
GET/attachments/{attachmentId}添付をダウンロード。厳格なヘッダーと `nosniff` 付き。インライン表示は画像と音声のみ。
POST/devices/registerデバイスのプッシュトークンを登録します(AI 引き継ぎ時の通知用)。ワークスペース接頭辞の外:`/v1/devices/register`。
POST/workspacesワークスペースを作成します。接頭辞の外:`/v1/workspaces`。

本物の例

エージェントのメッセージを送信する(curl)

curl -X POST \
  https://api.inteligenciaviva.com/v1/workspaces/$WS/conversations/$CONV/messages \
  -H "Authorization: Bearer $IV_KEY" \
  -H "Content-Type: application/json" \
  -d '{"content": "Hi! I checked your order — it ships tomorrow."}'

会話を一覧する(JavaScript)

const res = await fetch(
  `https://api.inteligenciaviva.com/v1/workspaces/${WS}/conversations`,
  { headers: { Authorization: `Bearer ${process.env.IV_KEY}` } }
);
const { data } = await res.json();

Webhookの署名を検証する(Node)

import { createHmac, timingSafeEqual } from "node:crypto";

function verify(secret, rawBody, header, toleranceSec = 300) {
  const { t, v1 } = Object.fromEntries(
    header.split(",").map((p) => p.split("="))
  );
  if (Math.abs(Date.now() / 1000 - Number(t)) > toleranceSec) return false;
  const expected = createHmac("sha256", secret)
    .update(`${t}.${rawBody}`)
    .digest("hex");
  return timingSafeEqual(Buffer.from(expected), Buffer.from(v1));
}

Webhook

HTTPSエンドポイントを登録すると、すべてのイベントを署名付きでPOSTします。ヘッダーは`iv-signature: t=<unix>,v1=<hex>`で、`v1`はエンドポイントのシークレットによる`<timestamp>.<raw body>`のHMAC-SHA256です ― 5分より古いものは拒否してください(リプレイ対策)。配信に失敗した場合は、新しい署名で最大5回まで自動的に再試行されます。

conversation.createdいずれかのチャネルで新しい会話が始まりました。
message.createdメッセージが届きました(訪問者、人間、AI、システム)。
handoff.requestedAIが人間を必要と判断しました ― まさにその瞬間に、要約付きで。
conversation.resolved会話がクローズされました。AIが単独でクローズしたかどうかも伝えます。

すべての配信とそのステータスは記録されます ― 信頼できないWebhookは、無いよりも悪いからです。

リアルタイムストリーミング

ライブUIのためには、ワークスペースのストリームに対してWebSocketを開き、会話イベントを発生と同時に受信してください ― 私たち自身のエージェント向けアプリが使っているのと同じチャネルです。

wss://api.inteligenciaviva.com/v1/workspaces/{workspaceId}/stream

エラーと制限

エラーは慣例どおりのHTTPです: `400`不正なリクエスト、`401`キーの欠落または無効、`403`スコープのないキー、`404`このワークスペースにないリソース、`429`レート制限(ジッターを入れてバックオフし再試行)、`5xx`私たちの責任 ― 冪等なリクエストは再試行してください。ボディには常に`error.code`と、人間向けの`error.message`が含まれます。レート制限はキー単位で、実際の連携には十分に寛大です。

よくある質問

このドキュメントは願望ですか、それとも実際の面ですか?

実際のものです。現在のバックエンドにマウントされているルートに対して書かれています。ここで「近日公開」とあるものは、まだ存在しません ― 私たちは実体のないものをドキュメント化しません。

APIを使うには有料プランが必要ですか?

はい ― APIは有料プラットフォームの一部です(Proに含まれます)。無料のウィジェットとWordPressプラグインはクライアントサイドで動作し、APIをまったく必要としません。

読み取り専用キーと読み書きキーの違いは?

読み取り専用キーは一覧と取得はできますが、変更は決してできません ― ダッシュボードやBIに最適です。読み書きキーはメッセージ、連絡先、AIエージェント、設定を作成できます。

新着メッセージの通知はポーリングとWebhookのどちらで受け取るべきですか?

サーバーにはWebhook(`message.created`)、ライブUIにはWebSocketストリームです。ポーリングも動作しますが、リアルタイムに到達する前にレート制限に当たるでしょう。

Webhookがあなたたちから来たことを、正確にはどう検証しますか?

エンドポイントのシークレットで`<t>.<raw body>`のHMAC-SHA256を再計算し、`iv-signature`ヘッダーの`v1`値と一定時間比較で照合してください。`t`が300秒より古ければ拒否します。動作するコードがこのページにあります。

自分のWebhookエンドポイントがダウンしていたら?

失敗した配信を記録し、新しいタイムスタンプと署名で最大5回まで自動的に再試行します。その間にエンドポイントが削除または無効化されていれば、再試行はきれいに停止します。

AIから自前のエスカレーションシステムへ引き継げますか?

はい ― それこそが`handoff.requested`です。AIの確信度がワークスペースのしきい値を下回った瞬間に、会話の要約を載せて発火します。担当者を呼び出したり、別のシステムでチケットを開いたりできます。

今日、APIで操作できるチャネルはどれですか?

ウェブチャットは端から端まで稼働しており、このリファレンスのすべてが今日動きます。Telegramと以降のメッセージングチャネルは、提供され次第、同じ会話モデルに接続されます ― あなたの連携コードは変わりません。

SDKはありますか?

Flutter SDKが私たち自身のエージェント向けアプリを支えており、EnterpriseのホワイトラベルSDKの基盤でもあります。サーバー向けには、RESTの面を意図的にプレーンにしています ― どんなHTTPクライアントでもラッパーなしで動きます。

APIのバグや、このドキュメントの欠落はどこに報告すればいいですか?

l@inteligenciaviva.comへお書きください。嘘をつくドキュメントもバグです ― 同じ深刻度で扱います。