
# E-Mail-Anbieter abrufen

`GET /v1/email-provider` · Berechtigung `email-provider:read` · alle Tarife

Gibt zurück, wie die Umgebung E-Mails versendet: den Zustellmodus, die Absenderadresse, Ihren eigenen SMTP-Server oder E-Mail-Anbieter und den letzten Verbindungstest.

Die Anmeldedaten (SMTP-Passwort oder API-Schlüssel) werden niemals zurückgegeben, auch nicht maskiert oder als Länge. `credentials_set` gibt nur an, ob eine gespeichert ist.

Eine Umgebung, die nie konfiguriert wurde, gibt `platform_default` mit der Version `0` zurück. Der `ETag`-Header enthält die Version; senden Sie sie als `If-Match`, wenn Sie die Konfiguration [ersetzen](put.md).

## Antwort

`200 OK` mit der Konfiguration und `ETag` auf ihre Version gesetzt.

| Feld | Typ | Beschreibung |
|---|---|---|
| `mode` | string | `platform_default`, `platform_managed_domain`, `customer_smtp`, `customer_api` oder `customer_webhook`. |
| `sender_domain_id` | string oder null | `platform_managed_domain`: die [Absenderdomain](../email-sender-domains/get.md) (`sdom_…`), von der E-Mails versendet werden; in allen anderen Modi null. Lesen Sie die Domain, um ihren aktuellen Status zu sehen. |
| `webhook_endpoint_id` | string oder null | `customer_webhook`: der [Webhook-Endpunkt](../webhook-endpoints/get.md) (`whe_…`), der die gerenderten Nachrichten empfängt; in allen anderen Modi null. Lesen Sie den Endpunkt, um zu sehen, ob er noch aktiviert ist. |
| `from_address` | string oder null | Reine Absenderadresse; null bei `platform_default`. |
| `reply_to` | string oder null | Reine Antwortadresse. |
| `provider` | string oder null | Anbieter bei `customer_api`: `ses`, `sendgrid`, `postmark`, `mailgun` oder `brevo`. |
| `smtp_host` | string oder null | Hostname des SMTP-Servers bei `customer_smtp`. |
| `smtp_port` | integer oder null | Port bei `customer_smtp`: `465` (implizites TLS) oder `587` (STARTTLS). |
| `smtp_username` | string oder null | AUTH-Benutzername bei `customer_smtp`. Er ist nicht geheim. |
| `credentials_set` | boolean | Ob eine Anmeldedaten-Angabe gespeichert ist. |
| `last_test_at` | string oder null | Zeitpunkt des letzten [Verbindungstests](test.md); wird gelöscht, wenn sich die Konfiguration ändert. |
| `last_test_result` | string oder null | `ok` oder der feste Fehlercode des letzten Tests. |
| `version` | integer | Konfigurationsversion, identisch mit dem `ETag`; `0` bedeutet nie konfiguriert. |
| `updated_at` | string oder null | Zeitpunkt der letzten Änderung. |

```json
{
  "mode": "customer_smtp",
  "sender_domain_id": null,
  "webhook_endpoint_id": null,
  "from_address": "no-reply@example.com",
  "reply_to": null,
  "provider": null,
  "smtp_host": "smtp.example.com",
  "smtp_port": 587,
  "smtp_username": "mailer",
  "credentials_set": true,
  "last_test_at": "2026-10-19T09:30:00Z",
  "last_test_result": "ok",
  "version": 4,
  "updated_at": "2026-10-19T09:00:00Z"
}
```

Eine Konfiguration mit `platform_managed_domain`:

```json
{
  "mode": "platform_managed_domain",
  "sender_domain_id": "sdom_01k7xq3m5r8t9v0w1x2y3z4a5b",
  "webhook_endpoint_id": null,
  "from_address": "auth@mail.example.com",
  "reply_to": "support@example.com",
  "provider": null,
  "smtp_host": null,
  "smtp_port": null,
  "smtp_username": null,
  "credentials_set": false,
  "last_test_at": null,
  "last_test_result": null,
  "version": 5,
  "updated_at": "2026-10-19T10:00:00Z"
}
```

Eine Konfiguration mit `customer_webhook`:

```json
{
  "mode": "customer_webhook",
  "sender_domain_id": null,
  "webhook_endpoint_id": "whe_01k7xq3m5r8t9v0w1x2y3z4a5b",
  "from_address": "auth@example.com",
  "reply_to": null,
  "provider": null,
  "smtp_host": null,
  "smtp_port": null,
  "smtp_username": null,
  "credentials_set": false,
  "last_test_at": null,
  "last_test_result": null,
  "version": 6,
  "updated_at": "2026-10-27T09:00:00Z"
}
```

## Fehler

| HTTP | Code | Wann |
|---|---|---|
| 401 | `unauthenticated` | Die Anmeldedaten fehlen, sind ungültig oder widerrufen. |
| 403 | `insufficient_permissions` | Die Anmeldedaten haben nicht die erforderliche Berechtigung. |
| 429 | `rate_limited` | Das Ratenlimit wurde überschritten; wiederholen Sie die Anfrage nach der Zeit aus `Retry-After`. |
| 503 | `service_unavailable` | Eine Abhängigkeit ist vorübergehend nicht verfügbar; wiederholen Sie die Anfrage nach der Zeit aus `Retry-After`. |

## Beispiel

```bash
curl https://api.eu.keenauth.com/v1/email-provider \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

CLI: `keenauth email-provider get`
