API Reference

Event Gateway API Reference

Complete REST API reference for building webhook infrastructure with FastHook: create webhook sources, configure HTTP destinations, connect routing rules, inspect inbound requests, retry failed delivery events, run bulk replay operations, transform payloads, query metrics, and manage authentication or project secrets.

Use these endpoints to automate event gateway workflows, debug webhook delivery, count requests and events by time range, and operate replay-safe webhook 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.

83 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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Authentication

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

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Request body

id_token or credentialstringRequired

required Google ID token

team_idstringOptional

optional team ID used to scope the session

POST
/v1/auth/demo/login

Login with demo user

Creates a demo session for local exploration and demo flows.

Input parameters

This endpoint does not require path, query, or body parameters.

GET
/v1/auth/me

Get current profile

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

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

PATCHPUT
/v1/auth/me

Update profile

Updates editable fields on the current user's profile.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

nameintegerRequired

required string, max 120 characters

Notes

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

Logout

Invalidates the current session token.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Sources

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

Response fields

15 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.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.

GET
/v1/sources

List sources

Returns configured sources for the active team.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

idstringOptional

optional ID filter, comma-separated or repeated

namestringOptional

optional exact name filter

typestringOptional

optional resource type filter

disabledstringOptional

false excludes disabled resources

order_byenumOptional

name | created_at | updated_at

direnumOptional

asc | desc

limitintegerOptional

max 255

GET
/v1/sources/:id

Retrieve a source

Returns one source by id.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Source ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

POST
/v1/sources

Create a source

Creates a source. type defaults to WEBHOOK.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

namestringRequired

required string

descriptionstringOptional

optional string or null

typestringOptional

optional string, 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.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_msstringOptional

optional 1000-30000 upstream timeout in milliseconds

config.proxy.response_capture_limit_bytesstringOptional

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

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

namestringRequired

required string

descriptionstringOptional

optional string or null

typestringOptional

optional string, 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.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_msstringOptional

optional 1000-30000 upstream timeout in milliseconds

config.proxy.response_capture_limit_bytesstringOptional

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

PUTPATCH
/v1/sources/:id

Update a source

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

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Source ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

namestringOptional

optional string

descriptionstringOptional

optional string or null

typestringOptional

optional string

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.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_msstringOptional

optional 1000-30000 upstream timeout in milliseconds

config.proxy.response_capture_limit_bytesstringOptional

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

PUTPOST
/v1/sources/:id/disable

Disable a source

Disables a source and disables related connections.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Source ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Notes

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

Enable a source

Enables a previously disabled source.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Source ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Notes

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

Delete a source

Deletes a source by id.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Source ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Destinations

Destinations are outbound endpoints that receive routed events.

Response fields

24 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 | MOCK_API | GOOGLE_SHEET | GMAIL | SENDGRID_EMAIL | SLACK | DISCORD_WEBHOOK | TELEGRAM_MESSAGE | CLOUDFLARE_R2 | AWS_S3 | TWILIO_WHATSAPP | TWILIO_SMS | TWILIO_MMS

Destination implementation type: HTTP, CLI, MOCK_API, GOOGLE_SHEET, GMAIL, SENDGRID_EMAIL, SLACK, DISCORD_WEBHOOK, TELEGRAM_MESSAGE, CLOUDFLARE_R2, AWS_S3, TWILIO_WHATSAPP, TWILIO_SMS, or TWILIO_MMS.

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

HTTP delivery URL, CLI/mock path, sheet-specific Google Sheet settings, Gmail email settings, SendGrid email settings, Slack channel settings, Discord webhook settings, Telegram message settings, Cloudflare R2 archive settings, AWS S3 archive settings, Twilio WhatsApp settings, Twilio SMS settings, or Twilio MMS 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, SENDGRID_API_KEY, SLACK_BOT_TOKEN, R2_ACCESS_KEY, AWS_ACCESS_KEY, TWILIO_AUTH_TOKEN, or Google Sheet service account auth.

config.auth

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

config.spreadsheet_id

Google Sheet spreadsheet ID for GOOGLE_SHEET destinations.

config.sheet_name

Google Sheet tab name; defaults to Sheet1.

config.value_input_option

Google Sheets value input mode: RAW or USER_ENTERED.

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 GOOGLE_SHEET, 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.

GET
/v1/destinations

List destinations

Returns configured destinations with 24 hour attempt metrics.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

idstringOptional

optional ID filter, comma-separated or repeated

namestringOptional

optional exact name filter

typestringOptional

optional resource type filter

disabledstringOptional

false excludes disabled resources

order_byenumOptional

name | created_at | updated_at

direnumOptional

asc | desc

limitintegerOptional

max 255

GET
/v1/destinations/:id

Retrieve a destination

Returns a destination by id.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Destination ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

POST
/v1/destinations

Create a destination

Creates a destination. type defaults to HTTP.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

namestringRequired

required string

descriptionstringOptional

optional string or null

typeenumOptional

HTTP | CLI | MOCK_API | GOOGLE_SHEET | GMAIL | SENDGRID_EMAIL | SLACK | DISCORD_WEBHOOK | TELEGRAM_MESSAGE | CLOUDFLARE_R2 | AWS_S3 | TWILIO_WHATSAPP | TWILIO_SMS | TWILIO_MMS

config.url, config.path, Google Sheet config, Gmail config, SendGrid Email config, Slack config, Discord Webhook config, Telegram Message config, Cloudflare R2 config, AWS S3 config, Twilio WhatsApp config, Twilio SMS config, or Twilio MMS configstringRequired

required destination target

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_typeintegerOptional

null | NO_AUTH | FASTHOOK_SIGNATURE | CUSTOM_HEADER | OAUTH2_CLIENT_CREDENTIALS | OAUTH2_AUTHORIZATION_CODE | GOOGLE_SERVICE_ACCOUNT | GOOGLE_OAUTH_REFRESH_TOKEN | SENDGRID_API_KEY | SLACK_BOT_TOKEN | R2_ACCESS_KEY | AWS_ACCESS_KEY | TWILIO_AUTH_TOKEN

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.spreadsheet_idstringRequired

