curl --request POST \
--url https://api.helloannie.com/v1/organizations/{orgId}/closures/{closureId} \
--header 'Content-Type: application/json' \
--data '
{
"description": "<string>",
"startAt": "2026-12-24T18:30:00.000Z",
"endAt": "2026-12-24T18:30:00.000Z",
"chatGreeting": "<string>",
"phoneGreeting": "<string>"
}
'import requests
url = "https://api.helloannie.com/v1/organizations/{orgId}/closures/{closureId}"
payload = {
"description": "<string>",
"startAt": "2026-12-24T18:30:00.000Z",
"endAt": "2026-12-24T18:30:00.000Z",
"chatGreeting": "<string>",
"phoneGreeting": "<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({
description: '<string>',
startAt: '2026-12-24T18:30:00.000Z',
endAt: '2026-12-24T18:30:00.000Z',
chatGreeting: '<string>',
phoneGreeting: '<string>'
})
};
fetch('https://api.helloannie.com/v1/organizations/{orgId}/closures/{closureId}', 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/organizations/{orgId}/closures/{closureId}",
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([
'description' => '<string>',
'startAt' => '2026-12-24T18:30:00.000Z',
'endAt' => '2026-12-24T18:30:00.000Z',
'chatGreeting' => '<string>',
'phoneGreeting' => '<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.helloannie.com/v1/organizations/{orgId}/closures/{closureId}"
payload := strings.NewReader("{\n \"description\": \"<string>\",\n \"startAt\": \"2026-12-24T18:30:00.000Z\",\n \"endAt\": \"2026-12-24T18:30:00.000Z\",\n \"chatGreeting\": \"<string>\",\n \"phoneGreeting\": \"<string>\"\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/organizations/{orgId}/closures/{closureId}")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"<string>\",\n \"startAt\": \"2026-12-24T18:30:00.000Z\",\n \"endAt\": \"2026-12-24T18:30:00.000Z\",\n \"chatGreeting\": \"<string>\",\n \"phoneGreeting\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.helloannie.com/v1/organizations/{orgId}/closures/{closureId}")
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 \"description\": \"<string>\",\n \"startAt\": \"2026-12-24T18:30:00.000Z\",\n \"endAt\": \"2026-12-24T18:30:00.000Z\",\n \"chatGreeting\": \"<string>\",\n \"phoneGreeting\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "<string>",
"chatGreeting": "<string>",
"phoneGreeting": "<string>",
"startAt": "2026-12-24T18:30:00.000Z",
"endAt": "2026-12-24T18:30:00.000Z"
}
}{
"success": false,
"data": {},
"message": "<string>"
}{
"success": false,
"data": {},
"message": "<string>"
}{
"success": false,
"data": {},
"message": "<string>"
}Update closure
Update an office closure. Supply description and either annualDate or both startAt and endAt; do not combine them. Omitted greetings are preserved. Supplied greetings must be nonblank and cannot be null.
curl --request POST \
--url https://api.helloannie.com/v1/organizations/{orgId}/closures/{closureId} \
--header 'Content-Type: application/json' \
--data '
{
"description": "<string>",
"startAt": "2026-12-24T18:30:00.000Z",
"endAt": "2026-12-24T18:30:00.000Z",
"chatGreeting": "<string>",
"phoneGreeting": "<string>"
}
'import requests
url = "https://api.helloannie.com/v1/organizations/{orgId}/closures/{closureId}"
payload = {
"description": "<string>",
"startAt": "2026-12-24T18:30:00.000Z",
"endAt": "2026-12-24T18:30:00.000Z",
"chatGreeting": "<string>",
"phoneGreeting": "<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({
description: '<string>',
startAt: '2026-12-24T18:30:00.000Z',
endAt: '2026-12-24T18:30:00.000Z',
chatGreeting: '<string>',
phoneGreeting: '<string>'
})
};
fetch('https://api.helloannie.com/v1/organizations/{orgId}/closures/{closureId}', 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/organizations/{orgId}/closures/{closureId}",
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([
'description' => '<string>',
'startAt' => '2026-12-24T18:30:00.000Z',
'endAt' => '2026-12-24T18:30:00.000Z',
'chatGreeting' => '<string>',
'phoneGreeting' => '<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.helloannie.com/v1/organizations/{orgId}/closures/{closureId}"
payload := strings.NewReader("{\n \"description\": \"<string>\",\n \"startAt\": \"2026-12-24T18:30:00.000Z\",\n \"endAt\": \"2026-12-24T18:30:00.000Z\",\n \"chatGreeting\": \"<string>\",\n \"phoneGreeting\": \"<string>\"\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/organizations/{orgId}/closures/{closureId}")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"<string>\",\n \"startAt\": \"2026-12-24T18:30:00.000Z\",\n \"endAt\": \"2026-12-24T18:30:00.000Z\",\n \"chatGreeting\": \"<string>\",\n \"phoneGreeting\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.helloannie.com/v1/organizations/{orgId}/closures/{closureId}")
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 \"description\": \"<string>\",\n \"startAt\": \"2026-12-24T18:30:00.000Z\",\n \"endAt\": \"2026-12-24T18:30:00.000Z\",\n \"chatGreeting\": \"<string>\",\n \"phoneGreeting\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "<string>",
"chatGreeting": "<string>",
"phoneGreeting": "<string>",
"startAt": "2026-12-24T18:30:00.000Z",
"endAt": "2026-12-24T18:30:00.000Z"
}
}{
"success": false,
"data": {},
"message": "<string>"
}{
"success": false,
"data": {},
"message": "<string>"
}{
"success": false,
"data": {},
"message": "<string>"
}Body
Supply either annualDate for an annual all-day closure, or both startAt and endAt for a one-time closure. Do not combine them.
Closure name or reason shared with callers and visitors.
1 - 255\SWhen the closure begins, inclusive. UTC timestamp in YYYY-MM-DDTHH:mm:00Z format; no fractional seconds.
^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:00Z$"2026-12-24T18:30:00.000Z"
When the closure ends, exclusive. Must be after startAt. UTC timestamp in YYYY-MM-DDTHH:mm:00Z format; no fractional seconds.
^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:00Z$"2026-12-24T18:30:00.000Z"
Repeat on this calendar date each year for the entire day in the organization's timezone.
Show child attributes
Show child attributes
Nonblank chat greeting during the closure, up to 500 characters.
1 - 500\SNonblank phone greeting during the closure, up to 500 characters.
1 - 500\S