Headless API

このページは機械翻訳により提供されています。翻訳内容と英語版に相違がある場合は、英語版が優先されます。

カスタムチャットインターフェースを使用すると、構築および制御する任意のアプリケーションにGenieを接続できます。 アプリケーションは、ユーザーをSlack、Microsoft Teams、またはWorkato GO経由でルーティングするのではなく、Headless APIと呼ばれるREST API経由でGenieと直接通信します。 カスタムチャットインターフェースには、会話を管理し、Genieメッセージを送受信するためのAPIエンドポイントが含まれています。 このAPIは、Genieの作成、設定、および保守を可能にするAgent Studio Developer APIとは別のものです。

HEADLESS APIエンドポイントにはカスタムチャットインターフェースが必要です

Headless APIエンドポイントは、カスタムチャットインターフェースオプションとのみ互換性があります。

プライベートベータ

Headless APIはプライベートベータ版であり、選ばれたお客様のみが利用できます。 詳しくはCustomer Success Managerにお問い合わせください。

Headless APIの前提条件

Headless APIを使用する前に、以下を確認してください:

  • Agent StudioにGenieがあること。
  • API keyまたはOAuth 2.0(PKCE)資格情報のいずれかを使用してGenieクライアントを作成してアタッチすることを含め、Agent Studio UIからGenieのカスタムチャットインターフェイスを設定していること。 UIからではなくプログラムでクライアントをプロビジョニングする場合は、Developer APIのGenieクライアントを参照してください。
  • ワークスペースでHeadless APIが有効になっていること。 Headless APIはプライベートベータです:カスタムチャットインターフェイスオプションがGenieのチャットインターフェイス設定に表示されない場合は、Customer Success Managerに連絡してアクセスをリクエストしてください。
  • ビルダーロールに、Genie buildingの下のCustom chat interface権限があること。 ビルダーロールの設定の詳細については、コラボレーター権限を参照してください。

Headless APIのベースURL

Headless APIは、Agenticがサポートされているすべてのデータセンターで利用できます。 ベースURLは、アプリホストと同じデータセンターごとのスキームに従います。 例:

データセンターDev APIのベースURLHeadless APIのベースURL
UShttps://www.workato.comhttps://genie-api.workato.com

詳細については、データセンターの概要を参照してください。

認証

Headless APIは次のアクセス方法をサポートしています。

APIキー:

http
Authorization: Bearer <api_key>
X-IDP-User-Id: <idp_user_id>

OAuth 2.0(PKCE):

http
Authorization: Bearer <access_token>

認可方法の比較

使用する認可方法を決定するには、次の認可方法の比較表とユースケース推奨表を参照してください。

比較ポイントAPIキー(トークンベース)OAuth 2.0(PKCE)
仕組みビルダーのバックエンドは静的APIキーを保持し、X-IDP-User-Idヘッダーを通じてユーザーIDをアサートします。エンドユーザーはWorkato Identityを通じて直接認証し、SAML SSOを通じて顧客のIdPに委任します。
エンドユーザーへの表示Workatoはエンドユーザーには表示されません。エンドユーザーにはIdPログインステップが表示されます。
必須ヘッダーAuthorization: Bearer <api_key>およびX-IDP-User-Id: <idp_user_id>Authorization: Bearer <access_token>
クライアント認証情報APIキーは静的で、一度だけ表示されます。client_idのみ、PKCEがクライアントシークレットを置き換えます。
ユーザーIDの管理元ビルダーがユーザーIDをWorkato IdPユーザーIDにマッピングします。Okta、Azure AD、OneLoginなどのIdPが直接管理します。
前提条件IAM APIまたはWorkato UIを通じてWorkato Identityにプロビジョニングされたエンドユーザー。Workato Identityと顧客の既存IdP間の1回限りのSAMLフェデレーション。 Workato Identityはブローカーとして機能します。 顧客のIdPを置き換えるものではありません。
最適な用途サーバー側連携、QA、自動テスト、内部ツール。SSO、一元的なアクセスガバナンス、およびユーザーごとの権限を必要とするユーザー向けアプリ。
シナリオ推奨
QA / 自動テストAPIキー
CI/CDによるセキュリティレッドチーミングAPIキー
ビルダー制御の認可を使用する内部ツールAPIキー
Workatoを表示しないカスタムチャットUIAPIキー
会社SSOを使用する従業員ポータルOAuth 2.0
複数の組織にサービスを提供するマルチテナントアプリOAuth 2.0
IdP管理のアクセス制御を必要とするデプロイメントOAuth 2.0
モバイルアプリ、シングルページアプリ、またはパブリッククライアントOAuth 2.0