required for GOOGLE_SHEET

config.sheet_namestringOptional

optional for GOOGLE_SHEET, defaults to Sheet1

config.value_input_optionenumOptional

RAW | USER_ENTERED

config.columnsarrayOptional

optional array of dotted payload or metadata paths

config.include_metadatabooleanOptional

optional boolean

config.toarrayRequired

required for GMAIL; string or array of recipient templates

config.cc/config.bcc/config.reply_tostringOptional

optional for GMAIL

config.subjectstringOptional

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

config.text_template/config.html_templatestringOptional

optional for GMAIL

config.auth_typestringOptional

GOOGLE_OAUTH_REFRESH_TOKEN for GMAIL

config.auth.client_id/client_secret/refresh_tokenstringRequired

required for GMAIL

config.auth.scopestringOptional

https://www.googleapis.com/auth/gmail.send for GMAIL

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.channelstringRequired

required for SLACK; channel name or channel ID, with IDs preferred for private or renamed channels

config.text_templatestringRequired

required message text template for SLACK; also used as Slack fallback text when blocks are present

config.blocks_templatearrayOptional

optional JSON string for Slack Block Kit blocks; rendered template must become an array or an object with a blocks array

config.auth_typestringOptional

SLACK_BOT_TOKEN for SLACK

config.auth.bot_tokenstringRequired

required xoxb- Slack bot token for SLACK

Slack bot token needs chatstringOptional

write; add chat:write.public only when posting to public channels without inviting the app first

Invite the Slack app bot to private channels and to public channels when chatstringOptional

write.public is not used

config.webhook_urlstringRequired

required for DISCORD_WEBHOOK; Discord execute webhook URL

config.content_templatestringOptional

optional message content template for DISCORD_WEBHOOK, defaults to FastHook event {{event_id}} and {{payload}}

config.username_template/config.avatar_url_templatestringOptional

optional webhook sender overrides

config.embeds_templatearrayOptional

optional JSON object or array of Discord embeds after template rendering

config.allowed_mentions_parsearrayOptional

optional array containing roles, users, and/or everyone; defaults to empty to avoid pings

DISCORD_WEBHOOK destinations are fixed at 1 request per secondstringOptional

Request parameter.

config.account_idintegerRequired

required for CLOUDFLARE_R2; client Cloudflare account ID

config.endpointintegerOptional

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

config.tostringRequired

required for TWILIO_WHATSAPP; WhatsApp recipient address or template, usually whatsapp:+E.164

config.fromstringRequired

required for TWILIO_WHATSAPP unless config.messaging_service_sid is set; Sandbox sender is whatsapp:+14155238886

config.body_templatestringRequired

required message body template for TWILIO_WHATSAPP free-form sends

config.messaging_service_sidstringRequired

optional MG... SID; required when config.content_sid is set and common for production sender pools

config.content_sidstringOptional

optional HX... Twilio Content SID for approved WhatsApp templates

config.content_variables_templateobjectOptional

optional JSON object string for Twilio ContentVariables, for example {"1":"{{payload.customer.name}}"}

config.auth_typestringOptional

TWILIO_AUTH_TOKEN for TWILIO_WHATSAPP

config.auth.account_sid/config.auth.auth_tokenintegerRequired

required for TWILIO_WHATSAPP

Sandbox recipients must send join <code> to +14155238886 from the exact WhatsApp account that should receive messagesintegerOptional

Request parameter.

From and To must be different WhatsApp addresses; Twilio error 63031 means they are the samestringOptional

Request parameter.

Twilio error 63015 usually means the Sandbox recipient has not joined the current SandboxstringOptional

Request parameter.

config.tostringRequired

required for TWILIO_SMS; SMS recipient phone number or template, usually +E.164

config.fromstringRequired

required for TWILIO_SMS unless config.messaging_service_sid is set; SMS-capable Twilio number, short code, or alphanumeric sender ID

config.body_templatestringRequired

required message body template for TWILIO_SMS; supports {{payload.message}} and shorthand {{message}}

config.messaging_service_sidstringOptional

optional MG... SID for Twilio Messaging Service sender pools

config.auth_typestringOptional

TWILIO_AUTH_TOKEN for TWILIO_SMS

config.auth.account_sid/config.auth.auth_tokenintegerRequired

required for TWILIO_SMS

Trial accounts can usually send SMS only to verified recipient numbers; Twilio error 21608 means the To number needs verificationintegerOptional

Request parameter.

Enable Twilio SMS Geo Permissions for the destination country; Twilio error 21408 means that country is not enabledintegerOptional

Request parameter.

Twilio error 21606 usually means the From sender is not SMS-capable for that recipientstringOptional

Request parameter.

config.tostringRequired

required for TWILIO_MMS; MMS recipient phone number or template, usually +E.164

config.fromstringRequired

required for TWILIO_MMS unless config.messaging_service_sid is set; MMS-capable Twilio number

config.body_templatestringRequired

required message body template for TWILIO_MMS; supports {{payload.message}} and shorthand {{message}}

config.media_urlsarrayRequired

required array of one to ten public HTTP or HTTPS media URLs; template tokens such as {{payload.media_url}} and {{media_url}} are supported

config.messaging_service_sidstringOptional

optional MG... SID for Twilio Messaging Service sender pools

config.auth_typestringOptional

TWILIO_AUTH_TOKEN for TWILIO_MMS

config.auth.account_sid/config.auth.auth_tokenintegerRequired

required for TWILIO_MMS

Trial accounts can usually send only to verified recipient numbers; Twilio error 21608 means the To number needs verificationintegerOptional

Request parameter.

Enable Twilio Messaging Geo Permissions for the destination country; Twilio error 21408 means that country is not enabledintegerOptional

Request parameter.

The sender, Messaging Service, country, and carrier route must support MMS; SMS support alone does not guarantee MMS deliveryintegerOptional

Request parameter.

PUT
/v1/destinations

