curl --request POST \
--url https://api.reply.io/v3/email-accounts/procurement/domains/{domainId}/renew/estimate \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.reply.io/v3/email-accounts/procurement/domains/{domainId}/renew/estimate"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reply.io/v3/email-accounts/procurement/domains/{domainId}/renew/estimate', 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/email-accounts/procurement/domains/{domainId}/renew/estimate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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/email-accounts/procurement/domains/{domainId}/renew/estimate"
req, _ := http.NewRequest("POST", 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.post("https://api.reply.io/v3/email-accounts/procurement/domains/{domainId}/renew/estimate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/email-accounts/procurement/domains/{domainId}/renew/estimate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"currency": "USD",
"domainId": 4182,
"domainName": "outreach-hq.com",
"renewPrice": 1499,
"subtotal": 1499,
"discount": 0,
"total": 1499
}Estimate a domain renewal
New. This endpoint shipped recently. If anything about it is unclear or could work better for you, tell us in the developer Slack.
channels:read scope (or a broader one that includes it).
Previews what renewing one purchased domain would charge, at the provider’s current price. Nothing is charged and nothing is renewed. No request body.
It applies the same checks as POST /v3/email-accounts/procurement/domains//renew, so an estimate that succeeds means the renewal can be requested now. The total can still change by the time the renewal is charged, since the provider’s price is taken again then.
curl --request POST \
--url https://api.reply.io/v3/email-accounts/procurement/domains/{domainId}/renew/estimate \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.reply.io/v3/email-accounts/procurement/domains/{domainId}/renew/estimate"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reply.io/v3/email-accounts/procurement/domains/{domainId}/renew/estimate', 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/email-accounts/procurement/domains/{domainId}/renew/estimate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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/email-accounts/procurement/domains/{domainId}/renew/estimate"
req, _ := http.NewRequest("POST", 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.post("https://api.reply.io/v3/email-accounts/procurement/domains/{domainId}/renew/estimate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/email-accounts/procurement/domains/{domainId}/renew/estimate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"currency": "USD",
"domainId": 4182,
"domainName": "outreach-hq.com",
"renewPrice": 1499,
"subtotal": 1499,
"discount": 0,
"total": 1499
}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.
Path Parameters
The domainId from GET /v3/email-accounts/procurement/domains
x >= 1Response
The renewal price breakdown
Price preview for renewing one purchased domain for another year. Every amount except discount is in cents — 1499 means fourteen dollars and ninety-nine cents.
Currency of every amount. Always USD.
Identifier of the domain, as returned by GET /v3/email-accounts/procurement/domains
Fully qualified domain name
The provider's current renewal price for the domain, in cents, before any discount, tax or account credit
Equals total when no coupon applies. When a coupon is applied automatically, the amount before that discount, in cents.
Always 0. Not a currency amount.
What the renewal would charge to the card on file, in cents, after coupon, tax and account credits. Can be 0 while renewPrice is above zero.