Update a sender

PATCH/api/v1/senders/{sender}
Requires anorganization API keywith the scopesenders:write

Parameters

NameInTypeDescription
senderrequiredpathstringThe sender identifier.

Request

PATCH/api/v1/senders/{sender}
curl -X PATCH 'https://app.mailyte.com/api/v1/senders/01JBT8XQ2M9WYC3K4F6R7S8T9V' \
  -H 'Authorization: Bearer mk_live_YOUR_API_KEY'
The key names its own organization, so no X-Organization-ID header is needed.

Response

Success.

  • dataobject
    • objectstringsender
    • idstring

      Unique identifier for the sender.

    • namestring

      The display name recipients see, e.g. `Acme Support` in `Acme Support <hello@acme.com>`.

    • emailstring

      The address this identity sends as. `POST /messages` refuses a `from` that is not a verified sender.

    • domainstring

      The domain NAME this address sends from, e.g. `acme.com` — not an id. A sender owns no DNS state of its own; it reads its domain's, so the full DNS picture is at `GET /domains/{domain}` and is deliberately not duplicated here. **null means UNKNOWN — the domain relation was not loaded on this path, so we did not read the name.** It NEVER means the sender has no domain: `senders.domain_id` is NOT NULL, so every sender has exactly one. Every published path loads the relation, so a null here is our omission rather than a fact about the sender.

    • verificationobject

      Whether this identity may be sent from. **No verification token appears here or anywhere else in the API** — verification reads the domain's public DNS, so there is nothing to prove ownership with. If a token-based flow is ever added, its token belongs in the response to the request that mints it and nowhere else: a token that claims an address is a credential, and one returned on a GET is readable by anyone who can replay the request.

      • statestringpending | verified | failed

        The one verification answer. Only `verified` permits sending; `pending` and `failed` both do not, and differ in whether a check has run.

      • verified_atstring

        When the last SUCCESSFUL check ran. **null means NOT INCLUDED — it is withheld whenever `state` is not `verified`**, and that is the one place in this section where a null is a deliberate withholding rather than an absence. The stored column is NOT cleared when a later check fails, so a sender that verified in March and broke its SPF in April still carries the March date; publishing it beside `state: "failed"` would be two fields giving two answers. So null here does not mean this sender never verified — it means it is not verified NOW, and any earlier success is deliberately not published. Read `state` for whether this sender works, never this field.

      • errorstring

        Why the last check failed, in words a customer can act on (typically the DNS records still missing). **null means NONE — there is no current failure to report**, which is the case whenever `state` is not `failed`. Unlike `verified_at` above, nothing is being withheld here: a successful check clears the stored error, so there is no stale string to hide.

    • created_atstring

      When this sender was created. Written on insert, so it should always be present. **null means UNKNOWN — the stored timestamp was absent**, and we will not invent a date to fill the gap.

    • updated_atstring

      When this sender was last changed. **null means UNKNOWN — the stored timestamp was absent.** It never means "never changed": a sender that has not been touched since creation carries its creation time here.

Returned inside the standard envelope.

Errors

StatusWhen
401The API key is missing, unknown, revoked or expired. All four answer identically, on purpose: distinguishing them would confirm which keys exist.
403The key is valid but may not do this: it lacks the required scope, its IP allowlist does not include you, or this endpoint does not accept API keys.
404No such resource in this organization.
422The request was understood but the values were not acceptable.
429Too many requests, or the organization has spent its sending allowance. `Retry-After` says how long to wait.

Every status, with what causes it and what to do, is on the error reference.