Upsert a destination

Creates or updates a destination by name.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

namestringRequired

required string

descriptionstringOptional

optional string or null

typeenumOptional

HTTP | CLI | MOCK_API | GOOGLE_SHEET | GMAIL | SENDGRID_EMAIL | SLACK | DISCORD_WEBHOOK | TELEGRAM_MESSAGE | CLOUDFLARE_R2 | AWS_S3 | TWILIO_WHATSAPP | TWILIO_SMS | TWILIO_MMS

config.url, config.path, Google Sheet config, Gmail config, SendGrid Email config, Slack config, Discord Webhook config, Telegram Message config, Cloudflare R2 config, AWS S3 config, Twilio WhatsApp config, Twilio SMS config, or Twilio MMS configstringRequired

required destination target

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_typeintegerOptional

null | NO_AUTH | FASTHOOK_SIGNATURE | CUSTOM_HEADER | OAUTH2_CLIENT_CREDENTIALS | OAUTH2_AUTHORIZATION_CODE | GOOGLE_SERVICE_ACCOUNT | GOOGLE_OAUTH_REFRESH_TOKEN | SENDGRID_API_KEY | SLACK_BOT_TOKEN | R2_ACCESS_KEY | AWS_ACCESS_KEY | TWILIO_AUTH_TOKEN

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.spreadsheet_idstringRequired

required for GOOGLE_SHEET

config.sheet_namestringOptional

optional for GOOGLE_SHEET, defaults to Sheet1

config.value_input_optionenumOptional

RAW | USER_ENTERED

config.columnsarrayOptional

optional array of dotted payload or metadata paths

config.include_metadatabooleanOptional

optional boolean

config.toarrayRequired

required for GMAIL; string or array of recipient templates

config.cc/config.bcc/config.reply_tostringOptional

optional for GMAIL

config.subjectstringOptional

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

config.text_template/config.html_templatestringOptional

optional for GMAIL

config.auth_typestringOptional

GOOGLE_OAUTH_REFRESH_TOKEN for GMAIL

config.auth.client_id/client_secret/refresh_tokenstringRequired

required for GMAIL

config.auth.scopestringOptional

https://www.googleapis.com/auth/gmail.send for GMAIL

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.channelstringRequired

required for SLACK; channel name or channel ID, with IDs preferred for private or renamed channels

config.text_templatestringRequired

required message text template for SLACK; also used as Slack fallback text when blocks are present

config.blocks_templatearrayOptional

optional JSON string for Slack Block Kit blocks; rendered template must become an array or an object with a blocks array

config.auth_typestringOptional

SLACK_BOT_TOKEN for SLACK

config.auth.bot_tokenstringRequired

required xoxb- Slack bot token for SLACK

Slack bot token needs chatstringOptional

write; add chat:write.public only when posting to public channels without inviting the app first

Invite the Slack app bot to private channels and to public channels when chatstringOptional

write.public is not used

config.webhook_urlstringRequired

required for DISCORD_WEBHOOK; Discord execute webhook URL

config.content_templatestringOptional

optional message content template for DISCORD_WEBHOOK, defaults to FastHook event {{event_id}} and {{payload}}

config.username_template/config.avatar_url_templatestringOptional

optional webhook sender overrides

config.embeds_templatearrayOptional

optional JSON object or array of Discord embeds after template rendering

config.allowed_mentions_parsearrayOptional

optional array containing roles, users, and/or everyone; defaults to empty to avoid pings

DISCORD_WEBHOOK destinations are fixed at 1 request per secondstringOptional

Request parameter.

config.account_idintegerRequired

required for CLOUDFLARE_R2; client Cloudflare account ID

config.endpointintegerOptional

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

config.tostringRequired

required for TWILIO_WHATSAPP; WhatsApp recipient address or template, usually whatsapp:+E.164

config.fromstringRequired

required for TWILIO_WHATSAPP unless config.messaging_service_sid is set; Sandbox sender is whatsapp:+14155238886

config.body_templatestringRequired

required message body template for TWILIO_WHATSAPP free-form sends

config.messaging_service_sidstringRequired

optional MG... SID; required when config.content_sid is set and common for production sender pools

config.content_sidstringOptional

optional HX... Twilio Content SID for approved WhatsApp templates

config.content_variables_templateobjectOptional

optional JSON object string for Twilio ContentVariables, for example {"1":"{{payload.customer.name}}"}

config.auth_typestringOptional

TWILIO_AUTH_TOKEN for TWILIO_WHATSAPP

config.auth.account_sid/config.auth.auth_tokenintegerRequired

required for TWILIO_WHATSAPP

Sandbox recipients must send join <code> to +14155238886 from the exact WhatsApp account that should receive messagesintegerOptional

Request parameter.

From and To must be different WhatsApp addresses; Twilio error 63031 means they are the samestringOptional

Request parameter.

Twilio error 63015 usually means the Sandbox recipient has not joined the current SandboxstringOptional

Request parameter.

config.tostringRequired

required for TWILIO_SMS; SMS recipient phone number or template, usually +E.164

config.fromstringRequired

required for TWILIO_SMS unless config.messaging_service_sid is set; SMS-capable Twilio number, short code, or alphanumeric sender ID

config.body_templatestringRequired

required message body template for TWILIO_SMS; supports {{payload.message}} and shorthand {{message}}

config.messaging_service_sidstringOptional

optional MG... SID for Twilio Messaging Service sender pools

config.auth_typestringOptional

TWILIO_AUTH_TOKEN for TWILIO_SMS

config.auth.account_sid/config.auth.auth_tokenintegerRequired

required for TWILIO_SMS

Trial accounts can usually send SMS only to verified recipient numbers; Twilio error 21608 means the To number needs verificationintegerOptional

Request parameter.

Enable Twilio SMS Geo Permissions for the destination country; Twilio error 21408 means that country is not enabledintegerOptional

Request parameter.

Twilio error 21606 usually means the From sender is not SMS-capable for that recipientstringOptional

Request parameter.