OAuth 2.0 PKCE認証フロー

OAuthクライアントは、PKCEを使用した認可コードフローにより、Workato Identity(id.workato.com)を通じてエンドユーザーを認証します。 クライアントシークレットは不要です。 OAuth Genieクライアントを作成したときに返されるoauth_client_idを使用します。

この認可フローを使用するには、次の手順を完了する必要があります:

1

code_verifierを生成して、43~128文字のランダムでURLセーフな文字列を作成し、code_challengebase64url(sha256(code_verifier))として導出します。

2

ユーザーを認可エンドポイントにリダイレクトします:

plaintext
https://id.workato.com/oauth/authorize?response_type=code
  &client_id=<oauth_client_id>
  &redirect_uri=<your_redirect_url>
  &scope=openid profile email
  &state=<random_state>
  &code_challenge=<code_challenge>
  &code_challenge_method=S256
3

Workato Identityがcodeと元のstateを含むredirect_uriにリダイレクトするときに、stateが一致することを確認します。

4

フォームエンコードされた本文を使用して、https://id.workato.com/oauth/tokenでコードをトークンと交換します。 クライアントシークレットは送信しないでください:

bash
curl -X POST https://id.workato.com/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=authorization_code" \
  -d "client_id=<oauth_client_id>" \
  -d "redirect_uri=<your_redirect_url>" \
  -d "code=<authorization_code>" \
  -d "code_verifier=<code_verifier>"
5

返されたaccess_tokenを、Headless API呼び出しでAuthorization: Bearer <access_token>として使用します。 トークンレスポンスには、refresh_tokenid_tokenも含まれます。

6

ユーザーに対話型ログインを再度強制しないように、有効期限が切れる前にアクセストークンを更新します(expires_in3600秒です)。 https://id.workato.com/oauth/tokenrefresh_tokenを交換し、新しいアクセストークンをサイレントに取得します:

bash
curl -X POST https://id.workato.com/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=refresh_token" \
  -d "client_id=<oauth_client_id>" \
  -d "refresh_token=<refresh_token>"

更新トークンは1回限りの使用でローテーションされます。更新ごとに新しいrefresh_tokenが返されます。 次回の更新のために新しい値を保持します。 デフォルトのopenid profile emailスコープをリクエストし、Workato Identityが拒否するoffline_accessは追加しないでください。

リダイレクトURLは、クライアントに登録されているoauth_redirect_urlと一致している必要があります。 前述の手順のコード交換は、ブラウザーで直接実行するのではなく、同一オリジンのバックエンドから実行します。 これにより、フローでクロスオリジン(CORS)の懸念がなくなり、トークン処理をサーバー側に維持できます。


クイックリファレンス

タイプリソース説明
GET/api/v1/genies/:genie_handle/chat/conversationsユーザーの会話を一覧表示します。
POST/api/v1/genies/:genie_handle/chat/conversations新しい会話を作成します。
GET/api/v1/genies/:genie_handle/chat/conversations/
:conversation_id
会話の詳細と状態を取得します。
GET/api/v1/genies/:genie_handle/chat/conversations/
:conversation_id/messages
会話のメッセージ履歴を取得します。
POST/api/v1/genies/:genie_handle/chat/conversations/
:conversation_id/messages
メッセージを送信し、ストリーミングレスポンスを受信します。
GET/api/v1/genies/:genie_handle/chat/conversations/
:conversation_id/genie-runs/:genie_run_id
メッセージストリームに再接続します。
GET/api/v1/genies/:genie_handle/chat/
conversations/events
最近のイベントを取得します。
POST/api/v1/genies/:genie_handle/chat/conversations/
:conversation_id/skill_approval/:call_id
スキル確認を承認または拒否します。
POST/api/v1/genies/:genie_handle/chat/
runtime_connection/:runtime_connection_attempt_id/link
ランタイムコネクションの認証リンクを取得します。
POST/api/v1/genies/:genie_handle/chat/
runtime_connection/:runtime_connection_attempt_id/reject
ランタイムコネクションリクエストを拒否します。
POST/api/v1/genies/:genie_handle/chat/conversations/
:conversation_id/upload
メッセージに添付するファイルをアップロードします。

