# Mail vorbereiten (https://developer.bimetrics.de/reference/document-mail/preview-document-mail)

`POST https://app.bimetrics.de/api/document-mail/preview`

operationId: `previewDocumentMail` · Berechtigung (Scope): `sales:read` · Bereich: Versand per E-Mail

Liefert, was der Dialog „Per E-Mail senden“ der App vorschlägt: Empfänger aus dem Dokument oder seinem Kontakt, Betreff und Text aus der Vorlage der Firma mit den Werten des Dokuments, Signatur, Anhänge und die letzte Sendung. `html` zeigt die ganze Mail, wie sie versendet würde. Versendet wird nichts. Bei einem Entwurf antwortet die Route mit `409 DocumentMailNotIssued`.

Benötigt einen Schlüssel mit der Berechtigung `sales:read` oder `read`.

### Authentifizierung

`Authorization: Bearer bm_…` (alternativ `X-API-KEY: bm_…`, nie beide zugleich).

### Request-Body (`application/json`)

 

Schema `MailPreviewRequest`.

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| `attachments` | Array<MailAttachmentRef> | Weitere Dateien nach PDF und XML, in dieser Reihenfolge, höchstens 10. Alle Anhänge zusammen, PDF und XML eingerechnet, dürfen höchstens 10 MiB groß sein (`400 DocumentMailAttachmentsTooLarge`). Zu einer XRechnung gehen keine weiteren Dateien (`400 DocumentMailAttachmentsNotAllowed`). Eine Datei, die es nicht mehr gibt: `409 DocumentMailAttachmentUnavailable` mit ihrer Position in `context.index`. |
| `includePdf` | boolean | Nur bei einer XRechnung: hängt zusätzlich das PDF an. Andere Dokumente haben ihr PDF immer dabei. |
| `includeXml` | boolean | Hängt zusätzlich das XML der E-Rechnung an, wo `xmlAvailable` gilt. Eine XRechnung hat es immer dabei. |
| `target` | MailTarget | Das ausgestellte Dokument. |

### Beispiel

```sh
curl --fail-with-body "https://app.bimetrics.de/api/document-mail/preview" \
  -H "Authorization: Bearer $BIMETRICS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"and","children":[],"limit":50,"offset":0}'
```

### Antworten

| Status | Beschreibung | Inhalt |
| --- | --- | --- |
| 200 | Erfolg. | `application/json`: MailPreview |
| 400 | Ungültige Anfrage, z. B. ein Parameter mit ungültigem Wert wie eine ID, die keine UUID ist; korrigieren statt wiederholen. Mehr unter [Fehler](https://developer.bimetrics.de/errors). | `application/json`: Error |
| 401 | Kein gültiger Schlüssel: fehlt (`Unauthorized`), ist unbekannt, abgelaufen oder widerrufen oder wurde nicht in genau einem Header gesendet (`InvalidAPIKey`). Schlüssel prüfen, nicht wiederholen. Auch eine ID, die zu einer anderen Firma gehört, ergibt `401 Unauthorized`. | `application/json`: Error |
| 403 | Dem Schlüssel fehlt die Berechtigung für diese Route (`APIKeyPermissionDenied`), oder die Firma hat keinen API-Zugang (mehr), etwa nach Ende der Testphase oder des Abos (`APIUnavailable`). | `application/json`: Error |
| 404 | Nicht gefunden (`NotFound`). | `application/json`: Error |
| 409 | Das Dokument ist noch ein Entwurf (`DocumentMailNotIssued`). Erst ausstellen, dann senden. | `application/json`: Error |
| 413 | Die Anfrage ist zu groß (`APIRequestTooLarge`), siehe `x-bimetrics-limits`. | `application/json`: Error |
| 429 | Zu viele Anfragen; nach `Retry-After` Sekunden erneut senden. Mehr unter [Fehler](https://developer.bimetrics.de/errors). (Header: Retry-After) | `application/json`: Error |
| 500 | Serverfehler; die Anfrage später wiederholen. Mehr unter [Fehler](https://developer.bimetrics.de/errors). | `application/json`: Error |

#### Felder der Antwort 200 (`MailPreview`)

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| `attachmentLimitBytes` | integer | Höchstgröße aller Anhänge zusammen in Byte, PDF und XML eingerechnet. |
| `attachments` | Array<DocumentMailAttachment>, kann null sein | Anhänge der Mail: PDF und XML des Dokuments, danach die weiteren Dateien. |
| `body` | string | Text aus der Vorlage mit den Werten des Dokuments, ohne Signatur. |
| `cc` | Array<string>, kann null sein | Immer leer. |
| `contactId` | string (uuid) | Kontakt des Empfängers, falls vorhanden. |
| `document` | MailDocument | Das Dokument. |
| `html` | string | Die ganze Mail als HTML mit Signatur und Pflichtangaben, wie sie versendet würde. |
| `lastDelivery` | DocumentMail | Die letzte Mail mit diesem Dokument, auch aus der App oder per MCP. |
| `maxExtraAttachments` | integer | Höchstzahl weiterer Dateien. |
| `sender` | MailSender | Absender und Stand des E-Mail-Versands. |
| `signature` | string | Signatur unter dem Text. |
| `subject` | string | Betreff aus der Vorlage mit den Werten des Dokuments. |
| `to` | Array<string>, kann null sein | Vorgeschlagene Empfänger: die Adresse aus dem Dokument oder seinem Kontakt; leer, wenn keine bekannt ist. |
| `values` | object, kann null sein | Werte der Platzhalter dieses Dokuments, nach Namen ohne Klammern, etwa `Betrag`. |
| `xmlAvailable` | boolean | Das XML der E-Rechnung lässt sich mit `includeXml` anhängen. |
| `xrechnung` | boolean | XRechnung: Das XML ist immer dabei, das PDF nur mit `includePdf`. |

Verschachtelte Schemas stehen vollständig in der OpenAPI-Beschreibung: https://app.bimetrics.de/api/openapi.json