config.tostringRequired

required for TWILIO_MMS; MMS recipient phone number or template, usually +E.164

config.fromstringRequired

required for TWILIO_MMS unless config.messaging_service_sid is set; MMS-capable Twilio number

config.body_templatestringRequired

required message body template for TWILIO_MMS; supports {{payload.message}} and shorthand {{message}}

config.media_urlsarrayRequired

required array of one to ten public HTTP or HTTPS media URLs; template tokens such as {{payload.media_url}} and {{media_url}} are supported

config.messaging_service_sidstringOptional

optional MG... SID for Twilio Messaging Service sender pools

config.auth_typestringOptional

TWILIO_AUTH_TOKEN for TWILIO_MMS

config.auth.account_sid/config.auth.auth_tokenintegerRequired

required for TWILIO_MMS

Trial accounts can usually send only to verified recipient numbers; Twilio error 21608 means the To number needs verificationintegerOptional

Request parameter.

Enable Twilio Messaging Geo Permissions for the destination country; Twilio error 21408 means that country is not enabledintegerOptional

Request parameter.

The sender, Messaging Service, country, and carrier route must support MMS; SMS support alone does not guarantee MMS deliveryintegerOptional

Request parameter.

PUT
/v1/destinations/:id

Replace a destination

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

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Destination ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

namestringRequired

required string

descriptionstringOptional

optional string or null

typeenumOptional

HTTP | CLI | MOCK_API | GOOGLE_SHEET | GMAIL | SENDGRID_EMAIL | SLACK | DISCORD_WEBHOOK | TELEGRAM_MESSAGE | CLOUDFLARE_R2 | AWS_S3 | TWILIO_WHATSAPP | TWILIO_SMS | TWILIO_MMS

config.url, config.path, Google Sheet config, Gmail config, SendGrid Email config, Slack config, Discord Webhook config, Telegram Message config, Cloudflare R2 config, AWS S3 config, Twilio WhatsApp config, Twilio SMS config, or Twilio MMS configstringRequired

required destination target

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_typeintegerOptional

null | NO_AUTH | FASTHOOK_SIGNATURE | CUSTOM_HEADER | OAUTH2_CLIENT_CREDENTIALS | OAUTH2_AUTHORIZATION_CODE | GOOGLE_SERVICE_ACCOUNT | GOOGLE_OAUTH_REFRESH_TOKEN | SENDGRID_API_KEY | SLACK_BOT_TOKEN | R2_ACCESS_KEY | AWS_ACCESS_KEY | TWILIO_AUTH_TOKEN

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.spreadsheet_idstringRequired

required for GOOGLE_SHEET

config.sheet_namestringOptional

optional for GOOGLE_SHEET, defaults to Sheet1

config.value_input_optionenumOptional

RAW | USER_ENTERED

config.columnsarrayOptional

optional array of dotted payload or metadata paths

config.include_metadatabooleanOptional

optional boolean

config.toarrayRequired

required for GMAIL; string or array of recipient templates

config.cc/config.bcc/config.reply_tostringOptional

optional for GMAIL

config.subjectstringOptional

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

config.text_template/config.html_templatestringOptional

optional for GMAIL

config.auth_typestringOptional

GOOGLE_OAUTH_REFRESH_TOKEN for GMAIL

config.auth.client_id/client_secret/refresh_tokenstringRequired

required for GMAIL

config.auth.scopestringOptional

https://www.googleapis.com/auth/gmail.send for GMAIL

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.channelstringRequired

required for SLACK; channel name or channel ID, with IDs preferred for private or renamed channels

config.text_templatestringRequired

required message text template for SLACK; also used as Slack fallback text when blocks are present

config.blocks_templatearrayOptional

optional JSON string for Slack Block Kit blocks; rendered template must become an array or an object with a blocks array

config.auth_typestringOptional

SLACK_BOT_TOKEN for SLACK

config.auth.bot_tokenstringRequired

required xoxb- Slack bot token for SLACK

Slack bot token needs chatstringOptional

write; add chat:write.public only when posting to public channels without inviting the app first

Invite the Slack app bot to private channels and to public channels when chatstringOptional

write.public is not used

config.webhook_urlstringRequired

required for DISCORD_WEBHOOK; Discord execute webhook URL

config.content_templatestringOptional

optional message content template for DISCORD_WEBHOOK, defaults to FastHook event {{event_id}} and {{payload}}

config.username_template/config.avatar_url_templatestringOptional

optional webhook sender overrides

config.embeds_templatearrayOptional

optional JSON object or array of Discord embeds after template rendering

config.allowed_mentions_parsearrayOptional

optional array containing roles, users, and/or everyone; defaults to empty to avoid pings

DISCORD_WEBHOOK destinations are fixed at 1 request per secondstringOptional

Request parameter.

config.account_idintegerRequired

required for CLOUDFLARE_R2; client Cloudflare account ID

config.endpointintegerOptional

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

config.tostringRequired

required for TWILIO_WHATSAPP; WhatsApp recipient address or template, usually whatsapp:+E.164

config.fromstringRequired

required for TWILIO_WHATSAPP unless config.messaging_service_sid is set; Sandbox sender is whatsapp:+14155238886

config.body_templatestringRequired

required message body template for TWILIO_WHATSAPP free-form sends

config.messaging_service_sidstringRequired

optional MG... SID; required when config.content_sid is set and common for production sender pools

config.content_sidstringOptional

optional HX... Twilio Content SID for approved WhatsApp templates

config.content_variables_templateobjectOptional

optional JSON object string for Twilio ContentVariables, for example {"1":"{{payload.customer.name}}"}

config.auth_typestringOptional

TWILIO_AUTH_TOKEN for TWILIO_WHATSAPP

config.auth.account_sid/config.auth.auth_tokenintegerRequired

required for TWILIO_WHATSAPP

Sandbox recipients must send join <code> to +14155238886 from the exact WhatsApp account that should receive messagesintegerOptional

Request parameter.

From and To must be different WhatsApp addresses; Twilio error 63031 means they are the samestringOptional

