curl --request POST \
--url 'https://api.hubapi.com/automation/actions/2026-09/{appId}?hapikey=' \
--header 'Content-Type: application/json' \
--data '
{
"actionUrl": "<string>",
"functions": [
{
"functionSource": "<string>",
"id": "<string>"
}
],
"inputFields": [
{
"isRequired": true,
"typeDefinition": {
"name": "<string>",
"options": [
{
"label": "<string>",
"value": "<string>",
"description": "<string>",
"displayOrder": 123
}
],
"description": "<string>",
"helpText": "<string>",
"label": "<string>",
"optionsUrl": "<string>",
"referencedObjectType": "OWNER"
},
"supportedValueTypes": []
}
],
"labels": {},
"objectTypes": [
"<string>"
],
"published": true,
"archivedAt": 123,
"executionRules": [
{
"conditions": {},
"labelName": "<string>"
}
],
"inputFieldDependencies": [
{
"controllingFieldName": "<string>",
"dependencyType": "SINGLE_FIELD",
"dependentFieldNames": [
"<string>"
]
}
],
"outputFields": [
{
"typeDefinition": {
"externalOptions": true,
"name": "<string>",
"options": [
{
"description": "<string>",
"displayOrder": 123,
"doubleData": 123,
"hidden": true,
"label": "<string>",
"readOnly": true,
"value": "<string>"
}
],
"schema": {
"type": "INTEGER",
"maximum": 123,
"minimum": 123
},
"useChirp": true,
"description": "<string>",
"externalOptionsReferenceType": "<string>",
"helpText": "<string>",
"label": "<string>",
"optionsUrl": "<string>"
}
}
]
}
'import requests
url = "https://api.hubapi.com/automation/actions/2026-09/{appId}?hapikey="
payload = {
"actionUrl": "<string>",
"functions": [
{
"functionSource": "<string>",
"id": "<string>"
}
],
"inputFields": [
{
"isRequired": True,
"typeDefinition": {
"name": "<string>",
"options": [
{
"label": "<string>",
"value": "<string>",
"description": "<string>",
"displayOrder": 123
}
],
"description": "<string>",
"helpText": "<string>",
"label": "<string>",
"optionsUrl": "<string>",
"referencedObjectType": "OWNER"
},
"supportedValueTypes": []
}
],
"labels": {},
"objectTypes": ["<string>"],
"published": True,
"archivedAt": 123,
"executionRules": [
{
"conditions": {},
"labelName": "<string>"
}
],
"inputFieldDependencies": [
{
"controllingFieldName": "<string>",
"dependencyType": "SINGLE_FIELD",
"dependentFieldNames": ["<string>"]
}
],
"outputFields": [{ "typeDefinition": {
"externalOptions": True,
"name": "<string>",
"options": [
{
"description": "<string>",
"displayOrder": 123,
"doubleData": 123,
"hidden": True,
"label": "<string>",
"readOnly": True,
"value": "<string>"
}
],
"schema": {
"type": "INTEGER",
"maximum": 123,
"minimum": 123
},
"useChirp": True,
"description": "<string>",
"externalOptionsReferenceType": "<string>",
"helpText": "<string>",
"label": "<string>",
"optionsUrl": "<string>"
} }]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
actionUrl: '<string>',
functions: [{functionSource: '<string>', id: '<string>'}],
inputFields: [
{
isRequired: true,
typeDefinition: {
name: '<string>',
options: [
{
label: '<string>',
value: '<string>',
description: '<string>',
displayOrder: 123
}
],
description: '<string>',
helpText: '<string>',
label: '<string>',
optionsUrl: '<string>',
referencedObjectType: 'OWNER'
},
supportedValueTypes: []
}
],
labels: {},
objectTypes: ['<string>'],
published: true,
archivedAt: 123,
executionRules: [{conditions: {}, labelName: '<string>'}],
inputFieldDependencies: [
{
controllingFieldName: '<string>',
dependencyType: 'SINGLE_FIELD',
dependentFieldNames: ['<string>']
}
],
outputFields: [
{
typeDefinition: {
externalOptions: true,
name: '<string>',
options: [
{
description: '<string>',
displayOrder: 123,
doubleData: 123,
hidden: true,
label: '<string>',
readOnly: true,
value: '<string>'
}
],
schema: {type: 'INTEGER', maximum: 123, minimum: 123},
useChirp: true,
description: '<string>',
externalOptionsReferenceType: '<string>',
helpText: '<string>',
label: '<string>',
optionsUrl: '<string>'
}
}
]
})
};
fetch('https://api.hubapi.com/automation/actions/2026-09/{appId}?hapikey=', 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.hubapi.com/automation/actions/2026-09/{appId}?hapikey=",
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([
'actionUrl' => '<string>',
'functions' => [
[
'functionSource' => '<string>',
'id' => '<string>'
]
],
'inputFields' => [
[
'isRequired' => true,
'typeDefinition' => [
'name' => '<string>',
'options' => [
[
'label' => '<string>',
'value' => '<string>',
'description' => '<string>',
'displayOrder' => 123
]
],
'description' => '<string>',
'helpText' => '<string>',
'label' => '<string>',
'optionsUrl' => '<string>',
'referencedObjectType' => 'OWNER'
],
'supportedValueTypes' => [
]
]
],
'labels' => [
],
'objectTypes' => [
'<string>'
],
'published' => true,
'archivedAt' => 123,
'executionRules' => [
[
'conditions' => [
],
'labelName' => '<string>'
]
],
'inputFieldDependencies' => [
[
'controllingFieldName' => '<string>',
'dependencyType' => 'SINGLE_FIELD',
'dependentFieldNames' => [
'<string>'
]
]
],
'outputFields' => [
[
'typeDefinition' => [
'externalOptions' => true,
'name' => '<string>',
'options' => [
[
'description' => '<string>',
'displayOrder' => 123,
'doubleData' => 123,
'hidden' => true,
'label' => '<string>',
'readOnly' => true,
'value' => '<string>'
]
],
'schema' => [
'type' => 'INTEGER',
'maximum' => 123,
'minimum' => 123
],
'useChirp' => true,
'description' => '<string>',
'externalOptionsReferenceType' => '<string>',
'helpText' => '<string>',
'label' => '<string>',
'optionsUrl' => '<string>'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"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.hubapi.com/automation/actions/2026-09/{appId}?hapikey="
payload := strings.NewReader("{\n \"actionUrl\": \"<string>\",\n \"functions\": [\n {\n \"functionSource\": \"<string>\",\n \"id\": \"<string>\"\n }\n ],\n \"inputFields\": [\n {\n \"isRequired\": true,\n \"typeDefinition\": {\n \"name\": \"<string>\",\n \"options\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<string>\",\n \"description\": \"<string>\",\n \"displayOrder\": 123\n }\n ],\n \"description\": \"<string>\",\n \"helpText\": \"<string>\",\n \"label\": \"<string>\",\n \"optionsUrl\": \"<string>\",\n \"referencedObjectType\": \"OWNER\"\n },\n \"supportedValueTypes\": []\n }\n ],\n \"labels\": {},\n \"objectTypes\": [\n \"<string>\"\n ],\n \"published\": true,\n \"archivedAt\": 123,\n \"executionRules\": [\n {\n \"conditions\": {},\n \"labelName\": \"<string>\"\n }\n ],\n \"inputFieldDependencies\": [\n {\n \"controllingFieldName\": \"<string>\",\n \"dependencyType\": \"SINGLE_FIELD\",\n \"dependentFieldNames\": [\n \"<string>\"\n ]\n }\n ],\n \"outputFields\": [\n {\n \"typeDefinition\": {\n \"externalOptions\": true,\n \"name\": \"<string>\",\n \"options\": [\n {\n \"description\": \"<string>\",\n \"displayOrder\": 123,\n \"doubleData\": 123,\n \"hidden\": true,\n \"label\": \"<string>\",\n \"readOnly\": true,\n \"value\": \"<string>\"\n }\n ],\n \"schema\": {\n \"type\": \"INTEGER\",\n \"maximum\": 123,\n \"minimum\": 123\n },\n \"useChirp\": true,\n \"description\": \"<string>\",\n \"externalOptionsReferenceType\": \"<string>\",\n \"helpText\": \"<string>\",\n \"label\": \"<string>\",\n \"optionsUrl\": \"<string>\"\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.hubapi.com/automation/actions/2026-09/{appId}?hapikey=")
.header("Content-Type", "application/json")
.body("{\n \"actionUrl\": \"<string>\",\n \"functions\": [\n {\n \"functionSource\": \"<string>\",\n \"id\": \"<string>\"\n }\n ],\n \"inputFields\": [\n {\n \"isRequired\": true,\n \"typeDefinition\": {\n \"name\": \"<string>\",\n \"options\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<string>\",\n \"description\": \"<string>\",\n \"displayOrder\": 123\n }\n ],\n \"description\": \"<string>\",\n \"helpText\": \"<string>\",\n \"label\": \"<string>\",\n \"optionsUrl\": \"<string>\",\n \"referencedObjectType\": \"OWNER\"\n },\n \"supportedValueTypes\": []\n }\n ],\n \"labels\": {},\n \"objectTypes\": [\n \"<string>\"\n ],\n \"published\": true,\n \"archivedAt\": 123,\n \"executionRules\": [\n {\n \"conditions\": {},\n \"labelName\": \"<string>\"\n }\n ],\n \"inputFieldDependencies\": [\n {\n \"controllingFieldName\": \"<string>\",\n \"dependencyType\": \"SINGLE_FIELD\",\n \"dependentFieldNames\": [\n \"<string>\"\n ]\n }\n ],\n \"outputFields\": [\n {\n \"typeDefinition\": {\n \"externalOptions\": true,\n \"name\": \"<string>\",\n \"options\": [\n {\n \"description\": \"<string>\",\n \"displayOrder\": 123,\n \"doubleData\": 123,\n \"hidden\": true,\n \"label\": \"<string>\",\n \"readOnly\": true,\n \"value\": \"<string>\"\n }\n ],\n \"schema\": {\n \"type\": \"INTEGER\",\n \"maximum\": 123,\n \"minimum\": 123\n },\n \"useChirp\": true,\n \"description\": \"<string>\",\n \"externalOptionsReferenceType\": \"<string>\",\n \"helpText\": \"<string>\",\n \"label\": \"<string>\",\n \"optionsUrl\": \"<string>\"\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/automation/actions/2026-09/{appId}?hapikey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"actionUrl\": \"<string>\",\n \"functions\": [\n {\n \"functionSource\": \"<string>\",\n \"id\": \"<string>\"\n }\n ],\n \"inputFields\": [\n {\n \"isRequired\": true,\n \"typeDefinition\": {\n \"name\": \"<string>\",\n \"options\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<string>\",\n \"description\": \"<string>\",\n \"displayOrder\": 123\n }\n ],\n \"description\": \"<string>\",\n \"helpText\": \"<string>\",\n \"label\": \"<string>\",\n \"optionsUrl\": \"<string>\",\n \"referencedObjectType\": \"OWNER\"\n },\n \"supportedValueTypes\": []\n }\n ],\n \"labels\": {},\n \"objectTypes\": [\n \"<string>\"\n ],\n \"published\": true,\n \"archivedAt\": 123,\n \"executionRules\": [\n {\n \"conditions\": {},\n \"labelName\": \"<string>\"\n }\n ],\n \"inputFieldDependencies\": [\n {\n \"controllingFieldName\": \"<string>\",\n \"dependencyType\": \"SINGLE_FIELD\",\n \"dependentFieldNames\": [\n \"<string>\"\n ]\n }\n ],\n \"outputFields\": [\n {\n \"typeDefinition\": {\n \"externalOptions\": true,\n \"name\": \"<string>\",\n \"options\": [\n {\n \"description\": \"<string>\",\n \"displayOrder\": 123,\n \"doubleData\": 123,\n \"hidden\": true,\n \"label\": \"<string>\",\n \"readOnly\": true,\n \"value\": \"<string>\"\n }\n ],\n \"schema\": {\n \"type\": \"INTEGER\",\n \"maximum\": 123,\n \"minimum\": 123\n },\n \"useChirp\": true,\n \"description\": \"<string>\",\n \"externalOptionsReferenceType\": \"<string>\",\n \"helpText\": \"<string>\",\n \"label\": \"<string>\",\n \"optionsUrl\": \"<string>\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"actionUrl": "<string>",
"functions": [
{
"functionType": "POST_ACTION_EXECUTION",
"id": "<string>"
}
],
"id": "<string>",
"inputFields": [
{
"isRequired": true,
"typeDefinition": {
"name": "<string>",
"options": [
{
"label": "<string>",
"value": "<string>",
"description": "<string>",
"displayOrder": 123
}
],
"type": "bool",
"description": "<string>",
"fieldType": "booleancheckbox",
"helpText": "<string>",
"label": "<string>",
"optionsUrl": "<string>",
"referencedObjectType": "OWNER"
},
"supportedValueTypes": [
"STATIC_VALUE"
]
}
],
"labels": {},
"objectTypes": [
"<string>"
],
"published": true,
"revisionId": "<string>",
"archivedAt": 123,
"executionRules": [
{
"conditions": {},
"labelName": "<string>"
}
],
"inputFieldDependencies": [
{
"controllingFieldName": "<string>",
"dependencyType": "SINGLE_FIELD",
"dependentFieldNames": [
"<string>"
]
}
],
"objectRequestOptions": {
"properties": [
"<string>"
]
},
"outputFields": [
{
"typeDefinition": {
"externalOptions": true,
"name": "<string>",
"options": [
{
"description": "<string>",
"displayOrder": 123,
"doubleData": 123,
"hidden": true,
"label": "<string>",
"readOnly": true,
"value": "<string>"
}
],
"schema": {
"type": "INTEGER",
"maximum": 123,
"minimum": 123
},
"type": "bool",
"useChirp": true,
"description": "<string>",
"externalOptionsReferenceType": "<string>",
"fieldType": "booleancheckbox",
"helpText": "<string>",
"label": "<string>",
"optionsUrl": "<string>",
"referencedObjectType": "ABANDONED_CART"
}
}
]
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Create a new custom action definition
Create a new custom workflow action.
curl --request POST \
--url 'https://api.hubapi.com/automation/actions/2026-09/{appId}?hapikey=' \
--header 'Content-Type: application/json' \
--data '
{
"actionUrl": "<string>",
"functions": [
{
"functionSource": "<string>",
"id": "<string>"
}
],
"inputFields": [
{
"isRequired": true,
"typeDefinition": {
"name": "<string>",
"options": [
{
"label": "<string>",
"value": "<string>",
"description": "<string>",
"displayOrder": 123
}
],
"description": "<string>",
"helpText": "<string>",
"label": "<string>",
"optionsUrl": "<string>",
"referencedObjectType": "OWNER"
},
"supportedValueTypes": []
}
],
"labels": {},
"objectTypes": [
"<string>"
],
"published": true,
"archivedAt": 123,
"executionRules": [
{
"conditions": {},
"labelName": "<string>"
}
],
"inputFieldDependencies": [
{
"controllingFieldName": "<string>",
"dependencyType": "SINGLE_FIELD",
"dependentFieldNames": [
"<string>"
]
}
],
"outputFields": [
{
"typeDefinition": {
"externalOptions": true,
"name": "<string>",
"options": [
{
"description": "<string>",
"displayOrder": 123,
"doubleData": 123,
"hidden": true,
"label": "<string>",
"readOnly": true,
"value": "<string>"
}
],
"schema": {
"type": "INTEGER",
"maximum": 123,
"minimum": 123
},
"useChirp": true,
"description": "<string>",
"externalOptionsReferenceType": "<string>",
"helpText": "<string>",
"label": "<string>",
"optionsUrl": "<string>"
}
}
]
}
'import requests
url = "https://api.hubapi.com/automation/actions/2026-09/{appId}?hapikey="
payload = {
"actionUrl": "<string>",
"functions": [
{
"functionSource": "<string>",
"id": "<string>"
}
],
"inputFields": [
{
"isRequired": True,
"typeDefinition": {
"name": "<string>",
"options": [
{
"label": "<string>",
"value": "<string>",
"description": "<string>",
"displayOrder": 123
}
],
"description": "<string>",
"helpText": "<string>",
"label": "<string>",
"optionsUrl": "<string>",
"referencedObjectType": "OWNER"
},
"supportedValueTypes": []
}
],
"labels": {},
"objectTypes": ["<string>"],
"published": True,
"archivedAt": 123,
"executionRules": [
{
"conditions": {},
"labelName": "<string>"
}
],
"inputFieldDependencies": [
{
"controllingFieldName": "<string>",
"dependencyType": "SINGLE_FIELD",
"dependentFieldNames": ["<string>"]
}
],
"outputFields": [{ "typeDefinition": {
"externalOptions": True,
"name": "<string>",
"options": [
{
"description": "<string>",
"displayOrder": 123,
"doubleData": 123,
"hidden": True,
"label": "<string>",
"readOnly": True,
"value": "<string>"
}
],
"schema": {
"type": "INTEGER",
"maximum": 123,
"minimum": 123
},
"useChirp": True,
"description": "<string>",
"externalOptionsReferenceType": "<string>",
"helpText": "<string>",
"label": "<string>",
"optionsUrl": "<string>"
} }]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
actionUrl: '<string>',
functions: [{functionSource: '<string>', id: '<string>'}],
inputFields: [
{
isRequired: true,
typeDefinition: {
name: '<string>',
options: [
{
label: '<string>',
value: '<string>',
description: '<string>',
displayOrder: 123
}
],
description: '<string>',
helpText: '<string>',
label: '<string>',
optionsUrl: '<string>',
referencedObjectType: 'OWNER'
},
supportedValueTypes: []
}
],
labels: {},
objectTypes: ['<string>'],
published: true,
archivedAt: 123,
executionRules: [{conditions: {}, labelName: '<string>'}],
inputFieldDependencies: [
{
controllingFieldName: '<string>',
dependencyType: 'SINGLE_FIELD',
dependentFieldNames: ['<string>']
}
],
outputFields: [
{
typeDefinition: {
externalOptions: true,
name: '<string>',
options: [
{
description: '<string>',
displayOrder: 123,
doubleData: 123,
hidden: true,
label: '<string>',
readOnly: true,
value: '<string>'
}
],
schema: {type: 'INTEGER', maximum: 123, minimum: 123},
useChirp: true,
description: '<string>',
externalOptionsReferenceType: '<string>',
helpText: '<string>',
label: '<string>',
optionsUrl: '<string>'
}
}
]
})
};
fetch('https://api.hubapi.com/automation/actions/2026-09/{appId}?hapikey=', 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.hubapi.com/automation/actions/2026-09/{appId}?hapikey=",
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([
'actionUrl' => '<string>',
'functions' => [
[
'functionSource' => '<string>',
'id' => '<string>'
]
],
'inputFields' => [
[
'isRequired' => true,
'typeDefinition' => [
'name' => '<string>',
'options' => [
[
'label' => '<string>',
'value' => '<string>',
'description' => '<string>',
'displayOrder' => 123
]
],
'description' => '<string>',
'helpText' => '<string>',
'label' => '<string>',
'optionsUrl' => '<string>',
'referencedObjectType' => 'OWNER'
],
'supportedValueTypes' => [
]
]
],
'labels' => [
],
'objectTypes' => [
'<string>'
],
'published' => true,
'archivedAt' => 123,
'executionRules' => [
[
'conditions' => [
],
'labelName' => '<string>'
]
],
'inputFieldDependencies' => [
[
'controllingFieldName' => '<string>',
'dependencyType' => 'SINGLE_FIELD',
'dependentFieldNames' => [
'<string>'
]
]
],
'outputFields' => [
[
'typeDefinition' => [
'externalOptions' => true,
'name' => '<string>',
'options' => [
[
'description' => '<string>',
'displayOrder' => 123,
'doubleData' => 123,
'hidden' => true,
'label' => '<string>',
'readOnly' => true,
'value' => '<string>'
]
],
'schema' => [
'type' => 'INTEGER',
'maximum' => 123,
'minimum' => 123
],
'useChirp' => true,
'description' => '<string>',
'externalOptionsReferenceType' => '<string>',
'helpText' => '<string>',
'label' => '<string>',
'optionsUrl' => '<string>'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"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.hubapi.com/automation/actions/2026-09/{appId}?hapikey="
payload := strings.NewReader("{\n \"actionUrl\": \"<string>\",\n \"functions\": [\n {\n \"functionSource\": \"<string>\",\n \"id\": \"<string>\"\n }\n ],\n \"inputFields\": [\n {\n \"isRequired\": true,\n \"typeDefinition\": {\n \"name\": \"<string>\",\n \"options\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<string>\",\n \"description\": \"<string>\",\n \"displayOrder\": 123\n }\n ],\n \"description\": \"<string>\",\n \"helpText\": \"<string>\",\n \"label\": \"<string>\",\n \"optionsUrl\": \"<string>\",\n \"referencedObjectType\": \"OWNER\"\n },\n \"supportedValueTypes\": []\n }\n ],\n \"labels\": {},\n \"objectTypes\": [\n \"<string>\"\n ],\n \"published\": true,\n \"archivedAt\": 123,\n \"executionRules\": [\n {\n \"conditions\": {},\n \"labelName\": \"<string>\"\n }\n ],\n \"inputFieldDependencies\": [\n {\n \"controllingFieldName\": \"<string>\",\n \"dependencyType\": \"SINGLE_FIELD\",\n \"dependentFieldNames\": [\n \"<string>\"\n ]\n }\n ],\n \"outputFields\": [\n {\n \"typeDefinition\": {\n \"externalOptions\": true,\n \"name\": \"<string>\",\n \"options\": [\n {\n \"description\": \"<string>\",\n \"displayOrder\": 123,\n \"doubleData\": 123,\n \"hidden\": true,\n \"label\": \"<string>\",\n \"readOnly\": true,\n \"value\": \"<string>\"\n }\n ],\n \"schema\": {\n \"type\": \"INTEGER\",\n \"maximum\": 123,\n \"minimum\": 123\n },\n \"useChirp\": true,\n \"description\": \"<string>\",\n \"externalOptionsReferenceType\": \"<string>\",\n \"helpText\": \"<string>\",\n \"label\": \"<string>\",\n \"optionsUrl\": \"<string>\"\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.hubapi.com/automation/actions/2026-09/{appId}?hapikey=")
.header("Content-Type", "application/json")
.body("{\n \"actionUrl\": \"<string>\",\n \"functions\": [\n {\n \"functionSource\": \"<string>\",\n \"id\": \"<string>\"\n }\n ],\n \"inputFields\": [\n {\n \"isRequired\": true,\n \"typeDefinition\": {\n \"name\": \"<string>\",\n \"options\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<string>\",\n \"description\": \"<string>\",\n \"displayOrder\": 123\n }\n ],\n \"description\": \"<string>\",\n \"helpText\": \"<string>\",\n \"label\": \"<string>\",\n \"optionsUrl\": \"<string>\",\n \"referencedObjectType\": \"OWNER\"\n },\n \"supportedValueTypes\": []\n }\n ],\n \"labels\": {},\n \"objectTypes\": [\n \"<string>\"\n ],\n \"published\": true,\n \"archivedAt\": 123,\n \"executionRules\": [\n {\n \"conditions\": {},\n \"labelName\": \"<string>\"\n }\n ],\n \"inputFieldDependencies\": [\n {\n \"controllingFieldName\": \"<string>\",\n \"dependencyType\": \"SINGLE_FIELD\",\n \"dependentFieldNames\": [\n \"<string>\"\n ]\n }\n ],\n \"outputFields\": [\n {\n \"typeDefinition\": {\n \"externalOptions\": true,\n \"name\": \"<string>\",\n \"options\": [\n {\n \"description\": \"<string>\",\n \"displayOrder\": 123,\n \"doubleData\": 123,\n \"hidden\": true,\n \"label\": \"<string>\",\n \"readOnly\": true,\n \"value\": \"<string>\"\n }\n ],\n \"schema\": {\n \"type\": \"INTEGER\",\n \"maximum\": 123,\n \"minimum\": 123\n },\n \"useChirp\": true,\n \"description\": \"<string>\",\n \"externalOptionsReferenceType\": \"<string>\",\n \"helpText\": \"<string>\",\n \"label\": \"<string>\",\n \"optionsUrl\": \"<string>\"\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/automation/actions/2026-09/{appId}?hapikey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"actionUrl\": \"<string>\",\n \"functions\": [\n {\n \"functionSource\": \"<string>\",\n \"id\": \"<string>\"\n }\n ],\n \"inputFields\": [\n {\n \"isRequired\": true,\n \"typeDefinition\": {\n \"name\": \"<string>\",\n \"options\": [\n {\n \"label\": \"<string>\",\n \"value\": \"<string>\",\n \"description\": \"<string>\",\n \"displayOrder\": 123\n }\n ],\n \"description\": \"<string>\",\n \"helpText\": \"<string>\",\n \"label\": \"<string>\",\n \"optionsUrl\": \"<string>\",\n \"referencedObjectType\": \"OWNER\"\n },\n \"supportedValueTypes\": []\n }\n ],\n \"labels\": {},\n \"objectTypes\": [\n \"<string>\"\n ],\n \"published\": true,\n \"archivedAt\": 123,\n \"executionRules\": [\n {\n \"conditions\": {},\n \"labelName\": \"<string>\"\n }\n ],\n \"inputFieldDependencies\": [\n {\n \"controllingFieldName\": \"<string>\",\n \"dependencyType\": \"SINGLE_FIELD\",\n \"dependentFieldNames\": [\n \"<string>\"\n ]\n }\n ],\n \"outputFields\": [\n {\n \"typeDefinition\": {\n \"externalOptions\": true,\n \"name\": \"<string>\",\n \"options\": [\n {\n \"description\": \"<string>\",\n \"displayOrder\": 123,\n \"doubleData\": 123,\n \"hidden\": true,\n \"label\": \"<string>\",\n \"readOnly\": true,\n \"value\": \"<string>\"\n }\n ],\n \"schema\": {\n \"type\": \"INTEGER\",\n \"maximum\": 123,\n \"minimum\": 123\n },\n \"useChirp\": true,\n \"description\": \"<string>\",\n \"externalOptionsReferenceType\": \"<string>\",\n \"helpText\": \"<string>\",\n \"label\": \"<string>\",\n \"optionsUrl\": \"<string>\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"actionUrl": "<string>",
"functions": [
{
"functionType": "POST_ACTION_EXECUTION",
"id": "<string>"
}
],
"id": "<string>",
"inputFields": [
{
"isRequired": true,
"typeDefinition": {
"name": "<string>",
"options": [
{
"label": "<string>",
"value": "<string>",
"description": "<string>",
"displayOrder": 123
}
],
"type": "bool",
"description": "<string>",
"fieldType": "booleancheckbox",
"helpText": "<string>",
"label": "<string>",
"optionsUrl": "<string>",
"referencedObjectType": "OWNER"
},
"supportedValueTypes": [
"STATIC_VALUE"
]
}
],
"labels": {},
"objectTypes": [
"<string>"
],
"published": true,
"revisionId": "<string>",
"archivedAt": 123,
"executionRules": [
{
"conditions": {},
"labelName": "<string>"
}
],
"inputFieldDependencies": [
{
"controllingFieldName": "<string>",
"dependencyType": "SINGLE_FIELD",
"dependentFieldNames": [
"<string>"
]
}
],
"objectRequestOptions": {
"properties": [
"<string>"
]
},
"outputFields": [
{
"typeDefinition": {
"externalOptions": true,
"name": "<string>",
"options": [
{
"description": "<string>",
"displayOrder": 123,
"doubleData": 123,
"hidden": true,
"label": "<string>",
"readOnly": true,
"value": "<string>"
}
],
"schema": {
"type": "INTEGER",
"maximum": 123,
"minimum": 123
},
"type": "bool",
"useChirp": true,
"description": "<string>",
"externalOptionsReferenceType": "<string>",
"fieldType": "booleancheckbox",
"helpText": "<string>",
"label": "<string>",
"optionsUrl": "<string>",
"referencedObjectType": "ABANDONED_CART"
}
}
]
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Supported products
Supported products
Required Scopes
Required Scopes
Authorizations
Path Parameters
The unique identifier of the app for which the extension definition is being created.
Body
The URL endpoint where the action is executed.
An array of PublicActionFunction objects that define the functions associated with the action, including their type and source.
Show child attributes
Show child attributes
An array of PublicInputFieldDefinition objects defining the input fields required for the action.
Show child attributes
Show child attributes
Holds various labels associated with the action, including names and descriptions.
Show child attributes
Show child attributes
An array of strings representing the types of objects associated with the action.
Indicates whether the action is published and available for use.
The timestamp indicating when the action was archived.
An array of PublicExecutionTranslationRule objects that define rules for executing the action.
Show child attributes
Show child attributes
An array that can contain either PublicSingleFieldDependency or PublicConditionalSingleFieldDependency objects, defining dependencies between input fields.
- SINGLE_FIELD
- CONDITIONAL_SINGLE_FIELD
Show child attributes
Show child attributes
Show child attributes
Show child attributes
An array of OutputFieldDefinition objects specifying the output fields of the action.
Show child attributes
Show child attributes
Response
successful operation
The URL endpoint where the action is executed. It is a string.
An array of function identifiers associated with the action, where each item is a PublicActionFunctionIdentifier.
Show child attributes
Show child attributes
The unique identifier for the action definition. It is a string.
An array of input field definitions required for the action. Each item is a PublicInputFieldDefinition object.
Show child attributes
Show child attributes
An object containing labels for the action, with each property being a PublicActionLabels object.
Show child attributes
Show child attributes
An array of strings representing the types of objects associated with the action.
A boolean indicating whether the action is published and available for use.
The unique identifier for the current revision of the action definition. It is a string.
A Unix timestamp in milliseconds representing when the action was archived. It is an integer.
An array of execution translation rules for the action, where each item is a PublicExecutionTranslationRule.
Show child attributes
Show child attributes
An array of dependencies between input fields, where each item can be a PublicSingleFieldDependency or PublicConditionalSingleFieldDependency.
- SINGLE_FIELD
- CONDITIONAL_SINGLE_FIELD
Show child attributes
Show child attributes
Show child attributes
Show child attributes
An array of output field definitions produced by the action. Each item is an OutputFieldDefinition object.
Show child attributes
Show child attributes
Was this page helpful?