会話の一覧表示

認証済みユーザーの会話のリストを取得します。 結果はcreated_atタイムスタンプの降順で一覧表示されます。

bash
GET /api/v1/genies/:genie_handle/chat/conversations

URLパラメータ

名前タイプ説明
genie_handlestring
必須
Genieハンドル。

クエリパラメータ

名前タイプ説明
limitinteger
任意
返す会話の数。 デフォルトは50です。
cursorstring
任意
前のレスポンスからのページネーションカーソル。

レスポンス

名前タイプ説明
list[]array会話のリスト。
list[].conversation_idstring会話ID。
list[].topicstring会話のトピック。
list[].last_updated_atstring最終更新のタイムスタンプ。
list[].created_atstring会話が作成された時刻のタイムスタンプ。
total_countinteger会話の合計数。
cursorstring結果の次のページのカーソル。

会話を作成

Genieとの新しい会話を作成します。

bash
POST /api/v1/genies/:genie_handle/chat/conversations

URLパラメータ

名前タイプ説明
genie_handlestring
必須
Genieハンドル。

レスポンス

名前タイプ説明
conversation_idstring新しい会話のID。

会話の取得

会話の詳細と現在の状態を取得します。

bash
GET /api/v1/genies/:genie_handle/chat/conversations/:conversation_id

URLパラメータ

名前タイプ説明
genie_handlestring
必須
Genieハンドル。
conversation_idstring
必須
会話ID。

レスポンス

名前タイプ説明
updated_atstring最終更新のタイムスタンプ。
statestring会話の現在の状態。 idle(アクティブなターンなし)、ai_running(モデルが生成中)、skill_processing(スキルを実行中、ランタイムコネクション認可でターンが一時停止している間を含む)、またはawaiting_approvalskill.confirmation_requiredで一時停止中)のいずれか。
last_eventobject会話内の最新イベント。

メッセージの取得

会話のメッセージ履歴を取得します。 結果はcreated_atタイムスタンプの降順で一覧表示されます。

bash
GET /api/v1/genies/:genie_handle/chat/conversations/:conversation_id/messages

URLパラメータ

名前タイプ説明
genie_handlestring
必須
Genieハンドル。
conversation_idstring
必須
会話ID。

クエリパラメーター

名前タイプ説明
cursorstring
任意
前のレスポンスからのページネーションカーソル。
limitinteger
任意
返すメッセージの数。 デフォルトは100です。

レスポンス

名前タイプ説明
conversation_idstring会話ID。
messages[]arrayメッセージのリスト。
messages[].message_idstringメッセージID。
messages[].sourcestringメッセージの発信元。 userまたはgenieのいずれか。
messages[].contentstringメッセージのテキストコンテンツ。
messages[].genie_run_idstringメッセージが属するリクエスト/レスポンスサイクルのID。
messages[].created_atstringRFC3339形式のメッセージのタイムスタンプ。
total_countinteger会話内のメッセージの合計数。
cursorstring結果の次のページのカーソル。

メッセージの送信

ユーザーメッセージを送信し、Genieが処理して応答する際のイベントのリアルタイムストリームを受信します。

bash
POST /api/v1/genies/:genie_handle/chat/conversations/:conversation_id/messages

URLパラメータ

名前タイプ説明
genie_handlestring
必須
Genieハンドル。
conversation_idstring
必須
会話ID。

ペイロード

名前タイプ説明
messagestring
必須
ユーザーのメッセージ。 最大12 KB。
file_idstring
任意
このメッセージに添付する、以前にアップロードされたファイルのID。
streamboolean
任意
レスポンスでSSEストリームを受信するにはtrueに設定します。 デフォルトはfalseです。

レスポンス

streamfalseの場合、次の本文を含むHTTP 202を返します。

