curl -X POST https://api.hookpulse.io/v1/api/single_workflow_template_detail/ \
-H "x-hookpulse-api-key: {{x-hookpulse-api-key}}" \
-H "x-brand-uuid: {{x-brand-uuid}}" \
-H "Content-Type: application/json" \
-d '{
"workflow_uuid": "{{workflow_uuid}}"
}'
const response = await fetch('https://api.hookpulse.io/v1/api/single_workflow_template_detail/', {
method: 'POST',
headers: {
'x-hookpulse-api-key': '{{x-hookpulse-api-key}}',
'x-brand-uuid': '{{x-brand-uuid}}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
workflow_uuid: '{{workflow_uuid}}'
})
});
const data = await response.json();
console.log(data);
import requests
url = 'https://api.hookpulse.io/v1/api/single_workflow_template_detail/'
headers = {
'x-hookpulse-api-key': '{{x-hookpulse-api-key}}',
'x-brand-uuid': '{{x-brand-uuid}}',
'Content-Type': 'application/json'
}
payload = {
'workflow_uuid': '{{workflow_uuid}}'
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://api.hookpulse.io/v1/api/single_workflow_template_detail/')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.path)
request['x-hookpulse-api-key'] = '{{x-hookpulse-api-key}}'
request['x-brand-uuid'] = '{{x-brand-uuid}}'
request['Content-Type'] = 'application/json'
request.body = {
workflow_uuid: '{{workflow_uuid}}'
}.to_json
response = http.request(request)
puts JSON.parse(response.body)
<?php
$url = 'https://api.hookpulse.io/v1/api/single_workflow_template_detail/';
$data = [
'workflow_uuid' => '{{workflow_uuid}}'
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'x-hookpulse-api-key: {{x-hookpulse-api-key}}',
'x-brand-uuid: {{x-brand-uuid}}',
'Content-Type: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
{
"data": {
"timezone": "{{timezone}}",
"inserted_at": "{{inserted_at}}",
"workflow_name": "{{workflow_name}}",
"workflow_uuid": "{{workflow_uuid}}",
"workflow_description": "{{workflow_description}}",
"runtype": "{{runtype}}",
"workflow_steps": [
{
"index": 0,
"timezone": "{{timezone}}",
"inserted_at": "{{inserted_at}}",
"step_identifier": "{{step_identifier}}",
"human_approval_required": false,
"delay_to_next_step": {{delay_to_next_step}},
"webhook": {
"path": "{{path}}",
"domain": {
"protocol": "{{protocol}}",
"domain": "{{domain}}"
},
"method": "{{method}}",
"webhook_uuid": "{{webhook_uuid}}",
"webhook_name": "{{webhook_name}}",
"headers_json": {},
"query_params_json": {},
"request_body_json": {},
"expected_system_variables": []
},
"step_uuid": "{{step_uuid}}",
"execution_conditions": [
{
"value": "{{value}}",
"operator": "{{operator}}",
"field": "{{field}}"
}
]
}
]
},
"success": true
}
Workflow Template
Get Workflow Template by UUID
Retrieve detailed information about a specific workflow template by its UUID, including all workflow steps
POST
/
v1
/
api
/
single_workflow_template_detail
/
curl -X POST https://api.hookpulse.io/v1/api/single_workflow_template_detail/ \
-H "x-hookpulse-api-key: {{x-hookpulse-api-key}}" \
-H "x-brand-uuid: {{x-brand-uuid}}" \
-H "Content-Type: application/json" \
-d '{
"workflow_uuid": "{{workflow_uuid}}"
}'
const response = await fetch('https://api.hookpulse.io/v1/api/single_workflow_template_detail/', {
method: 'POST',
headers: {
'x-hookpulse-api-key': '{{x-hookpulse-api-key}}',
'x-brand-uuid': '{{x-brand-uuid}}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
workflow_uuid: '{{workflow_uuid}}'
})
});
const data = await response.json();
console.log(data);
import requests
url = 'https://api.hookpulse.io/v1/api/single_workflow_template_detail/'
headers = {
'x-hookpulse-api-key': '{{x-hookpulse-api-key}}',
'x-brand-uuid': '{{x-brand-uuid}}',
'Content-Type': 'application/json'
}
payload = {
'workflow_uuid': '{{workflow_uuid}}'
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://api.hookpulse.io/v1/api/single_workflow_template_detail/')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.path)
request['x-hookpulse-api-key'] = '{{x-hookpulse-api-key}}'
request['x-brand-uuid'] = '{{x-brand-uuid}}'
request['Content-Type'] = 'application/json'
request.body = {
workflow_uuid: '{{workflow_uuid}}'
}.to_json
response = http.request(request)
puts JSON.parse(response.body)
<?php
$url = 'https://api.hookpulse.io/v1/api/single_workflow_template_detail/';
$data = [
'workflow_uuid' => '{{workflow_uuid}}'
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'x-hookpulse-api-key: {{x-hookpulse-api-key}}',
'x-brand-uuid: {{x-brand-uuid}}',
'Content-Type: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
{
"data": {
"timezone": "{{timezone}}",
"inserted_at": "{{inserted_at}}",
"workflow_name": "{{workflow_name}}",
"workflow_uuid": "{{workflow_uuid}}",
"workflow_description": "{{workflow_description}}",
"runtype": "{{runtype}}",
"workflow_steps": [
{
"index": 0,
"timezone": "{{timezone}}",
"inserted_at": "{{inserted_at}}",
"step_identifier": "{{step_identifier}}",
"human_approval_required": false,
"delay_to_next_step": {{delay_to_next_step}},
"webhook": {
"path": "{{path}}",
"domain": {
"protocol": "{{protocol}}",
"domain": "{{domain}}"
},
"method": "{{method}}",
"webhook_uuid": "{{webhook_uuid}}",
"webhook_name": "{{webhook_name}}",
"headers_json": {},
"query_params_json": {},
"request_body_json": {},
"expected_system_variables": []
},
"step_uuid": "{{step_uuid}}",
"execution_conditions": [
{
"value": "{{value}}",
"operator": "{{operator}}",
"field": "{{field}}"
}
]
}
]
},
"success": true
}
Retrieve detailed information about a specific workflow template by its UUID, including all configured workflow steps, execution conditions, and webhook configurations.
Base URL
All API requests should be made to:https://api.hookpulse.io
Example request
curl -X POST https://api.hookpulse.io/v1/api/single_workflow_template_detail/ \
-H "x-hookpulse-api-key: {{x-hookpulse-api-key}}" \
-H "x-brand-uuid: {{x-brand-uuid}}" \
-H "Content-Type: application/json" \
-d '{
"workflow_uuid": "{{workflow_uuid}}"
}'
const response = await fetch('https://api.hookpulse.io/v1/api/single_workflow_template_detail/', {
method: 'POST',
headers: {
'x-hookpulse-api-key': '{{x-hookpulse-api-key}}',
'x-brand-uuid': '{{x-brand-uuid}}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
workflow_uuid: '{{workflow_uuid}}'
})
});
const data = await response.json();
console.log(data);
import requests
url = 'https://api.hookpulse.io/v1/api/single_workflow_template_detail/'
headers = {
'x-hookpulse-api-key': '{{x-hookpulse-api-key}}',
'x-brand-uuid': '{{x-brand-uuid}}',
'Content-Type': 'application/json'
}
payload = {
'workflow_uuid': '{{workflow_uuid}}'
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://api.hookpulse.io/v1/api/single_workflow_template_detail/')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.path)
request['x-hookpulse-api-key'] = '{{x-hookpulse-api-key}}'
request['x-brand-uuid'] = '{{x-brand-uuid}}'
request['Content-Type'] = 'application/json'
request.body = {
workflow_uuid: '{{workflow_uuid}}'
}.to_json
response = http.request(request)
puts JSON.parse(response.body)
<?php
$url = 'https://api.hookpulse.io/v1/api/single_workflow_template_detail/';
$data = [
'workflow_uuid' => '{{workflow_uuid}}'
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'x-hookpulse-api-key: {{x-hookpulse-api-key}}',
'x-brand-uuid: {{x-brand-uuid}}',
'Content-Type: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
Request body
| Field | Type | Required | Description |
|---|---|---|---|
workflow_uuid | string | Yes | UUID of the workflow template to retrieve |
Example response
{
"data": {
"timezone": "{{timezone}}",
"inserted_at": "{{inserted_at}}",
"workflow_name": "{{workflow_name}}",
"workflow_uuid": "{{workflow_uuid}}",
"workflow_description": "{{workflow_description}}",
"runtype": "{{runtype}}",
"workflow_steps": [
{
"index": 0,
"timezone": "{{timezone}}",
"inserted_at": "{{inserted_at}}",
"step_identifier": "{{step_identifier}}",
"human_approval_required": false,
"delay_to_next_step": {{delay_to_next_step}},
"webhook": {
"path": "{{path}}",
"domain": {
"protocol": "{{protocol}}",
"domain": "{{domain}}"
},
"method": "{{method}}",
"webhook_uuid": "{{webhook_uuid}}",
"webhook_name": "{{webhook_name}}",
"headers_json": {},
"query_params_json": {},
"request_body_json": {},
"expected_system_variables": []
},
"step_uuid": "{{step_uuid}}",
"execution_conditions": [
{
"value": "{{value}}",
"operator": "{{operator}}",
"field": "{{field}}"
}
]
}
]
},
"success": true
}
Response fields
Root fields
| Field | Type | Description |
|---|---|---|
success | boolean | Indicates if the request was successful |
data | object | Workflow template details |
Data object
| Field | Type | Description |
|---|---|---|
timezone | string | IANA timezone identifier indicating the timezone used for timestamps (matches your brand’s selected timezone) |
inserted_at | string | ISO 8601 timestamp when the workflow template was created (in your brand’s selected timezone with offset) |
workflow_name | string | Name of the workflow template |
workflow_uuid | string | Unique identifier for the workflow template |
workflow_description | string | Description of the workflow template |
runtype | string | Execution mode: "fifo_sequential" or "concurrently" |
workflow_steps | array | Array of workflow steps, ordered by index |
Workflow step object
| Field | Type | Description |
|---|---|---|
index | integer | Priority index for FIFO execution order (0 is first) |
timezone | string | IANA timezone identifier indicating the timezone used for timestamps (matches your brand’s selected timezone) |
inserted_at | string | ISO 8601 timestamp when the workflow step was created (in your brand’s selected timezone with offset) |
step_identifier | string | Unique identifier (slug) for this step |
human_approval_required | boolean | Whether this step requires human approval |
delay_to_next_step | integer | Delay in seconds before executing the next step |
webhook | object | Webhook configuration for this step |
step_uuid | string | Unique identifier for the workflow step |
execution_conditions | array | Array of conditions that must be met for this step to execute |
Execution condition object
| Field | Type | Description |
|---|---|---|
value | string | Value to compare against |
operator | string | Comparison operator: "eq", "ne", "lt", "gt", "lte", "gte", "in", "contains" |
field | string | Field path to evaluate (e.g., "amount", "step.response.payment_status", "initial.user_id") |
Webhook object
| Field | Type | Description |
|---|---|---|
path | string | URL path for the webhook (may contain template variables) |
domain | object | Domain configuration |
domain.protocol | string | Protocol type: "http" or "https" |
domain.domain | string | Domain name |
method | string | HTTP method: "GET", "POST", "PUT", "DELETE", or "PATCH" |
webhook_name | string | Name of the webhook |
expected_system_variables | array | List of system variables expected in this webhook |
headers_json | object | HTTP headers as JSON object (may contain template variables) |
query_params_json | object | Query parameters as JSON object (may contain template variables) |
request_body_json | object | Request body as JSON object (may contain template variables) |
webhook_uuid | string | Unique identifier for the webhook |
Understanding the Response
Workflow Steps Order
Steps are returned in the order defined by theirindex field:
- Index 0: First step to execute
- Index 1: Second step to execute
- And so on…
Execution Conditions
Each step can have multiple execution conditions. All conditions must evaluate totrue for the step to execute:
- Empty array: Step always executes (no conditions)
- Multiple conditions: All must be met (AND logic)
Template Variables
The response shows template variables used in webhook configurations:{{ #key }}: System secret from vault{{ step.response.key }}: Variable from previous step response{{ initial.key }}: Variable from initial workflow input
Human Approval
Whenhuman_approval_required is true, the workflow pauses at that step and waits for manual approval before continuing.
Related Documentation
- Workflow Template Overview - Learn about workflow templates, execution modes, and features
- Add Workflow Step - Add a new step to a workflow
- Add Workflow Template - Create a new workflow template
Authorizations
API key for authentication. Get this from your dashboard by selecting a brand and going to API Keys section.
Brand UUID for authentication. Get this from your dashboard after adding a brand - it will be displayed in the UI.
Body
application/json
Workflow template UUID
UUID of the workflow template

