Accounts
Accept Account Suggestions
Create accounts from suggested email domains
POST
/
api
/
v1
/
account-suggestions
Accept Account Suggestions
curl --request POST \
--url https://api.sequenzy.com/api/v1/account-suggestions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"domains": [
"<string>"
]
}
'import requests
url = "https://api.sequenzy.com/api/v1/account-suggestions"
payload = { "domains": ["<string>"] }
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({domains: ['<string>']})
};
fetch('https://api.sequenzy.com/api/v1/account-suggestions', 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.sequenzy.com/api/v1/account-suggestions",
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([
'domains' => [
'<string>'
]
]),
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.sequenzy.com/api/v1/account-suggestions"
payload := strings.NewReader("{\n \"domains\": [\n \"<string>\"\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.sequenzy.com/api/v1/account-suggestions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"domains\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/account-suggestions")
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 \"domains\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"accountsCreated": 1,
"membershipsCreated": 7,
"results": [
{
"domain": "acme.com",
"status": "created",
"reason": null,
"account": {
"id": "acc_abc123",
"externalId": "acme.com",
"name": "Acme",
"domain": "acme.com",
"attributes": {},
"memberCount": 7,
"lastEventAt": null,
"createdAt": "2026-09-23T10:00:00.000Z",
"updatedAt": "2026-09-23T10:00:00.000Z"
},
"contactCount": 7,
"membersAdded": 7,
"truncated": false
},
{
"domain": "globex.io",
"status": "skipped",
"reason": "no_contacts",
"account": null,
"contactCount": 0,
"membersAdded": 0,
"truncated": false
}
]
}
{
"success": false,
"error": "`gmail.com` is a personal or disposable email domain, not an organization."
}
{ "success": false, "error": "Expected array with at least 1 item" }
{ "success": false, "error": "Unauthorized" }
{ "success": false, "error": "No company selected" }
{
"success": false,
"error": "Contacts in this workspace already use the custom attribute `account.plan`. ..."
}
Accept Account Suggestions
Creates an account for each domain you confirm from List Account Suggestions. The account’s external ID and domain are the domain, and its name is derived from it (acme-corp.com becomes Acme Corp). Every contact at the domain that belongs to no account is added as a member.
- When one account already uses the domain as its domain or external ID, the contacts are added to that account instead.
- Contacts already in another account stay where they are. If no account uses the domain but some of its contacts already belong to one, the domain is skipped so the organization is not duplicated.
- Existing roles, names and domains are kept. No sync rules run, and sequences that start when a contact enters a segment are not triggered.
- If a call fails partway, retrying it with the same domains finishes the work.
- Retries are safe: a repeated call adds nothing new and returns
updated.
409 rule as creating an account. Requires the subscribers:write scope.
Request
string[]
required
1 to 25 domains, such as
acme.com. Domains are lowercased and duplicates are
ignored. A personal or disposable provider, one of your own sending domains,
or anything that is not a hostname rejects the whole request with 400 before
anything is written.curl -X POST "https://api.sequenzy.com/api/v1/account-suggestions" \
-H "Authorization: Bearer API_KEY" \
-H "Content-Type: application/json" \
-d '{"domains": ["acme.com", "globex.io"]}'
Response
number
Accounts created by this call.
number
Memberships created by this call.
array
One entry per domain, in request order.
Show properties
Show properties
string
The normalized domain.
string
created (new account), updated (existing account) or skipped.string | null
For
skipped: no_contacts when no contact at the domain is free to
add, multiple_accounts when several accounts already use the domain, or
already_in_account when some of the domain’s contacts already belong to
an account that does not use the domain. Otherwise null.object | null
The account, as returned by Get Account.
null when skipped.number
Eligible contacts at the domain: in no account, or already in this one.
number
New memberships for this domain.
boolean
true when contacts were left out because an account holds at most 5,000
members, the limit for account attributes on contacts.{
"success": true,
"accountsCreated": 1,
"membershipsCreated": 7,
"results": [
{
"domain": "acme.com",
"status": "created",
"reason": null,
"account": {
"id": "acc_abc123",
"externalId": "acme.com",
"name": "Acme",
"domain": "acme.com",
"attributes": {},
"memberCount": 7,
"lastEventAt": null,
"createdAt": "2026-09-23T10:00:00.000Z",
"updatedAt": "2026-09-23T10:00:00.000Z"
},
"contactCount": 7,
"membersAdded": 7,
"truncated": false
},
{
"domain": "globex.io",
"status": "skipped",
"reason": "no_contacts",
"account": null,
"contactCount": 0,
"membersAdded": 0,
"truncated": false
}
]
}
{
"success": false,
"error": "`gmail.com` is a personal or disposable email domain, not an organization."
}
{ "success": false, "error": "Expected array with at least 1 item" }
{ "success": false, "error": "Unauthorized" }
{ "success": false, "error": "No company selected" }
{
"success": false,
"error": "Contacts in this workspace already use the custom attribute `account.plan`. ..."
}
⌘I
Accept Account Suggestions
curl --request POST \
--url https://api.sequenzy.com/api/v1/account-suggestions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"domains": [
"<string>"
]
}
'import requests
url = "https://api.sequenzy.com/api/v1/account-suggestions"
payload = { "domains": ["<string>"] }
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({domains: ['<string>']})
};
fetch('https://api.sequenzy.com/api/v1/account-suggestions', 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.sequenzy.com/api/v1/account-suggestions",
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([
'domains' => [
'<string>'
]
]),
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.sequenzy.com/api/v1/account-suggestions"
payload := strings.NewReader("{\n \"domains\": [\n \"<string>\"\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.sequenzy.com/api/v1/account-suggestions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"domains\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/account-suggestions")
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 \"domains\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"accountsCreated": 1,
"membershipsCreated": 7,
"results": [
{
"domain": "acme.com",
"status": "created",
"reason": null,
"account": {
"id": "acc_abc123",
"externalId": "acme.com",
"name": "Acme",
"domain": "acme.com",
"attributes": {},
"memberCount": 7,
"lastEventAt": null,
"createdAt": "2026-09-23T10:00:00.000Z",
"updatedAt": "2026-09-23T10:00:00.000Z"
},
"contactCount": 7,
"membersAdded": 7,
"truncated": false
},
{
"domain": "globex.io",
"status": "skipped",
"reason": "no_contacts",
"account": null,
"contactCount": 0,
"membersAdded": 0,
"truncated": false
}
]
}
{
"success": false,
"error": "`gmail.com` is a personal or disposable email domain, not an organization."
}
{ "success": false, "error": "Expected array with at least 1 item" }
{ "success": false, "error": "Unauthorized" }
{ "success": false, "error": "No company selected" }
{
"success": false,
"error": "Contacts in this workspace already use the custom attribute `account.plan`. ..."
}