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:
| Method | Description |
|---|---|
| Admin API Key | Bearer token for all admin operations. Set via the API_KEY environment variable (self-hosted) or the Hookdeck dashboard (managed). |
| Tenant JWT | Per-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.
| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests allowed in the current window |
X-RateLimit-Remaining | Requests remaining in the current window |
X-RateLimit-Reset | Unix timestamp when the current window resets |
Retry-After | Seconds 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.
| Language | Package | Repository |
|---|---|---|
| TypeScript | @hookdeck/outpost-sdk | GitHub |
| Python | outpost-sdk | GitHub |
| Go | outpost-go | GitHub |
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 datainclude=response_data: Include response body and headers from the attemptinclude=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.