> ## Documentation Index
> Fetch the complete documentation index at: https://sendmux.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get delivery log

> Returns a single delivery log by its public ID. Responses carry a weak `ETag` header — send it back as `If-None-Match` on the next request and the server will return `304 Not Modified` (no body) when the log has not changed. Logs in a terminal status (sent/failed/rejected) stop changing, so 304 replay is a real bandwidth win on repeated polls.



## OpenAPI

````yaml /openapi-app.json get /emails/logs/{public_id}
openapi: 3.1.0
info:
  description: Programmatic access to your Sendmux email infrastructure.
  title: Sendmux API
  version: 1.0.0
servers:
  - description: API v1
    url: https://app.sendmux.ai/api/v1
security:
  - bearerAuth: []
paths:
  /emails/logs/{public_id}:
    get:
      tags:
        - Emails
      summary: Get delivery log
      description: >-
        Returns a single delivery log by its public ID. Responses carry a weak
        `ETag` header — send it back as `If-None-Match` on the next request and
        the server will return `304 Not Modified` (no body) when the log has not
        changed. Logs in a terminal status (sent/failed/rejected) stop changing,
        so 304 replay is a real bandwidth win on repeated polls.
      operationId: managementGetEmailLog
      parameters:
        - in: path
          name: public_id
          required: true
          schema:
            description: Delivery log public ID (dlog_...)
            type: string
        - in: header
          name: If-None-Match
          required: false
          schema:
            description: Weak ETag from a previous response. Returns 304 when unchanged.
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryLogItemResponse'
          description: Delivery log detail
          headers:
            ETag:
              description: Weak ETag for conditional GETs.
              schema:
                example: W/"a1b2c3d4e5f60718"
                type: string
        '304':
          description: >-
            Not Modified — the client's cached copy (matching `If-None-Match`)
            is still current.
          headers:
            ETag:
              description: Current weak ETag (same as request's `If-None-Match`).
              schema:
                type: string
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: Authentication required
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: Insufficient permissions
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: Not found
      security:
        - bearerAuth: []
components:
  schemas:
    DeliveryLogItemResponse:
      allOf:
        - $ref: '#/components/schemas/SuccessEnvelope'
        - properties:
            data:
              $ref: '#/components/schemas/DeliveryLogDetail'
            meta:
              $ref: '#/components/schemas/ResponseMeta'
          required:
            - data
          type: object
      unevaluatedProperties: false
    ApiError:
      additionalProperties: false
      properties:
        error:
          additionalProperties: false
          properties:
            code:
              description: Machine-readable error code
              enum:
                - invalid_parameter
                - missing_parameter
                - authentication_required
                - insufficient_permissions
                - not_found
                - conflict
                - limit_exceeded
                - idempotency_conflict
                - payload_too_large
                - validation_error
                - rate_limit_exceeded
                - service_unavailable
                - internal_error
              example: invalid_parameter
              type: string
            doc_url:
              description: Link to relevant documentation
              type: string
            errors:
              description: >-
                Accumulated per-field issues for validation errors. Only present
                on 400/422 responses.
              items:
                $ref: '#/components/schemas/ApiErrorDetail'
              type: array
            message:
              description: Human-readable error description
              type: string
            param:
              description: The parameter that caused the error
              type: string
            retryable:
              description: >-
                Whether the caller may safely retry this request. 4xx are
                typically false (except 429); 5xx are typically true.
              example: false
              type: boolean
          required:
            - code
            - message
            - retryable
          type: object
        meta:
          additionalProperties: false
          properties:
            request_id:
              example: req_clxxxxxxxxxxxxxxxxxxxxxxxxx
              type: string
          required:
            - request_id
          type: object
        ok:
          enum:
            - false
          type: boolean
      required:
        - ok
        - error
        - meta
      type: object
    SuccessEnvelope:
      properties:
        meta:
          additionalProperties: {}
          properties: {}
          type: object
        ok:
          enum:
            - true
          type: boolean
      required:
        - ok
        - meta
      type: object
    DeliveryLogDetail:
      additionalProperties: false
      properties:
        accepted_recipient_count:
          description: >-
            Recipient occurrences accepted by the provider, or null when no
            recipient snapshot exists
          maximum: 50
          minimum: 0
          type:
            - integer
            - 'null'
        attempts:
          type: number
        created_at:
          description: ISO 8601 creation timestamp
          type: string
        from_email:
          type:
            - string
            - 'null'
        id:
          description: Log public ID
          example: dlog_clxxxxxxxxxxxxxxxxxxxxxxxxx
          type: string
        message_id:
          description: Email Message-ID header
          type:
            - string
            - 'null'
        provider_id:
          description: Provider public ID
          type:
            - string
            - 'null'
        provider_name:
          description: Provider display name
          type:
            - string
            - 'null'
        recipient_count:
          description: >-
            Total recipient occurrences, or null when no recipient snapshot
            exists
          maximum: 50
          minimum: 0
          type:
            - integer
            - 'null'
        recipients:
          description: >-
            Ordered recipient outcome snapshot for this send, or null when no
            snapshot exists
          items:
            $ref: '#/components/schemas/DeliveryLogRecipient'
          maxItems: 50
          type:
            - array
            - 'null'
        rejected_recipient_count:
          description: >-
            Recipient occurrences rejected by the provider, or null when no
            recipient snapshot exists
          maximum: 50
          minimum: 0
          type:
            - integer
            - 'null'
        sent_at:
          description: ISO 8601 timestamp when email was sent
          type:
            - string
            - 'null'
        sent_from_email:
          description: >-
            The actual from address used for delivery after transformation. NULL
            if no transformation occurred or for older log entries.
          type:
            - string
            - 'null'
        size_bytes:
          type:
            - number
            - 'null'
        status:
          enum:
            - pending
            - sent
            - failed
            - rejected
          type: string
        status_reason:
          type:
            - string
            - 'null'
        subject:
          type:
            - string
            - 'null'
        to_email:
          type:
            - string
            - 'null'
      required:
        - id
        - provider_id
        - provider_name
        - message_id
        - from_email
        - sent_from_email
        - to_email
        - subject
        - status
        - status_reason
        - attempts
        - sent_at
        - size_bytes
        - created_at
        - recipient_count
        - accepted_recipient_count
        - rejected_recipient_count
        - recipients
      type: object
    ResponseMeta:
      additionalProperties: false
      properties:
        request_id:
          example: req_clxxxxxxxxxxxxxxxxxxxxxxxxx
          type: string
      required:
        - request_id
      type: object
    ApiErrorDetail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Machine-readable issue code from the validator (e.g. zod issue
            code).
          example: invalid_string
          type: string
        field:
          description: Dot-path of the offending request field.
          example: recipient.email
          type: string
        message:
          description: Human-readable issue description.
          type: string
      required:
        - field
        - code
        - message
      type: object
    DeliveryLogRecipient:
      additionalProperties: false
      properties:
        email:
          description: Recipient email address
          format: email
          type: string
        reason:
          description: Recipient-specific rejection reason when available
          type:
            - string
            - 'null'
        status:
          description: Provider acceptance outcome
          enum:
            - accepted
            - rejected
          type: string
        type:
          description: Recipient header type when known
          enum:
            - to
            - cc
            - bcc
          type:
            - string
            - 'null'
      required:
        - email
        - type
        - status
        - reason
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: API Key
      description: >-
        Sendmux API key. Use a root API key for Management API routes, or a
        mailbox credential for Mailbox API routes. Obtain keys from the
        dashboard under API Keys.
      scheme: bearer
      type: http

````