Request parameter.

Twilio error 63015 usually means the Sandbox recipient has not joined the current SandboxstringOptional

Request parameter.

config.tostringRequired

required for TWILIO_SMS; SMS recipient phone number or template, usually +E.164

config.fromstringRequired

required for TWILIO_SMS unless config.messaging_service_sid is set; SMS-capable Twilio number, short code, or alphanumeric sender ID

config.body_templatestringRequired

required message body template for TWILIO_SMS; supports {{payload.message}} and shorthand {{message}}

config.messaging_service_sidstringOptional

optional MG... SID for Twilio Messaging Service sender pools

config.auth_typestringOptional

TWILIO_AUTH_TOKEN for TWILIO_SMS

config.auth.account_sid/config.auth.auth_tokenintegerRequired

required for TWILIO_SMS

Trial accounts can usually send SMS only to verified recipient numbers; Twilio error 21608 means the To number needs verificationintegerOptional

Request parameter.

Enable Twilio SMS Geo Permissions for the destination country; Twilio error 21408 means that country is not enabledintegerOptional

Request parameter.

Twilio error 21606 usually means the From sender is not SMS-capable for that recipientstringOptional

Request parameter.

config.tostringRequired

required for TWILIO_MMS; MMS recipient phone number or template, usually +E.164

config.fromstringRequired

required for TWILIO_MMS unless config.messaging_service_sid is set; MMS-capable Twilio number

config.body_templatestringRequired

required message body template for TWILIO_MMS; supports {{payload.message}} and shorthand {{message}}

config.media_urlsarrayRequired

required array of one to ten public HTTP or HTTPS media URLs; template tokens such as {{payload.media_url}} and {{media_url}} are supported

config.messaging_service_sidstringOptional

optional MG... SID for Twilio Messaging Service sender pools

config.auth_typestringOptional

TWILIO_AUTH_TOKEN for TWILIO_MMS

config.auth.account_sid/config.auth.auth_tokenintegerRequired

required for TWILIO_MMS

Trial accounts can usually send only to verified recipient numbers; Twilio error 21608 means the To number needs verificationintegerOptional

Request parameter.

Enable Twilio Messaging Geo Permissions for the destination country; Twilio error 21408 means that country is not enabledintegerOptional

Request parameter.

The sender, Messaging Service, country, and carrier route must support MMS; SMS support alone does not guarantee MMS deliveryintegerOptional

Request parameter.

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Destination ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

namestringOptional

optional string

descriptionstringOptional

optional string or null

typeenumOptional

HTTP | CLI | MOCK_API | GOOGLE_SHEET | GMAIL | SENDGRID_EMAIL | SLACK | DISCORD_WEBHOOK | TELEGRAM_MESSAGE | CLOUDFLARE_R2 | AWS_S3 | TWILIO_WHATSAPP | TWILIO_SMS | TWILIO_MMS

config.url, config.path, Google Sheet config, Gmail config, SendGrid Email config, Slack config, Discord Webhook config, Telegram Message config, Cloudflare R2 config, AWS S3 config, Twilio WhatsApp config, Twilio SMS config, or Twilio MMS configstringOptional

optional destination target

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_typeintegerOptional

null | NO_AUTH | FASTHOOK_SIGNATURE | CUSTOM_HEADER | OAUTH2_CLIENT_CREDENTIALS | OAUTH2_AUTHORIZATION_CODE | GOOGLE_SERVICE_ACCOUNT | GOOGLE_OAUTH_REFRESH_TOKEN | SENDGRID_API_KEY | SLACK_BOT_TOKEN | R2_ACCESS_KEY | AWS_ACCESS_KEY | TWILIO_AUTH_TOKEN

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.spreadsheet_idstringRequired

required for GOOGLE_SHEET

config.sheet_namestringOptional

optional for GOOGLE_SHEET, defaults to Sheet1

config.value_input_optionenumOptional

RAW | USER_ENTERED

config.columnsarrayOptional

optional array of dotted payload or metadata paths

config.include_metadatabooleanOptional

optional boolean

config.toarrayRequired

required for GMAIL; string or array of recipient templates

config.cc/config.bcc/config.reply_tostringOptional

optional for GMAIL

config.subjectstringOptional

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

config.text_template/config.html_templatestringOptional

optional for GMAIL

config.auth_typestringOptional

GOOGLE_OAUTH_REFRESH_TOKEN for GMAIL

config.auth.client_id/client_secret/refresh_tokenstringRequired

required for GMAIL

config.auth.scopestringOptional

https://www.googleapis.com/auth/gmail.send for GMAIL

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.channelstringRequired

required for SLACK; channel name or channel ID, with IDs preferred for private or renamed channels

config.text_templatestringRequired

required message text template for SLACK; also used as Slack fallback text when blocks are present

config.blocks_templatearrayOptional

optional JSON string for Slack Block Kit blocks; rendered template must become an array or an object with a blocks array

config.auth_typestringOptional

SLACK_BOT_TOKEN for SLACK

config.auth.bot_tokenstringRequired

required xoxb- Slack bot token for SLACK

Slack bot token needs chatstringOptional

write; add chat:write.public only when posting to public channels without inviting the app first

Invite the Slack app bot to private channels and to public channels when chatstringOptional

write.public is not used

config.webhook_urlstringRequired

required for DISCORD_WEBHOOK; Discord execute webhook URL

config.content_templatestringOptional

optional message content template for DISCORD_WEBHOOK, defaults to FastHook event {{event_id}} and {{payload}}

config.username_template/config.avatar_url_templatestringOptional

optional webhook sender overrides

config.embeds_templatearrayOptional

optional JSON object or array of Discord embeds after template rendering

config.allowed_mentions_parsearrayOptional

optional array containing roles, users, and/or everyone; defaults to empty to avoid pings

DISCORD_WEBHOOK destinations are fixed at 1 request per secondstringOptional

Request parameter.

config.account_idintegerRequired

required for CLOUDFLARE_R2; client Cloudflare account ID

