Outpost API Reference
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:
| 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.
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.
| Field | Type | Description |
|---|---|---|
status | Integer | HTTP status code for the response. |
message | String | Human-readable error message. |
data | Array or object | Optional details about the error. Validation errors use an array of messages. |
Common error responses include:
| Status | Description |
|---|---|
400 | Malformed JSON or invalid request parameters. |
401 | Missing or invalid authentication credentials. |
404 | Requested resource not found. |
422 | Request body fails validation. |
500 | Unexpected 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.
| 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) |
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.
| Language | Package | Repository |
|---|---|---|
| TypeScript | @hookdeck/outpost-sdk | GitHub |
| Python | outpost-sdk | GitHub |
| Go | outpost-go | GitHub |
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 returns501 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 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, 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.