---
title: "Confirm or update a sender"
method: POST
path: "/domains/{domainId}/sources/{sourceId}"
tags: ["DomainSource"]
---

# Confirm or update a sender

`POST /domains/{domainId}/sources/{sourceId}`

## Request

- Base URL: `https://api.palisade.email`
- URL: `https://api.palisade.email/domains/{domainId}/sources/{sourceId}`
- Auth: one of:
  - HTTP bearer
  - HTTP basic

## Path parameters

- `domainId` string, uuid, required
- `sourceId` string, uuid, required

## Headers

- `Palisade-Version` '2025-04-30' | 'unstable', required

## Request body

- object
  - `confirmation_status` 'confirmed' | 'discarded' | 'requires_confirmation', required

## Response `200`

Success

- DomainSource
  - `id` string, uuid, required
  - `is_known` boolean, required
  - `source_id` string, nullable, required: The catalogue source this sender was matched to, or null when it is not one Palisade recognises. Lets a caller line a sender up with the SPF include or DKIM key it belongs to.
  - `spf_value` string, nullable, required: The SPF mechanism discovery observed for this sender, when it saw one.
  - `source_name` string, nullable, required
  - `source_homepage` string, nullable, required
  - `sending_domain` string, nullable, required
  - `dkim_selectors` string[], required
  - `confirmation_status` 'confirmed' | 'discarded' | 'requires_confirmation', required
  - `confirmed_at` string, date-time, nullable, required
  - `last_seen_at` string, nullable, required: The last day (YYYY-MM-DD) this sender was seen sending for the domain, across all recorded history rather than a recent window, so a sender silent for a year still reports the day it went quiet. Null when no sending has been recorded for it yet. Reported from daily aggregates that can trail live reporting by a few days, so treat it as a date rather than a timestamp. Only counts sending observed since the domain was added to Palisade.
  - `last_spf_aligned_at` string, nullable, required: The last day (YYYY-MM-DD) mail from this sender passed aligned SPF for the domain. Distinct from last_seen_at: a sender that still sends but no longer passes SPF has an SPF problem, not a disused include. Null when it has never passed aligned SPF in recorded history.
  - `totals` object, required
    - `compliant` number, required
    - `non_compliant` number, required
    - `forwarded` number, required
    - `unknown` number, required

---

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