curl --request PATCH \
--url 'https://api-prod.usefini.com/v2/hc-tools/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public' \
--header 'Authorization: Bearer fini_your_api_key' \
--header 'Content-Type: application/json' \
--data '{
"name": "Refund policy",
"description": "Refund-policy conversations to re-check before prompt changes.",
"alwaysGet": false,
"inputSchema": [
"4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3"
],
"outputSchema": [
"4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3"
]
}'
const response = await fetch('https://api-prod.usefini.com/v2/hc-tools/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public', {
method: 'PATCH',
headers: {
Authorization: 'Bearer fini_your_api_key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
'name': 'Refund policy',
'description': 'Refund-policy conversations to re-check before prompt changes.',
'alwaysGet': false,
'inputSchema': [
'4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3'
],
'outputSchema': [
'4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3'
]
}
)
});
const data = await response.json();
import requests
response = requests.patch(
"https://api-prod.usefini.com/v2/hc-tools/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public",
headers={"Authorization": "Bearer fini_your_api_key", "Content-Type": "application/json"},
json={
"name": "Refund policy",
"description": "Refund-policy conversations to re-check before prompt changes.",
"alwaysGet": False,
"inputSchema": [
"4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3"
],
"outputSchema": [
"4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3"
]
},
)
data = response.json()
{
"id": "4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3",
"name": "Cancel subscription",
"description": "Cancel an active subscription in billing.",
"inputFields": [
{
"name": "customerId",
"type": "string",
"required": true
}
],
"outputFields": [
{
"name": "confirmationId",
"type": "string"
},
{
"name": "effectiveDate",
"type": "string"
}
],
"createdAt": "2026-07-28T08:55:32.000Z",
"updatedAt": "2026-07-28T09:10:18.000Z"
}
Actions
Update action
Update an action, including its input and output schema.
PATCH
/
v2
/
hc-tools
/
{id}
/
public
curl --request PATCH \
--url 'https://api-prod.usefini.com/v2/hc-tools/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public' \
--header 'Authorization: Bearer fini_your_api_key' \
--header 'Content-Type: application/json' \
--data '{
"name": "Refund policy",
"description": "Refund-policy conversations to re-check before prompt changes.",
"alwaysGet": false,
"inputSchema": [
"4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3"
],
"outputSchema": [
"4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3"
]
}'
const response = await fetch('https://api-prod.usefini.com/v2/hc-tools/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public', {
method: 'PATCH',
headers: {
Authorization: 'Bearer fini_your_api_key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
'name': 'Refund policy',
'description': 'Refund-policy conversations to re-check before prompt changes.',
'alwaysGet': false,
'inputSchema': [
'4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3'
],
'outputSchema': [
'4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3'
]
}
)
});
const data = await response.json();
import requests
response = requests.patch(
"https://api-prod.usefini.com/v2/hc-tools/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public",
headers={"Authorization": "Bearer fini_your_api_key", "Content-Type": "application/json"},
json={
"name": "Refund policy",
"description": "Refund-policy conversations to re-check before prompt changes.",
"alwaysGet": False,
"inputSchema": [
"4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3"
],
"outputSchema": [
"4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3"
]
},
)
data = response.json()
{
"id": "4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3",
"name": "Cancel subscription",
"description": "Cancel an active subscription in billing.",
"inputFields": [
{
"name": "customerId",
"type": "string",
"required": true
}
],
"outputFields": [
{
"name": "confirmationId",
"type": "string"
},
{
"name": "effectiveDate",
"type": "string"
}
],
"createdAt": "2026-07-28T08:55:32.000Z",
"updatedAt": "2026-07-28T09:10:18.000Z"
}
Updates one
Action. This is where you set the inputSchema and outputSchema.
An action returns nothing to a rule unless it declares an
outputSchema. For fields sourced from an external API call, set source: "apiResponse" and map each output field with path: "[stepId].[responseMappingKey]".Headers
string
required
Bearer token containing your Fini workspace API key. Format:
Bearer fini_... The key needs write scope.string
required
application/jsonPath parameters
string
required
Action ID to update.
Body parameters
All fields are optional. Send only what you want to change.string
Updated display name.
string
Updated description.
boolean
Send
true to convert the action into an attribute.InputSchemaField[]
Typed inputs. See InputSchemaField.
OutputSchemaField[]
Typed outputs. See OutputSchemaField.
Response
Returns the updatedAction / Attribute.
curl --request PATCH \
--url 'https://api-prod.usefini.com/v2/hc-tools/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public' \
--header 'Authorization: Bearer fini_your_api_key' \
--header 'Content-Type: application/json' \
--data '{
"name": "Refund policy",
"description": "Refund-policy conversations to re-check before prompt changes.",
"alwaysGet": false,
"inputSchema": [
"4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3"
],
"outputSchema": [
"4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3"
]
}'
const response = await fetch('https://api-prod.usefini.com/v2/hc-tools/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public', {
method: 'PATCH',
headers: {
Authorization: 'Bearer fini_your_api_key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
'name': 'Refund policy',
'description': 'Refund-policy conversations to re-check before prompt changes.',
'alwaysGet': false,
'inputSchema': [
'4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3'
],
'outputSchema': [
'4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3'
]
}
)
});
const data = await response.json();
import requests
response = requests.patch(
"https://api-prod.usefini.com/v2/hc-tools/4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3/public",
headers={"Authorization": "Bearer fini_your_api_key", "Content-Type": "application/json"},
json={
"name": "Refund policy",
"description": "Refund-policy conversations to re-check before prompt changes.",
"alwaysGet": False,
"inputSchema": [
"4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3"
],
"outputSchema": [
"4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3"
]
},
)
data = response.json()
{
"id": "4f5ef695-d03b-4d56-8fef-7f2bd5c17ef3",
"name": "Cancel subscription",
"description": "Cancel an active subscription in billing.",
"inputFields": [
{
"name": "customerId",
"type": "string",
"required": true
}
],
"outputFields": [
{
"name": "confirmationId",
"type": "string"
},
{
"name": "effectiveDate",
"type": "string"
}
],
"createdAt": "2026-07-28T08:55:32.000Z",
"updatedAt": "2026-07-28T09:10:18.000Z"
}
Errors
400 Bad Request
400 Bad Request
The body is malformed.
401 Unauthorized
401 Unauthorized
The API key is missing, malformed, revoked, or invalid.
403 Forbidden
403 Forbidden
The API key does not include the
write scope required for this route.404 Not Found
404 Not Found
No action with that ID exists in your workspace.
500 Internal Server Error
500 Internal Server Error
Fini failed while updating the record in storage.
Was this page helpful?
⌘I