config.endpointintegerOptional

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

config.tostringRequired

required for TWILIO_WHATSAPP; WhatsApp recipient address or template, usually whatsapp:+E.164

config.fromstringRequired

required for TWILIO_WHATSAPP unless config.messaging_service_sid is set; Sandbox sender is whatsapp:+14155238886

config.body_templatestringRequired

required message body template for TWILIO_WHATSAPP free-form sends

config.messaging_service_sidstringRequired

optional MG... SID; required when config.content_sid is set and common for production sender pools

config.content_sidstringOptional

optional HX... Twilio Content SID for approved WhatsApp templates

config.content_variables_templateobjectOptional

optional JSON object string for Twilio ContentVariables, for example {"1":"{{payload.customer.name}}"}

config.auth_typestringOptional

TWILIO_AUTH_TOKEN for TWILIO_WHATSAPP

config.auth.account_sid/config.auth.auth_tokenintegerRequired

required for TWILIO_WHATSAPP

Sandbox recipients must send join <code> to +14155238886 from the exact WhatsApp account that should receive messagesintegerOptional

Request parameter.

From and To must be different WhatsApp addresses; Twilio error 63031 means they are the samestringOptional

Request parameter.

Twilio error 63015 usually means the Sandbox recipient has not joined the current SandboxstringOptional

Request parameter.

config.tostringRequired

required for TWILIO_SMS; SMS recipient phone number or template, usually +E.164

config.fromstringRequired

required for TWILIO_SMS unless config.messaging_service_sid is set; SMS-capable Twilio number, short code, or alphanumeric sender ID

config.body_templatestringRequired

required message body template for TWILIO_SMS; supports {{payload.message}} and shorthand {{message}}

config.messaging_service_sidstringOptional

optional MG... SID for Twilio Messaging Service sender pools

config.auth_typestringOptional

TWILIO_AUTH_TOKEN for TWILIO_SMS

config.auth.account_sid/config.auth.auth_tokenintegerRequired

required for TWILIO_SMS

Trial accounts can usually send SMS only to verified recipient numbers; Twilio error 21608 means the To number needs verificationintegerOptional

Request parameter.

Enable Twilio SMS Geo Permissions for the destination country; Twilio error 21408 means that country is not enabledintegerOptional

Request parameter.

Twilio error 21606 usually means the From sender is not SMS-capable for that recipientstringOptional

Request parameter.

config.tostringRequired

required for TWILIO_MMS; MMS recipient phone number or template, usually +E.164

config.fromstringRequired

required for TWILIO_MMS unless config.messaging_service_sid is set; MMS-capable Twilio number

config.body_templatestringRequired

required message body template for TWILIO_MMS; supports {{payload.message}} and shorthand {{message}}

config.media_urlsarrayRequired

required array of one to ten public HTTP or HTTPS media URLs; template tokens such as {{payload.media_url}} and {{media_url}} are supported

config.messaging_service_sidstringOptional

optional MG... SID for Twilio Messaging Service sender pools

config.auth_typestringOptional

TWILIO_AUTH_TOKEN for TWILIO_MMS

config.auth.account_sid/config.auth.auth_tokenintegerRequired

required for TWILIO_MMS

Trial accounts can usually send only to verified recipient numbers; Twilio error 21608 means the To number needs verificationintegerOptional

Request parameter.

Enable Twilio Messaging Geo Permissions for the destination country; Twilio error 21408 means that country is not enabledintegerOptional

Request parameter.

The sender, Messaging Service, country, and carrier route must support MMS; SMS support alone does not guarantee MMS deliveryintegerOptional

Request parameter.

Notes

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

Disable a destination

Disables an outbound destination.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Destination ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Notes

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

Enable a destination

Enables a previously disabled destination.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Destination ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Notes

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

Delete a destination

Deletes a destination by id.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Destination ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Transformations

Transformations are reusable JavaScript snippets that reshape requests before delivery.

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

Six buckets, oldest to newest, of successful transformation executions over the last 24 hours.

executions_24h_failed_bins

Six buckets, oldest to newest, of failed transformation executions over 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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

idstringOptional

optional ID filter, comma-separated or repeated

namestringOptional

optional exact name filter

include_metricsintegerOptional

true includes legacy execution and connection counts

order_byenumOptional

name | created_at | updated_at

direnumOptional

asc | desc

limitintegerOptional

max 255

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

namestringRequired

required

codestringRequired

required

envobjectOptional

optional object

PUT
/v1/transformations

Upsert a transformation

Upserts a transformation by name.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

namestringRequired

required string

codestringRequired

required string

envobjectOptional

optional object

PUT
/v1/transformations/run

Run a transformation

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

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

transformation_idstringOptional

optional saved transformation ID

codestringOptional

optional JavaScript code when transformation_id is omitted

envobjectOptional

optional object of string variables

request.headersobjectOptional

optional object

request.bodystringOptional

optional JSON value

request.queryobjectOptional

optional object or query string

request.pathstringOptional

optional path string

request.methodstringOptional

optional HTTP method

GET
/v1/transformations/:id

Retrieve a transformation

Returns a transformation by id.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Transformation ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

PUT
/v1/transformations/:id

Update a transformation

Updates transformation code or metadata.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Transformation ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

namestringOptional

optional string

codestringOptional

optional string

envobjectOptional

optional object

DELETE
/v1/transformations/:id

Delete a transformation

Deletes a transformation by id.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Transformation ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

GET
/v1/transformations/:id/executions

List transformation executions

Returns run metadata and logs for executions of a transformation.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Transformation ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Transformation ID.

executionIdstringRequired

Transformation execution ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Notes

  • The response includes team_id for the owning team.

Connections

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

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

order_byenumOptional

name | created_at | updated_at

direnumOptional

asc | desc

limitintegerOptional

max 255

GET
/v1/connections/:id

Retrieve a connection

Returns one connection with full source and destination objects.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Connection ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

POST
/v1/connections

Create a connection

Creates a connection between a source and destination.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

namestringRequired

required string

