---
title: "Accept account suggestions"
method: POST
path: "/account-suggestions"
tags: ["Accounts"]
---

# Accept account suggestions

`POST /account-suggestions`

## Request

- Base URL: `https://api.sequenzy.com/api/v1`
- URL: `https://api.sequenzy.com/api/v1/account-suggestions`
- Auth: HTTP bearer

Creates an account for each domain (external ID and domain set to the domain, name derived from it) and adds the domain's contacts that belong to no account as members. When one account already uses the domain as its domain or external ID, contacts are added to it instead; with several, the domain is skipped (`multiple_accounts`). A domain whose contacts already partly belong to another account is skipped (`already_in_account`) so an organization is not duplicated. Domains without eligible contacts are skipped (`no_contacts`). Existing roles, names and domains are kept, no sync rules run, segment-entered sequences are not triggered, and retries are safe. Accounts hold at most 5,000 members, the attribute fan-out limit; `truncated` reports contacts left out.

## Request body

- object
  - `domains` string[], required: Domains to accept, such as `acme.com`. Normalized to lowercase; duplicates are ignored. Personal and disposable providers are rejected.

## Response `200`

Per-domain outcome

- AccountSuggestionsAcceptResponse
  - `success` boolean
  - `accountsCreated` integer
  - `membershipsCreated` integer
  - `results` object[]
    - `domain` string
    - `status` 'created' | 'updated' | 'skipped'
    - `reason` 'no_contacts' | 'multiple_accounts' | 'already_in_account' | 'null', nullable
    - `account` Account: A B2B account (organization, workspace or team) that contacts belong to.
      - `id` string
      - `externalId` string: Customer-owned organization ID, unique per workspace.
      - `name` string, nullable
      - `domain` string, nullable
      - `attributes` object: Account attributes, fanned out to members as `account.<name>`.
      - `memberCount` integer
      - `lastEventAt` string, date-time, nullable
      - `createdAt` string, date-time
      - `updatedAt` string, date-time
    - `contactCount` integer: Eligible contacts at the domain (in no account, or already in this one), before the 5,000 member cap.
    - `membersAdded` integer
    - `truncated` boolean: True when contacts were left out because accounts hold at most 5,000 members (the attribute fan-out limit).

## Other responses

- `400`: A domain is invalid, a personal or disposable email provider, or one of the workspace's own sending domains. Nothing is written.
- `401`: Missing or invalid API key
- `403`: The API key lacks `subscribers:write`, or no company is selected.
- `409`: Accepting would turn Accounts on, but contacts already use a custom attribute named `account` or `account.*`. Rename those contact attributes, then retry.
- `422`: Request shape validation failed (missing `domains`, empty array or more than 25 entries).

## Changes

- **2026-10-16** `db3873ca3d4d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/account-suggestions/post.md)

---

[API](https://skmtc.dev/sequenzy/apis/sequenzy-api.md) - [All operations](https://skmtc.dev/sequenzy/apis/sequenzy-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sequenzy/apis/sequenzy-api/revisions/8156dc12d8b4?raw)
