Get rate limits
curl --request GET \
--url https://api.reply.io/v3/rate-limits \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.reply.io/v3/rate-limits"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reply.io/v3/rate-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.reply.io/v3/rate-limits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.reply.io/v3/rate-limits"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.reply.io/v3/rate-limits")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/rate-limits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"activePackages": 0,
"items": [
{
"name": "general",
"period": "1m",
"baseLimit": 100,
"limit": 100,
"used": 12,
"remaining": 88,
"resetsAt": "2026-10-05T14:38:12.41Z"
},
{
"name": "general",
"period": "1h",
"baseLimit": 3000,
"limit": 3000,
"used": 410,
"remaining": 2590,
"resetsAt": "2026-10-05T15:02:47.09Z"
},
{
"name": "general",
"period": "7d",
"baseLimit": 150000,
"limit": 150000,
"used": 31200,
"remaining": 118800,
"resetsAt": "2026-10-08T09:14:03.55Z"
},
{
"name": "reporting",
"period": "1h",
"baseLimit": 500,
"limit": 500,
"used": 0,
"remaining": 500,
"resetsAt": null
},
{
"name": "reporting",
"period": "7d",
"baseLimit": 25000,
"limit": 25000,
"used": 2100,
"remaining": 22900,
"resetsAt": "2026-10-07T11:30:26.62Z"
}
]
}{
"title": "Unauthorized",
"status": 401,
"detail": "Authentication credentials are missing or invalid."
}{
"title": "Too Many Requests",
"status": 429,
"detail": "API calls quota exceeded! maximum admitted 100 per 1m."
}{
"title": "Service Unavailable",
"status": 503,
"detail": "Rate limit usage is temporarily unavailable.",
"code": "rateLimits.countersUnavailable"
}Rate Limits
Get rate limits
Coming soon. This endpoint will be available by mid October 2026.
See how much of each rate limit you have used and when it resets. Every named limit comes with the standard
limit, the limit that applies to you, the requests used and remaining in the current window, and the time
the count resets — so you can plan around a limit before you hit 429. Calls to this endpoint count toward
your limits like any other request.
GET
/
v3
/
rate-limits
Get rate limits
curl --request GET \
--url https://api.reply.io/v3/rate-limits \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.reply.io/v3/rate-limits"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reply.io/v3/rate-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.reply.io/v3/rate-limits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.reply.io/v3/rate-limits"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.reply.io/v3/rate-limits")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/rate-limits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"activePackages": 0,
"items": [
{
"name": "general",
"period": "1m",
"baseLimit": 100,
"limit": 100,
"used": 12,
"remaining": 88,
"resetsAt": "2026-10-05T14:38:12.41Z"
},
{
"name": "general",
"period": "1h",
"baseLimit": 3000,
"limit": 3000,
"used": 410,
"remaining": 2590,
"resetsAt": "2026-10-05T15:02:47.09Z"
},
{
"name": "general",
"period": "7d",
"baseLimit": 150000,
"limit": 150000,
"used": 31200,
"remaining": 118800,
"resetsAt": "2026-10-08T09:14:03.55Z"
},
{
"name": "reporting",
"period": "1h",
"baseLimit": 500,
"limit": 500,
"used": 0,
"remaining": 500,
"resetsAt": null
},
{
"name": "reporting",
"period": "7d",
"baseLimit": 25000,
"limit": 25000,
"used": 2100,
"remaining": 22900,
"resetsAt": "2026-10-07T11:30:26.62Z"
}
]
}{
"title": "Unauthorized",
"status": 401,
"detail": "Authentication credentials are missing or invalid."
}{
"title": "Too Many Requests",
"status": 429,
"detail": "API calls quota exceeded! maximum admitted 100 per 1m."
}{
"title": "Service Unavailable",
"status": 503,
"detail": "Rate limit usage is temporarily unavailable.",
"code": "rateLimits.countersUnavailable"
}Authorizations
Authenticate every request with a Bearer token. Pass your Reply API key in the
Authorization header:
Authorization: Bearer <your-api-key>
Get your API key from the Reply dashboard: Settings → API Key.
Response
Rate limits retrieved successfully
Every named rate limit that applies to you, with your current usage.