{
"tool_call_id": "call_example",
"requested_responder_type": "human",
"title": "Approve the result",
"fields": [
{
"name": "approved",
"type": "confirm",
"label": "Approve the result?",
"required": true
}
]
}curl --request POST \
--url https://api.veryfront.com/runs/{run_id}/input-requests \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"title": "Approve the result",
"fields": [
{
"name": "approved",
"type": "confirm"
}
]
}
'import requests
url = "https://api.veryfront.com/runs/{run_id}/input-requests"
payload = {
"title": "Approve the result",
"fields": [
{
"name": "approved",
"type": "confirm"
}
]
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({title: 'Approve the result', fields: [{name: 'approved', type: 'confirm'}]})
};
fetch('https://api.veryfront.com/runs/{run_id}/input-requests', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.veryfront.com/runs/{run_id}/input-requests",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'Approve the result',
'fields' => [
[
'name' => 'approved',
'type' => 'confirm'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.veryfront.com/runs/{run_id}/input-requests"
payload := strings.NewReader("{\n \"title\": \"Approve the result\",\n \"fields\": [\n {\n \"name\": \"approved\",\n \"type\": \"confirm\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.veryfront.com/runs/{run_id}/input-requests")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Approve the result\",\n \"fields\": [\n {\n \"name\": \"approved\",\n \"type\": \"confirm\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.veryfront.com/runs/{run_id}/input-requests")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"Approve the result\",\n \"fields\": [\n {\n \"name\": \"approved\",\n \"type\": \"confirm\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"input_request_id": "00000000-0000-4000-8000-000000000001",
"project_id": "00000000-0000-4000-8000-000000000001",
"run_id": "11111111-1111-4111-8111-111111111111",
"title": "Approve the result",
"fields": [
{
"required": false,
"name": "approved",
"type": "confirm"
}
],
"status": "open",
"requested_responder_type": "human",
"response": null,
"created_at": "2026-10-02T10:00:00Z"
}Create input request
Create an input request.
{
"tool_call_id": "call_example",
"requested_responder_type": "human",
"title": "Approve the result",
"fields": [
{
"name": "approved",
"type": "confirm",
"label": "Approve the result?",
"required": true
}
]
}curl --request POST \
--url https://api.veryfront.com/runs/{run_id}/input-requests \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"title": "Approve the result",
"fields": [
{
"name": "approved",
"type": "confirm"
}
]
}
'import requests
url = "https://api.veryfront.com/runs/{run_id}/input-requests"
payload = {
"title": "Approve the result",
"fields": [
{
"name": "approved",
"type": "confirm"
}
]
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({title: 'Approve the result', fields: [{name: 'approved', type: 'confirm'}]})
};
fetch('https://api.veryfront.com/runs/{run_id}/input-requests', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.veryfront.com/runs/{run_id}/input-requests",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'Approve the result',
'fields' => [
[
'name' => 'approved',
'type' => 'confirm'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.veryfront.com/runs/{run_id}/input-requests"
payload := strings.NewReader("{\n \"title\": \"Approve the result\",\n \"fields\": [\n {\n \"name\": \"approved\",\n \"type\": \"confirm\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.veryfront.com/runs/{run_id}/input-requests")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Approve the result\",\n \"fields\": [\n {\n \"name\": \"approved\",\n \"type\": \"confirm\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.veryfront.com/runs/{run_id}/input-requests")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"Approve the result\",\n \"fields\": [\n {\n \"name\": \"approved\",\n \"type\": \"confirm\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"input_request_id": "00000000-0000-4000-8000-000000000001",
"project_id": "00000000-0000-4000-8000-000000000001",
"run_id": "11111111-1111-4111-8111-111111111111",
"title": "Approve the result",
"fields": [
{
"required": false,
"name": "approved",
"type": "confirm"
}
],
"status": "open",
"requested_responder_type": "human",
"response": null,
"created_at": "2026-10-02T10:00:00Z"
}Authorizations
Use a JWT bearer token or a Veryfront API key in the Authorization header.
Headers
1 - 128Path Parameters
Run that owns the input request. A fresh creation request without a recorded waiting tool call or tool_call_id, or with a duplicate open run/tool-call request, returns 409. An authorized retry of the identical request with the same idempotency key returns its stored result.
Body
1 - 10001 - 100 elements- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
Show child attributes
Show child attributes
Tool invocation to request input for. Defaults to the run’s current waiting invocation.
1 - 128human, agent, system 20000Show child attributes
Show child attributes
Response
Input request created or idempotently replayed
Unique input request ID.
Project inherited from the run.
Run waiting for this input.
Question or decision shown to the responder.
1 - 1000Fields the responder can fill in.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
Show child attributes
Show child attributes
Current resolution state.
open, submitted, cancelled, expired Required responder role; the authenticated actor identifies who actually responded.
human, agent, system Submitted response, or null before submission or after cancellation or expiry.
Show child attributes
Show child attributes
When the request was created.
When the request expires.
When the request was submitted, cancelled or expired.
Tool invocation waiting for the response.
1 - 128Conversation inherited from the run.
Additional instructions for the responder.
Additional resource metadata.
Show child attributes
Show child attributes