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

# Redeliver

> Queue one new attempt of the delivery's event to this webhook. Same body, same event `id`, fresh timestamp and signatures. The attempt is logged with `trigger: manual` and never counts toward automatic disabling. Requires `webhooks:write`. Limit: 60 redeliveries per webhook per rolling hour. Events are redeliverable for 30 days; `webhook.test` deliveries cannot be redelivered (call the test endpoint again).



## OpenAPI

````yaml POST /v2/webhooks/{id}/deliveries/{delivery_id}/redeliver
openapi: 3.1.0
info:
  title: Tavrn Platform API
  version: '2026-10-16'
  description: >-
    Enterprise API for medical record retrieval: cases, retrieval requests,
    retrieved records and provider invoices, case documents, and webhook
    notifications. Behaviour is versioned by date via the Tavrn-Version header
    (see Guides > Versioning); the path stays /v2.
  contact:
    name: Tavrn Support
    email: contact@tavrn.ai
servers:
  - url: https://enterprise.tavrn.ai
    description: Production server
security:
  - bearerAuth: []
tags:
  - name: Cases
    description: Case management operations
  - name: Documents
    description: Document upload and management
  - name: Retrieval Requests
    description: Medical record retrieval requests submitted to healthcare facilities
  - name: Requestors
    description: Multiple retrieval profiles within one organization
  - name: Webhooks
    description: Webhook registration and event notifications
  - name: Events
    description: Persisted log of every event Tavrn emitted for your organization
paths:
  /v2/webhooks/{id}/deliveries/{delivery_id}/redeliver:
    post:
      tags:
        - Webhooks
      summary: Redeliver
      description: >-
        Queue one new attempt of the delivery's event to this webhook. Same
        body, same event `id`, fresh timestamp and signatures. The attempt is
        logged with `trigger: manual` and never counts toward automatic
        disabling. Requires `webhooks:write`. Limit: 60 redeliveries per webhook
        per rolling hour. Events are redeliverable for 30 days; `webhook.test`
        deliveries cannot be redelivered (call the test endpoint again).
      operationId: redeliverWebhookDelivery
      parameters:
        - name: id
          in: path
          required: true
          description: Webhook ID
          schema:
            type: string
        - name: delivery_id
          in: path
          required: true
          description: Delivery attempt ID from the deliveries list
          schema:
            type: string
        - $ref: '#/components/parameters/IdempotencyKey'
      responses:
        '202':
          description: >-
            Redelivery queued; the attempt appears in the deliveries list once
            made
          headers:
            Request-Id:
              $ref: '#/components/headers/RequestId'
            Idempotent-Replayed:
              $ref: '#/components/headers/IdempotentReplayed'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookRedeliveryAccepted'
        '400':
          description: Test deliveries cannot be redelivered
          headers:
            Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: invalid_request
                  message: >-
                    Test deliveries cannot be redelivered; call POST
                    /v2/webhooks/{id}/test again
        '404':
          description: >-
            Webhook or delivery not found, or the event has aged out of the
            30-day log
          headers:
            Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: not_found
                  message: >-
                    Event is no longer available for redelivery (events are
                    retained for a limited time)
        '409':
          description: >-
            Webhook is disabled Also returned as `idempotency_key_in_use` when
            the `Idempotency-Key` is still being processed by an earlier
            request.
          headers:
            Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: webhook_disabled
                  message: Webhook is disabled; enable it before redelivering
        '422':
          description: >-
            The `Idempotency-Key` was already used with a different request
            payload (`idempotency_key_reused_with_different_payload`). Use a new
            key for a new request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Hourly redelivery limit reached for this webhook
          headers:
            Retry-After:
              description: Seconds until the oldest redelivery in the window ages out
              schema:
                type: integer
            Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: rate_limited
                  message: Redelivery limit of 60 per hour reached for this webhook
        '500':
          $ref: '#/components/responses/InternalError'
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      description: >-
        Optional opaque key (1-255 characters, a UUID v4 is recommended) that
        makes a POST safe to retry. Scoped to your organization and kept for 24
        hours. A retry with the same key and the same body replays the original
        status and body with `Idempotent-Replayed: true`; the same key with a
        different body returns `422
        idempotency_key_reused_with_different_payload`; a retry while the first
        attempt is still running returns `409 idempotency_key_in_use`. Only 2xx
        and 4xx outcomes are stored - a 5xx releases the key so the retry
        executes again. See the [Idempotent requests](/guides/v2/idempotency)
        guide.
      schema:
        type: string
        minLength: 1
        maxLength: 255
      example: 7f1c3b58-2a2d-4b31-9c0e-6a7f0b8d2e11
  headers:
    RequestId:
      description: >-
        Unique id for this request (`req_…`, or the `Request-Id` /
        `X-Request-Id` you sent, when printable ASCII and at most 128
        characters). Present on every /v2 response; quote it in support
        requests.
      schema:
        type: string
        maxLength: 128
        example: req_0c1f1f1cd1c84e2f8d4b6a2e9f3b7a11
    IdempotentReplayed:
      description: >-
        Present (value `true`) only when this response was replayed from a
        previous request that carried the same `Idempotency-Key`.
      schema:
        type: string
        enum:
          - 'true'
  schemas:
    WebhookRedeliveryAccepted:
      type: object
      required:
        - webhook_id
        - event_id
        - attempt
        - trigger
        - queued_at
      properties:
        webhook_id:
          type: string
        event_id:
          type: string
        attempt:
          type: integer
          description: Attempt number the queued delivery will carry
          example: 6
        trigger:
          type: string
          enum:
            - manual
        queued_at:
          type: string
          format: date-time
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - request_id
          properties:
            code:
              type: string
              description: Machine-readable error code
              example: validation_error
            message:
              type: string
              description: Human-readable error message
              example: The patient.date_of_birth field is required
            param:
              type: string
              description: Field the error refers to, when applicable
              example: patient.date_of_birth
            request_id:
              type: string
              description: Same value as the `Request-Id` response header
              example: req_0c1f1f1cd1c84e2f8d4b6a2e9f3b7a11
            doc_url:
              type: string
              format: uri
              description: Link to this error code in the error reference
              example: https://docs.tavrn.ai/guides/v2/errors#validation_error
  responses:
    InternalError:
      description: >-
        Tavrn failed to process the request (`internal_error`). Retry with
        backoff; if it persists, contact support quoting the `Request-Id`.
      headers:
        Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: internal_error
              message: Internal server error
              request_id: req_0c1f1f1cd1c84e2f8d4b6a2e9f3b7a11
              doc_url: https://docs.tavrn.ai/guides/v2/errors#internal_error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        API key authentication. Use format: `Authorization: Bearer
        tavrn_sk_live_...`

````