curl --request POST \
--url https://api.reply.io/v3/email-accounts/filter \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"status": "connected",
"emailAccountType": "Gmail",
"domains": [
"company.com"
],
"tags": [
"Marketing"
]
}
'import requests
url = "https://api.reply.io/v3/email-accounts/filter"
payload = {
"status": "connected",
"emailAccountType": "Gmail",
"domains": ["company.com"],
"tags": ["Marketing"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
status: 'connected',
emailAccountType: 'Gmail',
domains: ['company.com'],
tags: ['Marketing']
})
};
fetch('https://api.reply.io/v3/email-accounts/filter', 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/filter",
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([
'status' => 'connected',
'emailAccountType' => 'Gmail',
'domains' => [
'company.com'
],
'tags' => [
'Marketing'
]
]),
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/filter"
payload := strings.NewReader("{\n \"status\": \"connected\",\n \"emailAccountType\": \"Gmail\",\n \"domains\": [\n \"company.com\"\n ],\n \"tags\": [\n \"Marketing\"\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.reply.io/v3/email-accounts/filter")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"status\": \"connected\",\n \"emailAccountType\": \"Gmail\",\n \"domains\": [\n \"company.com\"\n ],\n \"tags\": [\n \"Marketing\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/email-accounts/filter")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"status\": \"connected\",\n \"emailAccountType\": \"Gmail\",\n \"domains\": [\n \"company.com\"\n ],\n \"tags\": [\n \"Marketing\"\n ]\n}"
response = http.request(request)
puts response.read_bodyFilter email accounts
channels:read scope (or a broader one that includes it).
Find email accounts by status, provider, address, domain, owner, or tag. Every field is optional; an empty body matches all.
curl --request POST \
--url https://api.reply.io/v3/email-accounts/filter \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"status": "connected",
"emailAccountType": "Gmail",
"domains": [
"company.com"
],
"tags": [
"Marketing"
]
}
'import requests
url = "https://api.reply.io/v3/email-accounts/filter"
payload = {
"status": "connected",
"emailAccountType": "Gmail",
"domains": ["company.com"],
"tags": ["Marketing"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
status: 'connected',
emailAccountType: 'Gmail',
domains: ['company.com'],
tags: ['Marketing']
})
};
fetch('https://api.reply.io/v3/email-accounts/filter', 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/filter",
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([
'status' => 'connected',
'emailAccountType' => 'Gmail',
'domains' => [
'company.com'
],
'tags' => [
'Marketing'
]
]),
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/filter"
payload := strings.NewReader("{\n \"status\": \"connected\",\n \"emailAccountType\": \"Gmail\",\n \"domains\": [\n \"company.com\"\n ],\n \"tags\": [\n \"Marketing\"\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.reply.io/v3/email-accounts/filter")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"status\": \"connected\",\n \"emailAccountType\": \"Gmail\",\n \"domains\": [\n \"company.com\"\n ],\n \"tags\": [\n \"Marketing\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/email-accounts/filter")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"status\": \"connected\",\n \"emailAccountType\": \"Gmail\",\n \"domains\": [\n \"company.com\"\n ],\n \"tags\": [\n \"Marketing\"\n ]\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
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.
Query Parameters
Maximum number of items to return (default 25, max 1000)
Number of items to skip
Body
Filter criteria for searching email accounts. All provided filters are combined with AND logic — an account must match every specified filter to be included. Omitted (null) filters are ignored.
Filter by connection status (case-insensitive, exact match). Allowed values: connected, disconnected, unknown
connected, disconnected, unknown Filter by email account provider type (case-insensitive, exact match). Allowed values: Custom, Gmail, Outlook, Exchange, ExchangeOnPremise
Filter by email address (exact match, case-insensitive)
Filter by email domains (suffix match on the email address). Multiple domains are combined with OR logic — matches any of the provided domains.
Filter by owner user IDs (matches any of the provided IDs)
Filter by tag names (case-insensitive, matches any of the provided tags)