Introduction

The Outpost REST API is a JSON API for managing tenants, destinations, and publishing events to your webhook infrastructure.

Outpost API versions are included in the base URL. Managed deployments use calendar versioning (i.e. /2025-07-01), while OSS/self-hosted deployments use /v1 as the API prefix.

Managed URL: https://api.outpost.hookdeck.com/2025-07-01

Self-hosted URL: https://outpost.your-domain.com/api/v1

Authentication

The Outpost API supports two authentication methods depending on the operation:

MethodDescription
Admin API KeyBearer token for all admin operations. Set via the API_KEY environment variable (self-hosted) or the Hookdeck dashboard (managed).
Tenant JWTPer-tenant JWT token valid for 24 hours. Used for tenant-scoped operations and portal access. Generated via the Get Tenant JWT Token endpoint.

Include your credentials as a Bearer token in every request.

Errors

Outpost returns JSON error responses with a consistent shape across API endpoints. The status field matches the HTTP status code, message describes the error, and data is included when additional details are available.

FieldTypeDescription
statusIntegerHTTP status code for the response.
messageStringHuman-readable error message.
dataArray or objectOptional details about the error. Validation errors use an array of messages.

Common error responses include:

StatusDescription
400Malformed JSON or invalid request parameters.
401Missing or invalid authentication credentials.
404Requested resource not found.
422Request body fails validation.
500Unexpected server error.

Rate Limits

The Outpost API applies rate limits per API key to ensure system stability. The default rate limit is 240 requests per minute. If you need a higher rate limit, contact us to increase it.

Rate limits are only applicable with managed deployments. Self-hosted deployments do not have rate limits and the operator is responsible for managing the service capacity.

When a rate limit is exceeded, the API returns a 429 Too Many Requests response. Retry the request after the interval indicated in the Retry-After header.

HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the current window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the current window resets
Retry-AfterSeconds to wait before retrying (present on 429 responses)

OpenAPI Schema

The Outpost OpenAPI schema is available and can be used to generate SDKs, import into Postman, or work with any OpenAPI-compatible tooling.

The schema is available in the Outpost GitHub repository.

To import the schema into Postman, use File → Import → Link → paste the URL above

SDKs

Official SDKs for the Outpost API are available for Go, TypeScript, and Python. All SDKs are generated by Speakeasy from the OpenAPI schema and published to their respective package registries.

LanguagePackageRepository
TypeScript@hookdeck/outpost-sdkGitHub
Pythonoutpost-sdkGitHub
Gooutpost-goGitHub

Tenants

The API segments resources per tenant. A tenant represents a user/team/organization in your product. The provided value determines the tenant's ID, which can be any string representation.

If your system is not multi-tenant, create a single tenant with a hard-code tenant ID upon initialization. If your system has a single tenant but multiple environments, create a tenant per environment, like live and test.

List Tenants

List all tenants with cursor-based pagination.

When self-hosting this endpoint requires Redis with RediSearch module (e.g., redis/redis-stack-server). If RediSearch is not available, this endpoint returns 501 Not Implemented.

When authenticated with a Tenant JWT, returns only the authenticated tenant.

Get Tenant

Retrieves details for a specific tenant.

Create or Update Tenant

Idempotently creates or updates a tenant. Required before associating destinations.

Delete Tenant

Deletes the tenant and all associated destinations.

Get Portal Redirect URL

Returns a redirect URL containing a JWT to authenticate the user with the portal. Requires Admin API Key.

Get Tenant JWT Token

Returns a JWT token scoped to the tenant for safe browser API calls. Requires Admin API Key.

Destinations

Destinations are the endpoints where events are sent. Each destination is associated with a tenant and can be configured to receive specific event topics.

The topics array can contain either a list of topics or a wildcard * implying that all topics are supported. If you do not wish to implement topics for your application, you set all destination topics to *.

By default all destination credentials are obfuscated and the values cannot be read. This does not apply to the webhook type destination secret and each destination can expose their own obfuscation logic.

List Destinations

Return a list of the destinations for the tenant. The endpoint is not paged.

Create Destination

Creates a new destination for the tenant. The request body structure depends on the type.

Get Destination

Retrieves details for a specific destination.

Update Destination

Updates the configuration of an existing destination. The request body structure depends on the destination's type. Type itself cannot be updated. May return an OAuth redirect URL for certain types.

Delete Destination

Deletes a specific destination.

Enable Destination

Enables a previously disabled destination.

Disable Destination

Disables a previously enabled destination.

List Destination Attempts

Retrieves a paginated list of attempts scoped to a specific destination.