名前タイプ説明
conversation_idstring会話ID。
genie_run_idstringGenie実行のID。 ストリームに再接続するにはこれを使用します。

streamtrueの場合、レスポンスはServer-Sent Eventsのストリームになります。 Genieが処理を終了するとストリームが閉じます。これはprocessing.finishedイベントで示されます。


ストリームへの再接続

特定のGenie実行のSSEストリームを再度開きます。 切断後にイベントを復旧するにはこれを使用します。 最後に正常に受信したイベントのIDをLast-Event-IDヘッダーで渡します。

bash
GET /api/v1/genies/:genie_handle/chat/conversations/:conversation_id/genie-runs/:genie_run_id

URLパラメータ

名前タイプ説明
genie_handlestring
必須
Genieハンドル。
conversation_idstring
必須
会話ID。
genie_run_idstring
必須
メッセージの送信によって返されるGenie実行ID。

ヘッダー

名前タイプ説明
Last-Event-IDstring
任意
最後に正常に受信したイベントのID。 ストリームはこのポイントからイベントを再生します。

レスポンス

レスポンスはServer-Sent Eventsのストリームです。


イベントの取得

最近のイベントを取得します。 切断後に取りこぼしたイベントを手動で取得するためのフォールバックとして使用します。 イベントは古い順に返され、24時間利用できます。

bash
GET /api/v1/genies/:genie_handle/chat/conversations/events

URLパラメータ

名前タイプ説明
genie_handlestring
必須
Genieハンドル。

クエリパラメータ

名前タイプ説明
since_created_atstring
任意
イベント作成時刻の下限(含む)。RFC3339タイムスタンプとして指定します(例: 2026-05-26T12:00:00.123456Z)。 前のレスポンスのnext_since_created_atを渡して次のページを取得します。
conversation_idstring
任意
会話IDでイベントをフィルタリングします。
limitinteger
任意
ページサイズ。 デフォルトは100です。

レスポンス

名前タイプ説明
events[]arrayイベントの配列。古い順に並べられます。
events[].conversation_idstring会話ID。
events[].genie_handlestringGenieハンドル(文字列識別子。例: gin-AaDX9axF-CNtgQn-B6)。
events[].genie_run_idstringこのイベントが属するGenie実行のID。
events[].typestringイベントタイプ。
events[].event_idstringこのイベントを識別するUUIDv7。
events[].seq_numintegerGenie実行ごとの単調増加シーケンス番号。
events[].created_atstringイベントが永続化されたときのゲートウェイ側タイムスタンプ(RFC3339形式)。
next_since_created_atstring継続カーソル。 存在する場合、この値を次のリクエストのsince_created_atとして渡して次のページを取得します。

スキルの承認または拒否

スキル確認リクエストを承認または拒否します。 Genieがskill.confirmation_requiredイベントを発行したときに使用します。

bash
POST /api/v1/genies/:genie_handle/chat/conversations/:conversation_id/skill_approval/:call_id

URLパラメータ

名前タイプ説明
genie_handlestring
必須
Genieハンドル。
conversation_idstring
必須
会話ID。
call_idstring
必須
skill.confirmation_requiredイベントからのCall ID。

ペイロード

名前タイプ説明
resolutionstring
必須
approvedまたはrejectedのいずれか。
rejection_reasonstring
任意
拒否の理由。 resolutionrejectedの場合にのみ使用されます。

ランタイムコネクションの認証リンクを取得します。 Genieがruntime_connection.auth_requiredイベントを発行したときに使用します。

bash
POST /api/v1/genies/:genie_handle/chat/runtime_connection/:runtime_connection_attempt_id/link
名前タイプ説明
genie_handlestring
必須
Genieハンドル。
runtime_connection_attempt_idstring
必須
保留中のランタイムコネクション認可試行に対してサーバーが生成したID。runtime_connection.auth_required SSEイベントで配信されます。
名前タイプ説明
statusstringauth_requiredまたはauthorizedのいずれか。 authorizedの場合、コネクションはすでに完了しており、ユーザーのアクションは不要です。
auth_link.urlstringユーザーに提示する認証URL。 statusauth_requiredの場合にのみ存在します。
auth_link.expires_atstring認証URLの有効期限(RFC3339形式)。 statusauth_requiredの場合にのみ存在します。
auth_link.connector_namestring人が読めるコネクターラベル(例: SalesforceGoogle Drive)。 statusauth_requiredの場合にのみ存在します。

