API Reference

Introduction

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

All API endpoints require authentication. The base URL for the managed API is https://api.outpost.hookdeck.com/2025-07-01. For self-hosted deployments, your base URL is determined by your deployment configuration.

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:

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.

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)

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.

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.

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

Tenant object

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 authenticated with a Tenant JWT, returns only the authenticated tenant. Pagination is not used in this case.

On Self-Hosted deployments, this endpoint requires Redis with RediSearch module (e.g., redis/redis-stack-server). If RediSearch is not available, this endpoint returns 501 Not Implemented.

Create or Update Tenant

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

Get Tenant

Retrieves details for a specific tenant.

Delete Tenant

Deletes the tenant and all associated destinations.

Get Tenant JWT Token

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

Get Portal Redirect URL

Returns a redirect URL containing a JWT to authenticate the user with the portal. 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.

Destination object

List Destinations

Return a list of the destinations for the tenant. The endpoint is not paged and the maximum number of destinations per tenant depends on your configuration

Create Destination

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

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.

Delete Destination

Deletes a specific destination. All events will be discarded and the destination will no longer receive any events. This action cannot be undone.

Enable Destination

Enables a previously disabled destination. Any future events will be delivered to the destination.

Disable Destination

Disables a previously enabled destination. All events will immediately be discarded and stop being delivered to the 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 Configuration

Retrieves the current configuration for your managed Outpost instance.

Update Configuration

Updates the configuration for your managed Outpost instance.

Publish Event

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.

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.

Delivery 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, topic, status, code, manual, attempt_number

Filters: tenant_id (admin-only), destination_id, 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

List Available 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.

Health Check

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

Health check endpoint that reports the status of all workers.

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

The response includes:

  • status: Overall health status ("healthy" or "failed")
  • timestamp: When this health check was performed (ISO 8601 format)
  • workers: Map of worker names to their individual health status

Each worker reports:

  • status: Worker health ("healthy" or "failed")

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