curl --request PATCH \
--url https://api.reply.io/v3/email-accounts/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"safety": {
"dailyLimit": 750
},
"signature": {
"signature": "Updated signature"
}
}
'import requests
url = "https://api.reply.io/v3/email-accounts/{id}"
payload = {
"safety": { "dailyLimit": 750 },
"signature": { "signature": "Updated signature" }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({safety: {dailyLimit: 750}, signature: {signature: 'Updated signature'}})
};
fetch('https://api.reply.io/v3/email-accounts/{id}', 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/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'safety' => [
'dailyLimit' => 750
],
'signature' => [
'signature' => 'Updated signature'
]
]),
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.reply.io/v3/email-accounts/{id}"
payload := strings.NewReader("{\n \"safety\": {\n \"dailyLimit\": 750\n },\n \"signature\": {\n \"signature\": \"Updated signature\"\n }\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.reply.io/v3/email-accounts/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"safety\": {\n \"dailyLimit\": 750\n },\n \"signature\": {\n \"signature\": \"Updated signature\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/email-accounts/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"safety\": {\n \"dailyLimit\": 750\n },\n \"signature\": {\n \"signature\": \"Updated signature\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": 12345,
"ownerUserId": 42,
"emailAccountType": "custom",
"isDefault": false,
"isInUse": true,
"connectionStatus": "connected",
"sendingConnectivityError": null,
"receivingConnectivityError": null,
"sendingLockedByProvider": false,
"updatedAt": "2026-03-15T10:30:00Z",
"connection": {
"email": "john.doe@company.com",
"senderName": "John Doe",
"smtpHost": "smtp.company.com",
"smtpPort": 465,
"smtpSsl": true,
"imapHost": "imap.company.com",
"imapPort": 993,
"imapSsl": true
},
"safety": {
"dailyLimit": 500,
"isEmailsThrottlingEnabled": true,
"emailsPerInterval": 5,
"emailsThrottlingSecondsInterval": 60,
"isSendingDelayEnabled": true,
"maxSendingDelaySeconds": 120,
"minSendingDelaySeconds": 30
},
"signature": {
"signature": "Best regards,\nJohn Doe"
},
"optOut": {
"message": "Unsubscribe",
"emailFooter": "",
"isOptOutLinkEnabled": true,
"optOutTextBlock": "Click here to unsubscribe"
},
"rampUp": {
"enabled": false,
"startValue": 10,
"incrementValue": 5
},
"tags": [
"Marketing"
]
}Update an email account
channels:write scope (or a broader one that includes it).
Change specific settings on an email account without resending the whole record. Only the sections you include are updated.
curl --request PATCH \
--url https://api.reply.io/v3/email-accounts/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"safety": {
"dailyLimit": 750
},
"signature": {
"signature": "Updated signature"
}
}
'import requests
url = "https://api.reply.io/v3/email-accounts/{id}"
payload = {
"safety": { "dailyLimit": 750 },
"signature": { "signature": "Updated signature" }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({safety: {dailyLimit: 750}, signature: {signature: 'Updated signature'}})
};
fetch('https://api.reply.io/v3/email-accounts/{id}', 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/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'safety' => [
'dailyLimit' => 750
],
'signature' => [
'signature' => 'Updated signature'
]
]),
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.reply.io/v3/email-accounts/{id}"
payload := strings.NewReader("{\n \"safety\": {\n \"dailyLimit\": 750\n },\n \"signature\": {\n \"signature\": \"Updated signature\"\n }\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.reply.io/v3/email-accounts/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"safety\": {\n \"dailyLimit\": 750\n },\n \"signature\": {\n \"signature\": \"Updated signature\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/email-accounts/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"safety\": {\n \"dailyLimit\": 750\n },\n \"signature\": {\n \"signature\": \"Updated signature\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": 12345,
"ownerUserId": 42,
"emailAccountType": "custom",
"isDefault": false,
"isInUse": true,
"connectionStatus": "connected",
"sendingConnectivityError": null,
"receivingConnectivityError": null,
"sendingLockedByProvider": false,
"updatedAt": "2026-03-15T10:30:00Z",
"connection": {
"email": "john.doe@company.com",
"senderName": "John Doe",
"smtpHost": "smtp.company.com",
"smtpPort": 465,
"smtpSsl": true,
"imapHost": "imap.company.com",
"imapPort": 993,
"imapSsl": true
},
"safety": {
"dailyLimit": 500,
"isEmailsThrottlingEnabled": true,
"emailsPerInterval": 5,
"emailsThrottlingSecondsInterval": 60,
"isSendingDelayEnabled": true,
"maxSendingDelaySeconds": 120,
"minSendingDelaySeconds": 30
},
"signature": {
"signature": "Best regards,\nJohn Doe"
},
"optOut": {
"message": "Unsubscribe",
"emailFooter": "",
"isOptOutLinkEnabled": true,
"optOutTextBlock": "Click here to unsubscribe"
},
"rampUp": {
"enabled": false,
"startValue": 10,
"incrementValue": 5
},
"tags": [
"Marketing"
]
}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
Email Account ID
Body
Request body for partially updating an email account (PATCH). Only provide the sections and fields you want to change. Omitted sections and fields are left unchanged.
SMTP and IMAP connection settings for a custom email account. Only applicable to Custom provider type.
Show child attributes
Show child attributes
Sending safety and throttling configuration.
Show child attributes
Show child attributes
Email signature configuration.
Show child attributes
Show child attributes
Opt-out / unsubscribe link configuration.
Show child attributes
Show child attributes
Sending volume ramp-up configuration for warming up email accounts.
Show child attributes
Show child attributes
Tag names to assign (replaces existing tags)
Response
Email account updated successfully
Full detailed representation of an email account, including all configuration sections.
Unique identifier for the email account
ID of the user who owns this email account
Provider type of the email account. Values: custom, gmail, outlook, exchange, exchangeOnPremise
custom, gmail, outlook, exchange, exchangeOnPremise Whether this is the user's default email account
Whether this email account is currently used in any active sequence
Current connection status of the email account. Values: unknown, connected, disconnected
unknown, connected, disconnected Error details if SMTP sending connectivity has failed
Error details if IMAP receiving connectivity has failed
Whether the email provider has locked outbound sending
Timestamp of the last update to this email account
Connection settings returned in responses (passwords excluded).
Show child attributes
Show child attributes
Sending safety and throttling configuration.
Show child attributes
Show child attributes
Email signature configuration.
Show child attributes
Show child attributes
Opt-out / unsubscribe link configuration.
Show child attributes
Show child attributes
Sending volume ramp-up configuration for warming up email accounts.
Show child attributes
Show child attributes
Tag names associated with this email account