curl --request POST \
--url https://api.helloannie.com/v1/templates \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"variables": [
{
"name": "<string>",
"description": "<string>"
}
],
"workflow": {
"title": "<string>",
"description": "<string>",
"steps": [
{
"title": "<string>",
"description": "<string>",
"instructions": "<string>",
"order": 1,
"examples": [
"<string>"
],
"action": "<string>",
"actionMetadata": {
"templateName": "Appointment Confirmation",
"templateBody": "Your appointment is scheduled for tomorrow at 3 PM."
},
"childSteps": [
{
"title": "<string>",
"description": "<string>",
"instructions": "<string>",
"order": 1,
"examples": [
"<string>"
],
"action": "<string>",
"actionMetadata": {
"templateName": "Appointment Confirmation",
"templateBody": "Your appointment is scheduled for tomorrow at 3 PM."
}
}
]
}
],
"enabled": true,
"usageContext": "<string>",
"order": 0
},
"description": "<string>",
"applicableMediums": [
"PHONE",
"SMS"
]
}
'import requests
url = "https://api.helloannie.com/v1/templates"
payload = {
"name": "<string>",
"variables": [
{
"name": "<string>",
"description": "<string>"
}
],
"workflow": {
"title": "<string>",
"description": "<string>",
"steps": [
{
"title": "<string>",
"description": "<string>",
"instructions": "<string>",
"order": 1,
"examples": ["<string>"],
"action": "<string>",
"actionMetadata": {
"templateName": "Appointment Confirmation",
"templateBody": "Your appointment is scheduled for tomorrow at 3 PM."
},
"childSteps": [
{
"title": "<string>",
"description": "<string>",
"instructions": "<string>",
"order": 1,
"examples": ["<string>"],
"action": "<string>",
"actionMetadata": {
"templateName": "Appointment Confirmation",
"templateBody": "Your appointment is scheduled for tomorrow at 3 PM."
}
}
]
}
],
"enabled": True,
"usageContext": "<string>",
"order": 0
},
"description": "<string>",
"applicableMediums": ["PHONE", "SMS"]
}
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({
name: '<string>',
variables: [{name: '<string>', description: '<string>'}],
workflow: {
title: '<string>',
description: '<string>',
steps: [
{
title: '<string>',
description: '<string>',
instructions: '<string>',
order: 1,
examples: ['<string>'],
action: '<string>',
actionMetadata: {
templateName: 'Appointment Confirmation',
templateBody: 'Your appointment is scheduled for tomorrow at 3 PM.'
},
childSteps: [
{
title: '<string>',
description: '<string>',
instructions: '<string>',
order: 1,
examples: ['<string>'],
action: '<string>',
actionMetadata: {
templateName: 'Appointment Confirmation',
templateBody: 'Your appointment is scheduled for tomorrow at 3 PM.'
}
}
]
}
],
enabled: true,
usageContext: '<string>',
order: 0
},
description: '<string>',
applicableMediums: ['PHONE', 'SMS']
})
};
fetch('https://api.helloannie.com/v1/templates', 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.helloannie.com/v1/templates",
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([
'name' => '<string>',
'variables' => [
[
'name' => '<string>',
'description' => '<string>'
]
],
'workflow' => [
'title' => '<string>',
'description' => '<string>',
'steps' => [
[
'title' => '<string>',
'description' => '<string>',
'instructions' => '<string>',
'order' => 1,
'examples' => [
'<string>'
],
'action' => '<string>',
'actionMetadata' => [
'templateName' => 'Appointment Confirmation',
'templateBody' => 'Your appointment is scheduled for tomorrow at 3 PM.'
],
'childSteps' => [
[
'title' => '<string>',
'description' => '<string>',
'instructions' => '<string>',
'order' => 1,
'examples' => [
'<string>'
],
'action' => '<string>',
'actionMetadata' => [
'templateName' => 'Appointment Confirmation',
'templateBody' => 'Your appointment is scheduled for tomorrow at 3 PM.'
]
]
]
]
],
'enabled' => true,
'usageContext' => '<string>',
'order' => 0
],
'description' => '<string>',
'applicableMediums' => [
'PHONE',
'SMS'
]
]),
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.helloannie.com/v1/templates"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"variables\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"workflow\": {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"steps\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"order\": 1,\n \"examples\": [\n \"<string>\"\n ],\n \"action\": \"<string>\",\n \"actionMetadata\": {\n \"templateName\": \"Appointment Confirmation\",\n \"templateBody\": \"Your appointment is scheduled for tomorrow at 3 PM.\"\n },\n \"childSteps\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"order\": 1,\n \"examples\": [\n \"<string>\"\n ],\n \"action\": \"<string>\",\n \"actionMetadata\": {\n \"templateName\": \"Appointment Confirmation\",\n \"templateBody\": \"Your appointment is scheduled for tomorrow at 3 PM.\"\n }\n }\n ]\n }\n ],\n \"enabled\": true,\n \"usageContext\": \"<string>\",\n \"order\": 0\n },\n \"description\": \"<string>\",\n \"applicableMediums\": [\n \"PHONE\",\n \"SMS\"\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.helloannie.com/v1/templates")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"variables\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"workflow\": {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"steps\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"order\": 1,\n \"examples\": [\n \"<string>\"\n ],\n \"action\": \"<string>\",\n \"actionMetadata\": {\n \"templateName\": \"Appointment Confirmation\",\n \"templateBody\": \"Your appointment is scheduled for tomorrow at 3 PM.\"\n },\n \"childSteps\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"order\": 1,\n \"examples\": [\n \"<string>\"\n ],\n \"action\": \"<string>\",\n \"actionMetadata\": {\n \"templateName\": \"Appointment Confirmation\",\n \"templateBody\": \"Your appointment is scheduled for tomorrow at 3 PM.\"\n }\n }\n ]\n }\n ],\n \"enabled\": true,\n \"usageContext\": \"<string>\",\n \"order\": 0\n },\n \"description\": \"<string>\",\n \"applicableMediums\": [\n \"PHONE\",\n \"SMS\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.helloannie.com/v1/templates")
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 \"name\": \"<string>\",\n \"variables\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"workflow\": {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"steps\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"order\": 1,\n \"examples\": [\n \"<string>\"\n ],\n \"action\": \"<string>\",\n \"actionMetadata\": {\n \"templateName\": \"Appointment Confirmation\",\n \"templateBody\": \"Your appointment is scheduled for tomorrow at 3 PM.\"\n },\n \"childSteps\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"order\": 1,\n \"examples\": [\n \"<string>\"\n ],\n \"action\": \"<string>\",\n \"actionMetadata\": {\n \"templateName\": \"Appointment Confirmation\",\n \"templateBody\": \"Your appointment is scheduled for tomorrow at 3 PM.\"\n }\n }\n ]\n }\n ],\n \"enabled\": true,\n \"usageContext\": \"<string>\",\n \"order\": 0\n },\n \"description\": \"<string>\",\n \"applicableMediums\": [\n \"PHONE\",\n \"SMS\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"version": 123,
"createdAt": "<string>",
"variables": [
{
"name": "<string>",
"type": "STRING",
"description": "<string>"
}
],
"applicableMediums": [
"PHONE",
"SMS"
],
"officeHoursAvailability": "OPEN"
}
}{
"success": false,
"data": {},
"message": "<string>"
}{
"success": false,
"data": {},
"message": "<string>"
}Create template
Create a new workflow template with variable definitions
curl --request POST \
--url https://api.helloannie.com/v1/templates \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"variables": [
{
"name": "<string>",
"description": "<string>"
}
],
"workflow": {
"title": "<string>",
"description": "<string>",
"steps": [
{
"title": "<string>",
"description": "<string>",
"instructions": "<string>",
"order": 1,
"examples": [
"<string>"
],
"action": "<string>",
"actionMetadata": {
"templateName": "Appointment Confirmation",
"templateBody": "Your appointment is scheduled for tomorrow at 3 PM."
},
"childSteps": [
{
"title": "<string>",
"description": "<string>",
"instructions": "<string>",
"order": 1,
"examples": [
"<string>"
],
"action": "<string>",
"actionMetadata": {
"templateName": "Appointment Confirmation",
"templateBody": "Your appointment is scheduled for tomorrow at 3 PM."
}
}
]
}
],
"enabled": true,
"usageContext": "<string>",
"order": 0
},
"description": "<string>",
"applicableMediums": [
"PHONE",
"SMS"
]
}
'import requests
url = "https://api.helloannie.com/v1/templates"
payload = {
"name": "<string>",
"variables": [
{
"name": "<string>",
"description": "<string>"
}
],
"workflow": {
"title": "<string>",
"description": "<string>",
"steps": [
{
"title": "<string>",
"description": "<string>",
"instructions": "<string>",
"order": 1,
"examples": ["<string>"],
"action": "<string>",
"actionMetadata": {
"templateName": "Appointment Confirmation",
"templateBody": "Your appointment is scheduled for tomorrow at 3 PM."
},
"childSteps": [
{
"title": "<string>",
"description": "<string>",
"instructions": "<string>",
"order": 1,
"examples": ["<string>"],
"action": "<string>",
"actionMetadata": {
"templateName": "Appointment Confirmation",
"templateBody": "Your appointment is scheduled for tomorrow at 3 PM."
}
}
]
}
],
"enabled": True,
"usageContext": "<string>",
"order": 0
},
"description": "<string>",
"applicableMediums": ["PHONE", "SMS"]
}
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({
name: '<string>',
variables: [{name: '<string>', description: '<string>'}],
workflow: {
title: '<string>',
description: '<string>',
steps: [
{
title: '<string>',
description: '<string>',
instructions: '<string>',
order: 1,
examples: ['<string>'],
action: '<string>',
actionMetadata: {
templateName: 'Appointment Confirmation',
templateBody: 'Your appointment is scheduled for tomorrow at 3 PM.'
},
childSteps: [
{
title: '<string>',
description: '<string>',
instructions: '<string>',
order: 1,
examples: ['<string>'],
action: '<string>',
actionMetadata: {
templateName: 'Appointment Confirmation',
templateBody: 'Your appointment is scheduled for tomorrow at 3 PM.'
}
}
]
}
],
enabled: true,
usageContext: '<string>',
order: 0
},
description: '<string>',
applicableMediums: ['PHONE', 'SMS']
})
};
fetch('https://api.helloannie.com/v1/templates', 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.helloannie.com/v1/templates",
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([
'name' => '<string>',
'variables' => [
[
'name' => '<string>',
'description' => '<string>'
]
],
'workflow' => [
'title' => '<string>',
'description' => '<string>',
'steps' => [
[
'title' => '<string>',
'description' => '<string>',
'instructions' => '<string>',
'order' => 1,
'examples' => [
'<string>'
],
'action' => '<string>',
'actionMetadata' => [
'templateName' => 'Appointment Confirmation',
'templateBody' => 'Your appointment is scheduled for tomorrow at 3 PM.'
],
'childSteps' => [
[
'title' => '<string>',
'description' => '<string>',
'instructions' => '<string>',
'order' => 1,
'examples' => [
'<string>'
],
'action' => '<string>',
'actionMetadata' => [
'templateName' => 'Appointment Confirmation',
'templateBody' => 'Your appointment is scheduled for tomorrow at 3 PM.'
]
]
]
]
],
'enabled' => true,
'usageContext' => '<string>',
'order' => 0
],
'description' => '<string>',
'applicableMediums' => [
'PHONE',
'SMS'
]
]),
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.helloannie.com/v1/templates"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"variables\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"workflow\": {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"steps\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"order\": 1,\n \"examples\": [\n \"<string>\"\n ],\n \"action\": \"<string>\",\n \"actionMetadata\": {\n \"templateName\": \"Appointment Confirmation\",\n \"templateBody\": \"Your appointment is scheduled for tomorrow at 3 PM.\"\n },\n \"childSteps\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"order\": 1,\n \"examples\": [\n \"<string>\"\n ],\n \"action\": \"<string>\",\n \"actionMetadata\": {\n \"templateName\": \"Appointment Confirmation\",\n \"templateBody\": \"Your appointment is scheduled for tomorrow at 3 PM.\"\n }\n }\n ]\n }\n ],\n \"enabled\": true,\n \"usageContext\": \"<string>\",\n \"order\": 0\n },\n \"description\": \"<string>\",\n \"applicableMediums\": [\n \"PHONE\",\n \"SMS\"\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.helloannie.com/v1/templates")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"variables\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"workflow\": {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"steps\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"order\": 1,\n \"examples\": [\n \"<string>\"\n ],\n \"action\": \"<string>\",\n \"actionMetadata\": {\n \"templateName\": \"Appointment Confirmation\",\n \"templateBody\": \"Your appointment is scheduled for tomorrow at 3 PM.\"\n },\n \"childSteps\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"order\": 1,\n \"examples\": [\n \"<string>\"\n ],\n \"action\": \"<string>\",\n \"actionMetadata\": {\n \"templateName\": \"Appointment Confirmation\",\n \"templateBody\": \"Your appointment is scheduled for tomorrow at 3 PM.\"\n }\n }\n ]\n }\n ],\n \"enabled\": true,\n \"usageContext\": \"<string>\",\n \"order\": 0\n },\n \"description\": \"<string>\",\n \"applicableMediums\": [\n \"PHONE\",\n \"SMS\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.helloannie.com/v1/templates")
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 \"name\": \"<string>\",\n \"variables\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"workflow\": {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"steps\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"order\": 1,\n \"examples\": [\n \"<string>\"\n ],\n \"action\": \"<string>\",\n \"actionMetadata\": {\n \"templateName\": \"Appointment Confirmation\",\n \"templateBody\": \"Your appointment is scheduled for tomorrow at 3 PM.\"\n },\n \"childSteps\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"order\": 1,\n \"examples\": [\n \"<string>\"\n ],\n \"action\": \"<string>\",\n \"actionMetadata\": {\n \"templateName\": \"Appointment Confirmation\",\n \"templateBody\": \"Your appointment is scheduled for tomorrow at 3 PM.\"\n }\n }\n ]\n }\n ],\n \"enabled\": true,\n \"usageContext\": \"<string>\",\n \"order\": 0\n },\n \"description\": \"<string>\",\n \"applicableMediums\": [\n \"PHONE\",\n \"SMS\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"version": 123,
"createdAt": "<string>",
"variables": [
{
"name": "<string>",
"type": "STRING",
"description": "<string>"
}
],
"applicableMediums": [
"PHONE",
"SMS"
],
"officeHoursAvailability": "OPEN"
}
}{
"success": false,
"data": {},
"message": "<string>"
}{
"success": false,
"data": {},
"message": "<string>"
}Body
Request body for creating a workflow template
User-friendly name for the template
1 - 255Variable definitions for this template. Use {{variable_name}} in workflow text fields.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Description of what this template does
Conversation types where this template can be used: PHONE, SMS, CHAT, or GHL. Set null or an empty array to allow all conversation types. If omitted, new templates allow all conversation types and updates keep the current selection.
CHAT, PHONE, GHL, SMS ["PHONE", "SMS"]
When this template can be used, based on your office hours. OPEN allows use during office hours; CLOSED allows use outside office hours. Set null to allow use at any time. If omitted, new templates are available at any time and updates keep the current setting.
OPEN, CLOSED