---
title: Delivery policy
description: Retry windows, timeouts, payload limits, and every constant exported by @orbitrail/events.
url: https://pr-1-3b5c652a9824.thally.app/delivery-policy
---

# Delivery policy

Retry windows, timeouts, payload limits, and every constant exported by @orbitrail/events.

The `@orbitrail/events` package (v1.14.0) exports a `deliveryPolicy` object that encodes every public delivery contract value. Import it instead of hard-coding numbers so your application stays in sync with the OrbitRail platform.

```typescript
import { deliveryPolicy } from "@orbitrail/events";
```

## Policy constants

| Property | Value | Description |
|---|---|---|
| `retryWindowHours` | `72` | Failed deliveries retry for up to 72 hours |
| `maximumDeliveryAttempts` | `12` | Maximum number of delivery attempts per event |
| `retryBackoffStrategy` | `"exponential-jitter"` | Backoff strategy applied between retries |
| `deliveryTimeoutSeconds` | `8` | Each delivery attempt times out after 8 seconds |
| `idempotencyWindowHours` | `24` | Duplicate `Idempotency-Key` values are deduplicated within 24 hours |
| `requiresIdempotencyKey` | `true` | Every publish request must include an `Idempotency-Key` header |
| `requiredContentType` | `"application/json"` | Only JSON payloads are accepted |
| `maximumPayloadBytes` | `262144` | Maximum request body size (256 KiB) |
| `retainedEventDays` | `30` | Events are retained for 30 days for replay |
| `manualReplayCooldownSeconds` | `30` | Minimum interval between replay requests for the same event |
| `authenticationHeader` | `"X-OrbitRail-Key"` | Header name for API key authentication |

## Path templates

| Property | Value | Description |
|---|---|---|
| `manualReplayPath` | `"/v1/events/{eventId}/replay"` | Endpoint for replaying a retained event |
| `deliveryStatusPath` | `"/v1/events/{eventId}"` | Endpoint for inspecting delivery status |

## Delivery status values

The `deliveryStatusValues` property is a readonly tuple of the five lifecycle states an event passes through:

```typescript
deliveryPolicy.deliveryStatusValues
// ["accepted", "delivering", "delivered", "retrying", "failed"]
```

| Status | Meaning |
|---|---|
| `accepted` | Event received and queued for first delivery attempt |
| `delivering` | A delivery attempt is currently in progress |
| `delivered` | Event successfully delivered to the destination |
| `retrying` | Last attempt failed; another attempt is scheduled within the retry window |
| `failed` | All 12 attempts exhausted or the 72-hour retry window expired |

## TypeScript interface

The full `DeliveryPolicy` interface exported by the package:

```typescript
export interface DeliveryPolicy {
  retryWindowHours: number;
  maximumDeliveryAttempts: number;
  retryBackoffStrategy: "exponential-jitter";
  idempotencyWindowHours: number;
  deliveryTimeoutSeconds: number;
  retainedEventDays: number;
  manualReplayPath: "/v1/events/{eventId}/replay";
  deliveryStatusPath: "/v1/events/{eventId}";
  deliveryStatusValues: readonly [
    "accepted", "delivering", "delivered", "retrying", "failed"
  ];
  manualReplayCooldownSeconds: number;
  maximumPayloadBytes: number;
  requiresIdempotencyKey: boolean;
  requiredContentType: "application/json";
  authenticationHeader: string;
}
```