ID of the connection
Getting Started
The Hookdeck REST API allows you to set up connections, retrieve events, and perform actions programmatically.
Hookdeck API was historically available on api.hookdeck.io and has been moved to api.hookdeck.com. The former will remain functional, but consider migrating to api.hookdeck.com.
Get an API key
You'll need to include an API key in every API request. If you do not yet have a Hookdeck account, please sign up for a free account. Your API key is located in your workspace settings.
To include your API key in requests, use either Bearer Token Authentication or Basic Authentication.
Method | Procedure |
---|---|
Bearer Token Authentication | Include the header Authorization: Bearer $API_KEY , replacing $API_KEY with your personal key |
Basic Authentication | Set the username as your API key, and supply an empty password |
curl "https://api.hookdeck.com/2023-07-01/events"
-H "Content-Type: application/json"
-H "Authorization: Bearer $API_KEY"
Create your first connection
Creating your first connection will allow you to start routing webhooks with Hookdeck.
The API only supports
application/json
for both input and output. Header is optional.
Required parameters
Parameter | Type | Description |
---|---|---|
name | string | Name of the new connection |
source.name | string | Name of the source to create |
destination.name | string | Name of the destination to create |
destination.url | string | HTTP endpoint of the destination |
destination.cli_path | string | Path for the CLI destination |
Only one of
url
orcli_path
is required.
Response
The response body returns objects for the associated source, destination, and ruleset.
These resources can be reused in future requests by passing the destination_id
, source_id
, or ruleset_id
instead of an object.
POST /2023-07-01/connections
{
"name": "shopify-my-api",
"source": {
"name": "shopify"
},
"destination": {
"name": "my-api",
"url": "https://example.com/webhook"
}
}
{
"id": "web_3tVBgTFuuzmEnsWa9eBywz6j",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.575Z",
"created_at": "2021-08-02T14:12:56.611Z",
"paused_at": null,
"name": "shopify-my-api",
"destination": {
"id": "des_Nm49lhZV6wVrN1XFFPfkv7Zk",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://example.com/webhook",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.591Z",
"created_at": "2021-08-02T14:12:56.589Z",
"rate_limit": null,
"rate_limit_period": "second",
"cli_path": null,
"path_forwarding_disabled": false,
"name": "my-api",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
},
"source": {
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.586Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
},
"rules": []
}
{
"name": "shopify-my-api",
"destination_id": "des_xxxxxxxxxxxxxxx",
"source_id": "src_xxxxxxxxxxxxxxx",
"ruleset_id": "rls_xxxxxxxxxxxxxxx"
}
Verify your first connection
Verifying the connection lets you know Hookdeck is properly ingesting and processing webhooks from your source.
Copy the unique Hookdeck URL and paste it into your API provider's webhook URL field. Test the connection by triggering a webhook on your source. As soon Hookdeck receives your first webhook, it'll appear in your dashboard.
The connection URL is a property of the webhook source object.
Congratulations! Your webhook events can now be viewed, inspected, filtered, sorted, retried, and more using Hookdeck.
{
"id": "web_xxxxxxxxxxxxxxx",
"source": {
"url": "https://events.hookdeck.com/e/src_xxxxxxxxxxxxxxx",
[...]
},
[...]
}
Authentication
Your API key is located in your workspace settings, and must be included in every API request. Use either Bearer Token Authentication or Basic Authentication.
Method | Procedure |
---|---|
Bearer Token Authentication | Include the header Authorization: Bearer $API_KEY , replacing $API_KEY with your personal key |
Basic Authentication | Set the username as your API key, and supply an empty password |
curl "https://api.hookdeck.com/2023-07-01/events"
-H "Content-Type: application/json"
-H "Authorization: Bearer $API_KEY"
Paging
All GET
endpoints that retrieve a list of resources are paged using cursor (aka keyset) pagination, which resides in the response body's pagination
object.
Parameter | Default | Description |
---|---|---|
order_by | "created_at" | The sortable key to use (options varies base on the resource ) |
dir | "desc" | The direction to sort it ("asc" or "desc" ) |
limit | 100 | The making amount of results returned per query (max: 250 ) |
next | undefined | The ID to provide in the query to get the next set of results |
prev | undefined | The ID to provide in the query to get the previous set of results |
Unless you have specified an order_by
or dir
, you can omit it from the next or previous set query. You only have to carry them over if you are not using the resource default.
If an event is pending, the keyset will return a truthy value (null) which will cause the pagination to omit null values in the response.
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 100,
"next": "web_2urj7h9puxk6obro3x",
"prev": "web_2urj7h9puxk6obuf6i"
}
}
curl "https://api.hookdeck.com/2023-07-01/connections?next=web_2urj7h9puxk6obro3x"
-H "Authorization: Basic BASE64_API_TOKEN"
curl "https://api.hookdeck.com/2023-07-01/connections?previous=web_2urj7h9puxk6obuf6i"
-H "Authorization: Basic BASE64_API_TOKEN"
curl "https://api.hookdeck.com/2023-07-01/connections?order_by=updated_at&dir=asc&next=web_2urj7h9puxk6obro3x"
-H "Authorization: Basic BASE64_API_TOKEN"
Errors
Hookdeck uses standard HTTP response codes to indicate the success or failure of an API request.
Parameter | Type | Description |
---|---|---|
handle | boolean | Error was handled by the API and did not resolve in an uncaught exception |
status | integer | HTTP status code for the error |
message | string | Any message associated with the error |
data | object | Any data related to the error, useful for diagnostics |
In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that resulted from the provided information (e.g. a required parameter was missing), and codes in the 5xx range indicate an error. See a more complete list of error codes here.
{
"handled": true,
"status": 422,
"message": "Webhook does not exist or is archived",
"data": {
"id": "web_xxxxxxxxxxx"
}
}
Rate Limits
The Hookdeck API has a rate limit of 240 request per minute, per API key. Contact us if you need your rate limit increased.
Retry-After: Seconds before next request can be made
X-RateLimit-Limit: Request per minute limit for the API key
X-RateLimit-Remaining: Remaining request for the rate limit period
X-RateLimit-Reset: ISO timestamp of the next rate limit period reset
Query Formatting
Arrays
Arrays in query parameters are indicated by a []
appended to their type, like string[]
.
For example: ?item[1]=hello&item[2]=world
becomes ["hello", "world"]
Date
Dates are expected in ISO format.
For example: 2021-01-21T20:16:28Z
or 2021-01-21
JSON
Some query parameters take JSON as input. The JSON should be stringified and URL encoded.
For example: ?body=%7B%0A%20%20"hello"%3A%20"world"%0A%7D
becomes { "hello": "world" }
Operators
Most GET
endpoints that retrieve a list of resources support operators as part of the request query.
For example: ?number[gte]=1&number[lte]=10
Operator | Supported Types | Description |
---|---|---|
gte | date number | Greater than or equal to |
gt | date number | Greater than |
lte | date number | Lesser than or equal to |
lt | date number | Lesser than |
any | date number string | Not null |
contains | string | Contains |
Changelog
When backwards-incompatible changes are made to the API, a new, dated version is released. The latest version is 2023-07-01.
The API version can be set in the base path of any endpoint, such as https://api.hookdeck.com/2023-07-01/sources. Otherwise the API defaults to the oldest supported stable version.
The backwards-incompatible changes for each version are listed below. Backwards-compatible changes don’t need a new API version and do not appear in this list.
Dated versions remain supported for up to 1 year after the date of release. For instance 2023-07-01 will be supported until 2024-07-01.
2023-07-01
Removing rulesets
Removes support for Rulesets and is replaced by setting rules directly on connections.
- Removed
rulesets
object andresolved_rules
array from Connections. - Removed all
/rulesets
endpoints - Removed
ruleset
andruleset_id
property when creating or updating a Connection
Replacing integrations by Source "verification"
- Add the
verification
property to the Source model - Add the
verification
input when creating or updating a Source - Remove the
integration
andintegration_id
property from Source - Removed all
/integrations
endpoints
Integrations no longer need to be created and managed independantly from the source it's attached to. Instead you should pass the verification property to the source directly.
2023-01-01
- Removed
alert
rule type fromrules
on Rulesets and Connections.
2022-11-01
- Changed the
string
responses of DELETE operations on /bookmarks/:id and /integrations/:id to{ "id": "SOME_ID" }
instead ofID
to prevent error with unstructured response with some clients. - Changed the
boolean
responses of PUT operations on /integrations/:id/attach/:source_id" and /integrations/:id/detach/:source_id" to{ "success": true }
instead oftrue
to prevent error with unstructured response with some clients. - Changed the
number
responses of GET operations on /issues/count to{ "count": 123 }
instead of123
to prevent error with unstructured response with some clients.
2022-10-01
- Remove the properties
completed_event_id
andlast_processed_event_id
from the Event Bulk Retry model - Renamed the following properties on the Event Bulk Retry model
estimated_batch_count
toestimated_batch
processed_batch_count
toprocessed_batch
estimated_event_count
toestimated_count
delivered_event_count
tocompleted_count
failed_event_count
tofailed_count
- Added bulk retries for
requests
2022-03-01 [DEPRECATED]
- Removed the
interval
property from the Alert rule. Alert rule now controls how new issues are opened and notifications are now triggered by an issue opening or re-opening.
2021-08-01 [DEPRECATED]
- Removed the
label
property for Sources, Destinations, Rulesets and Connections. - Renamed the
alias
property toname
for Sources, Destinations, Rulesets and Connections. - Removed the
alert_strategy
andalert_interval
property for Rulesets. - Removed the
retry_strategy
,retry_interval
andretry_count
property for Rulesets. - Removed the
filters
property for Connections. - Added the
rules
property to Connections and Rulesets.
Introducing Rules
The removed properties of Rulesets and Connections have been replaced by the rules
array. Each rule has a type
and a set of properties to configure its behavior. Rule definitions are here.
2020-01-01 [DEPRECATED]
2020-01-01 marks the intial released of the API.
OpenAPI Schema
Our OpenAPI schema is available at https://api.hookdeck.com/2023-07-01/openapi.
This URL always returns the schema for the latest version of the API
OpenAPI schemas can be used to generate SDKs for your language of choice and work with various tools made for OpenAPI definitions such as importing into Postman.
Connections
A connection lets you route webhooks from a source to a destination, using a ruleset.
Connections were historically called "webhooks". The endpoint root path
/webhooks
has been moved to/connections
. The former will remain functional, but consider migrating to/connections
.
GET /2023-07-01/connections
GET /2023-07-01/connections/:id
POST /2023-07-01/connections
PUT /2023-07-01/connections
PUT /2023-07-01/connections/:id
PUT /2023-07-01/connections/:id/archive
PUT /2023-07-01/connections/:id/unarchive
PUT /2023-07-01/connections/:id/pause
PUT /2023-07-01/connections/:id/unpause
DELETE /2023-07-01/connections/:id
Connection object
id
string
Requiredname
string
RequiredUnique name of the connection for this source
full_name
string
RequiredFull name of the connection concatenated from source, connection and desitnation name
description
string
RequiredDescription of the connection
team_id
string
RequiredID of the workspace
destination
Destination
RequiredAssociated Destination object
source
Source
RequiredAssociated Source object
rules
Rule[]
RequiredArray of rules configured on the connection
archived_at
string
RequiredDateDate the connection was archived
paused_at
string
RequiredDateDate the connection was paused
updated_at
string
RequiredDateDate the connection was last updated
created_at
string
RequiredDateDate the connection was created
{
"id": "web_mNP60lEYInVfnH1EUWbhfUYL",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T00:26:46.620Z",
"created_at": "2021-08-02T00:26:47.070Z",
"paused_at": null,
"name": "shopify-my-api",
"rules": [],
"destination": {
"id": "des_6MO6QjY7pOotcDaFZfw2hoWF",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://example.com/webhook",
"archived_at": null,
"updated_at": "2021-08-02T00:26:46.827Z",
"created_at": "2021-08-02T00:25:31.858Z",
"rate_limit": 5,
"rate_limit_period": "second",
"cli_path": null,
"path_forwarding_disabled": false,
"name": "my-api",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
},
"source": {
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T00:26:46.816Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW"
},
"ruleset": {
"id": "rls_gaqoPgyT17a8x1mBMpKnku8A",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"is_team_default": true,
"archived_at": null,
"updated_at": "2021-08-02T00:26:46.649Z",
"created_at": "2021-08-01T21:29:36.367Z",
"name": "default-ruleset",
"rules": [
{
"type": "retry",
"count": 5,
"interval": 10800000,
"strategy": "linear"
}
]
},
"resolved_rules": [
{
"type": "retry",
"count": 5,
"interval": 10800000,
"strategy": "linear"
}
]
}
Retrieve all connections
This endpoint lists all connections, or a subset of connections.
Query Parameters
id
string
string[]
Filter by connection IDs
name
string
object
Filter by connection name
destination_id
string
string[]
Filter by associated destination IDs
source_id
string
string[]
Filter by associated source IDs
archived
boolean
Include archived resources in the response
archived_at
string
object
Date the connection was archived
full_name
string
Pattern: ^[a-z0-9-_>\s]+$Max length: 155Fuzzy match the concatenated source and connection name. The source name and connection name must be separated by " -> "
paused_at
string
object
Date the connection was paused
order_by
string
string[]
Sort key(s)
dir
string
string[]
Sort direction(s)
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/connections
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 1,
"next": "web_szbJuSoCxatxFytJdqdsfGHL"
},
"count": 1,
"models": [
{
"id": "web_szbJuSoCxatxFytJdqdsfGHL",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:10:47.407Z",
"created_at": "2021-08-02T14:09:56.133Z",
"paused_at": null,
"name": "example-destination",
"rules": [],
"destination": {
"id": "des_YDn6Awgm7Zp8iQ0jSGw4GCme",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://mock.hookdeck.com",
"archived_at": null,
"updated_at": "2021-08-02T14:09:56.117Z",
"created_at": "2021-08-02T14:09:56.116Z",
"rate_limit": null,
"rate_limit_period": "second",
"cli_path": "/",
"path_forwarding_disabled": false,
"name": "example-destination",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
},
"source": {
"id": "src_2Q0cNXCHyzPJCUOmpk76JKeU",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-01T21:48:16.865Z",
"created_at": "2021-08-01T21:45:07.100Z",
"name": "test",
"url": "https://events.hookdeck.com/e/src_2Q0cNXCHyzPJCUOmpk76JKeU"
}
}
]
}
Retrieve a connection
This endpoint retrieves a specific connection.
URL Parameters
id
string
RequiredConnection ID
id
string
RequiredConnection ID
GET /2023-07-01/connections/:id
{
"id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T13:52:40.344Z",
"created_at": "2021-08-01T21:29:41.818Z",
"paused_at": null,
"name": "mock-api",
"rules": [],
"destination": {
"id": "des_fYYCay655IHwbOMhIaUXtNq2",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://mock.hookdeck.com",
"archived_at": null,
"updated_at": "2021-08-02T14:07:54.608Z",
"created_at": "2021-08-01T21:29:41.785Z",
"rate_limit": null,
"rate_limit_period": "second",
"cli_path": "/",
"path_forwarding_disabled": false,
"name": "mock-api",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
},
"source": {
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T13:52:17.030Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
}
}
Create a connection
This endpoint creates a connection.
Body Parameters
name
string
Pattern: ^[A-z0-9-_]+$Max length: 155A unique name of the connection for the source
description
string
Max length: 500Description for the connection
destination_id
string
Max length: 255ID of a destination to bind to the connection
source_id
string
Max length: 255ID of a source to bind to the connection
destination
object
Destination input object
source
object
Source input object
rules
Rule[]
Create a connection with new resources
You can create a connection's underlying source, destination, and ruleset with a single call by declaring an object for any of those resources.
Create a connection with existing resources
You can reuse a source, destination, or ruleset by referencing their ID.
POST /2023-07-01/connections
{
"name": "shopify-my-api",
"source": {
"name": "shopify"
},
"destination": {
"name": "my-api",
"url": "https://example.com/webhook"
}
}
{
"id": "web_3tVBgTFuuzmEnsWa9eBywz6j",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.575Z",
"created_at": "2021-08-02T14:12:56.611Z",
"paused_at": null,
"name": "shopify-my-api",
"destination": {
"id": "des_Nm49lhZV6wVrN1XFFPfkv7Zk",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://example.com/webhook",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.591Z",
"created_at": "2021-08-02T14:12:56.589Z",
"rate_limit": null,
"rate_limit_period": "second",
"cli_path": null,
"path_forwarding_disabled": false,
"name": "my-api",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
},
"source": {
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.586Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
},
"rules": []
}
{
"name": "github-some-api",
"source": {
"name": "github"
},
"destination": {
"name": "some-api",
"url": "https://example.com/webhook"
}
}
{
"source_id": "src_xxx",
"destination_id": "des_xxx"
}
Create/Update a connection
This endpoint creates a connection, or updates an existing connection by name.
A connection's source and destination cannot be updated.
Body Parameters
name
string
Pattern: ^[A-z0-9-_]+$Max length: 155A unique name of the connection for the source
description
string
Max length: 500Description for the connection
destination_id
string
Max length: 255ID of a destination to bind to the connection
source_id
string
Max length: 255ID of a source to bind to the connection
destination
object
Destination input object
source
object
Source input object
rules
Rule[]
Create/Update a connection with new resources
You can create a connection's underlying source, destination, and ruleset with a single call by declaring an object for any of those resources.
Create/Update a connection with existing resources
You can reuse a source, destination, or ruleset by referencing their ID.
PUT /2023-07-01/connections
{
"name": "shopify-my-api",
"source": {
"name": "shopify"
},
"destination": {
"name": "my-api",
"url": "https://example.com/webhook"
}
}
{
"id": "web_3tVBgTFuuzmEnsWa9eBywz6j",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.696Z",
"created_at": "2021-08-02T14:12:56.611Z",
"paused_at": null,
"name": "shopify-my-api",
"rules": [],
"destination": {
"id": "des_Nm49lhZV6wVrN1XFFPfkv7Zk",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://example.com/webhook",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.671Z",
"created_at": "2021-08-02T14:12:56.589Z",
"rate_limit": null,
"rate_limit_period": "second",
"cli_path": null,
"path_forwarding_disabled": false,
"name": "my-api",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
},
"source": {
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.674Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
}
}
Update a connection
This endpoint updates a connection.
URL Parameters
id
string
RequiredConnection ID
id
string
RequiredConnection ID
Body Parameters
name
string
Pattern: ^[A-z0-9-_]+$Max length: 155description
string
Max length: 500Description for the connection
rules
Rule[]
PUT /2023-07-01/connections/:id
{
"ruleset_id": "rls_YZCDPNVHORE8BZ86aDRyRMtZ"
}
{
"id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.748Z",
"created_at": "2021-08-01T21:29:41.818Z",
"paused_at": null,
"name": "mock-api",
"rules": [],
"destination": {
"id": "des_fYYCay655IHwbOMhIaUXtNq2",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://mock.hookdeck.com",
"archived_at": null,
"updated_at": "2021-08-02T14:07:54.608Z",
"created_at": "2021-08-01T21:29:41.785Z",
"rate_limit": null,
"rate_limit_period": "second",
"cli_path": "/",
"path_forwarding_disabled": false,
"name": "mock-api",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
},
"source": {
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.674Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
}
}
Pause a connection
This endpoint pauses a connection.
A paused connection will still receive events, but those events will be marked with a status of HOLD
and will be delivered only once the connection is unpaused.
URL Parameters
id
string
RequiredConnection ID
id
string
RequiredConnection ID
The parameter
paused_at
is set to the current timestamp.
PUT /2023-07-01/connections/:id/pause
{
"id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.779Z",
"created_at": "2021-08-01T21:29:41.818Z",
"paused_at": "2021-08-02T14:12:56.779Z",
"name": "mock-api",
"rules": [],
"destination": {
"id": "des_fYYCay655IHwbOMhIaUXtNq2",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://mock.hookdeck.com",
"archived_at": null,
"updated_at": "2021-08-02T14:07:54.608Z",
"created_at": "2021-08-01T21:29:41.785Z",
"rate_limit": null,
"rate_limit_period": "second",
"cli_path": "/",
"path_forwarding_disabled": false,
"name": "mock-api",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
},
"source": {
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.674Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
}
}
Unpause a connection
This endpoint unpauses a connection.
Any event with a status of HOLD
will be attempted (rate limits will be respected). This operation is asynchronous, so it may take some time for all events to be QUEUED
for delivery.
URL Parameters
id
string
RequiredConnection ID
id
string
RequiredConnection ID
The parameter
paused_at
is set tonull
.
PUT /2023-07-01/connections/:id/unpause
{
"id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.813Z",
"created_at": "2021-08-01T21:29:41.818Z",
"paused_at": null,
"name": "mock-api",
"rules": [],
"destination": {
"id": "des_fYYCay655IHwbOMhIaUXtNq2",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://mock.hookdeck.com",
"archived_at": null,
"updated_at": "2021-08-02T14:07:54.608Z",
"created_at": "2021-08-01T21:29:41.785Z",
"rate_limit": null,
"rate_limit_period": "second",
"cli_path": "/",
"path_forwarding_disabled": false,
"name": "mock-api",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
},
"source": {
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.674Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
}
}
Archive a connection
This endpoint archives a connection.
An archived connection will no longer receive or deliver any webhooks.
URL Parameters
id
string
RequiredConnection ID
id
string
RequiredConnection ID
The parameter
archived_at
is set to the current timestamp.
PUT /2023-07-01/connections/:id/archive
{
"id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": "2021-08-02T14:12:56.779Z",
"updated_at": "2021-08-02T14:12:56.779Z",
"created_at": "2021-08-01T21:29:41.818Z",
"paused_at": null,
"name": "mock-api",
"rules": [],
"destination": {
"id": "des_fYYCay655IHwbOMhIaUXtNq2",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://mock.hookdeck.com",
"archived_at": null,
"updated_at": "2021-08-02T14:07:54.608Z",
"created_at": "2021-08-01T21:29:41.785Z",
"rate_limit": null,
"rate_limit_period": "second",
"cli_path": "/",
"path_forwarding_disabled": false,
"name": "mock-api",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
},
"source": {
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.674Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
}
}
Unarchive a connection
This endpoint unarchives a connection.
The associated source and destination will also be unarchived if they were previously archived.
URL Parameters
id
string
RequiredConnection ID
id
string
RequiredConnection ID
The parameter
archived_at
is set tonull
.
PUT /2023-07-01/connections/:id/unarchive
{
"id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.813Z",
"created_at": "2021-08-01T21:29:41.818Z",
"paused_at": null,
"name": "mock-api",
"rules": [],
"destination": {
"id": "des_fYYCay655IHwbOMhIaUXtNq2",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://mock.hookdeck.com",
"archived_at": null,
"updated_at": "2021-08-02T14:07:54.608Z",
"created_at": "2021-08-01T21:29:41.785Z",
"rate_limit": null,
"rate_limit_period": "second",
"cli_path": "/",
"path_forwarding_disabled": false,
"name": "mock-api",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
},
"source": {
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.674Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
}
}
Delete a connection
This endpoint permanently deletes a connection.
URL Parameters
id
string
Requiredid
string
RequiredThis action cannot be undone.
DELETE /2023-07-01/connections/:id
{
"id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp"
}
Sources
A source represents any third party that sends webhooks to Hookdeck.
GET /2023-07-01/sources
GET /2023-07-01/sources/:id
POST /2023-07-01/sources
PUT /2023-07-01/sources
PUT /2023-07-01/sources/:id
PUT /2023-07-01/sources/:id/archive
PUT /2023-07-01/sources/:id/unarchive
DELETE /2023-07-01/sources/:id
Source object
id
string
RequiredID of the source
name
string
RequiredName for the source
description
string
Description of the source
team_id
string
RequiredID of the workspace
url
string
RequiredURLA unique URL that must be supplied to your webhook's provider
verification
VerificationConfig
The verification configs for the specific verification type
allowed_http_methods
SourceAllowedHTTPMethod
List of allowed HTTP methods. Defaults to PUT, POST, PATCH, DELETE.
custom_response
SourceCustomResponse
Custom response object
archived_at
string
DateDate the source was archived
updated_at
string
RequiredDateDate the source was last updated
created_at
string
RequiredDateDate the source was created
Using the source URL
The source object contains a unique URL that must be supplied to your webhook's provider. Each valid HTTP request received at this URL creates a request.
{
"id": "src_1b69dxk87s0g4k",
"team_id": "tm_5b3mzbxk83c0k7i",
"name": "shopify-prod",
"allowed_http_methods": ["PUT", "PATCH", "DELETE", "POST"],
"custom_response": null,
"archived_at": null,
"updated_at": "2020-03-25T20:46:26.742Z",
"created_at": "2020-03-25T20:24:14.069Z",
"url": "https://events.hookdeck.com/e/src_1b69dxk87s0g4k"
}
Retrieve all sources
This endpoint lists all sources, or a subset of sources.
Query Parameters
id
string
string[]
Filter by source IDs
name
string
object
The source name
archived
boolean
Include archived resources in the response
archived_at
string
object
Date the source was archived
order_by
string
string[]
Sort key(s)
dir
string
string[]
Sort direction(s)
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/sources
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 1,
"next": "src_2Q0cNXCHyzPJCUOmpk76JKeU"
},
"count": 1,
"models": [
{
"id": "src_2Q0cNXCHyzPJCUOmpk76JKeU",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-01T21:48:16.865Z",
"created_at": "2021-08-01T21:45:07.100Z",
"name": "test",
"url": "https://events.hookdeck.com/e/src_2Q0cNXCHyzPJCUOmpk76JKeU",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
}
]
}
Retrieve a source
This endpoint retrieves a specific source.
URL Parameters
id
string
RequiredSource ID
Query Parameters
include
string
Enum verification.configs
GET /2023-07-01/sources/:id
{
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.674Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
}
Create a source
This endpoint creates a source.
Body Parameters
name
string
RequiredPattern: ^[A-z0-9-_]+$Max length: 155A unique name for the source
description
string
Max length: 500Description for the source
allowed_http_methods
SourceAllowedHTTPMethod
List of allowed HTTP methods. Defaults to PUT, POST, PATCH, DELETE.
custom_response
SourceCustomResponse
Custom response object
verification
VerificationConfig
The verification configs for the specific verification type
POST /2023-07-01/sources
{
"name": "shopify"
}
{
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:57.327Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
}
Create/Update a source
This endpoint creates a source, or updates an existing source by name.
Body Parameters
name
string
RequiredPattern: ^[A-z0-9-_]+$Max length: 155A unique name for the source
description
string
Max length: 500Description for the source
allowed_http_methods
SourceAllowedHTTPMethod
List of allowed HTTP methods. Defaults to PUT, POST, PATCH, DELETE.
custom_response
SourceCustomResponse
Custom response object
verification
VerificationConfig
The verification configs for the specific verification type
PUT /2023-07-01/sources
{
"name": "shopify"
}
{
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:57.327Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
}
Update a source
This endpoint updates a source.
URL Parameters
id
string
RequiredSource ID
Body Parameters
name
string
Pattern: ^[A-z0-9-_]+$Max length: 155A unique name for the source
description
string
Max length: 500Description for the source
allowed_http_methods
SourceAllowedHTTPMethod
List of allowed HTTP methods. Defaults to PUT, POST, PATCH, DELETE.
custom_response
SourceCustomResponse
Custom response object
verification
VerificationConfig
The verification configs for the specific verification type
PUT /2023-07-01/sources/:id
{
"name": "shopify"
}
{
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": null,
"updated_at": "2021-08-02T14:12:57.347Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
}
Archive a source
This endpoint archives a source and any associated connections.
URL Parameters
id
string
RequiredSource ID
The parameter
archived_at
is set to the current timestamp.
PUT /2023-07-01/sources/:id/archive
{
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": "2021-08-02T14:12:57.370Z",
"updated_at": "2021-08-02T14:12:57.383Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
}
Unarchive a source
This endpoint unarchives a source.
URL Parameters
id
string
RequiredSource ID
The parameter
archived_at
is set tonull
.
PUT /2023-07-01/sources/:id/unarchive
{
"id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"archived_at": "null",
"updated_at": "2021-08-02T14:12:57.383Z",
"created_at": "2021-08-01T21:29:41.788Z",
"name": "shopify",
"url": "https://events.hookdeck.com/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"allowed_http_methods": [
"PUT",
"PATCH",
"DELETE",
"POST"
],
"custom_response": null,
"verification": null
}
Delete a source
This endpoint permanently deletes a source.
URL Parameters
id
string
RequiredThis action cannot be undone. Hookdeck will return HTTP 410 for any new request to that Source URL.
DELETE /2023-07-01/sources/:id
{
"id": "src_9YmY0SHklrv6zBQz78cKGwSW"
}
Destinations
A destination is any endpoint to which your webhooks can be routed.
GET /2023-07-01/destinations
GET /2023-07-01/destinations/:id
POST /2023-07-01/destinations
PUT /2023-07-01/destinations
PUT /2023-07-01/destinations/:id
PUT /2023-07-01/destinations/:id/archive
PUT /2023-07-01/destinations/:id/unarchive
DELETE /2023-07-01/destinations/:id
Destination object
id
string
RequiredID of the destination
name
string
RequiredA unique, human-friendly name for the destination
description
string
Description of the destination
team_id
string
RequiredID of the workspace
path_forwarding_disabled
boolean
url
string
URLHTTP endpoint of the destination
cli_path
string
Path for the CLI destination
rate_limit
integer
Limit event attempts to receive per period. Max value is workspace plan's max attempts thoughput.
rate_limit_period
DestinationRateLimitPeriod
Period to rate limit attempts
Enum second
, minute
, hour
, concurrent
http_method
DestinationHTTPMethod
HTTP method used on requests sent to the destination, overrides the method used on requests sent to the source.
Enum GET
, POST
, PUT
, PATCH
, DELETE
auth_method
DestinationAuthMethodConfig
Config for the destination's auth method
archived_at
string
DateDate the destination was archived
updated_at
string
RequiredDateDate the destination was last updated
created_at
string
RequiredDateDate the destination was created
{
"id": "des_5b3mzbxk83dciim",
"team_id": "tm_5b3mzbxk83c0k7i",
"name": "my-api",
"url": "https://example.com/webhook",
"cli_path": "/webhook",
"rate_limit": 5,
"rate_limit_period": "second",
"archived_at": null,
"updated_at": "2020-03-26T17:15:31.079Z",
"created_at": "2020-03-22T18:22:38.015Z"
}
Retrieve all destinations
This endpoint lists all destinations, or a subset of destinations.
Query Parameters
id
string
string[]
Filter by destination IDs
name
string
object
The destination name
archived
boolean
Include archived resources in the response
archived_at
string
object
Date the destination was archived
url
string
string[]
HTTP endpoint of the destination
cli_path
string
object
string[]
Path for the CLI destination
order_by
string
string[]
Sort key(s)
dir
string
string[]
Sort direction(s)
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/destinations
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 1,
"next": "des_Nm49lhZV6wVrN1XFFPfkv7Zk"
},
"count": 1,
"models": [
{
"id": "des_Nm49lhZV6wVrN1XFFPfkv7Zk",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://example.com/webhook",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.671Z",
"created_at": "2021-08-02T14:12:56.589Z",
"rate_limit": null,
"rate_limit_period": "second",
"cli_path": null,
"path_forwarding_disabled": false,
"name": "my-api",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
}
]
}
Retrieve a destination
This endpoint retrieves a specific destination.
URL Parameters
id
string
RequiredDestination ID
GET /2023-07-01/destinations/:id
{
"id": "des_YDn6Awgm7Zp8iQ0jSGw4GCme",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://mock.hookdeck.com",
"archived_at": null,
"updated_at": "2021-08-02T14:09:56.117Z",
"created_at": "2021-08-02T14:09:56.116Z",
"rate_limit": null,
"rate_limit_period": "second",
"cli_path": "/",
"path_forwarding_disabled": false,
"name": "example-destination",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
}
Create a destination
This endpoint creates a destination.
Body Parameters
name
string
RequiredPattern: ^[A-z0-9-_]+$Max length: 155Name for the destination
description
string
Max length: 500Description for the destination
url
string
URLEndpoint of the destination
cli_path
string
Path for the CLI destination
rate_limit_period
string
Period to rate limit attempts
Enum second
, minute
, hour
rate_limit
integer
Limit event attempts to receive per period
http_method
DestinationHTTPMethod
HTTP method used on requests sent to the destination, overrides the method used on requests sent to the source.
Enum GET
, POST
, PUT
, PATCH
, DELETE
auth_method
DestinationAuthMethodConfig
Config for the destination's auth method
path_forwarding_disabled
boolean
One of
url
orcli_path
is required.
POST /2023-07-01/destinations
{
"name": "my-api",
"url": "https://example.com/webhook",
"rate_limit": 5,
"rate_limit_period": "second"
}
{
"id": "des_Nm49lhZV6wVrN1XFFPfkv7Zk",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://example.com/webhook",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.933Z",
"created_at": "2021-08-02T14:12:56.589Z",
"rate_limit": 5,
"rate_limit_period": "second",
"cli_path": null,
"path_forwarding_disabled": false,
"name": "my-api",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
}
Create/Update a destination
This endpoint creates a destination, or updates an existing destination by name.
Body Parameters
name
string
RequiredPattern: ^[A-z0-9-_]+$Max length: 155Name for the destination
description
string
Max length: 500Description for the destination
url
string
URLEndpoint of the destination
cli_path
string
Path for the CLI destination
rate_limit_period
string
Period to rate limit attempts
Enum second
, minute
, hour
rate_limit
integer
Limit event attempts to receive per period
http_method
DestinationHTTPMethod
HTTP method used on requests sent to the destination, overrides the method used on requests sent to the source.
Enum GET
, POST
, PUT
, PATCH
, DELETE
auth_method
DestinationAuthMethodConfig
Config for the destination's auth method
path_forwarding_disabled
boolean
PUT /2023-07-01/destinations
{
"name": "my-api",
"url": "https://example.com/webhook",
"rate_limit": 5,
"rate_limit_period": "second"
}
{
"id": "des_Nm49lhZV6wVrN1XFFPfkv7Zk",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://example.com/webhook",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.933Z",
"created_at": "2021-08-02T14:12:56.589Z",
"rate_limit": 5,
"rate_limit_period": "second",
"cli_path": null,
"path_forwarding_disabled": false,
"name": "my-api"
}
Update a destination
This endpoint updates a destination.
URL Parameters
id
string
RequiredDestination ID
Body Parameters
name
string
Pattern: ^[A-z0-9-_]+$Max length: 155Name for the destination
description
string
Max length: 500Description for the destination
url
string
URLEndpoint of the destination
cli_path
string
Path for the CLI destination
rate_limit_period
string
Period to rate limit attempts
Enum second
, minute
, hour
rate_limit
integer
Limit event attempts to receive per period
http_method
DestinationHTTPMethod
HTTP method used on requests sent to the destination, overrides the method used on requests sent to the source.
Enum GET
, POST
, PUT
, PATCH
, DELETE
auth_method
DestinationAuthMethodConfig
Config for the destination's auth method
path_forwarding_disabled
boolean
PUT /2023-07-01/destinations/:id
{
"name": "my-new-api"
}
{
"id": "des_YDn6Awgm7Zp8iQ0jSGw4GCme",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://mock.hookdeck.com",
"archived_at": null,
"updated_at": "2021-08-02T14:12:56.960Z",
"created_at": "2021-08-02T14:09:56.116Z",
"rate_limit": null,
"rate_limit_period": "second",
"cli_path": "/",
"path_forwarding_disabled": false,
"name": "my-new-api",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
}
Archive a destination
This endpoint archives a destination.
URL Parameters
id
string
RequiredDestination ID
The parameter
archived_at
is set to the current timestamp.
PUT /2023-07-01/destinations/:id/archive
{
"id": "des_YDn6Awgm7Zp8iQ0jSGw4GCme",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://mock.hookdeck.com",
"archived_at": "2021-08-02T14:12:57.042Z",
"updated_at": "2021-08-02T14:12:57.042Z",
"created_at": "2021-08-02T14:09:56.116Z",
"rate_limit": null,
"rate_limit_period": "second",
"cli_path": "/",
"path_forwarding_disabled": false,
"name": "my-new-api",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
}
Unarchive a destination
This endpoint unarchives a destination.
URL Parameters
id
string
RequiredDestination ID
The parameter
archived_at
is set tonull
.
PUT /2023-07-01/destinations/:id/unarchive
{
"id": "des_YDn6Awgm7Zp8iQ0jSGw4GCme",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"url": "https://mock.hookdeck.com",
"archived_at": null,
"updated_at": "2021-08-02T14:12:57.042Z",
"created_at": "2021-08-02T14:09:56.116Z",
"rate_limit": null,
"rate_limit_period": "second",
"cli_path": "/",
"path_forwarding_disabled": false,
"name": "my-new-api",
"http_method": "POST",
"auth_method": {
"type": "HOOKDECK_SIGNATURE",
"config": {}
}
}
Delete a destination
This endpoint permanently deletes a destination.
URL Parameters
id
string
RequiredThis action cannot be undone.
DELETE /2023-07-01/destinations/:id
{
"id": "des_YDn6Awgm7Zp8iQ0jSGw4GCme"
}
Issue Triggers
Issue Triggers allow you to configure the rules under which new Issues (and any corresponding notifications) should be opened for the different issue types.
GET /2023-07-01/issue-triggers
GET /2023-07-01/issue-triggers/:id
POST /2023-07-01/issue-triggers
PUT /2023-07-01/issue-triggers/:id
PUT /2023-07-01/issue-triggers
POST /2023-07-01/issue-triggers/:id
PUT /2023-07-01/issue-triggers/:id/disable
PUT /2023-07-01/issue-triggers/:id/enable
DELETE /2023-07-01/issue-triggers/:id
GET /2023-07-01/issue-triggers
POST /2023-07-01/issue-triggers
PUT /2023-07-01/issue-triggers/:id
DELETE /2023-07-01/issue-triggers/:id
Issue Trigger Object
id
string
RequiredID of the issue trigger
team_id
string
ID of the workspace
name
string
Optional unique name to use as reference when using the API
type
IssueType
RequiredIssue type
Enum delivery
, transformation
, backpressure
configs
IssueTriggerReference
RequiredConfiguration object for the specific issue type selected
channels
IssueTriggerChannels
Notification channels object for the specific channel type
disabled_at
string
DateISO timestamp for when the issue trigger was disabled
updated_at
string
RequiredDateISO timestamp for when the issue trigger was last updated
created_at
string
RequiredDateISO timestamp for when the issue trigger was created
deleted_at
string
DateISO timestamp for when the issue trigger was deleted
{
"id": "it_oK5SRphjGq3h7A",
"team_id": "tm_ARMha0tPZIjF",
"name": null,
"type": "delivery",
"configs": {
"strategy": "first_attempt",
"connections": "*"
},
"channels": {
"slack": {
"channel_name": "alerts"
},
"opsgenie": {},
"email": {}
}
"disabled_at": null,
"updated_at": "2022-12-16T02:09:17.813Z",
"created_at": "2022-12-16T02:09:17.812Z"
}
Notification Channel Providers
slack
object
Slack channel for an issue trigger
opsgenie
object
Integration channel for an issue trigger
object
Email channel for an issue trigger
A workspace integration for each providers must be configured from the dashboard for the notification channels to work. Workspace integrations.
Delivery issue type configs
strategy
IssueTriggerStrategy
RequiredThe strategy uses to open the issue
Enum first_attempt
, final_attempt
connections
string
string[]
RequiredA pattern to match on the connection name or array of connection IDs. Use *
as wildcard.
Transformation issue type configs
log_level
TransformationExecutionLogLevel
RequiredThe minimum log level to open the issue on
Enum debug
, info
, warn
, error
, fatal
transformations
string
string[]
RequiredA pattern to match on the transformation name or array of transformation IDs. Use *
as wildcard.
Backpressure issue type configs
delay
integer
RequiredMin: 60000Max: 86400000The minimum delay (backpressure) to open the issue for min of 1 minute (60000) and max of 1 day (86400000)
destinations
string
string[]
RequiredA pattern to match on the destination name or array of destination IDs. Use *
as wildcard.
Wildcard patterns
Pattern | Description |
---|---|
* | Match all |
string* | Starts with |
*string | Ends with |
*string* | Contains |
{
{
"slack": {
"channel_name": "alerts"
},
"opsgenie": {},
"email": {}
}
}
Retrieve all issue triggers
This endpoint lists all issue triggers, or a subset of issue triggers.
Query Parameters
name
string
Max length: 255Filter by issue trigger name
type
IssueType
IssueType[]
disabled_at
string
object
Date when the issue trigger was disabled
order_by
string
string[]
Sort key(s)
dir
string
string[]
Sort direction(s)
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/issue-triggers
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 1,
"next": "it_oK5SRphjGq3h7A"
},
"count": 1,
"models": [
{
"id": "it_oK5SRphjGq3h7A",
"team_id": "tm_ARMha0tPZIjF",
"name": null,
"type": "delivery",
"configs": {
"strategy": "first_attempt",
"connections": "*"
},
"disabled_at": null,
"updated_at": "2022-12-16T02:09:17.813Z",
"created_at": "2022-12-16T02:09:17.812Z"
}
]
}
Retrieve an issue trigger
This endpoint retrieves a specific issue trigger.
URL Parameters
id
string
RequiredIssue trigger ID
GET /2023-07-01/issue-triggers/:id
{
"id": "it_oK5SRphjGq3h7A",
"team_id": "tm_ARMha0tPZIjF",
"name": null,
"type": "delivery",
"configs": {
"strategy": "first_attempt",
"connections": "*"
},
"disabled_at": null,
"updated_at": "2022-12-16T02:09:17.813Z",
"created_at": "2022-12-16T02:09:17.812Z"
}
Create an issue trigger
This endpoint updates an issue trigger.
Body Parameters
type
IssueType
RequiredIssue type
Enum delivery
, transformation
, backpressure
configs
IssueTriggerDeliveryConfigs
IssueTriggerTransformationConfigs
IssueTriggerBackpressureConfigs
Configuration object for the specific issue type selected
channels
IssueTriggerChannels
RequiredNotification channels object for the specific channel type
name
string
Max length: 255Optional unique name to use as reference when using the API
POST /2023-07-01/issue-triggers
{
"type": "delivery",
"configs": {
"strategy": "first_attempt",
"connections": "*"
}
}
{
"id": "it_cKj0ANguRIGXGT",
"type": "delivery",
"configs": {
"strategy": "first_attempt",
"connections": "*"
},
"team_id": "tm_ARMha0tPZIjF",
"created_at": "2022-12-16T02:09:51.270Z",
"name": null,
"disabled_at": null,
"updated_at": "2022-12-16T02:09:51.270Z"
}
Update an issue trigger
This endpoint updates an issue trigger.
URL Parameters
id
string
RequiredIssue trigger ID
Body Parameters
configs
IssueTriggerDeliveryConfigs
IssueTriggerTransformationConfigs
IssueTriggerBackpressureConfigs
Configuration object for the specific issue type selected
channels
IssueTriggerChannels
Notification channels object for the specific channel type
disabled_at
string
DateDate when the issue trigger was disabled
name
string
Max length: 255Optional unique name to use as reference when using the API
PUT /2023-07-01/issue-triggers/:id
{
"type": "delivery",
"configs": {
"strategy": "first_attempt",
"connections": "*"
}
}
{
"id": "it_BfxyEjSg8WM96S",
"team_id": "tm_ARMha0tPZIjF",
"name": null,
"type": "delivery",
"configs": {
"strategy": "first_attempt",
"connections": "*"
},
"disabled_at": null,
"updated_at": "2022-12-16T02:09:51.294Z",
"created_at": "2022-12-16T02:08:58.244Z"
}
Create or Update an issue trigger
This endpoint creates a issue trigger, or updates an existing issue trigger by name.
Name is required for this endpoint
Body Parameters
type
IssueType
RequiredIssue type
Enum delivery
, transformation
, backpressure
configs
IssueTriggerDeliveryConfigs
IssueTriggerTransformationConfigs
IssueTriggerBackpressureConfigs
Configuration object for the specific issue type selected
channels
IssueTriggerChannels
RequiredNotification channels object for the specific channel type
name
string
RequiredMax length: 255Required unique name to use as reference when using the API
PUT /2023-07-01/issue-triggers
{
"type": "delivery",
"name": "all-connection",
"configs": {
"strategy": "first_attempt",
"connections": "*"
}
}
{
"id": "it_BfxyEjSg8WM96S",
"team_id": "tm_ARMha0tPZIjF",
"name": "all-connection",
"type": "delivery",
"configs": {
"strategy": "first_attempt",
"connections": "*"
},
"disabled_at": null,
"updated_at": "2022-12-16T02:09:51.294Z",
"created_at": "2022-12-16T02:08:58.244Z"
}
Delete an issue trigger
This endpoint deletes an issue trigger and all associated issues.
URL Parameters
id
string
RequiredIssue trigger ID
DELETE /2023-07-01/issue-triggers/:id
{
"id": "it_oK5SRphjGq3h7A"
}
Disable an issue trigger
This endpoint disables an issue trigger.
URL Parameters
id
string
RequiredIssue trigger ID
PUT /2023-07-01/issue-triggers/:id/disable
{
"id": "it_oK5SRphjGq3h7A",
"team_id": "tm_ARMha0tPZIjF",
"name": null,
"type": "delivery",
"configs": {
"strategy": "first_attempt",
"connections": "*"
},
"disabled_at": null,
"updated_at": "2022-12-16T02:09:51.313Z",
"created_at": "2022-12-16T02:09:17.812Z"
}
Enable an issue trigger
This endpoint enables an issue trigger.
URL Parameters
id
string
RequiredIssue trigger ID
PUT /2023-07-01/issue-triggers/:id/enable
{
"id": "it_oK5SRphjGq3h7A",
"team_id": "tm_ARMha0tPZIjF",
"name": null,
"type": "delivery",
"configs": {
"strategy": "first_attempt",
"connections": "*"
},
"disabled_at": "2022-12-16T02:09:51.330Z",
"updated_at": "2022-12-16T02:09:51.330Z",
"created_at": "2022-12-16T02:09:17.812Z"
}
Transformations
A transformation represents JavaScript code that will be executed on a connection's requests. Transformations are applied to connections using Rules.
GET /2023-07-01/transformations
GET /2023-07-01/transformations/:id
POST /2023-07-01/transformations
PUT /2023-07-01/transformations/:id
PUT /2023-07-01/transformations
PUT /2023-07-01/transformations/run
GET /2023-07-01/transformations/:id/executions
GET /2023-07-01/transformations/:id/executions/:execution_id
Transformation Object
id
string
RequiredID of the transformation
team_id
string
RequiredID of the workspace
name
string
RequiredA unique, human-friendly name for the transformation
code
string
RequiredJavaScript code to be executed
env
object
Key-value environment variables to be passed to the transformation
updated_at
string
RequiredDateDate the transformation was last updated
created_at
string
RequiredDateDate the transformation was created
{
"id": "trs_XRyNGe8sta9SN9",
"team_id": "tm_Vn0Fn3sEqjGX",
"name": "example",
"code": "addHandler('transform', (request, context) => request);",
"updated_at": "2022-09-02T23:41:46.180Z",
"created_at": "2022-09-02T22:10:03.104Z",
"env": {
"FOO": "BAR"
}
}
Retrieve all transformations
This endpoint lists all transformations
Query Parameters
id
string
string[]
Filter by transformation IDs
name
string
object
Filter by transformation name
order_by
string
string[]
Sort key(s)
dir
string
string[]
Sort direction(s)
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/transformations
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 1
},
"count": 1,
"models": [
{
"id": "trs_XRyNGe8sta9SN9",
"team_id": "tm_Vn0Fn3sEqjGX",
"name": "example",
"code": "addHandler('transform', (request, context) => request);",
"updated_at": "2022-09-02T23:41:12.298Z",
"created_at": "2022-09-02T22:10:03.104Z",
"env": {
"FOO": "BAR"
}
}
]
}
Retrieve a transformation
This endpoint retrieves a specific transformation.
URL Parameters
id
string
RequiredTransformation ID
GET /2023-07-01/transformations/:id
{
"id": "trs_XRyNGe8sta9SN9",
"team_id": "tm_Vn0Fn3sEqjGX",
"name": "example",
"code": "addHandler('transform', (request, context) => request);",
"updated_at": "2022-09-02T23:41:12.298Z",
"created_at": "2022-09-02T22:10:03.104Z",
"env": {
"FOO": "BAR"
}
}
Create a transformation
This endpoint creates a transformation.
Body Parameters
name
string
RequiredPattern: ^[A-z0-9-_]+$Max length: 155A unique, human-friendly name for the transformation
code
string
RequiredJavaScript code to be executed as string
env
object
Key-value environment variables to be passed to the transformation
POST /2023-07-01/transformations
{
"name": "example-1",
"code": "addHandler('transform', (request, context) => request);",
"env": {
"FOO": "BAR"
}
}
{
"id": "trs_fvgc1SeB3m1XnV",
"name": "example",
"code": "addHandler('transform', (request, context) => request);",
"team_id": "tm_Vn0Fn3sEqjGX",
"created_at": "2022-09-02T23:41:46.153Z",
"updated_at": "2022-09-02T23:41:46.154Z",
"env": {
"FOO": "BAR"
}
}
Create/Update a transformation
This endpoint creates a transformation, or updates an existing transformation by name.
Body Parameters
name
string
RequiredPattern: ^[A-z0-9-_]+$Max length: 155A unique, human-friendly name for the transformation
code
string
RequiredJavaScript code to be executed as string
env
object
Key-value environment variables to be passed to the transformation
PUT /2023-07-01/transformations
{
"name": "example",
"code": "addHandler('transform', (request, context) => request);",
"env": {
"FOO": "BAR"
}
}
{
"id": "trs_XRyNGe8sta9SN9",
"team_id": "tm_Vn0Fn3sEqjGX",
"name": "example",
"code": "addHandler('transform', (request, context) => request);",
"updated_at": "2022-09-02T23:41:46.198Z",
"created_at": "2022-09-02T22:10:03.104Z",
"env": {
"FOO": "BAR"
}
}
Update a transformation
This endpoint updates a transformation.
URL Parameters
id
string
RequiredTransformation ID
Body Parameters
name
string
Pattern: ^[A-z0-9-_]+$Max length: 155A unique, human-friendly name for the transformation
code
string
JavaScript code to be executed
env
object
Key-value environment variables to be passed to the transformation
PUT /2023-07-01/transformations/:id
{
"code": "addHandler('transform', (request, context) => request);"
}
{
"id": "trs_XRyNGe8sta9SN9",
"team_id": "tm_Vn0Fn3sEqjGX",
"name": "example",
"code": "addHandler('transform', (request, context) => request);",
"updated_at": "2022-09-02T23:41:46.180Z",
"created_at": "2022-09-02T22:10:03.104Z",
"env": {
"FOO": "BAR"
}
}
Test the transformation code
This endpoint allows you to test a transformation input against a request without creating the transformation.
Body Parameters
env
object
Key-value environment variables to be passed to the transformation
webhook_id
string
ID of the connection to use for the execution context
code
string
JavaScript code to be executed
transformation_id
string
Transformation ID
request
object
Request input to use for the transformation execution
PUT /2023-07-01/transformations/run
{
"request": {
"headers": {
"content-type": "application/json"
},
"body": {
"example": true
},
"path": "/",
"query": "",
"parsed_query": {}
},
"code": "addHandler('transform', (request, context) => request);"
}
{
"log_level": "info",
"console": [],
"request": {
"headers": {
"content-type": "application/json",
"content-length": "16"
},
"body": {
"example": true
},
"query": "",
"parsed_query": {},
"path": "/"
}
}
Retieve all transformation execution logs
This endpoint returns the historical executions of a transformation.
URL Parameters
id
string
RequiredTransformation ID
Query Parameters
log_level
string
string[]
Log level of the execution
webhook_id
string
string[]
ID of the connection the execution was run for
issue_id
string
string[]
ID of the associated issue
created_at
string
object
ISO date of the transformation's execution
order_by
string
string[]
Sort key(s)
dir
string
string[]
Sort direction(s)
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/transformations/:id/executions
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 100
},
"count": 1,
"models": [
{
"id": "reqt_RdK4HW2ZubL0VKJ6kf",
"transformation_id": "trs_XRyNGe8sta9SN9",
"team_id": "tm_Vn0Fn3sEqjGX",
"webhook_id": "web_AXV0d1vkT3ld",
"log_level": "info",
"updated_at": "2022-09-02T23:39:03.207Z",
"created_at": "2022-09-02T23:39:03.447Z",
"transformed_event_data_id": "edt_dylroX25Cgh8stJkpCjq",
"logs": []
}
]
}
Retrieve a transformation execution log
This endpoint returns the execution of a transformation. The properties original_event_data
and transformed_event_data
will be populated with the input and output request data, respectively.
URL Parameters
id
string
RequiredTransformation ID
execution_id
string
RequiredExecution ID
GET /2023-07-01/transformations/:id/executions/:execution_id
{
"id": "reqt_RdK4HW2ZubL0VKJ6kf",
"transformation_id": "trs_XRyNGe8sta9SN9",
"updated_at": "2022-09-02T23:39:03.207Z",
"created_at": "2022-09-02T23:39:03.447Z",
"webhook_id": "web_AXV0d1vkT3ld",
"team_id": "tm_Vn0Fn3sEqjGX",
"logs": [],
"issue_id": null,
"log_level": "info",
"transformed_event_data": {
"headers": {
"content-length": "24",
"content-type": "application/json",
"postman-token": "adcb7eb8-d2b3-4103-98b6-afef40200b1c",
"user-agent": "PostmanRuntime/7.29.2",
"x-hookdeck-original-ip": "172.20.0.1"
},
"body": {
"hello": "world"
},
"query": "",
"path": "/",
"is_large_payload": false
},
"original_event_data": {
"headers": {
"content-length": "24",
"content-type": "application/json",
"postman-token": "adcb7eb8-d2b3-4103-98b6-afef40200b1c",
"user-agent": "PostmanRuntime/7.29.2",
"x-hookdeck-original-ip": "172.20.0.1"
},
"body": {
"hello": "world"
},
"query": "",
"path": "/",
"is_large_payload": false
},
"transformed_event_data_id": "edt_dylroX25Cgh8stJkpCjq",
"original_event_data_id": "edt_4z2L726GSEyZMUjtHzVu"
}
Notifications
Notifications let your team receive alerts anytime an issue changes.
Webhook Notifications
This endpoint enables or disables webhook notifications for the workspace.
Body Parameters
enabled
boolean
Enable or disable webhook notifications on the workspace
topics
string[]
List of topics to send notifications for
source_id
string
The Hookdeck Source to send the webhook to
PUT /2023-07-01/notifications/webhooks
{
"enabled": true,
"topics": [
"issue.opened"
],
"source_id": "src_9YmY0SHklrv6zBQz78cKGwSW"
}
Requests
A request represent a webhook received by Hookdeck.
GET /2023-07-01/requests
GET /2023-07-01/requests/:id
POST /2023-07-01/requests/:id/retry
GET /2023-07-01/requests/:id/events
GET /2023-07-01/requests/:id/ignored-events
Request object
id
string
RequiredID of the request
team_id
string
RequiredID of the workspace
verified
boolean
RequiredWhether or not the request was verified when received
original_event_data_id
string
RequiredID of the request data
rejection_cause
string
RequiredEnum SOURCE_ARCHIVED
, NO_WEBHOOK
, VERIFICATION_FAILED
, UNSUPPORTED_HTTP_METHOD
, UNSUPPORTED_CONTENT_TYPE
... show 4 more
ingest_priority
string
RequiredThe priority attributed to the request when received
Enum NORMAL
, LOW
ingested_at
string
RequiredDateThe time the request was originally received
source_id
string
RequiredID of the associated source
events_count
integer
RequiredThe count of events created from this request (CLI events not included)
cli_events_count
integer
RequiredThe count of CLI events created from this request
updated_at
string
RequiredDateDate the event was last updated
created_at
string
RequiredDateDate the event was created
data
ShortEventData
Request data
{
"id": "req_M3ltWOSF8G6oMS9GS9XX",
"team_id": "tm_AkLVUIfTy4nn",
"verified": false,
"rejection_cause": null,
"original_event_data_id": "edt_3DzFKL5UU8TKsXJjgct7",
"ingest_priority": "NORMAL",
"events_count": 2,
"cli_events_count": 0,
"ignored_count": 4,
"ingested_at": "2022-07-29T13:55:10.238Z",
"source_id": "src_iEfHpkswbzGW",
"updated_at": "2022-07-29T13:55:15.369Z",
"created_at": "2022-07-29T13:55:15.092Z"
}
Retrieve all requests
This endpoint lists all request, or a subset of requests.
Requests are sorted by ingested_at
date.
Filtering requests
To filter the list of requests, use only supported operators.
For example, append ?ingested_at[gte]=2021-10-12&ingested_at[lte]=2021-10-13
to retrieve requests for that specific 24-hour period.
Requests past your workspace archival window are not returned
Query Parameters
id
string
string[]
Filter by requests IDs
status
string
Filter by status
Enum accepted
, rejected
rejection_cause
string
string[]
Filter by rejection cause
source_id
string
string[]
Filter by source IDs
verified
boolean
Filter by verification status
search_term
string
Min length: 3URL Encoded string of the value to match partially to the body, headers, parsed_query or path
headers
JSON
URL Encoded string of the JSON to match to the data headers
body
JSON
URL Encoded string of the JSON to match to the data body
parsed_query
JSON
URL Encoded string of the JSON to match to the parsed query (JSON representation of the query)
path
string
URL Encoded string of the value to match partially to the path
ignored_count
integer
object
integer[]
Filter by count of ignored events
events_count
integer
object
integer[]
Filter by count of events
ingested_at
string
object
Filter by event ingested date
order_by
string
Max length: 255Sort key
Enum ingested_at
, created_at
dir
string
Sort direction
Enum asc
, desc
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/requests
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 1,
"next": "req_sE7L2cs1Ftn5nUlb8feF"
},
"count": 1,
"models": [
{
"id": "req_sE7L2cs1Ftn5nUlb8feF",
"team_id": "tm_AkLVUIfTy4nn",
"verified": false,
"rejection_cause": null,
"original_event_data_id": "edt_sUZBRp413JM6OSNJk6qc",
"ingest_priority": "NORMAL",
"ingested_at": "2022-07-29T13:54:26.514Z",
"source_id": "src_iEfHpkswbzGW",
"updated_at": "2022-07-29T13:55:20.360Z",
"created_at": "2022-07-29T13:55:20.330Z",
"events_count": 2,
"cli_events_count": 0,
"ignored_count": 4
}
]
}
Retrieve a request
This endpoint retrieves a specific request.
The response contains the data
object with the properties body
, headers
, path
and query
representing the original data for that request.
URL Parameters
id
string
RequiredRequest ID
GET /2023-07-01/requests/:id
{
"id": "req_M3ltWOSF8G6oMS9GS9XX",
"team_id": "tm_AkLVUIfTy4nn",
"verified": false,
"rejection_cause": null,
"original_event_data_id": "edt_3DzFKL5UU8TKsXJjgct7",
"ingest_priority": "NORMAL",
"ingested_at": "2022-07-29T13:55:10.238Z",
"source_id": "src_iEfHpkswbzGW",
"updated_at": "2022-07-29T13:55:15.369Z",
"created_at": "2022-07-29T13:55:15.092Z",
"events_count": 2,
"cli_events_count": 0,
"ignored_count": 4,
"data": {
"headers": {
"content-length": "18",
"content-type": "application/json",
"postman-token": "56fcfa62-9d0e-450f-a638-474b88f928ea",
"user-agent": "PostmanRuntime/7.29.2",
"x-hookdeck-original-ip": "172.18.0.1"
},
"body": {
"example": true
},
"query": "",
"parsed_query": {},
"path": "/"
}
}
Retry a request
This endpoint triggers a retry for an eligible request. The response contains the updated request
and an array of created events
if any were created.
URL Parameters
id
string
RequiredRequest ID
Body Parameters
webhook_ids
string[]
RequiredSubset of webhook_ids to re-run the event logic on. Useful to retry only specific ignored_events
POST /2023-07-01/requests/:id/retry
{
"request": {
"id": "req_M3ltWOSF8G6oMS9GS9XX",
"team_id": "tm_AkLVUIfTy4nn",
"verified": false,
"rejection_cause": null,
"original_event_data_id": "edt_3DzFKL5UU8TKsXJjgct7",
"ingest_priority": "NORMAL",
"ingested_at": "2022-07-29T13:55:10.238Z",
"source_id": "src_iEfHpkswbzGW",
"updated_at": "2022-07-29T13:55:15.369Z",
"created_at": "2022-07-29T13:55:15.092Z",
"events_count": 1,
"cli_events_count": 0,
"ignored_count": 0,
"data": {
"headers": {
"content-length": "18",
"content-type": "application/json",
"postman-token": "56fcfa62-9d0e-450f-a638-474b88f928ea",
"user-agent": "PostmanRuntime/7.29.2",
"x-hookdeck-original-ip": "172.18.0.1"
},
"body": {
"example": true
},
"query": "",
"parsed_query": {},
"path": "/"
}
},
"events": [
{
"id": "evt_wP4CcyPTYjwndo3R2s",
"team_id": "tm_AkLVUIfTy4nn",
"webhook_id": "web_lfMH5m6GpkO1",
"source_id": "src_iEfHpkswbzGW",
"destination_id": "des_hBX0AHpP3lji",
"attempts": 1,
"response_status": 200,
"last_attempt_at": "2022-07-29T13:55:16.420Z",
"next_attempt_at": null,
"successful_at": "2022-07-29T13:55:16.607Z",
"updated_at": "2022-07-29T13:55:16.609Z",
"created_at": "2022-07-29T13:55:15.291Z",
"status": "SUCCESSFUL",
"cli_id": null,
"request_id": "req_M3ltWOSF8G6oMS9GS9XX",
"event_data_id": "edt_3DzFKL5UU8TKsXJjgct7"
}
]
}
Retrieve request events
This endpoint retries the events associated with a request.
URL Parameters
id
string
RequiredRequest ID
Query Parameters
id
string
string[]
Filter by event IDs
status
EventStatus
EventStatus[]
Lifecyle status of the event
webhook_id
string
string[]
Filter by webhook connection IDs
destination_id
string
string[]
Filter by destination IDs
source_id
string
string[]
Filter by source IDs
attempts
integer
object
Filter by number of attempts
response_status
integer
object
integer[]
Filter by HTTP response status code
successful_at
string
object
Filter by successful_at
date using a date operator
created_at
string
object
Filter by created_at
date using a date operator
error_code
AttemptErrorCodes
AttemptErrorCodes[]
Filter by error code code
cli_id
string
object
string[]
Filter by CLI IDs. ?[any]=true
operator for any CLI.
last_attempt_at
string
object
Filter by last_attempt_at
date using a date operator
search_term
string
Min length: 3URL Encoded string of the value to match partially to the body, headers, parsed_query or path
headers
JSON
URL Encoded string of the JSON to match to the data headers
body
JSON
URL Encoded string of the JSON to match to the data body
parsed_query
JSON
URL Encoded string of the JSON to match to the parsed query (JSON representation of the query)
path
string
URL Encoded string of the value to match partially to the path
order_by
string
Max length: 255Sort key
Enum last_attempt_at
, created_at
dir
string
Sort direction
Enum asc
, desc
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/requests/:id/events
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 100
},
"count": 1,
"models": [
{
"id": "evt_wP4CcyPTYjwndo3R2s",
"team_id": "tm_AkLVUIfTy4nn",
"webhook_id": "web_lfMH5m6GpkO1",
"source_id": "src_iEfHpkswbzGW",
"destination_id": "des_hBX0AHpP3lji",
"attempts": 1,
"response_status": 200,
"last_attempt_at": "2022-07-29T13:55:16.420Z",
"next_attempt_at": null,
"successful_at": "2022-07-29T13:55:16.607Z",
"updated_at": "2022-07-29T13:55:16.609Z",
"created_at": "2022-07-29T13:55:15.291Z",
"status": "SUCCESSFUL",
"cli_id": null,
"request_id": "req_M3ltWOSF8G6oMS9GS9XX",
"event_data_id": "edt_3DzFKL5UU8TKsXJjgct7"
}
]
}
Retrieve request ignored events
This endpoint retries the events associated with a request.
URL Parameters
id
string
RequiredRequest ID
Query Parameters
id
string
string[]
Filter by ignored events IDs
order_by
string
string[]
Sort key(s)
dir
string
string[]
Sort direction(s)
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/requests/:id/ignored_events
{
"pagination": {
"order_by": "id",
"dir": "desc",
"limit": 100
},
"count": 3,
"models": [
{
"request_id": "req_M3ltWOSF8G6oMS9GS9XX",
"team_id": "tm_AkLVUIfTy4nn",
"ignored_event_cause_id": 1475491804,
"id": 1475491804,
"cause": "FILTERED",
"webhook_id": "web_E2iWnvsY0RQE",
"meta": [
"body"
]
},
{
"request_id": "req_M3ltWOSF8G6oMS9GS9XX",
"team_id": "tm_AkLVUIfTy4nn",
"ignored_event_cause_id": 570221994,
"id": 570221994,
"cause": "CLI_DISCONNECTED",
"webhook_id": "web_Tqy2KliIrX1A",
"meta": null
},
{
"request_id": "req_M3ltWOSF8G6oMS9GS9XX",
"team_id": "tm_AkLVUIfTy4nn",
"ignored_event_cause_id": -1330322110,
"id": -1330322110,
"cause": "ARCHIVED",
"webhook_id": "web_I01KDNgvbS5G",
"meta": null
}
]
}
Events
An event is any request that Hookdeck receives from a source.
GET /2023-07-01/events
GET /2023-07-01/events/:id
POST /2023-07-01/events/:id/retry
PUT /2023-07-01/events/:id/mute
Event object
id
string
RequiredID of the event
team_id
string
RequiredID of the workspace
webhook_id
string
RequiredID of the associated connection
source_id
string
RequiredID of the associated source
destination_id
string
RequiredID of the associated destination
event_data_id
string
RequiredID of the event data
request_id
string
RequiredID of the request that created the event
attempts
integer
RequiredNumber of delivery attempts made
last_attempt_at
string
RequiredDateDate of the most recently attempted retry
next_attempt_at
string
RequiredDateDate of the next scheduled retry
response_status
integer
Event status
error_code
AttemptErrorCodes
Error code of the delivery attempt
Enum CANCELLED
, TIMEOUT
, NOT_FOUND
, CONNECTION_REFUSED
, CONNECTION_RESET
... show 16 more
status
EventStatus
RequiredEnum SCHEDULED
, QUEUED
, HOLD
, SUCCESSFUL
, FAILED
successful_at
string
RequiredDateDate of the latest successful attempt
cli_id
string
RequiredID of the CLI the event is sent to
updated_at
string
RequiredDateDate the event was last updated
created_at
string
RequiredDateDate the event was created
data
ShortEventData
Request data
{
"id": "evt_5b3mzbxk83deakr",
"team_id": "tm_5b3mzbxk83c0k7i",
"webhook_id": "web_5b3mzbxk83dcij0",
"source_id": "src_5b3mzbxk83dciin",
"destination_id": "des_5b3mzbxk83dciim",
"cli_id": null,
"event_data_id": "evtreq_Ixux8vb2VBnZIuieVFPcUF9d",
"attempts": 0,
"status": "QUEUED",
"response_status": null,
"last_attempt_at": null,
"next_attempt_at": null,
"successful_at": null,
"updated_at": "2020-03-22T18:24:01.031Z",
"created_at": "2020-03-22T18:24:01.035Z"
}
Retrieve all events
This endpoint lists all events, or a subset of events.
Filtering events
To filter the list of events, use only supported operators.
For example, append ?created_at[gte]=2021-10-12&created_at[lte]=2021-10-13
to retrieve events for that specific 24-hour period.
Including CLI events
CLI events are excluded from the results by default. To query CLI events, use /events?cli_id[any]=true
.
Query Parameters
id
string
string[]
Filter by event IDs
status
EventStatus
EventStatus[]
Lifecyle status of the event
webhook_id
string
string[]
Filter by webhook connection IDs
destination_id
string
string[]
Filter by destination IDs
source_id
string
string[]
Filter by source IDs
attempts
integer
object
Filter by number of attempts
response_status
integer
object
integer[]
Filter by HTTP response status code
successful_at
string
object
Filter by successful_at
date using a date operator
created_at
string
object
Filter by created_at
date using a date operator
error_code
AttemptErrorCodes
AttemptErrorCodes[]
Filter by error code code
cli_id
string
object
string[]
Filter by CLI IDs. ?[any]=true
operator for any CLI.
last_attempt_at
string
object
Filter by last_attempt_at
date using a date operator
search_term
string
Min length: 3URL Encoded string of the value to match partially to the body, headers, parsed_query or path
headers
JSON
URL Encoded string of the JSON to match to the data headers
body
JSON
URL Encoded string of the JSON to match to the data body
parsed_query
JSON
URL Encoded string of the JSON to match to the parsed query (JSON representation of the query)
path
string
URL Encoded string of the value to match partially to the path
order_by
string
Max length: 255Sort key
Enum last_attempt_at
, created_at
dir
string
Sort direction
Enum asc
, desc
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/events
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 1,
"next": "evt_njCeMZHzNhJWdkkZ7PLCfEw5"
},
"count": 1,
"models": [
{
"id": "evt_njCeMZHzNhJWdkkZ7PLCfEw5",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"webhook_id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp",
"source_id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"destination_id": "des_fYYCay655IHwbOMhIaUXtNq2",
"attempts": 4,
"response_status": 422,
"last_attempt_at": "2021-08-02T13:52:16.439Z",
"next_attempt_at": null,
"successful_at": "2021-08-01T21:56:35.181Z",
"updated_at": "2021-08-02T13:52:16.813Z",
"created_at": "2021-08-01T21:44:57.513Z",
"status": "FAILED",
"event_data_id": "evtreq_HlJhb39nsjIP0FDsU3SY0fo7",
"cli_id": null
}
]
}
Retrieve an event
This endpoint retrieves a specific event.
The response contains the data
object with the properties body
and headers
, representing the original data for that webhook request.
URL Parameters
id
string
RequiredEvent ID
GET /2023-07-01/events/:id
{
"id": "evt_njCeMZHzNhJWdkkZ7PLCfEw5",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"webhook_id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp",
"source_id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"destination_id": "des_fYYCay655IHwbOMhIaUXtNq2",
"attempts": 4,
"response_status": 422,
"last_attempt_at": "2021-08-02T13:52:16.439Z",
"next_attempt_at": null,
"successful_at": "2021-08-01T21:56:35.181Z",
"updated_at": "2021-08-02T13:52:16.813Z",
"created_at": "2021-08-01T21:44:57.513Z",
"status": "FAILED",
"event_data_id": "evtreq_HlJhb39nsjIP0FDsU3SY0fo7",
"cli_id": null,
"data": {
"headers": {
"content-length": "20",
"x-original-url": "/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"cookie": "",
"x-client-version": "FirebaseCLI/undefined",
"content-type": "application/json",
"user-agent": "FirebaseCLI/undefined"
},
"body": {
"test": true
},
"query": "",
"parsed_query": {},
"path": "/"
}
}
Retry an event
This endpoint manually queues an event for retry.
URL Parameters
id
string
RequiredEvent ID
POST /2023-07-01/events/:id/retry
{
"event": {
"id": "evt_njCeMZHzNhJWdkkZ7PLCfEw5",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"webhook_id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp",
"source_id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"destination_id": "des_fYYCay655IHwbOMhIaUXtNq2",
"attempts": 4,
"response_status": 422,
"last_attempt_at": "2021-08-02T13:52:16.439Z",
"next_attempt_at": null,
"successful_at": "2021-08-01T21:56:35.181Z",
"updated_at": "2021-08-02T14:12:56.321Z",
"created_at": "2021-08-01T21:44:57.513Z",
"status": "QUEUED",
"event_data_id": "evtreq_HlJhb39nsjIP0FDsU3SY0fo7",
"cli_id": null,
"data": {
"headers": {
"content-length": "20",
"x-original-url": "/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"cookie": "",
"x-client-version": "FirebaseCLI/undefined",
"content-type": "application/json",
"user-agent": "FirebaseCLI/undefined"
},
"body": {
"test": true
},
"query": "",
"parsed_query": {},
"path": "/"
}
},
"attempt": {
"id": "atm_bfD1fTzCmj9nfiRNQ4j6YqHV",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"event_id": "evt_njCeMZHzNhJWdkkZ7PLCfEw5",
"response_status": null,
"successful_at": null,
"updated_at": "2021-08-02T14:12:56.319Z",
"created_at": "2021-08-02T14:12:56.353Z",
"error_code": null,
"bulk_retry_id": null,
"status": "QUEUED",
"trigger": "MANUAL",
"attempt_number": 5,
"delivered_at": null,
"responded_at": null,
"delivery_latency": null,
"response_latency": null,
"attemptResponse": null
}
}
Mute an event
This endpoint cancels the next automatic retry.
URL Parameters
id
string
RequiredEvent ID
The parameter
next_attempt_at
is set tonull
. This action is not reversible.
PUT /2023-07-01/events/:id/mute
{
"id": "evt_njCeMZHzNhJWdkkZ7PLCfEw5",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"webhook_id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp",
"source_id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"destination_id": "des_fYYCay655IHwbOMhIaUXtNq2",
"attempts": 5,
"response_status": 422,
"last_attempt_at": "2021-08-02T13:52:16.439Z",
"next_attempt_at": null,
"successful_at": "2021-08-01T21:56:35.181Z",
"updated_at": "2021-08-02T14:12:56.466Z",
"created_at": "2021-08-01T21:44:57.513Z",
"status": "QUEUED",
"event_data_id": "evtreq_HlJhb39nsjIP0FDsU3SY0fo7",
"cli_id": null,
"data": {
"headers": {
"content-length": "20",
"x-original-url": "/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"cookie": "",
"x-client-version": "FirebaseCLI/undefined",
"content-type": "application/json",
"user-agent": "FirebaseCLI/undefined"
},
"body": {
"test": true
},
"query": "",
"parsed_query": {},
"path": "/"
}
}
Attempts
An attempt is any request that Hookdeck makes on behalf of an event.
GET /2023-07-01/attempts
GET /2023-07-01/attempts/:id
Attempt object
id
string
RequiredAttempt ID
team_id
string
RequiredTeam ID
event_id
string
RequiredEvent ID
response_status
integer
Attempt's HTTP response code
attempt_number
integer
Sequential number of attempts (up to and including this one) made for the associated event
trigger
AttemptTrigger
How the attempt was triggered
Enum INITIAL
, MANUAL
, BULK_RETRY
, UNPAUSE
, AUTOMATIC
error_code
AttemptErrorCodes
Error code of the delivery attempt
Enum CANCELLED
, TIMEOUT
, NOT_FOUND
, CONNECTION_REFUSED
, CONNECTION_RESET
... show 16 more
body
object
string
requested_url
string
URL of the destination where delivery was attempted
http_method
string
HTTP method used to deliver the attempt
Enum GET
, POST
, PUT
, PATCH
, DELETE
bulk_retry_id
string
ID of associated bulk retry
status
AttemptStatus
RequiredAttempt status
Enum QUEUED
, FAILED
, SUCCESSFUL
, HOLD
successful_at
string
DateDate the attempt was successful
delivered_at
string
DateDate the attempt was delivered
responded_at
string
DateDate the destination responded to this attempt
delivery_latency
integer
Time elapsed between attempt initiation and final delivery (in ms)
response_latency
integer
Time elapsed between attempt initiation and a response from the destination (in ms)
updated_at
string
RequiredDateDate the attempt was last updated
created_at
string
RequiredDateDate the attempt was created
archived_at
string
Date the attempt was archived
{
"id": "atm_12n4ffxk8adnqqj",
"team_id": "tm_5b3mzbxk83c0k7i",
"event_id": "evt_12n4ffxk8admulc",
"response_status": 200,
"successful_at": "2022-07-29T21:47:07.152Z",
"updated_at": "2022-07-29T21:47:07.154Z",
"created_at": "2022-07-29T21:47:06.816Z",
"error_code": null,
"bulk_retry_id": null,
"status": "SUCCESSFUL",
"trigger": "INITIAL",
"attempt_number": 1,
"delivered_at": "2022-07-29T21:47:07.052Z",
"responded_at": "2022-07-29T21:47:07.152Z",
"delivery_latency": 44,
"response_latency": 100,
"archived_at": null,
"body": "Accepted",
"requested_url": "https://mock.hookdeck.com",
"http_method": "POST"
}
Retrieve all attempts
This endpoint lists all attempts, or a subset of attempts.
Query Parameters
event_id
string
string[]
Event the attempt is associated with
order_by
string
string[]
Sort key(s)
dir
string
string[]
Sort direction(s)
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/attempts
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 1,
"next": "atm_NgrzbX4NcfazxAigdhb8KBXr"
},
"count": 1,
"models": [
{
"id": "atm_NgrzbX4NcfazxAigdhb8KBXr",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"event_id": "evt_vuHxr759DYe6LsBgDk2VOfqI",
"response_status": null,
"successful_at": null,
"updated_at": "2021-08-02T14:12:57.658Z",
"created_at": "2021-08-02T14:12:57.631Z",
"error_code": null,
"bulk_retry_id": null,
"status": "QUEUED",
"trigger": "INITIAL",
"attempt_number": 1,
"delivered_at": null,
"responded_at": null,
"delivery_latency": null,
"response_latency": null,
"archived_at": null
}
]
}
Retrieve an attempt
This endpoint retrieves a specific attempt.
When retrieving a completed attempt, the response will contain the body
of the destination's response. If the body
is not yet available in our backend service the body
will be set to NOT_AVAILABLE_YET
.
URL Parameters
id
string
RequiredAttempt ID
GET /2023-07-01/attempts/:id
{
"id": "atm_kgHSGmGMTXGfQhKArm77tRIp",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"event_id": "evt_njCeMZHzNhJWdkkZ7PLCfEw5",
"response_status": 202,
"successful_at": "2021-08-01T21:56:35.181Z",
"updated_at": "2021-08-01T21:56:35.185Z",
"created_at": "2021-08-01T21:56:34.905Z",
"error_code": null,
"bulk_retry_id": null,
"status": "SUCCESSFUL",
"trigger": "MANUAL",
"attempt_number": 2,
"delivered_at": "2021-08-01T21:56:35.015Z",
"responded_at": "2021-08-01T21:56:35.181Z",
"delivery_latency": 110,
"response_latency": 166,
"archived_at": null,
"body": {
"message": "The Mock API returns the request data with a randomized status code",
"next_step": "Convinced? Update your destination with your own server HTTP URL.",
"mock_status": 202,
"requested_path": "/",
"received_data": {
"headers": {
"host": "mock.hookdeck.com",
"connection": "close",
"accept": "application/json, text/plain, */*",
"content-type": "application/json",
"idempotency-key": "evt_njCeMZHzNhJWdkkZ7PLCfEw5",
"x-original-url": "/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"cookie": "",
"x-client-version": "FirebaseCLI/undefined",
"user-agent": "FirebaseCLI/undefined",
"x-hookdeck-eventid": "evt_njCeMZHzNhJWdkkZ7PLCfEw5",
"x-hookdeck-attempt-count": "2",
"x-hookdeck-event-url": "http://localhost:3000/events/evt_njCeMZHzNhJWdkkZ7PLCfEw5",
"x-hookdeck-signature": "Yhj7PMxNwFtNhZMQ6MFeLJsmC51li2aO4zanCwdld7I=",
"x-hookdeck-source-name": "shopify",
"x-newrelic-id": "VwQGVlRVDRAFVlJWBggGX1c=",
"x-newrelic-transaction": "PxQOWVRRAVBUAQUAUVVWVgACFB8EBw8RVU4aWwAKBgtQAVwFUwdXA1RSBENKQQ9SBgFQBw4AFTs=",
"x-request-id": "fed4b172-12f9-4a2d-b629-9de008b2e471",
"x-forwarded-for": "135.19.54.44",
"x-forwarded-proto": "https",
"x-forwarded-port": "443",
"via": "1.1 vegur",
"connect-time": "0",
"x-request-start": "1627854995250",
"total-route-time": "0",
"content-length": "20"
},
"body": {
"test": true
},
"query": {}
}
},
"requested_url": "https://mock.hookdeck.com/",
"http_method": "POST"
}
Bookmarks
A bookmark lets you conveniently store and replay a specific request.
GET /2023-07-01/bookmarks
GET /2023-07-01/bookmarks/:id
POST /2023-07-01/bookmarks
PUT /2023-07-01/bookmarks/:id
POST /2023-07-01/bookmarks/:id/trigger
DELETE /2023-07-01/bookmarks/:id
Bookmark object
id
string
RequiredID of the bookmark
team_id
string
RequiredID of the workspace
webhook_id
string
RequiredID of the associated connection
event_data_id
string
RequiredID of the bookmarked event data
label
string
RequiredDescriptive name of the bookmark
alias
string
Alternate alias for the bookmark
data
ShortEventData
Request data
last_used_at
string
DateDate the bookmark was last manually triggered
updated_at
string
RequiredDateDate the bookmark was last updated
created_at
string
RequiredDateDate the bookmark was created
{
"id": "bmk_zRQrmyGVDOEpPcwPqWjeI0p4",
"team_id": "tm_yUEO9119dsca8EgUE6qwXdCM",
"webhook_id": "web_EEHs0KX5hCL49NIN4GnCFG3Q",
"label": "Product Update – Out of Stock",
"name": null,
"event_data_id": "evtreq_3LtwaZwFBT8MYsWhqGSRlb7Q",
"last_used_at": "2021-04-29T03:46:32.390Z",
"updated_at": "2021-04-29T03:46:32.394Z",
"created_at": "2021-04-25T00:39:04.232Z",
"data": {
"headers": {
"content-type": "text/plain",
"content-length": "20"
},
"body": {
"example": true
}
}
}
Retrieve all bookmarks
This endpoint lists all bookmarks, or a subset of bookmarks.
Query Parameters
id
string
string[]
Filter by bookmark IDs
name
string
string[]
Filter by bookmark name
webhook_id
string
string[]
Filter by associated connection ID
event_data_id
string
string[]
Filter by associated event data ID
label
string
string[]
Filter by label
last_used_at
string
object
Filter by last used date
order_by
string
string[]
Sort key(s)
dir
string
string[]
Sort direction(s)
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/bookmarks
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 1
},
"count": 0,
"models": []
}
Retrieve a bookmark
This endpoint retrieves a specific bookmark.
URL Parameters
id
string
RequiredBookmark ID
GET /2023-07-01/bookmarks/:id
{
"id": "bmk_4RbrZcXNALN6WKUljj92hY08",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"webhook_id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp",
"label": "Shopify order",
"alias": null,
"event_data_id": "evtreq_HlJhb39nsjIP0FDsU3SY0fo7",
"last_used_at": null,
"updated_at": "2021-08-02T13:43:23.518Z",
"created_at": "2021-08-02T13:43:23.516Z",
"data": {
"headers": {
"content-length": "20",
"x-original-url": "/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"cookie": "",
"x-client-version": "FirebaseCLI/undefined",
"content-type": "application/json",
"user-agent": "FirebaseCLI/undefined"
},
"body": {
"test": true
},
"query": "",
"parsed_query": {},
"path": "/"
}
}
Create a bookmark
This endpoint creates a bookmark.
Body Parameters
event_data_id
string
RequiredMax length: 255ID of the event data to bookmark
webhook_id
string
RequiredMax length: 255ID of the associated connection
label
string
RequiredMax length: 255Descriptive name of the bookmark
name
string
Pattern: ^[A-z0-9-_]+$Max length: 155A unique, human-friendly name for the bookmark
POST /2023-07-01/bookmarks
{
"label": "Product Update – Out of Stock",
"event_data_id": "evtreq_HlJhb39nsjIP0FDsU3SY0fo7",
"webhook_id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp"
}
{
"id": "bmk_pgmwVfQ9faN975poe0kW1Sp4",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"webhook_id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp",
"label": "Product Update – Out of Stock",
"alias": null,
"event_data_id": "evtreq_HlJhb39nsjIP0FDsU3SY0fo7",
"last_used_at": null,
"updated_at": "2021-08-02T14:12:57.521Z",
"created_at": "2021-08-02T14:12:57.520Z",
"data": {
"headers": {
"content-length": "20",
"x-original-url": "/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"cookie": "",
"x-client-version": "FirebaseCLI/undefined",
"content-type": "application/json",
"user-agent": "FirebaseCLI/undefined"
},
"body": {
"test": true
},
"query": "",
"parsed_query": {},
"path": "/"
}
}
Update a bookmark
This endpoint updates a bookmark.
URL Parameters
id
string
RequiredBookmark ID
Body Parameters
event_data_id
string
Max length: 255ID of the event data to bookmark
webhook_id
string
Max length: 255ID of the associated connection
label
string
Max length: 255Descriptive name of the bookmark
name
string
Pattern: ^[A-z0-9-_]+$Max length: 155A unique, human-friendly name for the bookmark
PUT /2023-07-01/bookmarks/:id
{
"label": "Product Update – Out of Stock",
"event_data_id": "evtreq_HlJhb39nsjIP0FDsU3SY0fo7",
"webhook_id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp"
}
{
"id": "bmk_4RbrZcXNALN6WKUljj92hY08",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"webhook_id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp",
"label": "Product Update – Out of Stock",
"alias": null,
"event_data_id": "evtreq_HlJhb39nsjIP0FDsU3SY0fo7",
"last_used_at": null,
"updated_at": "2021-08-02T14:12:57.545Z",
"created_at": "2021-08-02T13:43:23.516Z",
"data": {
"headers": {
"content-length": "20",
"x-original-url": "/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"cookie": "",
"x-client-version": "FirebaseCLI/undefined",
"content-type": "application/json",
"user-agent": "FirebaseCLI/undefined"
},
"body": {
"test": true
},
"query": "",
"parsed_query": {},
"path": "/"
}
}
Trigger a bookmark
This endpoint uses a bookmark to create events.
Multiple events may be created, depending on the target
. HTTP bookmarks will trigger at most one event, whereas CLI bookmarks will generate as many events as there are CLI clients listening to the associated connection.
URL Parameters
id
string
RequiredBookmark ID
Body Parameters
target
string
Bookmark target
Enum http
, cli
The parameter
last_used_at
is set to the current timestamp.
POST /2023-07-01/bookmarks/:id/trigger
[
{
"id": "evt_vuHxr759DYe6LsBgDk2VOfqI",
"team_id": "tm_nlcetVe8k1lMAY0KR0OxNuHr",
"webhook_id": "web_UfM5ZY2wxLD6sLhDaKMcx5wp",
"source_id": "src_9YmY0SHklrv6zBQz78cKGwSW",
"destination_id": "des_fYYCay655IHwbOMhIaUXtNq2",
"attempts": 0,
"response_status": null,
"last_attempt_at": null,
"next_attempt_at": null,
"successful_at": null,
"updated_at": "2021-08-02T14:12:57.595Z",
"created_at": "2021-08-02T14:12:57.610Z",
"status": "QUEUED",
"event_data_id": "evtreq_HlJhb39nsjIP0FDsU3SY0fo7",
"cli_id": null,
"data": {
"headers": {
"content-length": "20",
"x-original-url": "/e/src_9YmY0SHklrv6zBQz78cKGwSW",
"cookie": "",
"x-client-version": "FirebaseCLI/undefined",
"content-type": "application/json",
"user-agent": "FirebaseCLI/undefined"
},
"body": {
"test": true
},
"query": "",
"parsed_query": {},
"path": "/"
}
}
]
Delete a bookmark
This endpoint deletes a bookmark.
Deleting a bookmark won't affect any events previously trigged by that bookmark.
URL Parameters
id
string
RequiredBookmark ID
DELETE /2023-07-01/bookmarks/:id
{
"id": "bmk_4RbrZcXNALN6WKUljj92hY08"
}
Issues
Issues let you track problems in your workspace and communicate resolution steps with your team.
GET /2023-07-01/issues
GET /2023-07-01/issues/count
GET /2023-07-01/issues/:id
PUT /2023-07-01/issues/:id
DELETE /2023-07-01/issues/:id
Issue object
id
string
RequiredIssue ID
team_id
string
RequiredID of the workspace
status
IssueStatus
RequiredIssue status
Enum OPENED
, IGNORED
, ACKNOWLEDGED
, RESOLVED
opened_at
string
RequiredDateISO timestamp for when the issue was last opened
first_seen_at
string
RequiredDateISO timestamp for when the issue was first opened
last_seen_at
string
RequiredDateISO timestamp for when the issue last occured
last_updated_by
string
ID of the team member who last updated the issue status
dismissed_at
string
DateISO timestamp for when the issue was dismissed
updated_at
string
RequiredISO timestamp for when the issue was last updated
created_at
string
RequiredISO timestamp for when the issue was created
type
string
RequiredEnum delivery
aggregation_keys
DeliveryIssueAggregationKeys
RequiredKeys used as the aggregation keys a 'delivery' type issue
reference
DeliveryIssueReference
RequiredReference to the event and attempt an issue is being created for.
{
"id": "iss_GKcE4uWThIvClCI56edzJGMf",
"team_id": "tm_eSRQYT4zriOhHcVtvIKvHlzf",
"type": "delivery",
"status": "OPENED",
"aggregation_keys": {
"error_code": [],
"webhook_id": ["web_lo8z0VQZREANHxEwGJMUllAS"],
"response_status": [500]
},
"reference": {
"event_id": "evt_G5cAJXite5XJ65n7eVpQ9GsR",
"attempt_id": "atm_wAIWERIBzHWFTYJykqYPacVA"
},
"last_updated_by": null,
"merged_with": null,
"first_seen_at": "2022-03-13T16:05:26.856Z",
"last_seen_at": "2022-03-13T17:38:46.827Z",
"dismissed_at": null,
"opened_at": "2022-03-13T16:05:26.856Z",
"updated_at": "2022-03-13T17:38:46.827Z",
"created_at": "2022-03-13T16:05:26.856Z",
"data": {
"trigger_event": {
"id": "evt_G5cAJXite5XJ65n7eVpQ9GsR",
"team_id": "tm_eSRQYT4zriOhHcVtvIKvHlzf",
"webhook_id": "web_lo8z0VQZREANHxEwGJMUllAS",
"source_id": "src_BBgENz5uR6YD5shCaBKawSGw",
"destination_id": "des_vINhNu8uG4OXHxKrhPwuiK89",
"attempts": 2,
"response_status": 422,
"last_attempt_at": "2022-03-13T16:07:52.171Z",
"next_attempt_at": null,
"successful_at": null,
"updated_at": "2022-03-13T16:07:52.314Z",
"created_at": "2022-03-13T16:05:26.304Z",
"status": "FAILED",
"event_data_id": "evtreq_auxUfCEIVhDwEaQHQnX1qcAy",
"cli_id": null,
"request": {
"headers": {
"content-length": "20",
"content-type": "application/json"
},
"body": {
"example": true
},
"query": "",
"parsed_query": {},
"path": "/"
}
},
"trigger_attempt": {
"id": "atm_wAIWERIBzHWFTYJykqYPacVA",
"team_id": "tm_eSRQYT4zriOhHcVtvIKvHlzf",
"event_id": "evt_G5cAJXite5XJ65n7eVpQ9GsR",
"response_status": 500,
"successful_at": null,
"updated_at": "2022-03-13T16:05:26.749Z",
"created_at": "2022-03-13T16:05:26.318Z",
"error_code": null,
"bulk_retry_id": null,
"status": "FAILED",
"trigger": "INITIAL",
"attempt_number": 1,
"delivered_at": "2022-03-13T16:05:26.597Z",
"responded_at": "2022-03-13T16:05:26.747Z",
"delivery_latency": 279,
"response_latency": 150,
"archived_at": null,
"body": {
"example": true
},
"requested_url": "https://mock.hookdeck.com/",
"http_method": "POST"
}
}
}
Retrieve all issues
This endpoint lists all issues, or a subset of issues.
Dismissed issues are filtered out by default.
Query Parameters
id
string
string[]
Filter by Issue IDs
issue_trigger_id
string
string[]
Filter by Issue trigger IDs
type
string
string[]
Filter by Issue types
status
string
string[]
Filter by Issue statuses
merged_with
string
string[]
Filter by Merged Issue IDs
aggregation_keys
JSON
Filter by aggregation keys
created_at
string
object
Filter by created dates
first_seen_at
string
object
Filter by first seen dates
last_seen_at
string
object
Filter by last seen dates
dismissed_at
string
object
Filter by dismissed dates
order_by
string
string[]
Sort key(s)
dir
string
string[]
Sort direction(s)
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/issues
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 1,
"next": "iss_GKcE4uWThIvClCI56edzJGMf"
},
"count": 1,
"models": [
{
"id": "iss_GKcE4uWThIvClCI56edzJGMf",
"team_id": "tm_eSRQYT4zriOhHcVtvIKvHlzf",
"type": "delivery",
"status": "OPENED",
"aggregation_keys": {
"error_code": [],
"webhook_id": [
"web_lo8z0VQZREANHxEwGJMUllAS"
],
"response_status": [
500
]
},
"reference": {
"event_id": "evt_G5cAJXite5XJ65n7eVpQ9GsR",
"attempt_id": "atm_wAIWERIBzHWFTYJykqYPacVA"
},
"last_updated_by": null,
"merged_with": null,
"first_seen_at": "2022-03-13T16:05:26.856Z",
"last_seen_at": "2022-03-13T17:38:46.827Z",
"dismissed_at": null,
"opened_at": "2022-03-13T16:05:26.856Z",
"updated_at": "2022-03-13T17:38:46.827Z",
"created_at": "2022-03-13T16:05:26.856Z"
}
]
}
Count issues
This endpoint counts all issues, or a subset of issues.
Dismissed issues are filtered out by default.
Query Parameters
id
string
string[]
Filter by Issue IDs
issue_trigger_id
string
string[]
Filter by Issue trigger IDs
type
string
string[]
Filter by Issue types
status
string
string[]
Filter by Issue statuses
merged_with
string
string[]
Filter by Merged Issue IDs
aggregation_keys
JSON
Filter by aggregation keys
created_at
string
object
Filter by created dates
first_seen_at
string
object
Filter by first seen dates
last_seen_at
string
object
Filter by last seen dates
dismissed_at
string
object
Filter by dismissed dates
order_by
string
string[]
Sort key(s)
dir
string
string[]
Sort direction(s)
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/issues/count
{
"count": 10
}
Retrieve an issue
This endpoint retrieves a specific issue.
URL Parameters
id
string
RequiredIssue ID
GET /2023-07-01/issues/:id
{
"id": "iss_GKcE4uWThIvClCI56edzJGMf",
"team_id": "tm_eSRQYT4zriOhHcVtvIKvHlzf",
"type": "delivery",
"status": "OPENED",
"aggregation_keys": {
"error_code": [],
"webhook_id": [
"web_lo8z0VQZREANHxEwGJMUllAS"
],
"response_status": [
500
]
},
"reference": {
"event_id": "evt_G5cAJXite5XJ65n7eVpQ9GsR",
"attempt_id": "atm_wAIWERIBzHWFTYJykqYPacVA"
},
"last_updated_by": null,
"merged_with": null,
"first_seen_at": "2022-03-13T16:05:26.856Z",
"last_seen_at": "2022-03-13T17:38:46.827Z",
"dismissed_at": null,
"opened_at": "2022-03-13T16:05:26.856Z",
"updated_at": "2022-03-13T17:38:46.827Z",
"created_at": "2022-03-13T16:05:26.856Z",
"data": {
"trigger_event": {
"id": "evt_G5cAJXite5XJ65n7eVpQ9GsR",
"team_id": "tm_eSRQYT4zriOhHcVtvIKvHlzf",
"webhook_id": "web_lo8z0VQZREANHxEwGJMUllAS",
"source_id": "src_BBgENz5uR6YD5shCaBKawSGw",
"destination_id": "des_vINhNu8uG4OXHxKrhPwuiK89",
"attempts": 2,
"response_status": 422,
"last_attempt_at": "2022-03-13T16:07:52.171Z",
"next_attempt_at": null,
"successful_at": null,
"updated_at": "2022-03-13T16:07:52.314Z",
"created_at": "2022-03-13T16:05:26.304Z",
"status": "FAILED",
"event_data_id": "evtreq_auxUfCEIVhDwEaQHQnX1qcAy",
"cli_id": null,
"request": {
"headers": {
"content-length": "20",
"content-type": "application/json"
},
"body": {
"example": true
},
"query": "",
"parsed_query": {},
"path": "/"
}
},
"trigger_attempt": {
"id": "atm_wAIWERIBzHWFTYJykqYPacVA",
"team_id": "tm_eSRQYT4zriOhHcVtvIKvHlzf",
"event_id": "evt_G5cAJXite5XJ65n7eVpQ9GsR",
"response_status": 500,
"successful_at": null,
"updated_at": "2022-03-13T16:05:26.749Z",
"created_at": "2022-03-13T16:05:26.318Z",
"error_code": null,
"bulk_retry_id": null,
"status": "FAILED",
"trigger": "INITIAL",
"attempt_number": 1,
"delivered_at": "2022-03-13T16:05:26.597Z",
"responded_at": "2022-03-13T16:05:26.747Z",
"delivery_latency": 279,
"response_latency": 150,
"archived_at": null,
"body": {
"example": true
},
"requested_url": "https://mock.hookdeck.com/",
"http_method": "POST"
}
}
}
Update an issue
This endpoint updates an issue's status.
URL Parameters
id
string
RequiredIssue ID
Body Parameters
status
string
RequiredNew status
Enum OPENED
, IGNORED
, ACKNOWLEDGED
, RESOLVED
PUT /2023-07-01/issues/:id
{
"status": "RESOLVED"
}
{
"id": "iss_GKcE4uWThIvClCI56edzJGMf",
"team_id": "tm_eSRQYT4zriOhHcVtvIKvHlzf",
"type": "delivery",
"status": "RESOLVED",
"aggregation_keys": {
"error_code": [],
"webhook_id": [
"web_lo8z0VQZREANHxEwGJMUllAS"
],
"response_status": [
500
]
},
"reference": {
"event_id": "evt_G5cAJXite5XJ65n7eVpQ9GsR",
"attempt_id": "atm_wAIWERIBzHWFTYJykqYPacVA"
},
"last_updated_by": "tmem_Mus4DfdnV4kKepu6W0PKGYMR",
"merged_with": null,
"first_seen_at": "2022-03-13T16:05:26.856Z",
"last_seen_at": "2022-03-13T17:38:46.827Z",
"dismissed_at": null,
"opened_at": "2022-03-13T16:05:26.856Z",
"updated_at": "2022-03-13T17:38:46.827Z",
"created_at": "2022-03-13T16:05:26.856Z",
"data": {
"trigger_event": {
"id": "evt_G5cAJXite5XJ65n7eVpQ9GsR",
"team_id": "tm_eSRQYT4zriOhHcVtvIKvHlzf",
"webhook_id": "web_lo8z0VQZREANHxEwGJMUllAS",
"source_id": "src_BBgENz5uR6YD5shCaBKawSGw",
"destination_id": "des_vINhNu8uG4OXHxKrhPwuiK89",
"attempts": 2,
"response_status": 422,
"last_attempt_at": "2022-03-13T16:07:52.171Z",
"next_attempt_at": null,
"successful_at": null,
"updated_at": "2022-03-13T16:07:52.314Z",
"created_at": "2022-03-13T16:05:26.304Z",
"status": "FAILED",
"event_data_id": "evtreq_auxUfCEIVhDwEaQHQnX1qcAy",
"cli_id": null,
"request": {
"headers": {
"content-length": "20",
"content-type": "application/json"
},
"body": {
"example": true
},
"query": "",
"parsed_query": {},
"path": "/"
}
},
"trigger_attempt": {
"id": "atm_wAIWERIBzHWFTYJykqYPacVA",
"team_id": "tm_eSRQYT4zriOhHcVtvIKvHlzf",
"event_id": "evt_G5cAJXite5XJ65n7eVpQ9GsR",
"response_status": 500,
"successful_at": null,
"updated_at": "2022-03-13T16:05:26.749Z",
"created_at": "2022-03-13T16:05:26.318Z",
"error_code": null,
"bulk_retry_id": null,
"status": "FAILED",
"trigger": "INITIAL",
"attempt_number": 1,
"delivered_at": "2022-03-13T16:05:26.597Z",
"responded_at": "2022-03-13T16:05:26.747Z",
"delivery_latency": 279,
"response_latency": 150,
"archived_at": null,
"body": {
"example": true
},
"requested_url": "https://mock.hookdeck.com/",
"http_method": "POST"
}
}
}
Dismiss an issue
This endpoint marks an issue as dismissed.
URL Parameters
id
string
RequiredIssue ID
The parameter
dimissed_at
is set to the current timestamp.
DELETE /2023-07-01/issues/:id
{
"id": "iss_GKcE4uWThIvClCI56edzJGMf",
"team_id": "tm_eSRQYT4zriOhHcVtvIKvHlzf",
"type": "delivery",
"status": "RESOLVED",
"aggregation_keys": {
"error_code": [],
"webhook_id": [
"web_lo8z0VQZREANHxEwGJMUllAS"
],
"response_status": [
500
]
},
"reference": {
"event_id": "evt_G5cAJXite5XJ65n7eVpQ9GsR",
"attempt_id": "atm_wAIWERIBzHWFTYJykqYPacVA"
},
"last_updated_by": "tmem_Mus4DfdnV4kKepu6W0PKGYMR",
"merged_with": null,
"first_seen_at": "2022-03-13T16:05:26.856Z",
"last_seen_at": "2022-03-13T17:38:46.827Z",
"dismissed_at": "2022-03-15T16:05:26.856Z",
"opened_at": "2022-03-13T16:05:26.856Z",
"updated_at": "2022-03-13T17:38:46.827Z",
"created_at": "2022-03-13T16:05:26.856Z",
"data": {
"trigger_event": {
"id": "evt_G5cAJXite5XJ65n7eVpQ9GsR",
"team_id": "tm_eSRQYT4zriOhHcVtvIKvHlzf",
"webhook_id": "web_lo8z0VQZREANHxEwGJMUllAS",
"source_id": "src_BBgENz5uR6YD5shCaBKawSGw",
"destination_id": "des_vINhNu8uG4OXHxKrhPwuiK89",
"attempts": 2,
"response_status": 422,
"last_attempt_at": "2022-03-13T16:07:52.171Z",
"next_attempt_at": null,
"successful_at": null,
"updated_at": "2022-03-13T16:07:52.314Z",
"created_at": "2022-03-13T16:05:26.304Z",
"status": "FAILED",
"event_data_id": "evtreq_auxUfCEIVhDwEaQHQnX1qcAy",
"cli_id": null,
"request": {
"headers": {
"content-length": "20",
"content-type": "application/json"
},
"body": {
"example": true
},
"query": "",
"parsed_query": {},
"path": "/"
}
},
"trigger_attempt": {
"id": "atm_wAIWERIBzHWFTYJykqYPacVA",
"team_id": "tm_eSRQYT4zriOhHcVtvIKvHlzf",
"event_id": "evt_G5cAJXite5XJ65n7eVpQ9GsR",
"response_status": 500,
"successful_at": null,
"updated_at": "2022-03-13T16:05:26.749Z",
"created_at": "2022-03-13T16:05:26.318Z",
"error_code": null,
"bulk_retry_id": null,
"status": "FAILED",
"trigger": "INITIAL",
"attempt_number": 1,
"delivered_at": "2022-03-13T16:05:26.597Z",
"responded_at": "2022-03-13T16:05:26.747Z",
"delivery_latency": 279,
"response_latency": 150,
"archived_at": null,
"body": {
"example": true
},
"requested_url": "https://mock.hookdeck.com/",
"http_method": "POST"
}
}
}
Bulk retry events
GET /2023-07-01/bulk/events/retry
GET /2023-07-01/bulk/events/retry/:id
POST /2023-07-01/bulk/events/retry/:id/cancel
POST /2023-07-01/bulk/events/retry
GET /2023-07-01/bulk/events/retry/plan/generate
Bulk retry object
id
string
RequiredID of the bulk retry
team_id
string
RequiredID of the workspace
query
JSON
Query object to filter records
created_at
string
RequiredDateDate the bulk retry was created
updated_at
string
RequiredDateLast time the bulk retry was updated
cancelled_at
string
DateDate the bulk retry was cancelled
completed_at
string
DateDate the bulk retry was completed
estimated_batch
integer
Number of batches required to complete the bulk retry
estimated_count
integer
Number of estimated events to be retried
processed_batch
integer
Number of batches currently processed
completed_count
integer
Number of events that were successfully delivered
in_progress
boolean
RequiredIndicates if the bulk retry is currently in progress
progress
number
floatProgression of the batch operations, values 0 - 1
failed_count
integer
Number of events that failed to be delivered
{
"id": "blkr_SbhWYp1gdsbkno",
"team_id": "tm_PCQ7f4DjfLLh",
"query": {
"dir": "desc",
"limit": 250,
"status": ["SUCCESSFUL"],
"order_by": "created_at",
"created_at": {
"gte": "2022-05-02T02:30:00.000Z",
"lte": "2022-05-03T02:29:59.999Z"
}
},
"updated_at": "2022-05-02T15:24:51.871Z",
"created_at": "2022-05-02T15:24:51.871Z",
"completed_at": "2022-05-02T15:27:51.871Z",
"cancelled_at": null,
"estimated_batch": 5,
"processed_batch": 5,
"estimated_count": 1240,
"completed_count": 1240,
"failed_count": 0,
"progress": 1,
"in_progress": false
}
Retrieve all events bulk retries
This endpoint lists all bulk retries, or a subset of bulk retries.
Query Parameters
cancelled_at
string
object
Filter by date the bulk retry was cancelled
completed_at
string
object
Filter by date the bulk retry completed
created_at
string
object
Filter by date the bulk retry was created
id
string
string[]
Filter by bulk retry IDs
query
JSON
Filter for events to be included in the bulk retry, use query parameters of Event
query_partial_match
boolean
Allow partial filter match on query property
in_progress
boolean
Indicates if the bulk retry is currently in progress
order_by
string
string[]
Sort key(s)
dir
string
string[]
Sort direction(s)
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/bulk/events/retry
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 1,
"next": "blkret_95Vz4fYjIn5wgatOqX0kLRTH"
},
"count": 1,
"models": [
{
"id": "blkr_6dxoWIomd8DQdH",
"team_id": "tm_UkFg3CHYN50M",
"query": {
"status": [
"SUCCESSFUL"
]
},
"updated_at": "2022-05-13T09:06:03.983Z",
"created_at": "2022-05-13T09:05:55.394Z",
"completed_at": null,
"cancelled_at": "2022-05-13T09:06:03.982Z",
"estimated_batch": 4,
"processed_batch": 2,
"estimated_count": 28,
"completed_count": 8,
"failed_count": 0,
"number": 15,
"in_progress": false,
"progress": 0.29
}
]
}
Retrieve a events bulk retry
This endpoint retrieves a specific bulk retry.
URL Parameters
id
string
RequiredBulk retry ID
GET /2023-07-01/bulk/events/retry/:id
{
"id": "blkr_6dxoWIomd8DQdH",
"team_id": "tm_UkFg3CHYN50M",
"query": {
"status": [
"SUCCESSFUL"
]
},
"updated_at": "2022-05-13T09:06:03.983Z",
"created_at": "2022-05-13T09:05:55.394Z",
"completed_at": null,
"cancelled_at": "2022-05-13T09:06:03.982Z",
"estimated_batch": 4,
"processed_batch": 2,
"estimated_count": 28,
"completed_count": 8,
"failed_count": 0,
"number": 15,
"in_progress": false,
"progress": 0.29
}
Generate a events bulk retry plan
This endpoint estimates the number of events that will be retried with the given query parameters.
Query Parameters
query
JSON
Filter properties for the events to be included in the bulk retry
GET /2023-07-01/bulk/events/retry/plan
{
"estimated_count": 301,
"estimated_batch": 2
}
Create a events bulk retry
This endpoint creates a bulk retry.
Creating a bulk retry automatically begins the operation to retry any events matching the specified filters.
A bulk retry re-attempts delivery for one or more events, based on a filter.
Events on paused connections will still be retried unless excluded from the query.
Body Parameters
query
JSON
Filter properties for the events to be included in the bulk retry
POST /2023-07-01/bulk/events/retry
{
"query": {
"source_id": [
"src_oDhfDrVAZV6OIPdBzcD97of2"
]
}
}
{
"id": "blkr_6dxoWIomd8DQdH",
"team_id": "tm_UkFg3CHYN50M",
"query": {
"source_id": [
"src_oDhfDrVAZV6OIPdBzcD97of2"
]
},
"updated_at": "2022-05-13T09:06:03.983Z",
"created_at": "2022-05-13T09:05:55.394Z",
"completed_at": null,
"cancelled_at": "2022-05-13T09:06:03.982Z",
"estimated_batch": 4,
"processed_batch": 2,
"estimated_count": 28,
"completed_count": 8,
"failed_count": 0,
"number": 15,
"in_progress": false,
"progress": 0.29
}
Cancel a events bulk retry
This endpoint stops a bulk retry if it's currently running.
URL Parameters
id
string
RequiredBulk retry ID
POST /2023-07-01/bulk/events/retry/:id/cancel
{
"id": "blkr_6dxoWIomd8DQdH",
"team_id": "tm_UkFg3CHYN50M",
"query": {
"status": [
"SUCCESSFUL"
]
},
"updated_at": "2022-05-13T09:06:03.983Z",
"created_at": "2022-05-13T09:05:55.394Z",
"completed_at": null,
"cancelled_at": "2022-05-13T09:06:03.982Z",
"estimated_batch": 4,
"processed_batch": 2,
"estimated_count": 28,
"completed_count": 8,
"failed_count": 0,
"number": 15,
"in_progress": false,
"progress": 0.29
}
Bulk retry ignored events
GET /2023-07-01/bulk/ignored-events/retry
GET /2023-07-01/bulk/ignored-events/retry/:id
POST /2023-07-01/bulk/ignored-events/:id/cancel
POST /2023-07-01/bulk/ignored-events/retry
Bulk retry object
id
string
RequiredID of the bulk retry
team_id
string
RequiredID of the workspace
query
JSON
Query object to filter records
created_at
string
RequiredDateDate the bulk retry was created
updated_at
string
RequiredDateLast time the bulk retry was updated
cancelled_at
string
DateDate the bulk retry was cancelled
completed_at
string
DateDate the bulk retry was completed
estimated_batch
integer
Number of batches required to complete the bulk retry
estimated_count
integer
Number of estimated events to be retried
processed_batch
integer
Number of batches currently processed
completed_count
integer
Number of events that were successfully delivered
in_progress
boolean
RequiredIndicates if the bulk retry is currently in progress
progress
number
floatProgression of the batch operations, values 0 - 1
failed_count
integer
Number of events that failed to be delivered
{
"id": "blkr_SbhWYp1gdsbkno",
"team_id": "tm_PCQ7f4DjfLLh",
"query": {
"dir": "desc",
"limit": 250,
"status": ["SUCCESSFUL"],
"order_by": "created_at",
"created_at": {
"gte": "2022-05-02T02:30:00.000Z",
"lte": "2022-05-03T02:29:59.999Z"
}
},
"updated_at": "2022-05-02T15:24:51.871Z",
"created_at": "2022-05-02T15:24:51.871Z",
"completed_at": "2022-05-02T15:27:51.871Z",
"cancelled_at": null,
"estimated_batch": 5,
"processed_batch": 5,
"estimated_count": 1240,
"completed_count": 1240,
"failed_count": 0,
"progress": 1,
"in_progress": false
}
Retrieve all ignored events bulk retries
This endpoint lists all bulk retries, or a subset of bulk retries.
Query Parameters
cancelled_at
string
object
Filter by date the bulk retry was cancelled
completed_at
string
object
Filter by date the bulk retry completed
created_at
string
object
Filter by date the bulk retry was created
id
string
string[]
Filter by bulk retry IDs
query
JSON
Filter by the bulk retry ignored event query object
query_partial_match
boolean
Allow partial filter match on query property
in_progress
boolean
Indicates if the bulk retry is currently in progress
order_by
string
string[]
Sort key(s)
dir
string
string[]
Sort direction(s)
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/bulk/ignored-events/retry
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 1,
"next": "bch_YAONJuft9aQ0n3"
},
"count": 1,
"models": [
{
"id": "bch_YAONJuft9aQ0n3",
"team_id": "tm_Vn0Fn3sEqjGX",
"query": {
"cause": "TRANSFORMATION_FAILED",
"transformation_id": "trs_XRyNGe8sta9SN9"
},
"updated_at": "2022-09-30T15:00:34.830Z",
"created_at": "2022-09-30T15:00:33.550Z",
"completed_at": null,
"cancelled_at": null,
"estimated_batch": 8,
"estimated_count": 192,
"processed_batch": 1,
"completed_count": 25,
"failed_count": 0,
"number": 3,
"in_progress": true,
"progress": 0.13
}
]
}
Retrieve a ignored events bulk retry
This endpoint retrieves a specific bulk retry.
URL Parameters
id
string
RequiredBulk retry ID
GET /2023-07-01/bulk/ignored-events/retry/:id
{
"id": "bch_sGfZp2fAQWF4Cr",
"team_id": "tm_Vn0Fn3sEqjGX",
"query": {
"cause": [
"TRANSFORMATION_FAILED"
],
"transformation_id": "trs_fvgc1SeB3m1XnV"
},
"updated_at": "2022-09-26T01:12:50.551Z",
"created_at": "2022-09-26T01:12:50.290Z",
"completed_at": "2022-09-26T01:12:50.551Z",
"cancelled_at": null,
"estimated_batch": 1,
"estimated_count": 2,
"processed_batch": 1,
"completed_count": 2,
"failed_count": 0,
"number": 2,
"in_progress": false,
"progress": 1
}
Generate a ignored events bulk retry plan
This endpoint estimates the number of events that will be retried with the given query parameters.
Query Parameters
query
JSON
Filter by the bulk retry ignored event query object
GET /2023-07-01/bulk/ignored-events/retry/plan
Missing data
Create a ignored events bulk retry
This endpoint creates a bulk retry.
Creating a bulk retry automatically begins the operation to retry any events matching the specified filters.
A bulk retry re-attempts delivery for one or more events, based on a filter.
Events on paused connections will still be retried unless excluded from the query.
Body Parameters
query
JSON
Filter by the bulk retry ignored event query object
POST /2023-07-01/bulk/ignored-events/retry
{
"query": {
"cause": "TRANSFORMATION_FAILED",
"transformation_id": "trs_XRyNGe8sta9SN9"
}
}
{
"id": "bch_YAONJuft9aQ0n3",
"team_id": "tm_Vn0Fn3sEqjGX",
"query": {
"cause": "TRANSFORMATION_FAILED",
"transformation_id": "trs_XRyNGe8sta9SN9"
},
"estimated_batch": 8,
"estimated_count": 192,
"completed_count": 0,
"number": 3,
"created_at": "2022-09-30T15:00:33.550Z",
"updated_at": "2022-09-30T15:00:33.551Z",
"completed_at": null,
"cancelled_at": null,
"processed_batch": 0,
"failed_count": null,
"in_progress": true,
"progress": 0
}
Cancel a ignored events bulk retry
This endpoint stops a bulk retry if it's currently running.
URL Parameters
id
string
RequiredBulk retry ID
POST /2023-07-01/bulk/ignored-events/retry/:id/cancel
Missing data
Bulk retry requests
GET /2023-07-01/bulk/requests/retry
GET /2023-07-01/bulk/requests/retry/:id
POST /2023-07-01/bulk/requests/retry/:id/cancel
POST /2023-07-01/bulk/requests/retry
Bulk retry object
id
string
RequiredID of the bulk retry
team_id
string
RequiredID of the workspace
query
JSON
Query object to filter records
created_at
string
RequiredDateDate the bulk retry was created
updated_at
string
RequiredDateLast time the bulk retry was updated
cancelled_at
string
DateDate the bulk retry was cancelled
completed_at
string
DateDate the bulk retry was completed
estimated_batch
integer
Number of batches required to complete the bulk retry
estimated_count
integer
Number of estimated events to be retried
processed_batch
integer
Number of batches currently processed
completed_count
integer
Number of events that were successfully delivered
in_progress
boolean
RequiredIndicates if the bulk retry is currently in progress
progress
number
floatProgression of the batch operations, values 0 - 1
failed_count
integer
Number of events that failed to be delivered
{
"id": "blkr_SbhWYp1gdsbkno",
"team_id": "tm_PCQ7f4DjfLLh",
"query": {
"dir": "desc",
"limit": 250,
"status": ["SUCCESSFUL"],
"order_by": "created_at",
"created_at": {
"gte": "2022-05-02T02:30:00.000Z",
"lte": "2022-05-03T02:29:59.999Z"
}
},
"updated_at": "2022-05-02T15:24:51.871Z",
"created_at": "2022-05-02T15:24:51.871Z",
"completed_at": "2022-05-02T15:27:51.871Z",
"cancelled_at": null,
"estimated_batch": 5,
"processed_batch": 5,
"estimated_count": 1240,
"completed_count": 1240,
"failed_count": 0,
"progress": 1,
"in_progress": false
}
Retrieve all requests bulk retries
This endpoint lists all bulk retries, or a subset of bulk retries.
Query Parameters
cancelled_at
string
object
Filter by date the bulk retry was cancelled
completed_at
string
object
Filter by date the bulk retry completed
created_at
string
object
Filter by date the bulk retry was created
id
string
string[]
Filter by bulk retry IDs
in_progress
boolean
Indicates if the bulk retry is currently in progress
query
JSON
Filter properties for the events to be included in the bulk retry, use query parameters of Requests
query_partial_match
boolean
Allow partial filter match on query property
order_by
string
string[]
Sort key(s)
dir
string
string[]
Sort direction(s)
limit
integer
Max: 255Result set size
next
string
Max length: 255The ID to provide in the query to get the next set of results
prev
string
Max length: 255The ID to provide in the query to get the previous set of results
GET /2023-07-01/bulk/requests/retry
{
"pagination": {
"order_by": "created_at",
"dir": "desc",
"limit": 1,
"next": "blkret_95Vz4fYjIn5wgatOqX0kLRTH"
},
"count": 1,
"models": [
{
"id": "blkr_6dxoWIomd8DQdH",
"team_id": "tm_UkFg3CHYN50M",
"query": {
"rejection_cause": [
"SOURCE_ARCHIVED"
]
},
"updated_at": "2022-05-13T09:06:03.983Z",
"created_at": "2022-05-13T09:05:55.394Z",
"completed_at": null,
"cancelled_at": "2022-05-13T09:06:03.982Z",
"estimated_batch": 4,
"processed_batch": 2,
"estimated_count": 28,
"completed_count": 8,
"failed_count": 0,
"number": 15,
"in_progress": false,
"progress": 0.29
}
]
}
Retrieve a requests bulk retry
This endpoint retrieves a specific bulk retry.
URL Parameters
id
string
RequiredBulk retry ID
GET /2023-07-01/bulk/requests/retry/:id
{
"id": "blkr_6dxoWIomd8DQdH",
"team_id": "tm_UkFg3CHYN50M",
"query": {
"rejection_cause": [
"SOURCE_ARCHIVED"
]
},
"updated_at": "2022-05-13T09:06:03.983Z",
"created_at": "2022-05-13T09:05:55.394Z",
"completed_at": null,
"cancelled_at": "2022-05-13T09:06:03.982Z",
"estimated_batch": 4,
"processed_batch": 2,
"estimated_count": 28,
"completed_count": 8,
"failed_count": 0,
"number": 15,
"in_progress": false,
"progress": 0.29
}
Generate a requests bulk retry plan
This endpoint estimates the number of events that will be retried with the given query parameters.
Query Parameters
query
JSON
Filter properties for the events to be included in the bulk retry, use query parameters of Requests
GET /2023-07-01/bulk/requests/retry/plan
{
"estimated_count": 301,
"estimated_batch": 2
}
Create a requests bulk retry
This endpoint creates a bulk retry.
Creating a bulk retry automatically begins the operation to retry any events matching the specified filters.
Body Parameters
query
JSON
Filter properties for the events to be included in the bulk retry, use query parameters of Requests
POST /2023-07-01/bulk/requests/retry
{
"query": {
"source_id": [
"src_oDhfDrVAZV6OIPdBzcD97of2"
]
}
}
{
"id": "blkr_6dxoWIomd8DQdH",
"team_id": "tm_UkFg3CHYN50M",
"query": {
"rejection_cause": [
"SOURCE_ARCHIVED"
]
},
"updated_at": "2022-05-13T09:06:03.983Z",
"created_at": "2022-05-13T09:05:55.394Z",
"completed_at": null,
"cancelled_at": "2022-05-13T09:06:03.982Z",
"estimated_batch": 4,
"processed_batch": 2,
"estimated_count": 28,
"completed_count": 8,
"failed_count": 0,
"number": 15,
"in_progress": false,
"progress": 0.29
}
Cancel a requests bulk retry
This endpoint stops a bulk retry if it's currently running.
URL Parameters
id
string
RequiredBulk retry ID
POST /2023-07-01/bulk/requests/retry/:id/cancel
{
"id": "blkr_6dxoWIomd8DQdH",
"team_id": "tm_UkFg3CHYN50M",
"query": {
"rejection_cause": [
"SOURCE_ARCHIVED"
]
},
"updated_at": "2022-05-13T09:06:03.983Z",
"created_at": "2022-05-13T09:05:55.394Z",
"completed_at": null,
"cancelled_at": "2022-05-13T09:06:03.982Z",
"estimated_batch": 4,
"processed_batch": 2,
"estimated_count": 28,
"completed_count": 8,
"failed_count": 0,
"number": 15,
"in_progress": false,
"progress": 0.29
}
Rule
A rule can be applied to either a Ruleset or a Connection using the rules
field.
Retry
The retry rule determines the rate and limit of automatic retries on failed events.
type
string
RequiredA retry rule must be of type retry
Enum retry
strategy
RetryStrategy
RequiredAlgorithm to use when calculating delay between retries
Enum linear
, exponential
interval
integer
Time in MS between each retry
count
integer
Maximum number of retries to attempt
{
"type": "retry",
"strategy": "linear",
"count": 5,
"interval": 60000
}
Delay
The delay rule allows you to introduce a delay between the moment Hookdeck receives an event, and when it's forwarded to your destination.
type
string
RequiredA delay rule must be of type delay
Enum delay
delay
integer
RequiredDelay to introduce in MS
{
"type": "delay",
"delay": 1000
}
Filter
The filter rule allows you to permit and route webhooks conditionally based on the contents of their Headers
, Body
, Query
, and/or Path
.
For more information on how to set up filters, including syntax, review our filter documentation.
type
string
RequiredA filter rule must be of type filter
Enum filter
headers
JSON
JSON using our filter syntax to filter on request headers
body
JSON
JSON using our filter syntax to filter on request headers
query
JSON
JSON using our filter syntax to filter on request headers
path
JSON
JSON using our filter syntax to filter on request headers
{
"type": "filter",
"body": {
"example": true
}
}
Transform
The transform rule allows you to run arbitrary JavaScript to transform the webhook request.
For more information on how to use transformations, check the transformation documentation.
type
string
RequiredA transformation rule must be of type transformation
Enum transform
transformation_id
string
ID of the attached transformation object. Optional input, always set once the rule is defined
transformation
object
You can optionally define a new transformation while creating a transform rule
{
"type": "transformation",
"transformation_id": "trs_XRyNGe8sta9SN9"
}
{
"type": "transformation",
"transformation": {
"name": "example",
"code": "addHandler('transform', (request, context) => request)",
"env": {
"SECRET": "supersecret"
}
}
}
Get In Touch
Reach out using the live chat in the bottom right corner, or our contact form.