SendlySendly
API ReferenceDomains

Assign a sending identity to a stream

PATCH
/api/domains/{id}

Assign this identity to transactional or marketing traffic, make it the project's default for that stream, or give it the from-address a send on that stream uses when it names none.

Streams are enforced, not labelled: once an identity is assigned, a send of the other kind from it is refused with 403. That is what keeps a campaign's complaint rate off the identity your password resets go out on. An identity with no stream (stream: null, and the state of every domain added before this existed) carries both.

At most one identity per (project, stream) is the default; setting streamDefault demotes whichever held it. defaultFromAddress has to be an address on this identity's own host — a default pointing anywhere else would go out unsigned by the name in the From header.

defaultFromName is the sender name recipients see when a send from this identity names none. Unlike the other three it belongs to the identity rather than the stream, so it applies to every send leaving on this host and survives unassigning. Every field is optional and an omitted one is left alone.

Requires the domains:write scope — Add and remove sending domains, and trigger verification.

Authorization

AuthorizationBearer <token>

API key authentication. Use a sk_* (FULL) or pk_* (SENDING_ONLY) key as the bearer token. Public keys (pk_*) are restricted to the email-send endpoints and the self-serve list subscribe/unsubscribe pair; every other endpoint — event tracking included — answers 403 for them. In scope terms (used by /api/v1/* operations): FULL keys hold every scope; SENDING_ONLY keys hold only emails:send.

In: header

Path Parameters

id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Body for PATCH /api/domains/{id}.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/api/domains/497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "Content-Type: application/json" \  -d '{}'
{
  "success": true,
  "data": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8",
    "domain": "string",
    "verified": true,
    "region": "string",
    "dkimTokens": [
      "string"
    ],
    "dkimStatus": "NOT_CHECKED",
    "spfStatus": "NOT_CHECKED",
    "dmarcStatus": "NOT_CHECKED",
    "lastHealthCheckAt": "2019-08-24T14:15:22Z",
    "receivingEnabled": true,
    "mailFromDomain": "string",
    "mailFromDomainStatus": "Pending",
    "stream": "TRANSACTIONAL",
    "streamDefault": true,
    "defaultFromAddress": "string",
    "defaultFromName": "string",
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z"
  }
}
{
  "success": false,
  "error": {
    "message": "string",
    "code": "string",
    "details": {
      "errors": [
        null
      ]
    }
  }
}
{
  "success": false,
  "error": {
    "message": "string",
    "code": "string",
    "details": {
      "errors": [
        null
      ]
    }
  }
}
{
  "success": false,
  "error": {
    "message": "string",
    "code": "string",
    "details": {
      "errors": [
        null
      ]
    }
  }
}
{
  "success": false,
  "error": {
    "message": "string",
    "code": "string",
    "details": {
      "errors": [
        null
      ]
    }
  }
}
{
  "success": false,
  "error": {
    "message": "string",
    "code": "string",
    "details": {
      "errors": [
        null
      ]
    }
  }
}
{
  "success": false,
  "error": {
    "message": "string",
    "code": "string",
    "details": {
      "errors": [
        null
      ]
    }
  }
}