ランタイムコネクションの拒否

ランタイムコネクションリクエストを拒否します。

bash
POST /api/v1/genies/:genie_handle/chat/runtime_connection/:runtime_connection_attempt_id/reject

URLパラメータ

名前タイプ説明
genie_handlestring
必須
Genieハンドル。
runtime_connection_attempt_idstring
必須
保留中のランタイムコネクション認可試行に対してサーバーが生成したID。runtime_connection.auth_required SSEイベントで配信されます。

ペイロード

名前タイプ説明
reasonstring
任意
拒否の理由。

ファイルのアップロード

後続のメッセージに添付するファイルをアップロードします。 メッセージの送信file_idパラメータで渡すfile_idを返します。 最大ファイルサイズは20 MBです。

bash
POST /api/v1/genies/:genie_handle/chat/conversations/:conversation_id/upload

URLパラメータ

名前タイプ説明
genie_handlestring
必須
Genieハンドル。
conversation_idstring
必須
会話ID。

ペイロード

名前タイプ説明
filefile
必須
ファイルデータ(multipart/form-data)。 最大サイズは20 MBです。

レスポンス

名前タイプ説明
file_idstringアップロードされたファイルのID。

SSEイベント

stream: trueを指定してメッセージを送信すると、Genieのレスポンスのライフサイクル全体をカバーするSSEストリームを含むレスポンスを取得できます。

イベントは24時間永続化され、イベントの取得エンドポイントを通じて取得できます。

ベースイベント形状

すべてのイベントは次の基本フィールドを共有します。

フィールドタイプ説明
conversation_idstring会話ID。
genie_handlestringGenieハンドル(文字列識別子。例: gin-AaDX9axF-CNtgQn-B6)。
genie_run_idstringこのイベントが属するGenie実行のID。
typestringイベントタイプ。
event_idstringこのイベントを識別するUUIDv7。
seq_numintegerGenie実行ごとの単調増加シーケンス番号。
created_atstringイベントが永続化されたときのゲートウェイ側タイムスタンプ(RFC3339形式)。

イベントタイプ

イベント追加フィールド説明
processing
.started
Genieがリクエストの処理を開始しました。
processing
.finished
Genieが処理を完了しました。
agent
.message
  • message
Genieのレスポンスメッセージ。
skill
.running
  • skill_name
  • skill_id
スキルの実行が開始されました。
skill
.completed
  • skill_name
  • skill_id
スキルが正常に完了しました。
skill
.failed
  • skill_name
  • skill_id
  • error
スキルの実行に失敗しました。
skill
.stopped
  • skill_name
  • skill_id
一部のランタイムバージョンによってskill.completedの代わりに出力される終端バリアント。 正常な完了として扱います。
skill
.confirmation
_required
  • call_id
  • skill_name
  • skill_id
  • skill_parameters
  • skill_
    parameter_schema
スキルの実行前にユーザーの確認が必要です。 call_idスキルの承認または拒否で使用します。
runtime_connection
.auth_required
  • runtime_connection
    _attempt_id
  • auth_link
スキルで、ユーザーがコネクションを認証する必要があります。 ランタイムコネクションリンクを取得runtime_connection
_attempt_idを使用します。
system.ping長時間実行中または一時停止中のターンの間、約30秒ごとに送信されるキープアライブハートビート。 無視してください。
system
.stream_interrupted
  • genie_run_id
  • last_seq_num
  • reason
  • retry_after_ms
ターンが完了する前に、サーバーがストリームを閉じました(例: 長い一時停止中)。 ターンが失敗したと想定するのではなく、保持された状態から復旧します。会話タイムラインを再構築を参照してください。

制限事項

Headless APIエンドポイントには次の制限があります。

  • Action Boardはサポートされていません
  • App Eventsはサポートされていません
  • Genieは、アタッチされた単一のクライアントをサポートします。 クライアントとGenieの関係は1:1です。2つ目のクライアントをアタッチすると、409競合が返されます。 再ポイントするには、まず既存のクライアントをデタッチします。

Last updated: