---
title: "Add an email sending identity"
method: POST
path: "/api/v1/email/sending-domain"
tags: ["channels"]
---

# Add an email sending identity

`POST /api/v1/email/sending-domain`

## Request

- Base URL: `https://app.blueticked.com`
- URL: `https://app.blueticked.com/api/v1/email/sending-domain`
- Auth: HTTP bearer

Register a Blueticked-managed sending identity and get back the DNS records to add. Emails use that sender once it verifies.

Add the returned DNS records at your domain registrar, then call the verify endpoint.

If the workspace has more than one email channel, pass business_id to choose the business.

One sending identity per business - remove the current one (DELETE) before adding another.

A domain the email provider already has is never taken over. Another workspace's or business's domain answers 409 conflict with details.reason domain_in_use_elsewhere or domain_in_use_by_business. One no workspace holds answers 409 conflict with domain_registered_unclaimed: support releases it, and a retry gets the same answer. If the holder could not be read, it answers 503 service_unavailable with domain_holder_unchecked.

A timeout or a provider 5xx is answered as could not confirm. A retried add of a domain the provider did take answers domain_registered_unclaimed: contact support with request_id.

Until verified, emails keep sending from the shared Blueticked address; once verified they send from from_local_part@domain.

## Query parameters

- `business_id` string

## Request body

- object
  - `domain` string, required
  - `from_local_part` string, required

## Response `201`

Success

- object
  - `sending_domain` object, required
    - `id` string, uuid, required
    - `domain` string, required
    - `from_local_part` string, required
    - `status` string, required
    - `records` object[], required
      - `record` string
      - `name` string, required
      - `type` string, required
      - `value` string, required
      - `status` string
      - `priority` number
      - `ttl` union
        - string
        - number
    - `open_tracking` boolean
    - `click_tracking` boolean
    - `tracking_subdomain` string, nullable
    - `tracking_status` string, nullable
    - `dmarc_found` boolean
    - `dmarc_checked_at` string
    - `dmarc` object
      - `found` boolean, required
      - `conclusive` boolean, required
      - `name` string, required
      - `recommended_value` string, required
  - `request_id` string, required

## Other responses

- `400`: Validation failed
- `401`: Unauthorized: missing or invalid API key
- `402`: Insufficient wallet balance
- `403`: Forbidden: scope, plan limit, or suspension
- `404`: Not found
- `409`: Conflict (idempotency-key reuse or resource in use)
- `413`: Request body above the endpoint's size limit
- `422`: Understood but refused: the request is well-formed, the action is not permitted for this resource
- `429`: Rate limited
- `500`: Internal error
- `502`: An upstream provider refused or failed the request
- `503`: Channel or send queue unavailable

---

[API](https://skmtc.dev/blueticked/apis/blueticked-api.md) · [All operations](https://skmtc.dev/blueticked/apis/blueticked-api/llms.txt) · [OpenAPI document](https://skmtc.dev/blueticked/apis/blueticked-api/revisions/07132284f4ff?raw)
