人間の入力フォームを取得
対象アプリ:Chatflow、Workflow。
一時停止中の人間の入力フォームの内容を返します。Web アプリ配信が必要です。
人間の入力を呼び出す一連の流れについては、API 連携フロー を参照してください。
1 min read
get/form/human_input/{form_token}
Request example
curl --request GET \
--url https://api.dify.ai/v1/form/human_input/{form_token} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.dify.ai/v1/form/human_input/{form_token}"
headers = {
"Authorization": "Bearer <token>",
}
response = requests.request("GET", url, headers=headers)
print(response.text)const response = await fetch('https://api.dify.ai/v1/form/human_input/{form_token}', {
method: 'GET',
headers: {
'Authorization': 'Bearer <token>'
}
});
const data = await response.json();
console.log(data);<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.dify.ai/v1/form/human_input/{form_token}',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "https://api.dify.ai/v1/form/human_input/{form_token}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.dify.ai/v1/form/human_input/{form_token}"))
.header("Authorization", "Bearer <token>")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());require 'uri'
require 'net/http'
url = URI('https://api.dify.ai/v1/form/human_input/{form_token}')
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = url.scheme == 'https'
request = Net::HTTP::Get.new(url)
request['Authorization'] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyResponse
{
"expiration_time": 1745510400,
"form_content": "ドラフトを確認し、優先度を設定して、承認または修正を依頼してください。",
"inputs": [
{
"default": {
"selector": [],
"type": "constant",
"value": ""
},
"output_variable_name": "feedback",
"type": "paragraph"
},
{
"option_source": {
"selector": [],
"type": "constant",
"value": [
"low",
"medium",
"high"
]
},
"output_variable_name": "priority",
"type": "select"
},
{
"allowed_file_extensions": [],
"allowed_file_types": [
"image",
"document"
],
"allowed_file_upload_methods": [
"local_file",
"remote_url"
],
"output_variable_name": "attachment",
"type": "file"
},
{
"allowed_file_extensions": [],
"allowed_file_types": [
"image",
"document"
],
"allowed_file_upload_methods": [
"local_file",
"remote_url"
],
"number_limits": 5,
"output_variable_name": "attachments",
"type": "file-list"
}
],
"resolved_default_values": {
"feedback": ""
},
"user_actions": [
{
"button_style": "primary",
"id": "approve",
"title": "承認"
},
{
"button_style": "default",
"id": "reject",
"title": "修正を依頼"
}
]
}{
"code": "not_found",
"message": "Form not found",
"status": 404
}{
"code": "human_input_form_expired",
"message": "This form has expired, form_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": 412
}{
"code": "human_input_form_submitted",
"message": "This form has already been submitted by another user, form_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": 412
}get/form/human_input/{form_token}
Authorization
すべてのリクエストは API キーで認証します:Authorization: Bearer {API_KEY}。アプリのエンドポイントにはアプリの API キーを、ナレッジのエンドポイントにはナレッジベースの API キーを使用します(Dify API クイックスタート)。
キーはサーバーサイドで保管し、クライアントコードには決して埋め込まないでください。キーが欠落または無効なリクエストは HTTP 401(unauthorized)で失敗します。
Path parameters
一時停止中のフォームへのアクセストークン。ストリーミングモードのワークフローを実行エンドポイントまたはチャットメッセージを送信エンドポイントが返す
human_input_required イベントから取得します。Responses
application/json
フォーム内容の取得に成功しました。
Unix タイムスタンプ(秒)。この時刻以降、フォームは送信できなくなります。
ワークフロー変数を埋め込んだ、事前レンダリング済みのフォーム本文。
フォーム入力フィールドの定義。
Show child attributesHide child attributes
allowed_file_types に custom が含まれる場合に許可されるファイル拡張子。各拡張子には先頭の . を含めてください。たとえば .md です。file および file-list 入力に含まれます。受信者がアップロード可能なファイルカテゴリ。
file および file-list 入力に含まれます。値: image、 document、 audio、 video、 custom。受信者が使用できるアップロード方法。値:
local_file、 remote_url。 file および file-list 入力に含まれます。paragraph 入力の生のデフォルト値設定。クライアントはこのフィールドを直接解決すべきではありません。デフォルトの表示には resolved_default_values を使用してください。その他の入力タイプ、またはデフォルト値が未設定の場合、このキーは含まれません。受信者がアップロードできるファイルの最大数。
file-list 入力のみに含まれます。select 入力の選択肢のソース。 type が select の場合のみ含まれます。ワークフロー内でこの入力の送信値を参照する際の変数名。送信リクエストの
inputs オブジェクトのキーに対応します。フォーム入力コントロールの種類。利用可能な値:
paragraph (複数行テキスト入力)、 select (リストからの単一選択)、 file (単一ファイルアップロード)、 file-list (複数ファイルアップロード)。フォームに表示するための事前計算済みデフォルト値。入力の
output_variable_name をキーとします。デフォルト値がワークフロー変数から解決可能な paragraph 入力にのみ設定されます。解決可能なデフォルトがない入力では空になります。クライアントはこれらの値をそのまま表示してください。 default をクライアント側で再解決する必要はありません。すべての値は文字列化されています。Show child attributesHide child attributes
利用可能な送信アクション。
Show child attributesHide child attributes
ボタンの視覚スタイル。利用可能な値:
primary、 default、 accent、 ghost。アクションボタンの識別子。受信者がこのボタンを選択したときに、人間の入力フォームを送信 エンドポイントの
action として渡します。Length: max 20Pattern: ^[A-Za-z_][A-Za-z0-9_]*$