curl --request PUT \
--url https://api.zapier.com/agentic-management/v0/{workflow_id}/intent \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"intent": "When Stripe reports a new charge, add one row to the finance sheet with the amount, the customer email, and the charge date. Never write a row twice for the same charge."
}
'import requests
url = "https://api.zapier.com/agentic-management/v0/{workflow_id}/intent"
payload = { "intent": "When Stripe reports a new charge, add one row to the finance sheet with the amount, the customer email, and the charge date. Never write a row twice for the same charge." }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
intent: 'When Stripe reports a new charge, add one row to the finance sheet with the amount, the customer email, and the charge date. Never write a row twice for the same charge.'
})
};
fetch('https://api.zapier.com/agentic-management/v0/{workflow_id}/intent', 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.zapier.com/agentic-management/v0/{workflow_id}/intent",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'intent' => 'When Stripe reports a new charge, add one row to the finance sheet with the amount, the customer email, and the charge date. Never write a row twice for the same charge.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.zapier.com/agentic-management/v0/{workflow_id}/intent"
payload := strings.NewReader("{\n \"intent\": \"When Stripe reports a new charge, add one row to the finance sheet with the amount, the customer email, and the charge date. Never write a row twice for the same charge.\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
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.put("https://api.zapier.com/agentic-management/v0/{workflow_id}/intent")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"intent\": \"When Stripe reports a new charge, add one row to the finance sheet with the amount, the customer email, and the charge date. Never write a row twice for the same charge.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zapier.com/agentic-management/v0/{workflow_id}/intent")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"intent\": \"When Stripe reports a new charge, add one row to the finance sheet with the amount, the customer email, and the charge date. Never write a row twice for the same charge.\"\n}"
response = http.request(request)
puts response.read_body{
"workflow_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workflow_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"intent": "<string>",
"updated_at": "2023-11-07T05:31:56Z"
}{
"errors": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"links": {
"about": "<string>"
},
"status": "<string>",
"code": "bad-request",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>",
"header": "<string>"
},
"meta": {
"cap": "messages_per_day",
"used": 123,
"cap_value": 123,
"reset_at": "2023-11-07T05:31:56Z"
}
}
]
}{
"errors": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"links": {
"about": "<string>"
},
"status": "<string>",
"code": "bad-request",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>",
"header": "<string>"
},
"meta": {
"cap": "messages_per_day",
"used": 123,
"cap_value": 123,
"reset_at": "2023-11-07T05:31:56Z"
}
}
]
}{
"errors": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"links": {
"about": "<string>"
},
"status": "<string>",
"code": "bad-request",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>",
"header": "<string>"
},
"meta": {
"cap": "messages_per_day",
"used": 123,
"cap_value": 123,
"reset_at": "2023-11-07T05:31:56Z"
}
}
]
}{
"errors": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"links": {
"about": "<string>"
},
"status": "<string>",
"code": "bad-request",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>",
"header": "<string>"
},
"meta": {
"cap": "messages_per_day",
"used": 123,
"cap_value": 123,
"reset_at": "2023-11-07T05:31:56Z"
}
}
]
}{
"errors": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"links": {
"about": "<string>"
},
"status": "<string>",
"code": "bad-request",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>",
"header": "<string>"
},
"meta": {
"cap": "messages_per_day",
"used": 123,
"cap_value": 123,
"reset_at": "2023-11-07T05:31:56Z"
}
}
]
}{
"errors": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"links": {
"about": "<string>"
},
"status": "<string>",
"code": "bad-request",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>",
"header": "<string>"
},
"meta": {
"cap": "messages_per_day",
"used": 123,
"cap_value": 123,
"reset_at": "2023-11-07T05:31:56Z"
}
}
]
}Create or update the declared intent for a workflow version
Upserts the natural-language intent for one workflow version. One row per version: a second call for the same version replaces the stored text, and a call for a different version records a separate intent. Agentic Management modes read the intent of the version their event batch ran on when they judge whether a proposed change still serves what the workflow is for. Omit workflow_version_id to write against the workflow’s current published version.
curl --request PUT \
--url https://api.zapier.com/agentic-management/v0/{workflow_id}/intent \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"intent": "When Stripe reports a new charge, add one row to the finance sheet with the amount, the customer email, and the charge date. Never write a row twice for the same charge."
}
'import requests
url = "https://api.zapier.com/agentic-management/v0/{workflow_id}/intent"
payload = { "intent": "When Stripe reports a new charge, add one row to the finance sheet with the amount, the customer email, and the charge date. Never write a row twice for the same charge." }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
intent: 'When Stripe reports a new charge, add one row to the finance sheet with the amount, the customer email, and the charge date. Never write a row twice for the same charge.'
})
};
fetch('https://api.zapier.com/agentic-management/v0/{workflow_id}/intent', 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.zapier.com/agentic-management/v0/{workflow_id}/intent",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'intent' => 'When Stripe reports a new charge, add one row to the finance sheet with the amount, the customer email, and the charge date. Never write a row twice for the same charge.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.zapier.com/agentic-management/v0/{workflow_id}/intent"
payload := strings.NewReader("{\n \"intent\": \"When Stripe reports a new charge, add one row to the finance sheet with the amount, the customer email, and the charge date. Never write a row twice for the same charge.\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
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.put("https://api.zapier.com/agentic-management/v0/{workflow_id}/intent")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"intent\": \"When Stripe reports a new charge, add one row to the finance sheet with the amount, the customer email, and the charge date. Never write a row twice for the same charge.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zapier.com/agentic-management/v0/{workflow_id}/intent")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"intent\": \"When Stripe reports a new charge, add one row to the finance sheet with the amount, the customer email, and the charge date. Never write a row twice for the same charge.\"\n}"
response = http.request(request)
puts response.read_body{
"workflow_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workflow_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"intent": "<string>",
"updated_at": "2023-11-07T05:31:56Z"
}{
"errors": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"links": {
"about": "<string>"
},
"status": "<string>",
"code": "bad-request",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>",
"header": "<string>"
},
"meta": {
"cap": "messages_per_day",
"used": 123,
"cap_value": 123,
"reset_at": "2023-11-07T05:31:56Z"
}
}
]
}{
"errors": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"links": {
"about": "<string>"
},
"status": "<string>",
"code": "bad-request",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>",
"header": "<string>"
},
"meta": {
"cap": "messages_per_day",
"used": 123,
"cap_value": 123,
"reset_at": "2023-11-07T05:31:56Z"
}
}
]
}{
"errors": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"links": {
"about": "<string>"
},
"status": "<string>",
"code": "bad-request",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>",
"header": "<string>"
},
"meta": {
"cap": "messages_per_day",
"used": 123,
"cap_value": 123,
"reset_at": "2023-11-07T05:31:56Z"
}
}
]
}{
"errors": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"links": {
"about": "<string>"
},
"status": "<string>",
"code": "bad-request",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>",
"header": "<string>"
},
"meta": {
"cap": "messages_per_day",
"used": 123,
"cap_value": 123,
"reset_at": "2023-11-07T05:31:56Z"
}
}
]
}{
"errors": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"links": {
"about": "<string>"
},
"status": "<string>",
"code": "bad-request",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>",
"header": "<string>"
},
"meta": {
"cap": "messages_per_day",
"used": 123,
"cap_value": 123,
"reset_at": "2023-11-07T05:31:56Z"
}
}
]
}{
"errors": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"links": {
"about": "<string>"
},
"status": "<string>",
"code": "bad-request",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>",
"parameter": "<string>",
"header": "<string>"
},
"meta": {
"cap": "messages_per_day",
"used": 123,
"cap_value": 123,
"reset_at": "2023-11-07T05:31:56Z"
}
}
]
}Authorizations
OAuth 2.0 authentication.
Path Parameters
Workflow ID to write intent for.
Query Parameters
The workflow version the intent describes. Intent belongs to one immutable version, not to the workflow as a whole. When omitted, the workflow's current published version is used, and the response reports which version was written. A version that belongs to a different workflow returns 404, as does a workflow with nothing published: there is no version to attach the text to.
Body
What this version of the workflow is for, in the owner's own terms: the outcome it exists to produce, the trigger it responds to, and any constraint that must hold. Plain prose, not code.
1 - 8000Response
OK
The workflow the intent belongs to.
The workflow version this read or write targeted, so a caller that omitted the parameter learns which version answered. null only on a read of a workflow that has nothing published yet.
The intent recorded against this version, or null when this version has none. Intent is never carried over from another version: text recorded against one version never answers a read of another.
When the intent was last written; null when never captured.
Was this page helpful?