Get Destination Attempt

Retrieves details for a specific attempt scoped to a destination.

Configuration

The Configuration API is available for managed Outpost deployments only. It allows you to read and update instance-level settings — the same settings available as environment variables in self-hosted deployments.

Get Managed Configuration

Returns managed Outpost configuration values.

This endpoint is only available for the managed version. In self-hosted deployments, configuration is controlled through environment variables instead.

Update Managed Configuration

Updates one or more managed Outpost configuration values. Null values clear the configuration and reverts to Outpost default behavior.

This endpoint is only available for the managed version. In self-hosted deployments, configuration is controlled through environment variables instead.

Only the supported configuration keys are accepted.

Publish

Use the Publish endpoint to send events into Outpost. Events are matched against all destinations whose topic subscriptions and filters match the event. Requires Admin API Key.

Publish Event

Publishes an event to the specified topic, potentially routed to a specific destination. Requires Admin API Key.

Retry

Triggers a retry for delivering an event to a destination. The event must exist and the destination must be enabled and match the event's topic.

Retry Event Delivery

Triggers a retry for delivering an event to a destination. The event must exist and the destination must be enabled and match the event's topic.

When authenticated with a Tenant JWT, only events belonging to that tenant can be retried. When authenticated with Admin API Key, events from any tenant can be retried.

Events

An event represents a payload published to Outpost. Events are matched against all destinations whose topic subscriptions match the event topic, then delivered.

List Events

Retrieves a list of events.

When authenticated with a Tenant JWT, returns only events belonging to that tenant. When authenticated with Admin API Key, returns events across all tenants. Use tenant_id query parameter to filter by tenant.

Get Event

Retrieves details for a specific event.

When authenticated with a Tenant JWT, only events belonging to that tenant can be accessed. When authenticated with Admin API Key, events from any tenant can be accessed.

Attempts

Attempts represent individual delivery attempts of events to destinations. The attempts API provides an attempt-centric view of event processing.

Use the include query parameter to include related data:

  • include=event: Include event summary (id, topic, time, eligible_for_retry, metadata)
  • include=event.data: Include full event with payload data
  • include=response_data: Include response body and headers from the attempt
  • include=destination: Include the full destination object with target information

List Attempts

Retrieves a paginated list of attempts.

When authenticated with a Tenant JWT, returns only attempts belonging to that tenant. When authenticated with Admin API Key, returns attempts across all tenants. Use tenant_id query parameter to filter by tenant.

Get Attempt

Retrieves details for a specific attempt.

When authenticated with a Tenant JWT, only attempts belonging to that tenant can be accessed. When authenticated with Admin API Key, attempts from any tenant can be accessed.

Metrics

Aggregated metrics for events and delivery attempts. Supports time bucketing, dimensional grouping, and filtering.

Get Event Metrics

Returns aggregated event publish metrics. Supports time bucketing via granularity, dimensional grouping, and filtering.

Measures: count, rate

Dimensions: tenant_id (admin-only), topic, destination_id

Filters: tenant_id (admin-only), topic, destination_id

Get Attempt Metrics

Returns aggregated delivery attempt metrics. Supports time bucketing via granularity, dimensional grouping, and filtering.

Measures: count, successful_count, failed_count, error_rate, first_attempt_count, retry_count, manual_retry_count, avg_attempt_number, rate, successful_rate, failed_rate

Dimensions: tenant_id (admin-only), destination_id, destination_type, topic, status, code, manual, attempt_number

Filters: tenant_id (admin-only), destination_id, destination_type, topic, status, code, manual, attempt_number

Destination Types

Destination types describe the available event delivery targets and their configuration schemas. Use these endpoints to render UI forms and list available destination types with their configuration schemas.

List Destination Type Schemas

Returns a list of JSON-based input schemas for each available destination type.

Get Destination Type Schema

Returns the input schema for a specific destination type.

Topics

Returns the list of topics configured for this Outpost deployment. Tenants subscribe their destinations to topics from this list. Topics are defined via your configuration file and not a specific Create Topic API.

List Available Topics

Returns a list of available event topics configured in the Outpost instance.

Health

This endpoint is only available for self-hosted Outpost deployments. Managed Outpost health is monitored by Hookdeck.

Health Check

Health check endpoint that reports the status of all workers.

This endpoint is only available for self-hosted Outpost deployments. Managed Outpost health is monitored by Hookdeck.

Returns HTTP 200 when all workers are healthy, or HTTP 503 if any worker has failed.

Note: Error details are not exposed for security reasons. Check application logs for detailed error information.