descriptionstringOptional

optional string or null

source_id or source.idstringRequired

required source ID

destination_id or destination.idstringRequired

required destination ID

disabled_atdatetimeOptional

optional ISO datetime or null

paused_atdatetimeOptional

optional ISO datetime or null

rulesarrayOptional

optional array of retry, delay, filter, transform, and deduplicate rules

PUT
/v1/connections

Upsert a connection

Upserts by id, otherwise by source_id and name.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

idstringOptional

optional connection ID to upsert directly

namestringRequired

required string when id is omitted

descriptionstringOptional

optional string or null

source_id or source.idstringRequired

required source ID

destination_id or destination.idstringRequired

required destination ID

disabled_atdatetimeOptional

optional ISO datetime or null

paused_atdatetimeOptional

optional ISO datetime or null

rulesarrayOptional

optional array of retry, delay, filter, transform, and deduplicate rules

PUTPATCH
/v1/connections/:id

Update a connection

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

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Connection ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

namestringOptional

optional string

descriptionstringOptional

optional string or null

source_id or source.idstringOptional

optional source ID

destination_id or destination.idstringOptional

optional destination ID

disabled_atdatetimeOptional

optional ISO datetime or null

paused_atdatetimeOptional

optional ISO datetime or null

rulesarrayOptional

optional array of retry, delay, filter, transform, and deduplicate rules

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

Retrieve latest input

Returns the latest request input seen by the connection source.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Connection ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

PUT
/v1/connections/:id/pause

Pause a connection

Pauses delivery for a connection.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Connection ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

PUT
/v1/connections/:id/unpause

Unpause a connection

Resumes delivery for a paused connection.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Connection ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

PUTPOST
/v1/connections/:id/disable

Disable a connection

Disables routing for a connection.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Connection ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Notes

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

Enable a connection

Enables routing for a connection.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Connection ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Notes

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

Delete a connection

Deletes a connection by id.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Connection ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Connection Rules

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

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Connection ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

rulesarrayOptional

Request parameter.

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 Secrets

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

Response fields

9 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

Project API key used to authenticate Control API requests.

api_key.masked_value

Redacted API key display value.

api_key.last_rotated_at

ISO timestamp when the API key was last rotated.

signing_secret.value

Secret used to sign FastHook outbound webhook deliveries.

signing_secret.masked_value

Redacted signing secret display value.

signing_secret.last_rotated_at

ISO timestamp when the signing secret was last rotated.

GET
/v1/project-secrets

Get project secrets

Returns the team's project API key and signing secret. A missing pair is created lazily.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

PUT
/v1/project-secrets

Update project secrets

Updates one or both caller-provided secret values.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

api_keystringOptional

optional string, min 12

signing_secretstringOptional

optional string, min 12

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

rotatearrayOptional

optional array of api_key and signing_secret

Notes

  • Empty body rotates both secrets.
  • Use rotate=["signing_secret"] to rotate only the signing secret.

Requests

Requests are inbound webhook deliveries received by FastHook.

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

fromdatetimeOptional

ISO datetime or relative time

todatetimeOptional

ISO datetime or relative time

limitintegerOptional

default 100, max 100

cursorstringOptional

opaque next_cursor or next value

statusenumOptional

accepted | rejected

verifiedbooleanOptional

true | false

source_idstringOptional

Source ID used to filter inbound requests or routed events.

connection_idstringOptional

Connection ID used to filter routed requests or events.

batch_operation_idstringOptional

Bulk operation ID used to filter matching requests or events.

is_retrybooleanOptional

true | false

retry_kindenumOptional

single | bulk

q or search_termstringOptional

search across id and external_id

includestringOptional

data, optional stored payload data

Notes

  • When next_cursor is null, total is exact and total_exact is true.
  • 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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

from or ingested_at[gte]datetimeOptional

ISO datetime or relative time

to or ingested_at[lte]datetimeOptional

ISO datetime or relative time

statusenumOptional

accepted | rejected

verifiedbooleanOptional

true | false

source_idstringOptional

Source ID used to filter inbound requests or routed events.

connection_idstringOptional

Connection ID used to filter routed requests or events.

batch_operation_idstringOptional

Bulk operation ID used to filter matching requests or events.

is_retrybooleanOptional

true | false

retry_kindenumOptional

single | bulk

q or search_termstringOptional

Text search query; search_term is accepted as an alias.

GET
/v1/requests/:id

Retrieve a request

Returns one request with stored payload data when available.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Request ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Request ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Request ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

titlestringOptional

optional short label for the share

expires_in_seconds, ttl_seconds, or ttlintegerOptional

optional TTL in seconds; default 7 days, max 30 days

expires_atdatetimeOptional

optional ISO datetime; clamped to the maximum TTL

redact_keys or redactKeysarrayOptional

optional array of additional header, query, or body keys to redact

include_bodybooleanOptional

optional boolean; set false to omit body content

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

tokenstringRequired

Resource ID from the route.

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Request ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

modifications.methodstringOptional

optional HTTP method override

modifications.pathstringOptional

optional request path override

modifications.queryobjectOptional

optional query string or object override

modifications.headersobjectOptional

optional object of replay headers

modifications.bodystringOptional

optional replay body string or JSON value

GET
/v1/requests/:id/events

List request events

Returns delivery events produced from one request.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Request ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

statusenumOptional

SCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED

GET
/v1/requests/:id/ignored_events

List ignored request events

Returns connection-level ignored events for one request.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Request ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

GET
/v1/requests/bulk_operations

List request bulk operations

Returns request bulk retry operations.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

bucketenumOptional

all | ongoing | history

limitstringOptional

Maximum number of records to return.

POST
/v1/requests/bulk_operations

Create request bulk operation

Creates a bulk retry operation from filters.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

fromdatetimeOptional

ISO datetime or relative time, e.g. 2026-04-17T00:00:00.000Z or now-1h

todatetimeOptional

ISO datetime or relative time, e.g. 2026-04-17T23:59:59.999Z or now

statusenumOptional

