---
title: "Retrieve a sent email"
method: GET
path: "/companies/{company}/emails/{email}"
tags: ["Emails"]
---

# Retrieve a sent email

`GET /companies/{company}/emails/{email}`

## Request

- Base URL: `https://api.factuarea.com/v1`
- URL: `https://api.factuarea.com/v1/companies/{company}/emails/{email}`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Retrieve one sent email by id: recipient, subject, status, attempts, error message and the document it was sent for.
- `status` describes the hand-off to the outgoing SMTP server, not real delivery.
- `sent` does not mean the recipient received it.

## Path parameters

- `company` string, uuid, required
- `email` string, uuid, required

## Headers

- `Factuarea-Version` string, date

## Response `200`

- object
  - `data` EmailDelivery, required: One email your company sent through the platform (an invoice, a quote, a payment reminder…). Read-only and scoped to your own company. Internal implementation details — the mailable class, the queue job id, the user id and the raw metadata — are never exposed.
    - `id` string, uuid, required: UUID v7 of the send. Use it in `GET /v1/companies/{company}/emails/{email}`.
    - `object` 'email_delivery', required: Always `email_delivery`.
    - `recipient_email` string, email, required: Address the message was sent to.
    - `cc` string[], required: Addresses in copy. Empty array when there were none.
    - `bcc` string[], required: Addresses in blind copy. Empty array when there were none.
    - `subject` string, required: Subject line of the message.
    - `status` 'queued' | 'sending' | 'sent' | 'failed', required: Status of the send. It describes the hand-off to the OUTGOING SMTP SERVER, NOT real delivery to the recipient's mailbox: `queued` (accepted, waiting for the worker), `sending` (being handed off), `sent` (the outgoing mail server accepted the message) and `failed` (every attempt failed). A `sent` message can still bounce or land in spam afterwards without the platform finding out. There are deliberately no `delivered`, `bounced` or `opened` values: observing them would require a mail provider with delivery webhooks, which is out of scope.
    - `attempts` integer, required: Number of hand-off attempts made for this message.
    - `error_message` string, nullable, required: Error reported by the outgoing mail server on the last failed attempt, or `null` when there was none.
    - `sent_at` string, date-time, nullable, required: When the outgoing mail server accepted the message (ISO 8601), or `null` if it never did. It marks the hand-off, not a confirmed delivery or a read.
    - `failed_at` string, date-time, nullable, required: When the last attempt failed (ISO 8601), or `null` when none failed.
    - `created_at` string, date-time, nullable, required: When the send was registered (ISO 8601).
    - `related_entity_type` 'invoice' | 'quote' | 'proforma' | 'delivery_note' | 'purchase_invoice' | 'recurring_invoice' | 'null', nullable, required: Type of the document the email was sent for, or `null` for non-document emails (test messages, account emails).
    - `related_entity_id` string, uuid, nullable, required: UUID v7 of the related document, or `null` for non-document emails and for older rows recorded before the sender stored it.

## Other responses

- `400`: `parameter_unknown` with `subcode` `retired_active_profile_header`: the retired `X-Active-Profile` header was sent; the company goes in the path. `parameter_invalid_format` on `Factuarea-Version`: the header is not a `YYYY-MM-DD` date. `unsupported_api_version`: the `Factuarea-Version` date is not a supported version.
- `401`: Missing or invalid API key.
- `403`: The request is authenticated but not allowed: the API key lacks the required scope (`insufficient_scope`), the plan does not include the public API or this feature (`addon_not_active`, `feature_not_available_in_plan`), or the module is not available with a test key (`module_not_available_in_sandbox`).
- `404`: The requested resource does not exist or belongs to another company.
- `429`: Rate limit exceeded. Retry after the duration in `Retry-After`.
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/factuarea/apis/factuarea-public-api.md) · [All operations](https://skmtc.dev/factuarea/apis/factuarea-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/factuarea/apis/factuarea-public-api/revisions/718e77934422?raw)
