Create template
curl --request POST \
--url https://api.helloannie.com/v1/templates \
--header 'Authorization: Bearer <token>' \
--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 = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', '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 => [
"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.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("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.post("https://api.helloannie.com/v1/templates")
.header("Authorization", "Bearer <token>")
.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["Authorization"] = 'Bearer <token>'
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>"
}Templates
Create template
Create a new workflow template with variable definitions
POST
/
templates
Create template
curl --request POST \
--url https://api.helloannie.com/v1/templates \
--header 'Authorization: Bearer <token>' \
--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 = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', '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 => [
"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.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("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.post("https://api.helloannie.com/v1/templates")
.header("Authorization", "Bearer <token>")
.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["Authorization"] = 'Bearer <token>'
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>"
}Authorizations
Body
application/jsonapplication/x-www-form-urlencodedmultipart/form-data
Request body for creating a workflow template
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.
Available options:
CHAT, PHONE, GHL, SMS Example:
["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.
Available options:
OPEN, CLOSED