accepted | rejected

source_idstringOptional

Source ID used to filter inbound requests or routed events.

qstringOptional

Text search query.

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

Cancel request bulk operation

Cancels a planned or running request bulk operation.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Bulk operation ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Events

Events are outbound delivery records created from accepted requests.

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

fromdatetimeOptional

ISO datetime or relative time

todatetimeOptional

ISO datetime or relative time

limitintegerOptional

default 100, max 100

cursorstringOptional

opaque next_cursor or next value

statusenumOptional

SCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED

source_idstringOptional

Source ID used to filter inbound requests or routed events.

connection_idstringOptional

Connection ID used to filter routed requests or events.

destination_idstringOptional

Destination ID used to filter outbound events.

batch_operation_idstringOptional

Bulk operation ID used to filter matching requests or events.

q or search_termstringOptional

Text search query; search_term is accepted as an alias.

Notes

  • When next_cursor is null, total is exact and total_exact is true.
  • 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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

from or ingested_at[gte]datetimeOptional

ISO datetime or relative time

to or ingested_at[lte]datetimeOptional

ISO datetime or relative time

statusenumOptional

SCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED

source_idstringOptional

Source ID used to filter inbound requests or routed events.

connection_idstringOptional

Connection ID used to filter routed requests or events.

destination_idstringOptional

Destination ID used to filter outbound events.

batch_operation_idstringOptional

Bulk operation ID used to filter matching requests or events.

q or search_termstringOptional

Text search query; search_term is accepted as an alias.

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Event ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Event ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

GET
/v1/events/bulk_operations

List event bulk operations

Returns event bulk retry operations.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

bucketenumOptional

all | ongoing | history

limitstringOptional

Maximum number of records to return.

POST
/v1/events/bulk_operations

Create event bulk operation

Creates a bulk event retry operation from filters.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Request body

fromdatetimeOptional

ISO datetime or relative time, e.g. 2026-04-17T00:00:00.000Z or now-1h

todatetimeOptional

ISO datetime or relative time, e.g. 2026-04-17T23:59:59.999Z or now

statusenumOptional

SCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED

source_idstringOptional

Source ID used to filter inbound requests or routed events.

connection_idstringOptional

Connection ID used to filter routed requests or events.

destination_idstringOptional

Destination ID used to filter outbound events.

qstringOptional

Text search query.

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

Cancel event bulk operation

Cancels a planned or running event bulk operation.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Bulk operation ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Attempts

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

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

event_id or event_id[]arrayOptional

Event ID filter. Repeat the parameter to filter by multiple events.

destination_id or destination_id[]arrayOptional

Destination ID filter. Repeat the parameter to filter by multiple destinations.

statusenumOptional

FAILED | SUCCESSFUL

fromdatetimeOptional

ISO timestamp or relative time expression such as now-1h.

todatetimeOptional

ISO timestamp or relative time expression such as now.

qstringOptional

search attempt, event, destination, error code, requested URL, or request ID.

order_bystringOptional

Sort field. Currently created_at.

dirintegerOptional

asc | desc, default desc

limitintegerOptional

default 100, max 255

nextstringOptional

Opaque cursor from pagination.next.

prevstringOptional

Opaque cursor from pagination.prev.

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Attempt ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Notes

  • Returns 404 when the attempt does not exist or is outside the active team.

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.

Response fields

31 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[].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[].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

Six buckets, oldest to newest, of successful transformation executions over the last 24 hours.

models[].executions_24h_failed_bins

Six buckets, oldest to newest, of failed transformation executions over the last 24 hours.

GET
/v1/metrics/requests

Request metrics

Returns request histogram metrics with request-specific measures.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

date_range[start]datetimeRequired

ISO datetime, required

date_range[end]datetimeRequired

ISO datetime, required

granularityenumOptional

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

measures[]arrayOptional

count | accepted_count | rejected_count

source_idstringOptional

Source ID used to filter inbound requests or routed events.

batch_operation_idstringOptional

Bulk operation ID used to filter matching requests or events.

statusenumOptional

accepted | rejected

qstringOptional

Text search query.

GET
/v1/metrics/events

Event metrics

Returns event histogram metrics with event-specific measures.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

date_range[start]datetimeRequired

ISO datetime, required

date_range[end]datetimeRequired

ISO datetime, required

granularityenumOptional

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

measures[]arrayOptional

count | delivered_count | failed_count | queued_count | processing_count | hold_count | ignored_count

source_idstringOptional

Source ID used to filter inbound requests or routed events.

connection_idstringOptional

Connection ID used to filter routed requests or events.

destination_idstringOptional

Destination ID used to filter outbound events.

batch_operation_idstringOptional

Bulk operation ID used to filter matching requests or events.

statusenumOptional

SCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED

qstringOptional

Text search query.

GET
/v1/metrics/sources

Source summary metrics

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

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

idstringOptional

Source ID. Repeat the parameter or pass comma-separated IDs.

idsstringOptional

Alias for id.

source_idstringOptional

Alias for id.

source_idsstringOptional

Alias for id.

Notes

  • Use this after GET /v1/sources so the source list response stays lightweight.
  • 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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

idstringOptional

Destination ID. Repeat the parameter or pass comma-separated IDs.

idsstringOptional

Alias for id.

destination_idstringOptional

Alias for id.

destination_idsstringOptional

Alias for id.

Notes

  • Use this after GET /v1/destinations so the destination list response stays lightweight.
  • 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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

Query parameters

idstringOptional

Transformation ID. Repeat the parameter or pass comma-separated IDs.

idsstringOptional

Alias for id.

transformation_idstringOptional

Alias for id.

transformation_idsstringOptional

Alias for id.

Notes

  • Use this after GET /v1/transformations so the transformation list response stays lightweight.
  • 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.

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.

Input parameters

Route, header, query, and body inputs accepted by this endpoint.

Path parameters

idstringRequired

Source ID.

Headers

AuthorizationstringRequired

Bearer API key or session token.

x-team-idstringOptional

Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team.

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.