curl --request POST \
--url https://api.getdialed.ai/v1/platforms/five9/domains/{tenancy_id}/refresh-limits \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.getdialed.ai/v1/platforms/five9/domains/{tenancy_id}/refresh-limits"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.getdialed.ai/v1/platforms/five9/domains/{tenancy_id}/refresh-limits', 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.getdialed.ai/v1/platforms/five9/domains/{tenancy_id}/refresh-limits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.getdialed.ai/v1/platforms/five9/domains/{tenancy_id}/refresh-limits"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.getdialed.ai/v1/platforms/five9/domains/{tenancy_id}/refresh-limits")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getdialed.ai/v1/platforms/five9/domains/{tenancy_id}/refresh-limits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"api_host": "api.five9.com",
"bucket_map": {
"five9__configuration_service__add_to_list": {
"operation_types": [
"Upload"
],
"resolved": true
}
},
"buckets": {
"Upload": {
"caps": {
"60": 20,
"3600": 400,
"86400": 2000
},
"effective": {
"60": 16,
"3600": 320,
"86400": 1600
},
"label": "Uploading (batch)",
"margin_pct": 80,
"max_records_per_request": 50000,
"min_interval_ms": 250,
"observed_at": "2026-07-25T18:00:00Z",
"source": "live"
}
},
"counters_synced_at": "2026-07-25T18:00:00Z",
"created_at": "2026-07-25T17:00:00Z",
"domain_id": "100200",
"domain_name": "Acme Corp",
"id": "ten_9f2c1a7b3d4e5f60",
"lane_order": {
"bulk": [
"five9__configuration_service__add_to_list"
]
},
"lane_overrides": {
"five9__configuration_service__add_to_list": "bulk"
},
"org_id": "org_a1b2c3d4",
"platform_id": "five9",
"status": "active",
"sync_status": "live",
"tenancy_unit": {
"key_field": "domain_id",
"key_source": "getVCCConfiguration.domainId",
"name": "Domain",
"plural": "Domains"
},
"updated_at": "2026-07-25T18:00:00Z"
}{
"detail": "Authentication required"
}{
"detail": "Admin role required"
}{
"detail": "Domain not found"
}{
"detail": "No active credential is bound to this Domain — add or re-enable a credential before refreshing limits."
}{
"detail": "margins['Upload'] must be between 1 and 100"
}{
"detail": "Rate limit exceeded: 100 per 1 minute"
}Refresh a Five9 Domain's live limits
Admin only. Re-reads Five9’s live rate-limit counters through an active bound credential and folds the observed caps into the stored record. The safety margin is never touched, and an observed cap of zero (or an unrecognized window) never overwrites a good stored cap.
A provider failure is NOT an error response: the Domain comes back with sync_status="stale" and its caps unchanged, so inspect that field rather than the status code. 409 means the refresh could not be attempted at all — either no active credential is bound to this Domain, or Five9 did not answer within the request budget. Cross-tenant access returns 404, never 403.
curl --request POST \
--url https://api.getdialed.ai/v1/platforms/five9/domains/{tenancy_id}/refresh-limits \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.getdialed.ai/v1/platforms/five9/domains/{tenancy_id}/refresh-limits"
headers = {"X-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.getdialed.ai/v1/platforms/five9/domains/{tenancy_id}/refresh-limits', 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.getdialed.ai/v1/platforms/five9/domains/{tenancy_id}/refresh-limits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.getdialed.ai/v1/platforms/five9/domains/{tenancy_id}/refresh-limits"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.getdialed.ai/v1/platforms/five9/domains/{tenancy_id}/refresh-limits")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getdialed.ai/v1/platforms/five9/domains/{tenancy_id}/refresh-limits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"api_host": "api.five9.com",
"bucket_map": {
"five9__configuration_service__add_to_list": {
"operation_types": [
"Upload"
],
"resolved": true
}
},
"buckets": {
"Upload": {
"caps": {
"60": 20,
"3600": 400,
"86400": 2000
},
"effective": {
"60": 16,
"3600": 320,
"86400": 1600
},
"label": "Uploading (batch)",
"margin_pct": 80,
"max_records_per_request": 50000,
"min_interval_ms": 250,
"observed_at": "2026-07-25T18:00:00Z",
"source": "live"
}
},
"counters_synced_at": "2026-07-25T18:00:00Z",
"created_at": "2026-07-25T17:00:00Z",
"domain_id": "100200",
"domain_name": "Acme Corp",
"id": "ten_9f2c1a7b3d4e5f60",
"lane_order": {
"bulk": [
"five9__configuration_service__add_to_list"
]
},
"lane_overrides": {
"five9__configuration_service__add_to_list": "bulk"
},
"org_id": "org_a1b2c3d4",
"platform_id": "five9",
"status": "active",
"sync_status": "live",
"tenancy_unit": {
"key_field": "domain_id",
"key_source": "getVCCConfiguration.domainId",
"name": "Domain",
"plural": "Domains"
},
"updated_at": "2026-07-25T18:00:00Z"
}{
"detail": "Authentication required"
}{
"detail": "Admin role required"
}{
"detail": "Domain not found"
}{
"detail": "No active credential is bound to this Domain — add or re-enable a credential before refreshing limits."
}{
"detail": "margins['Upload'] must be between 1 and 100"
}{
"detail": "Rate limit exceeded: 100 per 1 minute"
}Authorizations
Path Parameters
Response
Successful Response
One Five9 Domain: the provider-tenant record that anchors rate limits.
N Connections resolving to the same Domain share ONE quota budget. Each
rate bucket reports the provider's raw caps per time window, the
operator's margin_pct safety margin, and the effective budget computed
from both. min_interval_ms is the minimum spacing enforced between two
consecutive calls on the bucket — a floor applied on top of the window
budget, so a bucket well inside its hourly cap can still be paced; null
means no explicit floor, and the margin is not applied to it. tenancy_unit
carries the platform's own vocabulary for this
record so it can be labelled correctly without a second lookup, and
sync_status reports whether the caps are provider-observed (live),
catalog defaults (catalog_default), or unchanged after a refresh returned
unusable counters (stale).
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes