API Reference

Automation and Event Gateway API Reference

Complete REST API reference for building automations and webhook infrastructure with FastHook: create Workflows, manage versioned graphs, inspect Workflow runs, configure Sources and Destinations, connect routing rules, retry failed events, transform payloads, query metrics, and manage authentication or project secrets.

Use these endpoints to automate event-driven work, debug Workflow Actions and webhook delivery, search activity by time range or status, create temporary public request bins, and operate replay-safe integrations through the public API at api.fasthook.io.

The FastHook CLI mirrors the same API surface. Use resource commands such as fasthook sources list, or call any route directly with fasthook api <method> <path> and JSON from --json or --json-file.

122 endpointsapi.fasthook.ioUI uses /api/auth and /api/controlCLI mirrors REST API commands/v1 prefix optional

Overview

FastHook REST API is available at api.fasthook.io. The dashboard UI calls same-origin proxy routes under /api/auth and /api/control, but external integrations should use the public REST base URL. Every route may optionally start with /v1, so /v1/sources and /sources are equivalent.

GET
/v1/sources

Routing and tenancy

Use the REST base URL and pass the active team with x-team-id. If the header is missing, team_id query parameter is used, then the demo team fallback.

Routing and tenancy input parameters

Routing and tenancy accepts the route, header, query, and body inputs listed below.

Routing and tenancy headers

AuthorizationstringRequired

Bearer API key or session token. Used by the Routing and tenancy operation.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team. Used by the Routing and tenancy operation.

Authentication

Create and inspect dashboard sessions. Profile updates require a user session.

Authentication response fields

6 fields
user.id

Stable user identifier for the authenticated FastHook account.

user.email

Email address attached to the authenticated user.

user.name

Display name saved on the user profile.

user.picture_url

Profile image URL when the identity provider supplies one.

session.expires_at

ISO timestamp when the returned dashboard session token expires.

memberships[].team_id

Team IDs the user can access through the authenticated session.

POST
/v1/auth/google/login

Login with Google

Authenticates a Google credential and returns a session token.

Login with Google input parameters

Login with Google accepts the route, header, query, and body inputs listed below.

Login with Google request body

id_token or credentialstringRequired

required Google ID token Used by the Login with Google operation.

team_idstringOptional

optional team ID used to scope the session Used by the Login with Google operation.

GET
/v1/auth/me

Get current profile

Returns the authenticated user, active team, session expiry, and memberships.

Get current profile input parameters

Get current profile does not require path, query, or body parameters.

PATCHPUT
/v1/auth/me

Update profile

Updates editable fields on the current user's profile.

Update profile input parameters

Update profile accepts the route, header, query, and body inputs listed below.

Update profile request body

namestringRequired

required string, max 120 characters Used by the Update profile operation.

Update profile notes

  • Both PATCH and PUT are accepted for profile updates.
POST
/v1/auth/logout

Logout

Invalidates the current session token.

Logout input parameters

Logout does not require path, query, or body parameters.

Workflows

Workflows connect one Source trigger to an acyclic graph of Actions, Destinations, transformations, filters, delays, and Paths. Updates increment the version so clients can detect concurrent edits, while runs retain the exact version used for execution.

Workflows response fields

14 fields
idwfl_*

Unique Workflow ID. Workflow IDs use the wfl_ prefix.

team_id

Team that owns the Workflow.

source_id

Source whose accepted events trigger this Workflow.

name

Human-readable Workflow name, unique within the team.

description

Optional operational description, up to 4000 characters.

statusdraft | active | paused | disabled

Workflow lifecycle state: draft, active, paused, or disabled.

version

Monotonically increasing graph version used for concurrent-edit protection and run evidence.

source

Trigger Source metadata, including provider definition and output schema when available.

steps

Ordered graph nodes for Actions, Destinations, transformations, filters, delays, and Paths.

edges

Directed routes that connect the Trigger or an earlier Step to a downstream Step.

steps_count

Number of Steps currently stored in the Workflow graph.

edges_count

Number of Edges currently stored in the Workflow graph.

created_at

ISO timestamp when the Workflow was created.

updated_at

ISO timestamp when the Workflow was last changed.

Workflows shared request body fields

namestringRequired

required on create, max 155 characters; optional on update

descriptionstringOptional

optional string or null, max 4000 characters

source_idstringRequired

required on create; optional on update

statusenumOptional

draft | active | paused | disabled; defaults to active on create

versionintegerOptional

current integer version on update; stale versions return 409

stepsarrayOptional

graph Step array, max 100

edgesarrayOptional

graph Edge array, max 250

GET
/v1/workflows

List workflows

Returns Workflow summaries for the active team, newest updates first.

List workflows input parameters

List workflows accepts the route, header, query, and body inputs listed below.

List workflows query parameters

limitintegerOptional

defaults to 100, max 255 Used by the List workflows operation.

POST
/v1/workflows

Create a workflow

Creates a Workflow and stores version 1 of its graph.

Create a workflow input parameters

Create a workflow uses the shared request body fields above together with any route, header, or query inputs listed here.

Create a workflow notes

  • A Workflow may contain at most 100 Steps and 250 Edges.
  • The graph must be acyclic and every Step must have an input Edge from the Trigger or another Step.
GET
/v1/workflows/:id

Retrieve a workflow

Returns the Workflow summary, Source metadata, Steps, and Edges.

Retrieve a workflow input parameters

Retrieve a workflow accepts the route, header, query, and body inputs listed below.

Retrieve a workflow path parameters

idstringRequired

Workflow ID. Used by the Retrieve a workflow operation.

PUTPATCH
/v1/workflows/:id

Update a workflow

Updates Workflow fields or graph and increments its version.

Update a workflow input parameters

Update a workflow uses the shared request body fields above together with any route, header, or query inputs listed here.

Update a workflow path parameters

idstringRequired

Workflow ID. Used by the Update a workflow operation.

Update a workflow notes

  • Send the version returned by the latest read. A stale version returns 409 workflow_conflict.
  • PUT and PATCH currently use the same partial-update behavior.
DELETE
/v1/workflows/:id

Delete a workflow

Deletes the Workflow from the active team.

Delete a workflow input parameters

Delete a workflow accepts the route, header, query, and body inputs listed below.

Delete a workflow path parameters

idstringRequired

Workflow ID. Used by the Delete a workflow operation.

Delete a workflow notes

  • Deletion is destructive and there is no Workflow restore endpoint.
  • Pause or disable the Workflow first and retain required graph, version, run, and business evidence before deletion.
GET
/v1/workflows/:id/runs

List workflow runs

Returns recent runs and aggregate Step counts for one Workflow.

List workflow runs input parameters

List workflow runs accepts the route, header, query, and body inputs listed below.

List workflow runs path parameters

idstringRequired

Workflow ID. Used by the List workflow runs operation.

List workflow runs query parameters

limitintegerOptional

defaults to 100, max 255 Used by the List workflow runs operation.

GET
/v1/workflows/:id/runs/:runId

Retrieve a workflow run

Returns version evidence, Trigger metadata, and ordered Step execution details for one run.

Retrieve a workflow run input parameters

Retrieve a workflow run accepts the route, header, query, and body inputs listed below.

Retrieve a workflow run path parameters

idstringRequired

Workflow ID. Used by the Retrieve a workflow run operation.

runIdstringRequired

Workflow run ID. Used by the Retrieve a workflow run operation.

Retrieve a workflow run query parameters

include_datastringOptional

false by default; true includes redacted Trigger and output previews when available Used by the Retrieve a workflow run operation.

Retrieve a workflow run notes

  • Sensitive fields are redacted from data previews.
  • Large, expired, or unavailable payloads return preview metadata instead of the stored value.
GET
/v1/workflow-activity

List workflow activity

Searches runs across all Workflows in the active team and includes compact Step execution details.

List workflow activity input parameters

List workflow activity accepts the route, header, query, and body inputs listed below.

List workflow activity query parameters

limitintegerOptional

defaults to 100, max 100 Used by the List workflow activity operation.

fromdatetimeOptional

ISO timestamp, now, or relative time such as now-24h Used by the List workflow activity operation.

todatetimeOptional

ISO timestamp, now, or relative time such as now-15m Used by the List workflow activity operation.

source_idstringOptional

optional Source filter Used by the List workflow activity operation.

statusenumOptional

queued | running | succeeded | failed Used by the List workflow activity operation.

qstringOptional

searches request ID, Workflow name, or Source name; max 200 characters Used by the List workflow activity operation.

Sources

Sources are ingress endpoints. External systems send HTTP requests to source URLs.

Sources response fields

16 fields
idsrc_*

Unique source ID. Source IDs use the src_ prefix.

team_id

Team that owns the source.

name

Human-readable source name, unique within the team.

description

Optional description for operators and API clients.

typeWEBHOOK or vendor-specific

Source implementation type, usually WEBHOOK for public ingress endpoints.

config.auth_type

Verification mode applied to inbound webhook requests.

config.auth

Authentication or verification settings for the selected auth type.

config.custom_response

Optional static or rule-based dynamic response FastHook returns to the sender after accepting a source request.

config.discord_defer_ephemeral

DISCORD source setting. When true, FastHook sets the EPHEMERAL flag on the automatic initial defer so follow-up responses remain private.

config.mode

Source runtime mode. webhook is normal queued source behavior; proxy forwards the source request to an upstream API and returns the upstream response.

config.proxy

Proxy mode settings for target URL, path/query forwarding, timeout, response body capture, and allowed methods.

config.allowed_http_methods

HTTP methods accepted by the source endpoint.

url

Public URL that external systems use to send webhooks to this source.

disabled_at

ISO timestamp when the source was disabled, or null when active.

created_at

ISO timestamp when the source was created.

updated_at

ISO timestamp when the source was last changed.

Sources shared request body fields

namestringRequired

required when creating or upserting; optional when updating

descriptionstringOptional

optional string or null

typestringOptional

optional source type, defaults to WEBHOOK

statusenumOptional

optional enabled | disabled

url or config.urlstringOptional

optional source URL

config.auth_typeenumOptional

BASIC_AUTH | API_KEY | HMAC | null

config.authstringOptional

auth settings for auth_type

config.custom_responseobjectOptional

optional object or null

config.custom_response.content_typeenumOptional

json | text | xml

config.custom_response.bodystringOptional

optional fallback response body string

config.custom_response.rulesarrayOptional

optional ordered dynamic response rules array

config.custom_response.rules[].enabledbooleanOptional

optional boolean, false skips the rule

config.custom_response.rules[].matchstringOptional

optional method/path/query/headers/body matcher

config.custom_response.rules[].responsestringOptional

optional status/content_type/body/headers response override

config.discord_defer_ephemeralbooleanOptional

optional boolean for DISCORD sources; adds EPHEMERAL flags to the initial defer response

config.modeenumOptional

optional webhook | proxy; proxy makes the source return the upstream response to the original caller

config.proxy.enabledstringOptional

true enables proxy mode

config.proxy.target_urlstringRequired

required absolute http(s) upstream URL for proxy sources

config.proxy.path_forwardingbooleanOptional

optional boolean, defaults to true; appends the inbound request path to target_url

config.proxy.query_forwardingbooleanOptional

optional boolean, defaults to true; appends inbound query params to target_url

config.proxy.timeout_msintegerOptional

optional 1000-30000 upstream timeout in milliseconds

config.proxy.response_capture_limit_bytesintegerOptional

optional 0-65536 bytes stored in request trace

Proxy targets cannot use localhost, private IP ranges, link-local ranges, loopback, credentials in the URL, or Cloudflare metadata hostsstringOptional

Request parameter.

config.allowed_http_methodsarrayOptional

HEAD | GET | POST | PUT | PATCH | DELETE array

GET
/v1/sources

List sources

Returns configured sources for the active team.

List sources input parameters

List sources accepts the route, header, query, and body inputs listed below.

List sources query parameters

idstringOptional

optional ID filter, comma-separated or repeated Used by the List sources operation.

namestringOptional

optional exact name filter Used by the List sources operation.

typestringOptional

optional resource type filter Used by the List sources operation.

disabledstringOptional

false excludes disabled resources Used by the List sources operation.

order_byenumOptional

name | created_at | updated_at Used by the List sources operation.

direnumOptional

asc | desc Used by the List sources operation.

limitintegerOptional

max 255 Used by the List sources operation.

GET
/v1/sources/:id

Retrieve a source

Returns one source by id.

Retrieve a source input parameters

Retrieve a source accepts the route, header, query, and body inputs listed below.

Retrieve a source path parameters

idstringRequired

Source ID. Used by the Retrieve a source operation.

POST
/v1/sources

Create a source

Creates a source. type defaults to WEBHOOK.

Create a source input parameters

Create a source uses the shared request body fields above together with any route, header, or query inputs listed here.

Create a source notes

  • Duplicate create returns 409 with RESOURCE_ALREADY_EXISTS.
  • custom_response.rules are evaluated before the fallback body; the first enabled matching rule wins.
  • custom_response.body and custom_response.rules can be used together; body is the fallback when no enabled rule matches.
  • Dynamic response rules support $eq, $ne, $contains, $starts_with, $ends_with, $exists, $in, and $regex operators.
  • status defaults to enabled. Send status only when creating a disabled source.
  • description is optional metadata for operators and API clients.
PUT
/v1/sources

Upsert a source

Creates or updates a source by name.

Upsert a source input parameters

Upsert a source uses the shared request body fields above together with any route, header, or query inputs listed here.

PUTPATCH
/v1/sources/:id

Update a source

Partially updates a source. PUT /sources/:id is also supported.

Update a source input parameters

Update a source uses the shared request body fields above together with any route, header, or query inputs listed here.

Update a source path parameters

idstringRequired

Source ID. Used by the Update a source operation.

PUTPOST
/v1/sources/:id/disable

Disable a source

Disables a source and disables related connections.

Disable a source input parameters

Disable a source accepts the route, header, query, and body inputs listed below.

Disable a source path parameters

idstringRequired

Source ID. Used by the Disable a source operation.

Disable a source notes

  • Both PUT and POST are accepted for this action.
PUTPOST
/v1/sources/:id/enable

Enable a source

Enables a previously disabled source.

Enable a source input parameters

Enable a source accepts the route, header, query, and body inputs listed below.

Enable a source path parameters

idstringRequired

Source ID. Used by the Enable a source operation.

Enable a source notes

  • Both PUT and POST are accepted for this action.
GET
/v1/sources/channels

List Instant Trigger channels

Returns operational channel state for as many as 250 Instant provider Sources in the active team.

List Instant Trigger channels input parameters

List Instant Trigger channels accepts the route, header, query, and body inputs listed below.

List Instant Trigger channels query parameters

statusenumOptional

optional connecting | active | expiring | error | fallback filter Used by the List Instant Trigger channels operation.

List Instant Trigger channels notes

  • The channel status is derived from expected targets, active subscriptions, expiration, runtime fallback, provider-account errors, and active provision or renewal alerts.
  • The embedded metrics_48h object summarizes the current and previous UTC date.
GET
/v1/sources/channel-alerts

List Instant Trigger channel alerts

Lists active or resolved provisioning, renewal, stop, and notification-silence alerts for the team.

List Instant Trigger channel alerts input parameters

List Instant Trigger channel alerts accepts the route, header, query, and body inputs listed below.

List Instant Trigger channel alerts query parameters

statusenumOptional

active by default; resolved | all Used by the List Instant Trigger channel alerts operation.

limitintegerOptional

defaults to 50, max 100 Used by the List Instant Trigger channel alerts operation.

GET
/v1/sources/channel-metrics

List Instant Trigger channel metrics

Returns team-wide daily channel metrics grouped by UTC date and metric name.

List Instant Trigger channel metrics input parameters

List Instant Trigger channel metrics accepts the route, header, query, and body inputs listed below.

List Instant Trigger channel metrics query parameters

daysstringOptional

defaults to 14, min 1, max 90 Used by the List Instant Trigger channel metrics operation.

List Instant Trigger channel metrics notes

  • Metric values are counters; notification_latency_ms is an accumulated latency value used to calculate an average in the per-Source channel model.
GET
/v1/sources/channel-settings

Read channel alert settings

Returns the team’s email, Slack, notification cooldown, and Google notification-silence settings.

Read channel alert settings input parameters

Read channel alert settings does not require path, query, or body parameters.

PATCH
/v1/sources/channel-settings

Update channel alert settings

Configures team email and Slack alert delivery, cooldown, and Google notification-silence detection.

Update channel alert settings input parameters

Update channel alert settings uses the shared request body fields above together with any route, header, or query inputs listed here.

Update channel alert settings notes

  • The Slack webhook is encrypted and is never returned by this endpoint.
POST
/v1/sources/:id/channel-retry

Retry an Instant Trigger channel

Requests immediate channel reconciliation for one enabled Instant Source with a connected provider account.

Retry an Instant Trigger channel input parameters

Retry an Instant Trigger channel accepts the route, header, query, and body inputs listed below.

Retry an Instant Trigger channel path parameters

idstringRequired

Source ID. Used by the Retry an Instant Trigger channel operation.

Retry an Instant Trigger channel notes

  • Returns 202 when accepted.
  • Returns 409 for a polling Source, disabled Source, or Source without a connected account.
GET
/v1/sources/:id/channel-events

List Instant Trigger channel events

Returns channel lifecycle events, provider channel records, and email or Slack alert-delivery outcomes for one Source.

List Instant Trigger channel events input parameters

List Instant Trigger channel events accepts the route, header, query, and body inputs listed below.

List Instant Trigger channel events path parameters

idstringRequired

Source ID. Used by the List Instant Trigger channel events operation.

List Instant Trigger channel events query parameters

limitintegerOptional

defaults to 100, max 200 Used by the List Instant Trigger channel events operation.

PATCH
/v1/sources/:id/delivery

Change provider Trigger delivery mode

Changes a provider Source between supported Instant and polling definitions and configures fallback behavior.

Change provider Trigger delivery mode input parameters

Change provider Trigger delivery mode uses the shared request body fields above together with any route, header, or query inputs listed here.

Change provider Trigger delivery mode path parameters

idstringRequired

Source ID. Used by the Change provider Trigger delivery mode operation.

Change provider Trigger delivery mode notes

  • Returns 409 when the Source type has no matching delivery definition.
POST
/v1/sources/channels/bulk

Bulk retry or change Trigger delivery

Retries or changes delivery mode for as many as 100 owned provider Source IDs.

Bulk retry or change Trigger delivery input parameters

Bulk retry or change Trigger delivery uses the shared request body fields above together with any route, header, or query inputs listed here.

Bulk retry or change Trigger delivery notes

  • Unsupported delivery definitions are returned in errors without preventing other selected Sources from being processed.
DELETE
/v1/sources/:id

Delete a source

Deletes a source by id.

Delete a source input parameters

Delete a source accepts the route, header, query, and body inputs listed below.

Delete a source path parameters

idstringRequired

Source ID. Used by the Delete a source operation.

Destinations

Destinations are outbound endpoints that receive routed events.

Destinations response fields

21 fields
iddes_*

Unique destination ID. Destination IDs use the des_ prefix.

team_id

Team that owns the destination.

name

Human-readable destination name, unique within the team.

description

Optional description for operators and API clients.

typeHTTP | CLI | POSTGRESQL | SENDGRID_EMAIL | CLOUDFLARE_R2 | AWS_S3

Destination implementation type: HTTP, CLI, POSTGRESQL, SENDGRID_EMAIL, CLOUDFLARE_R2, or AWS_S3.

config.url, config.path, or type-specific config

HTTP delivery URL, CLI path, PostgreSQL table settings, SendGrid email settings, Cloudflare R2 archive settings, or AWS S3 archive settings.

config.rate_limit

Optional delivery rate limit for this destination.

config.rate_limit_period

Time window used by the destination rate limit.

config.http_method

HTTP method used when delivering events to the destination.

config.path_forwarding_disabled

Whether inbound request paths are omitted from forwarded delivery URLs.

config.auth_type

Authentication mode used for outbound deliveries: null/NO_AUTH, FASTHOOK_SIGNATURE, CUSTOM_HEADER, OAUTH2_CLIENT_CREDENTIALS, OAUTH2_AUTHORIZATION_CODE, GOOGLE_OAUTH_REFRESH_TOKEN, POSTGRES_PASSWORD, SENDGRID_API_KEY, R2_ACCESS_KEY, or AWS_ACCESS_KEY.

config.auth

Outbound authentication settings for the selected destination auth type, including OAuth2 token credentials for HTTP destinations.

config.columns

Optional ordered list of dotted payload or metadata paths to write into sheet columns.

config.include_metadata

Whether default metadata is written for CLOUDFLARE_R2 and AWS_S3 destinations when explicit output fields are not configured.

config.key_template

Object key template for CLOUDFLARE_R2 and AWS_S3 destinations.

config.content_type

Object media type for CLOUDFLARE_R2 and AWS_S3 destinations.

disabled_at

ISO timestamp when the destination was disabled, or null when active.

attempts_24h_count

Total delivery attempts recorded for this destination in the last 24 hours.

attempts_24h_bins

Recent delivery-attempt histogram for the destination.

created_at

ISO timestamp when the destination was created.

updated_at

ISO timestamp when the destination was last changed.

Destinations shared request body fields

namestringRequired

required when creating, upserting, or replacing; optional when patching

descriptionstringOptional

optional string or null

typeenumOptional

HTTP | CLI | POSTGRESQL | SENDGRID_EMAIL | CLOUDFLARE_R2 | AWS_S3

config targetstringRequired

required when creating, upserting, or replacing; optional when patching

config.rate_limitintegerOptional

optional positive integer or null

config.rate_limit_periodenumOptional

second | minute | hour | day

config.http_methodenumOptional

POST | PUT | PATCH | DELETE

config.path_forwarding_disabledbooleanOptional

boolean

config.auth_typeenumOptional

null | NO_AUTH | FASTHOOK_SIGNATURE | CUSTOM_HEADER | OAUTH2_CLIENT_CREDENTIALS | OAUTH2_AUTHORIZATION_CODE | GOOGLE_OAUTH_REFRESH_TOKEN | POSTGRES_PASSWORD | SENDGRID_API_KEY | R2_ACCESS_KEY | AWS_ACCESS_KEY

config.authstringOptional

destination auth settings

config.auth_type null/NO_AUTHstringOptional

disables outbound auth

config.auth.header_name/valuestringRequired

required for CUSTOM_HEADER

config.auth.token_url/client_id/client_secretstringRequired

required for OAUTH2_CLIENT_CREDENTIALS

config.auth.auth_url/token_url/client_id/client_secret/refresh_tokenstringRequired

required for OAUTH2_AUTHORIZATION_CODE

config.auth.client_auth_methodenumOptional

client_secret_post | client_secret_basic

config.auth.client_id/client_secret/refresh_tokenstringRequired

required for GOOGLE_OAUTH_REFRESH_TOKEN

config.auth.api_keystringRequired

required for SENDGRID_API_KEY

config.auth.scopestringOptional

optional for OAuth2 auth types and GOOGLE_OAUTH_REFRESH_TOKEN

config.auth.redirect_uristringOptional

optional for OAUTH2_AUTHORIZATION_CODE

config.auth.audience, config.auth.authorization_params, config.auth.token_paramsstringOptional

optional for OAuth2 auth types

config.host/config.port/config.databasestringRequired

required PostgreSQL endpoint; port defaults to 5432

config.schema/config.tablestringOptional

target PostgreSQL schema and table; schema defaults to public

config.payload_columnstringRequired

required JSONB target column, defaults to payload

config.event_id_columnstringOptional

optional text column for FastHook event IDs and idempotency

config.metadata_columnstringOptional

optional JSONB column for FastHook delivery metadata

config.delivered_at_columnstringOptional

optional timestamptz delivery-time column

config.on_conflictenumOptional

ERROR | IGNORE; IGNORE requires event_id_column and a matching UNIQUE constraint

config.ssl_modeenumOptional

verify-full | disable; defaults to verify-full

config.connect_timeout_secondsintegerOptional

integer from 1 to 30, defaults to 10

config.auth_typestringOptional

POSTGRES_PASSWORD for POSTGRESQL

config.auth.username/config.auth.passwordstringRequired

required PostgreSQL credentials

POSTGRESQL targets must be publicly reachable; FastHook does not create or migrate the tablestringOptional

Request parameter.

config.fromstringRequired

required for SENDGRID_EMAIL; verified SendGrid sender email or authenticated domain address; fasthook.io sender domains are admin-only

config.from_namestringOptional

optional display name for SENDGRID_EMAIL

config.toarrayRequired

required for SENDGRID_EMAIL; string or array of recipient templates

config.cc/config.bcc/config.reply_tostringOptional

optional for SENDGRID_EMAIL

config.subjectstringOptional

optional for SENDGRID_EMAIL, defaults to FastHook event {{event_id}}

config.text_template/config.html_templatestringOptional

optional for SENDGRID_EMAIL

config.api_base_urlstringOptional

optional for SENDGRID_EMAIL; https://api.sendgrid.com or https://api.eu.sendgrid.com

config.auth_typestringOptional

SENDGRID_API_KEY for SENDGRID_EMAIL

config.auth.api_keystringRequired

required SG... SendGrid API key for SENDGRID_EMAIL

SENDGRID_EMAIL accepts at most 10 total To, Cc, and Bcc recipients after template renderingstringOptional

Request parameter.

config.account_idstringRequired

required for CLOUDFLARE_R2; client Cloudflare account ID

config.endpointstringOptional

optional for CLOUDFLARE_R2; defaults to https://<account_id>.r2.cloudflarestorage.com

config.bucketstringRequired

required for CLOUDFLARE_R2; client R2 bucket name

config.key_templateobjectRequired

required for CLOUDFLARE_R2; R2 object key template, defaults to archives/{{team_id}}/{{source_id}}/{{event_id}}.json

config.content_typeobjectOptional

optional for CLOUDFLARE_R2; object media type, defaults to application/json

config.body_templatestringOptional

optional for CLOUDFLARE_R2; rendered archive body, otherwise FastHook stores metadata plus payload JSON

config.include_metadatabooleanOptional

optional boolean for CLOUDFLARE_R2 envelope mode

config.auth_typestringRequired

required for CLOUDFLARE_R2; use R2_ACCESS_KEY

config.auth.access_key_id/config.auth.secret_access_keystringRequired

required R2 S3 API credentials

config.auth.session_tokenstringOptional

optional temporary credential token

config.regionstringRequired

required for AWS_S3; AWS region used for SigV4 signing, such as eu-central-1

config.endpointstringOptional

optional for AWS_S3; defaults to https://s3.<region>.amazonaws.com

config.bucketstringRequired

required for AWS_S3; client S3 bucket name

config.force_path_stylebooleanOptional

optional boolean for AWS_S3 path-style S3 URLs

config.key_templateobjectRequired

required for AWS_S3; S3 object key template, defaults to archives/{{team_id}}/{{source_id}}/{{event_id}}.json

config.content_typeobjectOptional

optional for AWS_S3; object media type, defaults to application/json

config.body_templatestringOptional

optional for AWS_S3; rendered archive body, otherwise FastHook stores metadata plus payload JSON

config.include_metadatabooleanOptional

optional boolean for AWS_S3 envelope mode

config.auth_typestringRequired

required for AWS_S3; use AWS_ACCESS_KEY

config.auth.access_key_id/config.auth.secret_access_keyobjectRequired

required AWS credentials with s3:PutObject permission

config.auth.session_tokenstringOptional

optional temporary AWS session token

GET
/v1/destinations

List destinations

Returns configured destinations with 24 hour attempt metrics.

List destinations input parameters

List destinations accepts the route, header, query, and body inputs listed below.

List destinations query parameters

idstringOptional

optional ID filter, comma-separated or repeated Used by the List destinations operation.

namestringOptional

optional exact name filter Used by the List destinations operation.

typestringOptional

optional resource type filter Used by the List destinations operation.

disabledstringOptional

false excludes disabled resources Used by the List destinations operation.

order_byenumOptional

name | created_at | updated_at Used by the List destinations operation.

direnumOptional

asc | desc Used by the List destinations operation.

limitintegerOptional

max 255 Used by the List destinations operation.

GET
/v1/destinations/:id

Retrieve a destination

Returns a destination by id.

Retrieve a destination input parameters

Retrieve a destination accepts the route, header, query, and body inputs listed below.

Retrieve a destination path parameters

idstringRequired

Destination ID. Used by the Retrieve a destination operation.

POST
/v1/destinations

Create a destination

Creates a destination. type defaults to HTTP.

Create a destination input parameters

Create a destination uses the shared request body fields above together with any route, header, or query inputs listed here.

PUT
/v1/destinations

Upsert a destination

Creates or updates a destination by name.

Upsert a destination input parameters

Upsert a destination uses the shared request body fields above together with any route, header, or query inputs listed here.

PUT
/v1/destinations/:id

Replace a destination

Replaces a destination by id. Send the full destination payload; config is replaced, not merged.

Replace a destination input parameters

Replace a destination uses the shared request body fields above together with any route, header, or query inputs listed here.

Replace a destination path parameters

idstringRequired

Destination ID. Used by the Replace a destination operation.

Replace a destination notes

  • Use PATCH /v1/destinations/:id when you only want to change part of the destination config.
PATCH
/v1/destinations/:id

Patch a destination

Partially updates a destination by merging the provided fields with the existing destination.

Patch a destination input parameters

Patch a destination uses the shared request body fields above together with any route, header, or query inputs listed here.

Patch a destination path parameters

idstringRequired

Destination ID. Used by the Patch a destination operation.

Patch a destination notes

  • The CLI command fasthook destinations update uses this endpoint.
PUTPOST
/v1/destinations/:id/disable

Disable a destination

Disables an outbound destination.

Disable a destination input parameters

Disable a destination accepts the route, header, query, and body inputs listed below.

Disable a destination path parameters

idstringRequired

Destination ID. Used by the Disable a destination operation.

Disable a destination notes

  • Both PUT and POST are accepted for this action.
PUTPOST
/v1/destinations/:id/enable

Enable a destination

Enables a previously disabled destination.

Enable a destination input parameters

Enable a destination accepts the route, header, query, and body inputs listed below.

Enable a destination path parameters

idstringRequired

Destination ID. Used by the Enable a destination operation.

Enable a destination notes

  • Both PUT and POST are accepted for this action.
DELETE
/v1/destinations/:id

Delete a destination

Deletes a destination by id.

Delete a destination input parameters

Delete a destination accepts the route, header, query, and body inputs listed below.

Delete a destination path parameters

idstringRequired

Destination ID. Used by the Delete a destination operation.

Transformations

Transformations are reusable JavaScript snippets that reshape requests before delivery.

Transformations response fields

15 fields
idtrs_*

Unique transformation ID. Transformation IDs use the trs_ prefix.

team_id

Team that owns the transformation.

name

Human-readable transformation name, unique within the team.

code

JavaScript code executed to reshape a webhook request before delivery.

env

Key-value environment variables available to the transformation runtime.

code_hash

Hash of the current transformation code for change detection.

deleted_at

ISO timestamp when the transformation was deleted, or null when active.

executions_24h_count

Number of transformation executions recorded in the last 24 hours.

executions_24h_successful_count

Number of transformation executions without error-level logs in the last 24 hours.

executions_24h_failed_count

Number of transformation executions with error-level logs in the last 24 hours.

executions_24h_successful_bins

Top-level six-bucket history of successful transformation executions during the last 24 hours.

executions_24h_failed_bins

Top-level six-bucket history of failed transformation executions during the last 24 hours.

connections_count

Number of routing connections that reference this transformation.

created_at

ISO timestamp when the transformation was created.

updated_at

ISO timestamp when the transformation was last changed.

GET
/v1/transformations

List transformations

Returns reusable transformation rules without loading execution or connection metrics by default.

List transformations input parameters

List transformations accepts the route, header, query, and body inputs listed below.

List transformations query parameters

idstringOptional

optional ID filter, comma-separated or repeated Used by the List transformations operation.

namestringOptional

optional exact name filter Used by the List transformations operation.

include_metricsstringOptional

true includes legacy execution and connection counts Used by the List transformations operation.

order_byenumOptional

name | created_at | updated_at Used by the List transformations operation.

direnumOptional

asc | desc Used by the List transformations operation.

limitintegerOptional

max 255 Used by the List transformations operation.

List transformations notes

  • Use GET /v1/metrics/transformations after listing visible transformations to load table counts separately.
POST
/v1/transformations

Create a transformation

Creates a new transformation with code.

Create a transformation input parameters

Create a transformation accepts the route, header, query, and body inputs listed below.

Create a transformation request body

namestringRequired

required Used by the Create a transformation operation.

codestringRequired

required Used by the Create a transformation operation.

envobjectOptional

optional object Used by the Create a transformation operation.

PUT
/v1/transformations

Upsert a transformation

Upserts a transformation by name.

Upsert a transformation input parameters

Upsert a transformation accepts the route, header, query, and body inputs listed below.

Upsert a transformation request body

namestringRequired

required string Used by the Upsert a transformation operation.

codestringRequired

required string Used by the Upsert a transformation operation.

envobjectOptional

optional object Used by the Upsert a transformation operation.

PUT
/v1/transformations/run

Run a transformation

Runs inline code or a saved transformation against a request sample.

Run a transformation input parameters

Run a transformation accepts the route, header, query, and body inputs listed below.

Run a transformation request body

transformation_idstringOptional

optional saved transformation ID Used by the Run a transformation operation.

codestringOptional

optional JavaScript code when transformation_id is omitted Used by the Run a transformation operation.

envobjectOptional

optional object of string variables Used by the Run a transformation operation.

request.headersobjectOptional

optional object Used by the Run a transformation operation.

request.bodystringOptional

optional JSON value Used by the Run a transformation operation.

request.queryobjectOptional

optional object or query string Used by the Run a transformation operation.

request.pathstringOptional

optional path string Used by the Run a transformation operation.

request.methodstringOptional

optional HTTP method Used by the Run a transformation operation.

GET
/v1/transformations/:id

Retrieve a transformation

Returns a transformation by id.

Retrieve a transformation input parameters

Retrieve a transformation accepts the route, header, query, and body inputs listed below.

Retrieve a transformation path parameters

idstringRequired

Transformation ID. Used by the Retrieve a transformation operation.

PUT
/v1/transformations/:id

Update a transformation

Updates transformation code or metadata.

Update a transformation input parameters

Update a transformation accepts the route, header, query, and body inputs listed below.

Update a transformation path parameters

idstringRequired

Transformation ID. Used by the Update a transformation operation.

Update a transformation request body

namestringOptional

optional string Used by the Update a transformation operation.

codestringOptional

optional string Used by the Update a transformation operation.

envobjectOptional

optional object Used by the Update a transformation operation.

DELETE
/v1/transformations/:id

Delete a transformation

Deletes a transformation by id.

Delete a transformation input parameters

Delete a transformation accepts the route, header, query, and body inputs listed below.

Delete a transformation path parameters

idstringRequired

Transformation ID. Used by the Delete a transformation operation.

GET
/v1/transformations/:id/executions

List transformation executions

Returns run metadata and logs for executions of a transformation.

List transformation executions input parameters

List transformation executions accepts the route, header, query, and body inputs listed below.

List transformation executions path parameters

idstringRequired

Transformation ID. Used by the List transformation executions operation.

List transformation executions notes

  • Execution models include team_id for the owning team.
GET
/v1/transformations/:id/executions/:executionId

Retrieve a transformation execution

Returns one execution with logs and original/transformed event data.

Retrieve a transformation execution input parameters

Retrieve a transformation execution accepts the route, header, query, and body inputs listed below.

Retrieve a transformation execution path parameters

idstringRequired

Transformation ID. Used by the Retrieve a transformation execution operation.

executionIdstringRequired

Transformation execution ID. Used by the Retrieve a transformation execution operation.

Retrieve a transformation execution notes

  • The response includes team_id for the owning team.

Request Fixtures

Request fixtures save real inbound webhook payloads as named test cases that can be replayed through a selected connection.

Request Fixtures response fields

11 fields
idfix_*

Unique fixture ID. Request fixture IDs use the fix_ prefix.

team_id

Team that owns the saved request fixture.

name

Human-readable test-case name, such as Successful payment or Invalid signature.

description

Optional expected result, edge case, or operator note for the fixture.

source_id

Source from which the original webhook request was captured.

source_name

Source name captured for display alongside the fixture.

original_request_id

Inbound request used to create the immutable fixture payload snapshot.

replay_count

Number of fixture replays queued so far.

last_replayed_at

ISO timestamp of the most recent replay, or null before the first replay.

created_at

ISO timestamp when the fixture was saved.

updated_at

ISO timestamp when the fixture metadata or replay counters last changed.

GET
/v1/request-fixtures

List request fixtures

Returns the active team's saved webhook test fixtures, newest first.

List request fixtures input parameters

List request fixtures does not require path, query, or body parameters.

POST
/v1/request-fixtures

Save a request fixture

Creates a named fixture from a stored inbound request in the active team.

Save a request fixture input parameters

Save a request fixture accepts the route, header, query, and body inputs listed below.

Save a request fixture request body

request_idstringRequired

required request ID Used by the Save a request fixture operation.

namestringRequired

required string, max 120 characters Used by the Save a request fixture operation.

descriptionstringOptional

optional string, max 500 characters Used by the Save a request fixture operation.

Save a request fixture notes

  • The request payload, headers, path, query, and HTTP method are copied into the fixture snapshot.
GET
/v1/request-fixtures/:id

Retrieve a request fixture

Returns one saved request fixture from the active team.

Retrieve a request fixture input parameters

Retrieve a request fixture accepts the route, header, query, and body inputs listed below.

Retrieve a request fixture path parameters

idstringRequired

Saved request fixture ID. Used by the Retrieve a request fixture operation.

PATCHPUT
/v1/request-fixtures/:id

Update a request fixture

Renames a fixture or updates its expected result and edge-case notes.

Update a request fixture input parameters

Update a request fixture accepts the route, header, query, and body inputs listed below.

Update a request fixture path parameters

idstringRequired

Saved request fixture ID. Used by the Update a request fixture operation.

Update a request fixture request body

namestringOptional

optional string, max 120 characters Used by the Update a request fixture operation.

descriptionstringOptional

optional string or null, max 500 characters Used by the Update a request fixture operation.

DELETE
/v1/request-fixtures/:id

Delete a request fixture

Deletes a saved fixture without deleting its original request.

Delete a request fixture input parameters

Delete a request fixture accepts the route, header, query, and body inputs listed below.

Delete a request fixture path parameters

idstringRequired

Saved request fixture ID. Used by the Delete a request fixture operation.

GET
/v1/request-fixtures/:id/targets

List fixture replay targets

Returns enabled connections that use the fixture's source and can receive a replay.

List fixture replay targets input parameters

List fixture replay targets accepts the route, header, query, and body inputs listed below.

List fixture replay targets path parameters

idstringRequired

Saved request fixture ID. Used by the List fixture replay targets operation.

POST
/v1/request-fixtures/:id/replay

Replay a request fixture

Queues the saved webhook payload against one selected connection and destination.

Replay a request fixture input parameters

Replay a request fixture accepts the route, header, query, and body inputs listed below.

Replay a request fixture path parameters

idstringRequired

Saved request fixture ID. Used by the Replay a request fixture operation.

Replay a request fixture request body

connection_idstringRequired

required connection ID returned by the targets endpoint Used by the Replay a request fixture operation.

Replay a request fixture notes

  • Returns 202 Accepted after the replay message is published.

Connections

Connections route events from one source to one destination and apply rules.

Connections response fields

11 fields
idweb_*

Unique connection ID. Connection IDs use the web_ prefix.

team_id

Team that owns the connection.

name

Human-readable connection name, unique within the team.

description

Optional description for operators and API clients.

source

Source object that receives inbound webhook requests.

destination

Destination object that receives routed event deliveries.

rules

Ordered connection rules applied during routing and delivery.

disabled_at

ISO timestamp when the connection was disabled, or null when active.

paused_at

ISO timestamp when event delivery was paused, or null when unpaused.

created_at

ISO timestamp when the connection was created.

updated_at

ISO timestamp when the connection was last changed.

GET
/v1/connections

List connections

Returns routing connections for the active team.

List connections input parameters

List connections accepts the route, header, query, and body inputs listed below.

List connections query parameters

order_byenumOptional

name | created_at | updated_at Used by the List connections operation.

direnumOptional

asc | desc Used by the List connections operation.

limitintegerOptional

max 255 Used by the List connections operation.

GET
/v1/connections/:id

Retrieve a connection

Returns one connection with full source and destination objects.

Retrieve a connection input parameters

Retrieve a connection accepts the route, header, query, and body inputs listed below.

Retrieve a connection path parameters

idstringRequired

Connection ID. Used by the Retrieve a connection operation.

POST
/v1/connections

Create a connection

Creates a connection between a source and destination.

Create a connection input parameters

Create a connection accepts the route, header, query, and body inputs listed below.

Create a connection request body

namestringRequired

required string Used by the Create a connection operation.

descriptionstringOptional

optional string or null Used by the Create a connection operation.

source_id or source.idstringRequired

required source ID Used by the Create a connection operation.

destination_id or destination.idstringRequired

required destination ID Used by the Create a connection operation.

disabled_atdatetimeOptional

optional ISO datetime when delivery should be disabled, or null Used by the Create a connection operation.

paused_atdatetimeOptional

optional ISO datetime when delivery should be paused, or null Used by the Create a connection operation.

rulesarrayOptional

optional array of retry, delay, filter, transform, and deduplicate rules Used by the Create a connection operation.

PUT
/v1/connections

Upsert a connection

Upserts by id, otherwise by source_id and name.

Upsert a connection input parameters

Upsert a connection accepts the route, header, query, and body inputs listed below.

Upsert a connection request body

idstringOptional

optional connection ID to upsert directly Used by the Upsert a connection operation.

namestringRequired

required string when id is omitted Used by the Upsert a connection operation.

descriptionstringOptional

optional string or null Used by the Upsert a connection operation.

source_id or source.idstringRequired

required source ID Used by the Upsert a connection operation.

destination_id or destination.idstringRequired

required destination ID Used by the Upsert a connection operation.

disabled_atdatetimeOptional

optional ISO datetime to disable delivery during the upsert, or null Used by the Upsert a connection operation.

paused_atdatetimeOptional

optional ISO datetime to pause delivery during the upsert, or null Used by the Upsert a connection operation.

rulesarrayOptional

optional array of retry, delay, filter, transform, and deduplicate rules Used by the Upsert a connection operation.

PUTPATCH
/v1/connections/:id

Update a connection

Partially updates a connection. PUT /connections/:id is also supported.

Update a connection input parameters

Update a connection accepts the route, header, query, and body inputs listed below.

Update a connection path parameters

idstringRequired

Connection ID. Used by the Update a connection operation.

Update a connection request body

namestringOptional

optional string Used by the Update a connection operation.

descriptionstringOptional

optional string or null Used by the Update a connection operation.

source_id or source.idstringOptional

optional source ID Used by the Update a connection operation.

destination_id or destination.idstringOptional

optional destination ID Used by the Update a connection operation.

disabled_atdatetimeOptional

optional ISO datetime to change the disabled state, or null Used by the Update a connection operation.

paused_atdatetimeOptional

optional ISO datetime to change the paused state, or null Used by the Update a connection operation.

rulesarrayOptional

optional array of retry, delay, filter, transform, and deduplicate rules Used by the Update a connection operation.

GET
/v1/connections/:id/latest-input

Retrieve latest input

Returns the latest request input seen by the connection source.

Retrieve latest input input parameters

Retrieve latest input accepts the route, header, query, and body inputs listed below.

Retrieve latest input path parameters

idstringRequired

Connection ID. Used by the Retrieve latest input operation.

PUT
/v1/connections/:id/pause

Pause a connection

Pauses delivery for a connection.

Pause a connection input parameters

Pause a connection accepts the route, header, query, and body inputs listed below.

Pause a connection path parameters

idstringRequired

Connection ID. Used by the Pause a connection operation.

PUT
/v1/connections/:id/unpause

Unpause a connection

Resumes delivery for a paused connection.

Unpause a connection input parameters

Unpause a connection accepts the route, header, query, and body inputs listed below.

Unpause a connection path parameters

idstringRequired

Connection ID. Used by the Unpause a connection operation.

PUTPOST
/v1/connections/:id/disable

Disable a connection

Disables routing for a connection.

Disable a connection input parameters

Disable a connection accepts the route, header, query, and body inputs listed below.

Disable a connection path parameters

idstringRequired

Connection ID. Used by the Disable a connection operation.

Disable a connection notes

  • Both PUT and POST are accepted for this action.
PUTPOST
/v1/connections/:id/enable

Enable a connection

Enables routing for a connection.

Enable a connection input parameters

Enable a connection accepts the route, header, query, and body inputs listed below.

Enable a connection path parameters

idstringRequired

Connection ID. Used by the Enable a connection operation.

Enable a connection notes

  • Both PUT and POST are accepted for this action.
DELETE
/v1/connections/:id

Delete a connection

Deletes a connection by id.

Delete a connection input parameters

Delete a connection accepts the route, header, query, and body inputs listed below.

Delete a connection path parameters

idstringRequired

Connection ID. Used by the Delete a connection operation.

Connection Rules

Rules live inside connection.rules and are evaluated in normalized order.

Connection Rules response fields

15 fields
typeretry | delay | filter | transform | transformation | deduplicate

Rule type that determines how FastHook evaluates or changes delivery behavior.

strategy

Retry scheduling strategy, such as exponential backoff.

interval

Base retry interval in milliseconds.

count

Maximum number of retry attempts for the retry rule.

response_status_codes

HTTP response status codes or ranges that trigger retry behavior.

delay

Delivery delay in milliseconds for delay rules.

headers

Header predicates used by filter or deduplication rules.

body

Body predicates used by filter or deduplication rules.

query

Query-string predicates used by filter rules.

path

Path predicate used by filter rules.

transformation_id

Saved transformation ID linked to a transform rule.

transformation

Inline transformation object that can be upserted and linked to the connection.

window

Deduplication window in milliseconds.

include_fields

Request fields included when building a deduplication key.

exclude_fields

Request fields excluded when building a deduplication key.

PUT
/v1/connections/:id

Rule payload

Supported rule types are retry, delay, filter, transform, transformation, and deduplicate.

Rule payload input parameters

Rule payload accepts the route, header, query, and body inputs listed below.

Rule payload path parameters

idstringRequired

Connection ID. Used by the Rule payload operation.

Rule payload request body

rulesarrayOptional

Request parameter. Used by the Rule payload operation.

Rule payload notes

  • delay must be between 0 and 86400000 ms.
  • deduplicate.window must be between 1000 and 3600000 ms.
  • inline transformation objects are upserted into transformations and linked by transformation_id.

Project API Keys

Create independently revocable, least-privilege credentials for team automation. Raw key material is returned only by the create response.

Project API Keys response fields

14 fields
id

id field returned by the Project API Keys API.

name

name field returned by the Project API Keys API.

masked_key

masked_key field returned by the Project API Keys API.

statusactive | disabled | revoked

status field returned by the Project API Keys API.

scopescontrol:read | control:edit | control:execute

scopes field returned by the Project API Keys API.

execute_grants

execute_grants field returned by the Project API Keys API.

rate_limit_per_minute

rate_limit_per_minute field returned by the Project API Keys API.

last_used_at

last_used_at field returned by the Project API Keys API.

secret_last_rotated_at

secret_last_rotated_at field returned by the Project API Keys API.

legacy_project_secret

legacy_project_secret field returned by the Project API Keys API.

created_by_user_id

created_by_user_id field returned by the Project API Keys API.

revoked_at

revoked_at field returned by the Project API Keys API.

created_at

created_at field returned by the Project API Keys API.

updated_at

updated_at field returned by the Project API Keys API.

GET
/v1/project-api-keys

List project API keys

Lists up to 100 secret-free key records for the selected team.

List project API keys input parameters

List project API keys does not require path, query, or body parameters.

POST
/v1/project-api-keys

Create a project API key

Creates a named scoped key and reveals its credential once.

Create a project API key input parameters

Create a project API key accepts the route, header, query, and body inputs listed below.

Create a project API key request body

namestringRequired

required, 1 to 100 characters Used by the Create a project API key operation.

scopesarrayRequired

required unique array of control:read, control:edit, and control:execute Used by the Create a project API key operation.

execute_grantsstringOptional

optional resource restrictions; requires control:execute Used by the Create a project API key operation.

rate_limit_per_minuteintegerOptional

optional integer from 1 to 10000 Used by the Create a project API key operation.

Create a project API key notes

  • POST returns 201 with Cache-Control: no-store. Store the raw key before leaving the response.
GETPATCHPUT
/v1/project-api-keys/:keyId

Retrieve or update a project API key

Returns secret-free metadata or partially updates mutable policy. PUT has the same partial-update semantics as PATCH.

Retrieve or update a project API key input parameters

Retrieve or update a project API key accepts the route, header, query, and body inputs listed below.

Retrieve or update a project API key path parameters

keyIdstringRequired

Resource ID from the route. Used by the Retrieve or update a project API key operation.

Retrieve or update a project API key request body

name, status, scopes, execute_grants, and rate_limit_per_minute are optionalstringOptional

Request parameter. Used by the Retrieve or update a project API key operation.

Retrieve or update a project API key notes

  • Revoked keys cannot be changed.
DELETE
/v1/project-api-keys/:keyId

Permanently revoke a project API key

Idempotently and permanently revokes one key.

Permanently revoke a project API key input parameters

Permanently revoke a project API key accepts the route, header, query, and body inputs listed below.

Permanently revoke a project API key path parameters

keyIdstringRequired

Resource ID from the route. Used by the Permanently revoke a project API key operation.

POST
/v1/project-api-keys/:keyId/revoke

Permanently revoke a project API key

Explicit revocation alias for clients that do not use DELETE.

Permanently revoke a project API key input parameters

Permanently revoke a project API key accepts the route, header, query, and body inputs listed below.

Permanently revoke a project API key path parameters

keyIdstringRequired

Resource ID from the route. Used by the Permanently revoke a project API key operation.

GET
/v1/project-api-keys/:keyId/audit

List project API key audit decisions

Returns up to 100 recent authorization decisions for the selected key.

List project API key audit decisions input parameters

List project API key audit decisions accepts the route, header, query, and body inputs listed below.

List project API key audit decisions path parameters

keyIdstringRequired

Resource ID from the route. Used by the List project API key audit decisions operation.

Project Secrets

Project secrets provide API access and outbound signature verification for a team.

Project Secrets response fields

11 fields
team_id

Team that owns the project secrets.

created_at

ISO timestamp when the secret pair was created.

updated_at

ISO timestamp when either secret was last changed.

api_key.value

New project API key, present only in a successful rotation response for this field.

api_key.masked_value

Redacted API key display value.

api_key.has_secret

Whether an API key is configured.

api_key.last_rotated_at

ISO timestamp when the API key was last rotated.

signing_secret.value

New signing secret, present only in a successful rotation response for this field.

signing_secret.masked_value

Redacted signing secret display value.

signing_secret.has_secret

Whether a signing secret is configured.

signing_secret.last_rotated_at

ISO timestamp when the signing secret was last rotated.

GET
/v1/project-secrets

Get project secrets

Returns masked project-secret metadata. Reusable values are never returned by this endpoint; a missing pair is created lazily.

Get project secrets input parameters

Get project secrets does not require path, query, or body parameters.

PUT
/v1/project-secrets

Update project secrets

Updates one or both caller-provided secret values.

Update project secrets input parameters

Update project secrets accepts the route, header, query, and body inputs listed below.

Update project secrets request body

api_keystringOptional

optional API key string with at least 12 characters Used by the Update project secrets operation.

signing_secretstringOptional

optional signing secret string with at least 12 characters Used by the Update project secrets operation.

Update project secrets notes

  • At least one of api_key or signing_secret is required.
POST
/v1/project-secrets/rotate

Rotate project secrets

Rotates one or both generated secret values and reveals each replacement once in this response.

Rotate project secrets input parameters

Rotate project secrets accepts the route, header, query, and body inputs listed below.

Rotate project secrets request body

rotatearrayOptional

optional array of api_key and signing_secret Used by the Rotate project secrets operation.

Rotate project secrets notes

  • Empty body rotates both secrets.
  • Use rotate=["signing_secret"] to rotate only the signing secret.
  • Copy each returned value immediately; subsequent GET requests expose masked metadata only.

Public Request Bins

Public request bins provide temporary no-login webhook URLs with private read tokens, one-hour cleanup, optional account claiming, and a live request stream.

Public Request Bins response fields

8 fields
idsrc_*

Temporary bin source ID. Public bin IDs use the src_ prefix.

endpoint

Public hook URL that receives webhook requests for the bin.

tokenpbn_*

Private pbn_ read token returned only when the public bin is created.

expires_at

ISO timestamp when an unclaimed public bin expires.

ttl_seconds

Lifetime of the anonymous bin in seconds.

requests[].id

Captured inbound request ID.

requests[].status

Acceptance or rejection status for the captured request.

requests[].data

Captured headers, body, query, path, and HTTP method.

POST
/v1/public-bins

Create a public request bin

Creates a temporary webhook receiver without requiring a FastHook account.

Create a public request bin input parameters

Create a public request bin does not require path, query, or body parameters.

Create a public request bin notes

  • The token is returned once and is required to read or claim the bin.
  • Anonymous bin creation is rate limited and bins are automatically cleaned up after one hour.
GET
/v1/public-bins/:id

Read a public request bin

Returns captured requests for a temporary bin when the private read token is valid.

Read a public request bin input parameters

Read a public request bin accepts the route, header, query, and body inputs listed below.

Read a public request bin path parameters

idstringRequired

Public request bin source ID. Used by the Read a public request bin operation.

Read a public request bin headers

x-bin-tokenstringRequired

Private read token returned when the bin was created. Used by the Read a public request bin operation.

Read a public request bin notes

  • Responses use Cache-Control: no-store.
  • Expired bins return 410 Gone.
POST
/v1/public-bins/:id/claim

Claim a public request bin

Moves an anonymous bin and its captured requests into the authenticated active team.

Claim a public request bin input parameters

Claim a public request bin accepts the route, header, query, and body inputs listed below.

Claim a public request bin path parameters

idstringRequired

Public request bin source ID. Used by the Claim a public request bin operation.

Claim a public request bin headers

x-bin-tokenstringRequired

Private read token returned when the bin was created. Used by the Claim a public request bin operation.

Claim a public request bin notes

  • Claiming preserves captured requests and turns the temporary bin into a team-owned source.
GET
/v1/bins/:id/stream

Stream bin requests

Upgrades to a WebSocket that emits newly captured requests for an authenticated team bin.

Stream bin requests input parameters

Stream bin requests accepts the route, header, query, and body inputs listed below.

Stream bin requests path parameters

idstringRequired

Resource ID from the route. Used by the Stream bin requests operation.

Stream bin requests headers

UpgradestringRequired

Required WebSocket upgrade header. Used by the Stream bin requests operation.

Sec-WebSocket-ProtocolstringOptional

Optional fh_token.<base64url> and fh_team.<base64url> protocol values for browser WebSocket authentication. Used by the Stream bin requests operation.

Stream bin requests notes

  • A non-WebSocket request returns 426 Upgrade Required.
  • Browser clients can pass credentials through Sec-WebSocket-Protocol using fh_token and fh_team values.

Requests

Requests are inbound webhook deliveries received by FastHook.

Requests response fields

19 fields
idreq_*

Unique inbound request ID. Request IDs use the req_ prefix.

team_id

Team that owns the inbound request.

statusaccepted | rejected

Inbound request outcome derived from acceptance or rejection.

verified

Whether the inbound request passed source verification.

original_event_data_id

Stored payload record containing the original inbound request data.

rejection_cause

Reason the request was rejected, or null when accepted.

ingested_at

ISO timestamp when FastHook received the inbound webhook request.

source_id

Source that received the inbound webhook request.

events_count

Number of outbound events created from the request.

ignored_count

Number of routed events ignored by filtering or rule evaluation.

cli_events_count

Number of local CLI tunnel deliveries created from the request.

is_retry

Whether the request was created by replaying a previous request.

retry_kindsingle | bulk

Retry origin, such as single replay or bulk replay.

retry_parent_request_id

Original request ID when this request was created by a retry.

retry_operation_id

Bulk operation ID that created the retry request, when applicable.

retried_at

ISO timestamp when the request was replayed.

data

Stored inbound request payload, headers, method, path, query, and body when included.

created_at

ISO timestamp when the request record was created.

updated_at

ISO timestamp when the request record was last changed.

GET
/v1/requests

List requests

Returns cursor-paginated inbound requests with deterministic ordering.

List requests input parameters

List requests accepts the route, header, query, and body inputs listed below.

List requests query parameters

fromdatetimeOptional

ISO datetime or relative time for the start of the request window Used by the List requests operation.

todatetimeOptional

ISO datetime or relative time for the end of the request window Used by the List requests operation.

limitintegerOptional

default 100, max 100 Used by the List requests operation.

cursorstringOptional

opaque next_cursor or next value Used by the List requests operation.

statusenumOptional

accepted | rejected Used by the List requests operation.

verifiedbooleanOptional

true | false Used by the List requests operation.

source_idstringOptional

Source ID used to filter inbound requests or routed events. Used by the List requests operation.

connection_idstringOptional

Connection ID used to filter routed requests or events. Used by the List requests operation.

batch_operation_idstringOptional

Bulk operation ID used to filter matching requests or events. Used by the List requests operation.

is_retrybooleanOptional

true | false Used by the List requests operation.

retry_kindenumOptional

single | bulk Used by the List requests operation.

q or search_termstringOptional

search across id and external_id Used by the List requests operation.

includestringOptional

data, optional stored payload data Used by the List requests operation.

List requests notes

  • For request listings, total is exact and total_exact is true when next_cursor is null.
  • When next_cursor is present, total is a lower bound for the current query; use /v1/requests/count for an exact total.
GET
/v1/requests/count

Count requests

Returns the count matching the same request filters.

Count requests input parameters

Count requests accepts the route, header, query, and body inputs listed below.

Count requests query parameters

from or ingested_at[gte]datetimeOptional

ISO datetime or relative lower bound for request ingestion Used by the Count requests operation.

to or ingested_at[lte]datetimeOptional

ISO datetime or relative upper bound for request ingestion Used by the Count requests operation.

statusenumOptional

accepted | rejected Used by the Count requests operation.

verifiedbooleanOptional

true | false Used by the Count requests operation.

source_idstringOptional

Source ID used to filter inbound requests or routed events. Used by the Count requests operation.

connection_idstringOptional

Connection ID used to filter routed requests or events. Used by the Count requests operation.

batch_operation_idstringOptional

Bulk operation ID used to filter matching requests or events. Used by the Count requests operation.

is_retrybooleanOptional

true | false Used by the Count requests operation.

retry_kindenumOptional

single | bulk Used by the Count requests operation.

q or search_termstringOptional

Text search query; search_term is accepted as an alias. Used by the Count requests operation.

GET
/v1/requests/:id

Retrieve a request

Returns one request with stored payload data when available.

Retrieve a request input parameters

Retrieve a request accepts the route, header, query, and body inputs listed below.

Retrieve a request path parameters

idstringRequired

Request ID. Used by the Retrieve a request operation.

GET
/v1/requests/:id/trace

Retrieve request trace

Returns one request with its routed events, ignored branches, delivery attempts, transformation executions, and a sorted timeline for debugging the full webhook path.

Retrieve request trace input parameters

Retrieve request trace accepts the route, header, query, and body inputs listed below.

Retrieve request trace path parameters

idstringRequired

Request ID. Used by the Retrieve request trace operation.

Retrieve request trace notes

  • Use this endpoint when you need the whole request path in one call instead of fetching request, events, ignored events, attempts, and transformations separately.
  • The request.data object contains the original stored inbound payload. Event payload ids and transformation payload ids show where the outbound data changed.
POST
/v1/requests/:id/share

Create a sanitized request share

Creates an expiring public link for a sanitized snapshot of one request. FastHook redacts common secrets and any custom redact_keys before storing the share payload.

Create a sanitized request share input parameters

Create a sanitized request share accepts the route, header, query, and body inputs listed below.

Create a sanitized request share path parameters

idstringRequired

Request ID. Used by the Create a sanitized request share operation.

Create a sanitized request share request body

titlestringOptional

optional short label for the share Used by the Create a sanitized request share operation.

expires_in_seconds, ttl_seconds, or ttlstringOptional

optional TTL in seconds; default 7 days, max 30 days Used by the Create a sanitized request share operation.

expires_atdatetimeOptional

optional ISO datetime; clamped to the maximum TTL Used by the Create a sanitized request share operation.

redact_keys or redactKeysarrayOptional

optional array of additional header, query, or body keys to redact Used by the Create a sanitized request share operation.

include_bodybooleanOptional

optional boolean; set false to omit body content Used by the Create a sanitized request share operation.

GET
/v1/shares/request/:token

Retrieve a sanitized request share

Returns a sanitized request snapshot by share token. This endpoint is public because the token acts as a bearer share link.

Retrieve a sanitized request share input parameters

Retrieve a sanitized request share accepts the route, header, query, and body inputs listed below.

Retrieve a sanitized request share path parameters

tokenstringRequired

Resource ID from the route. Used by the Retrieve a sanitized request share operation.

Retrieve a sanitized request share notes

  • Expired, revoked, missing, or malformed tokens return 404 or 410.
  • The response contains the sanitized snapshot only, not the original stored request payload.
POST
/v1/requests/:id/retry

Retry a request

Queues a source replay for a previously received request. Send modifications to replay with edited method, path, query, headers, or body.

Retry a request input parameters

Retry a request accepts the route, header, query, and body inputs listed below.

Retry a request path parameters

idstringRequired

Request ID. Used by the Retry a request operation.

Retry a request request body

modifications.methodstringOptional

optional HTTP method override Used by the Retry a request operation.

modifications.pathstringOptional

optional request path override Used by the Retry a request operation.

modifications.queryobjectOptional

optional query string or object override Used by the Retry a request operation.

modifications.headersobjectOptional

optional object of replay headers Used by the Retry a request operation.

modifications.bodystringOptional

optional replay body string or JSON value Used by the Retry a request operation.

GET
/v1/requests/:id/events

List request events

Returns delivery events produced from one request.

List request events input parameters

List request events accepts the route, header, query, and body inputs listed below.

List request events path parameters

idstringRequired

Request ID. Used by the List request events operation.

List request events query parameters

statusenumOptional

SCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED Used by the List request events operation.

GET
/v1/requests/:id/ignored_events

List ignored request events

Returns connection-level ignored events for one request.

List ignored request events input parameters

List ignored request events accepts the route, header, query, and body inputs listed below.

List ignored request events path parameters

idstringRequired

Request ID. Used by the List ignored request events operation.

GET
/v1/requests/bulk_operations

List request bulk operations

Returns request bulk retry operations.

List request bulk operations input parameters

List request bulk operations accepts the route, header, query, and body inputs listed below.

List request bulk operations query parameters

bucketenumOptional

all | ongoing | history Used by the List request bulk operations operation.

limitintegerOptional

Maximum number of records to return. Used by the List request bulk operations operation.

POST
/v1/requests/bulk_operations

Create request bulk operation

Creates a bulk retry operation from filters.

Create request bulk operation input parameters

Create request bulk operation accepts the route, header, query, and body inputs listed below.

Create request bulk operation request body

fromdatetimeOptional

Lower bound for matching inbound requests; accepts an ISO datetime or a relative value such as now-1h Used by the Create request bulk operation operation.

todatetimeOptional

Upper bound for matching inbound requests; accepts an ISO datetime or a relative value such as now Used by the Create request bulk operation operation.

statusenumOptional

accepted | rejected Used by the Create request bulk operation operation.

source_idstringOptional

Source ID used to filter inbound requests or routed events. Used by the Create request bulk operation operation.

qstringOptional

Text search query. Used by the Create request bulk operation operation.

POST
/v1/requests/bulk_operations/:id/cancel

Cancel request bulk operation

Cancels a planned or running request bulk operation.

Cancel request bulk operation input parameters

Cancel request bulk operation accepts the route, header, query, and body inputs listed below.

Cancel request bulk operation path parameters

idstringRequired

Bulk operation ID. Used by the Cancel request bulk operation operation.

Events

Events are outbound delivery records created from accepted requests.

Events response fields

28 fields
idevt_*

Unique outbound event ID. Event IDs use the evt_ prefix.

team_id

Team that owns the outbound event.

request_id

Inbound request that produced the outbound event.

connection_id

Connection that routed the event from source to destination.

webhook_id

Legacy alias for the connection ID.

source_id

Source that received the original inbound request.

destination_id

Destination selected for outbound delivery.

cli_id

CLI tunnel identifier when the event targets a local tunnel, otherwise null.

event_data_id

Stored payload record for the outbound event data.

statusSCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED

Current delivery state of the outbound event.

rejection_cause

Reason the event was rejected before delivery, or null when not rejected.

failure_message

Human-readable failure message for failed delivery states.

ignored_reason

Reason the event was ignored by routing rules, or null when delivered.

ingested_at

ISO timestamp inherited from the inbound request ingestion time.

attempts

Number of delivery attempts made for this event.

response_status

HTTP status from the latest delivery response, when available.

last_attempt_at

ISO timestamp of the latest delivery attempt.

next_attempt_at

ISO timestamp when the next retry is scheduled, or null when none is scheduled.

successful_at

ISO timestamp when the event was delivered successfully.

error_code

Machine-readable error code for the latest failed attempt.

is_retry

Whether the event was created by retrying a previous event.

retry_kindsingle | bulk

Retry origin, such as single retry or bulk retry.

retry_parent_event_id

Original event ID when this event was created by a retry.

retry_operation_id

Bulk operation ID that created the retry event, when applicable.

retried_at

ISO timestamp when the event retry was queued.

data

Stored request and response payload data when included.

created_at

ISO timestamp when the event record was created.

updated_at

ISO timestamp when the event record was last changed.

GET
/v1/events

List events

Returns outbound events across the requested date range.

List events input parameters

List events accepts the route, header, query, and body inputs listed below.

List events query parameters

fromdatetimeOptional

ISO datetime or relative time for the start of the event window Used by the List events operation.

todatetimeOptional

ISO datetime or relative time for the end of the event window Used by the List events operation.

limitintegerOptional

default 100, max 100 Used by the List events operation.

cursorstringOptional

opaque next_cursor or next value Used by the List events operation.

statusenumOptional

SCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED Used by the List events operation.

source_idstringOptional

Source ID used to filter inbound requests or routed events. Used by the List events operation.

connection_idstringOptional

Connection ID used to filter routed requests or events. Used by the List events operation.

destination_idstringOptional

Destination ID used to filter outbound events. Used by the List events operation.

batch_operation_idstringOptional

Bulk operation ID used to filter matching requests or events. Used by the List events operation.

q or search_termstringOptional

Text search query; search_term is accepted as an alias. Used by the List events operation.

List events notes

  • For event listings, total is exact and total_exact is true when next_cursor is null.
  • When next_cursor is present, total is a lower bound for the current query; use /v1/events/count for an exact total.
GET
/v1/events/count

Count events

Returns the event count matching filters.

Count events input parameters

Count events accepts the route, header, query, and body inputs listed below.

Count events query parameters

from or ingested_at[gte]datetimeOptional

ISO datetime or relative lower bound for event ingestion Used by the Count events operation.

to or ingested_at[lte]datetimeOptional

ISO datetime or relative upper bound for event ingestion Used by the Count events operation.

statusenumOptional

SCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED Used by the Count events operation.

source_idstringOptional

Source ID used to filter inbound requests or routed events. Used by the Count events operation.

connection_idstringOptional

Connection ID used to filter routed requests or events. Used by the Count events operation.

destination_idstringOptional

Destination ID used to filter outbound events. Used by the Count events operation.

batch_operation_idstringOptional

Bulk operation ID used to filter matching requests or events. Used by the Count events operation.

q or search_termstringOptional

Text search query; search_term is accepted as an alias. Used by the Count events operation.

Count events notes

  • Counts are evaluated against event records directly; source_id and destination_id are event fields.
GET
/v1/events/:id

Retrieve an event

Returns one event with stored payload data when available.

Retrieve an event input parameters

Retrieve an event accepts the route, header, query, and body inputs listed below.

Retrieve an event path parameters

idstringRequired

Event ID. Used by the Retrieve an event operation.

POST
/v1/events/:id/retry

Retry an event

Queues a retry for one outbound event when its source and connection are enabled and the connection is not paused.

Retry an event input parameters

Retry an event accepts the route, header, query, and body inputs listed below.

Retry an event path parameters

idstringRequired

Event ID. Used by the Retry an event operation.

GET
/v1/events/bulk_operations

List event bulk operations

Returns event bulk retry operations.

List event bulk operations input parameters

List event bulk operations accepts the route, header, query, and body inputs listed below.

List event bulk operations query parameters

bucketenumOptional

all | ongoing | history Used by the List event bulk operations operation.

limitintegerOptional

Maximum number of records to return. Used by the List event bulk operations operation.

GET
/v1/events/bulk_operations/:id

Retrieve an event bulk operation

Returns the current status and progress counters for one event bulk retry operation.

Retrieve an event bulk operation input parameters

Retrieve an event bulk operation accepts the route, header, query, and body inputs listed below.

Retrieve an event bulk operation path parameters

idstringRequired

Bulk operation ID. Used by the Retrieve an event bulk operation operation.

POST
/v1/events/bulk_operations

Create event bulk operation

Creates a bulk event retry operation from filters.

Create event bulk operation input parameters

Create event bulk operation accepts the route, header, query, and body inputs listed below.

Create event bulk operation request body

fromdatetimeOptional

Lower bound on event ingestion time; accepts an ISO datetime or a relative value such as now-1h Used by the Create event bulk operation operation.

todatetimeOptional

Upper bound on event ingestion time; accepts an ISO datetime or a relative value such as now Used by the Create event bulk operation operation.

statusenumOptional

SCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED Used by the Create event bulk operation operation.

source_idstringOptional

Source ID used to filter inbound requests or routed events. Used by the Create event bulk operation operation.

connection_idstringOptional

Connection ID used to filter routed requests or events. Used by the Create event bulk operation operation.

destination_idstringOptional

Destination ID used to filter outbound events. Used by the Create event bulk operation operation.

qstringOptional

Text search query. Used by the Create event bulk operation operation.

POST
/v1/events/bulk_operations/:id/cancel

Cancel event bulk operation

Cancels a planned or running event bulk operation.

Cancel event bulk operation input parameters

Cancel event bulk operation accepts the route, header, query, and body inputs listed below.

Cancel event bulk operation path parameters

idstringRequired

Bulk operation ID. Used by the Cancel event bulk operation operation.

Attempts

Attempts are individual outbound delivery attempts for events, including response details, retry context, and timing.

Attempts response fields

23 fields
idatt_*

Unique delivery attempt ID. Attempt IDs use the att_ prefix.

team_id

Team that owns the delivery attempt.

event_id

Outbound event this delivery attempt belongs to.

request_id

Inbound request that produced the attempted event, included when the event record is available.

connection_id

Connection that routed the attempted event, included when the event record is available.

source_id

Source that received the original inbound request, included when the event record is available.

destination_id

Destination that received the delivery attempt.

response_status

HTTP response status returned by the destination, or null when unavailable.

attempt_number

Delivery attempt sequence number for the event.

triggerINITIAL | AUTOMATIC | MANUAL | BULK_RETRY | UNPAUSE

Reason the attempt was created, such as initial delivery, automatic retry, manual retry, bulk retry, or unpause.

error_code

Machine-readable failure code when delivery failed.

body

Response body captured from the destination.

requested_url

Final URL FastHook attempted to deliver to.

http_method

HTTP method used for the delivery attempt.

bulk_retry_id

Bulk retry operation that created the attempt, when applicable.

statusSUCCESSFUL | FAILED

Final delivery attempt result.

successful_at

ISO timestamp when the attempt succeeded, or null when failed.

delivered_at

ISO timestamp when FastHook sent the request to the destination.

responded_at

ISO timestamp when FastHook received the destination response.

delivery_latency

Milliseconds spent preparing and sending the delivery.

response_latency

Milliseconds between delivery and destination response.

created_at

ISO timestamp when the attempt record was created.

updated_at

ISO timestamp when the attempt record was last changed.

GET
/v1/attempts

List attempts

Returns delivery attempts for the active team. Filter by one or more event IDs to inspect delivery history for specific events.

List attempts input parameters

List attempts accepts the route, header, query, and body inputs listed below.

List attempts query parameters

event_id or event_id[]arrayOptional

Event ID filter. Repeat the parameter to filter by multiple events. Used by the List attempts operation.

request_idstringOptional

Optional exact Request ID filter and shard-routing hint when one event_id is supplied. Used by the List attempts operation.

destination_id or destination_id[]arrayOptional

Destination ID filter. Repeat the parameter to filter by multiple destinations. Used by the List attempts operation.

statusenumOptional

FAILED | SUCCESSFUL Used by the List attempts operation.

fromdatetimeOptional

ISO timestamp or relative time expression such as now-1h. Used by the List attempts operation.

todatetimeOptional

ISO timestamp or relative time expression such as now. Used by the List attempts operation.

qstringOptional

search attempt, event, destination, error code, requested URL, or request ID. Used by the List attempts operation.

order_bystringOptional

Sort field. Currently created_at. Used by the List attempts operation.

direnumOptional

asc | desc, default desc Used by the List attempts operation.

limitintegerOptional

default 100, max 255 Used by the List attempts operation.

nextstringOptional

Opaque cursor from pagination.next. Used by the List attempts operation.

prevstringOptional

Opaque cursor from pagination.prev. Used by the List attempts operation.

List attempts notes

  • Use either next or prev from pagination for cursor pagination.
  • Attempts preserve per-delivery response details while events keep aggregate delivery status.
GET
/v1/attempts/:id

Retrieve an attempt

Returns one delivery attempt for the active team.

Retrieve an attempt input parameters

Retrieve an attempt accepts the route, header, query, and body inputs listed below.

Retrieve an attempt path parameters

idstringRequired

Attempt ID. Used by the Retrieve an attempt operation.

Retrieve an attempt query parameters

request_idstringOptional

Optional Request ID routing hint copied from the Attempt model; avoids a cross-shard lookup. Used by the Retrieve an attempt operation.

Retrieve an attempt notes

  • Returns 404 when the attempt does not exist or is outside the active team.
  • The request_id hint is optional; omitted or stale hints retain the compatible fallback lookup.

Metrics

Metrics endpoints include zero-filled time series for request and event histograms, plus compact 24 hour summaries for source, destination, and transformation list views.

Metrics response fields

43 fields
date_range.start

Start of the returned metrics range.

date_range.end

End of the returned metrics range.

granularity1s | 5s | 10s | 30s | 1m | 5m | 15m | 1h

Time bucket size used for the returned series.

series[].timestamp

Start timestamp for a metrics bucket.

series[].count

Total records counted in the bucket.

series[].accepted_count

Inbound requests accepted in the bucket.

series[].rejected_count

Inbound requests rejected in the bucket.

series[].delivered_count

Outbound events delivered successfully in the bucket.

series[].failed_count

Outbound events failed in the bucket.

series[].queued_count

Outbound events queued in the bucket.

series[].processing_count

Outbound events processing in the bucket.

series[].hold_count

Outbound events held for retry or scheduling in the bucket.

series[].ignored_count

Outbound events ignored in the bucket.

models[].id

models[].id field returned by the Metrics API.

models[].source_id

models[].source_id field returned by the Metrics API.

models[].connection_id

Connection ID for a compact metrics row.

models[].webhook_id

Legacy alias of connection_id.

models[].destination_id

models[].destination_id field returned by the Metrics API.

models[].transformation_id

Transformation ID for a compact metrics row.

models[].requests_24h_count

models[].requests_24h_count field returned by the Metrics API.

models[].requests_24h_total_count

models[].requests_24h_total_count field returned by the Metrics API.

models[].requests_24h_accepted_count

models[].requests_24h_accepted_count field returned by the Metrics API.

models[].requests_24h_rejected_count

models[].requests_24h_rejected_count field returned by the Metrics API.

models[].requests_24h_accepted_bins

models[].requests_24h_accepted_bins field returned by the Metrics API.

models[].requests_24h_rejected_bins

models[].requests_24h_rejected_bins field returned by the Metrics API.

models[].connections_count

Connections that reference the source or transformation in this metrics row.

models[].events_24h_count

Events routed through the connection in the last 24 hours.

models[].events_24h_successful_count

Successful connection events in the last 24 hours.

models[].events_24h_failed_count

Failed connection events in the last 24 hours.

models[].events_24h_pending_count

Scheduled, queued, or held connection events in the last 24 hours.

models[].events_24h_cancelled_count

Cancelled connection events in the last 24 hours.

models[].events_24h_bins

Six buckets, oldest to newest, of all connection events in the last 24 hours.

models[].events_24h_successful_bins

Six buckets of successful connection events.

models[].events_24h_failed_bins

Six buckets of failed connection events.

models[].events_24h_pending_bins

Six buckets of pending connection events.

models[].events_24h_cancelled_bins

Six buckets of cancelled connection events.

models[].attempts_24h_count

models[].attempts_24h_count field returned by the Metrics API.

models[].attempts_24h_bins

models[].attempts_24h_bins field returned by the Metrics API.

models[].executions_24h_count

Transformation executions recorded in the last 24 hours.

models[].executions_24h_successful_count

Transformation executions without error-level logs in the last 24 hours.

models[].executions_24h_failed_count

Transformation executions with error-level logs in the last 24 hours.

models[].executions_24h_successful_bins

Per-model six-bucket history of successful transformation executions during the last 24 hours.

models[].executions_24h_failed_bins

Per-model six-bucket history of failed transformation executions during the last 24 hours.

GET
/v1/metrics/requests

Request metrics

Returns request histogram metrics with request-specific measures.

Request metrics input parameters

Request metrics accepts the route, header, query, and body inputs listed below.

Request metrics query parameters

date_range[start]datetimeRequired

ISO datetime, required Used by the Request metrics operation.

date_range[end]datetimeRequired

ISO datetime, required Used by the Request metrics operation.

granularityenumOptional

1s | 5s | 10s | 30s | 1m | 5m | 15m | 1h Used by the Request metrics operation.

measures[]arrayOptional

count | accepted_count | rejected_count Used by the Request metrics operation.

source_idstringOptional

Source ID used to filter inbound requests or routed events. Used by the Request metrics operation.

batch_operation_idstringOptional

Bulk operation ID used to filter matching requests or events. Used by the Request metrics operation.

statusenumOptional

accepted | rejected Used by the Request metrics operation.

qstringOptional

Text search query. Used by the Request metrics operation.

GET
/v1/metrics/events

Event metrics

Returns event histogram metrics with event-specific measures.

Event metrics input parameters

Event metrics accepts the route, header, query, and body inputs listed below.

Event metrics query parameters

date_range[start]datetimeRequired

ISO datetime, required Used by the Event metrics operation.

date_range[end]datetimeRequired

ISO datetime, required Used by the Event metrics operation.

granularityenumOptional

1s | 5s | 10s | 30s | 1m | 5m | 15m | 1h Used by the Event metrics operation.

measures[]arrayOptional

count | delivered_count | failed_count | queued_count | processing_count | hold_count | ignored_count Used by the Event metrics operation.

source_idstringOptional

Source ID used to filter inbound requests or routed events. Used by the Event metrics operation.

connection_idstringOptional

Connection ID used to filter routed requests or events. Used by the Event metrics operation.

destination_idstringOptional

Destination ID used to filter outbound events. Used by the Event metrics operation.

batch_operation_idstringOptional

Bulk operation ID used to filter matching requests or events. Used by the Event metrics operation.

statusenumOptional

SCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED Used by the Event metrics operation.

qstringOptional

Text search query. Used by the Event metrics operation.

GET
/v1/metrics/sources

Source summary metrics

Returns compact 24 hour request and connection metrics for one or more sources.

Source summary metrics input parameters

Source summary metrics accepts the route, header, query, and body inputs listed below.

Source summary metrics query parameters

idstringOptional

Source ID. Repeat the parameter or pass comma-separated IDs. Used by the Source summary metrics operation.

idsstringOptional

Plural alias for id; accepts repeated or comma-separated source IDs. Used by the Source summary metrics operation.

source_idstringOptional

Singular source-specific alias for id. Used by the Source summary metrics operation.

source_idsstringOptional

Plural source-specific alias for id. Used by the Source summary metrics operation.

Source summary metrics notes

  • Use this after GET /v1/sources so the source list response stays lightweight.
  • Source request bins are ordered oldest to newest across the last 24 hours.
GET
/v1/metrics/connections

Connection summary metrics

Returns compact 24 hour event status metrics for one or more routing connections.

Connection summary metrics input parameters

Connection summary metrics accepts the route, header, query, and body inputs listed below.

Connection summary metrics query parameters

idstringOptional

Connection ID. Repeat the parameter or pass comma-separated IDs. Used by the Connection summary metrics operation.

connection_idstringOptional

Alias for id. Used by the Connection summary metrics operation.

webhook_idstringOptional

Legacy alias for id. Used by the Connection summary metrics operation.

Connection summary metrics notes

  • Use this after GET /v1/connections so the connection list response stays lightweight.
  • Connection event bins are ordered oldest to newest across the last 24 hours.
GET
/v1/metrics/destinations

Destination summary metrics

Returns compact 24 hour delivery attempt metrics for one or more destinations.

Destination summary metrics input parameters

Destination summary metrics accepts the route, header, query, and body inputs listed below.

Destination summary metrics query parameters

idstringOptional

Destination ID. Repeat the parameter or pass comma-separated IDs. Used by the Destination summary metrics operation.

idsstringOptional

Plural alias for id; accepts repeated or comma-separated destination IDs. Used by the Destination summary metrics operation.

destination_idstringOptional

Singular destination-specific alias for id. Used by the Destination summary metrics operation.

destination_idsstringOptional

Plural destination-specific alias for id. Used by the Destination summary metrics operation.

Destination summary metrics notes

  • Use this after GET /v1/destinations so the destination list response stays lightweight.
  • Destination attempt bins are ordered oldest to newest across the last 24 hours.
GET
/v1/metrics/transformations

Transformation summary metrics

Returns compact 24 hour execution and connection metrics for one or more transformations.

Transformation summary metrics input parameters

Transformation summary metrics accepts the route, header, query, and body inputs listed below.

Transformation summary metrics query parameters

idstringOptional

Transformation ID. Repeat the parameter or pass comma-separated IDs. Used by the Transformation summary metrics operation.

idsstringOptional

Plural alias for id; accepts repeated or comma-separated transformation IDs. Used by the Transformation summary metrics operation.

transformation_idstringOptional

Singular transformation-specific alias for id. Used by the Transformation summary metrics operation.

transformation_idsstringOptional

Plural transformation-specific alias for id. Used by the Transformation summary metrics operation.

Transformation summary metrics notes

  • Use this after GET /v1/transformations so the transformation list response stays lightweight.
  • Transformation execution bins are ordered oldest to newest across the last 24 hours.

Errors

Errors are returned as JSON with a status code and a human-readable message.

Errors response fields

4 fields
error

Short error label returned by the API.

code

Machine-readable error code for programmatic handling.

message

Human-readable explanation of the error.

data

Optional structured details for conflict or validation errors.

GET
/v1/sources/:id

Error format

Most errors include error/message fields, and some conflict responses include code and data.

Error format input parameters

Error format accepts the route, header, query, and body inputs listed below.

Error format path parameters

idstringRequired

Source ID. Used by the Error format operation.

Error format notes

  • 401 means authentication is missing or invalid.
  • 403 means the authenticated principal cannot access the team.
  • 404 means the resource or route was not found.
  • 409 is used for duplicate resources or retry conflicts.