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, save reusable request fixtures, 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, create temporary public request bins, 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.
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.
/v1/sourcesRouting and tenancy
Use the REST base URL and pass the active team with x-team-id. If the header is missing, team_id query parameter is used, then the demo team fallback.
Routing and tenancy input parameters
Routing and tenancy accepts the route, header, query, and body inputs listed below.
Routing and tenancy headers
Bearer API key or session token. Used by the Routing and tenancy operation.
Team to execute the request against. If omitted, FastHook falls back to team_id query and then the demo team. Used by the Routing and tenancy operation.
Authentication
Create and inspect dashboard sessions. Profile updates require a user session.
Authentication response fields
6 fieldsuser.idStable user identifier for the authenticated FastHook account.
user.emailEmail address attached to the authenticated user.
user.nameDisplay name saved on the user profile.
user.picture_urlProfile image URL when the identity provider supplies one.
session.expires_atISO timestamp when the returned dashboard session token expires.
memberships[].team_idTeam IDs the user can access through the authenticated session.
/v1/auth/google/loginLogin with Google
Authenticates a Google credential and returns a session token.
Login with Google input parameters
Login with Google accepts the route, header, query, and body inputs listed below.
Login with Google request body
required Google ID token Used by the Login with Google operation.
optional team ID used to scope the session Used by the Login with Google operation.
/v1/auth/demo/loginLogin with demo user
Creates a demo session for local exploration and demo flows.
Login with demo user input parameters
Login with demo user does not require path, query, or body parameters.
/v1/auth/meGet current profile
Returns the authenticated user, active team, session expiry, and memberships.
Get current profile input parameters
Get current profile does not require path, query, or body parameters.
/v1/auth/meUpdate profile
Updates editable fields on the current user's profile.
Update profile input parameters
Update profile accepts the route, header, query, and body inputs listed below.
Update profile request body
required string, max 120 characters Used by the Update profile operation.
Update profile notes
- Both PATCH and PUT are accepted for profile updates.
/v1/auth/logoutLogout
Invalidates the current session token.
Logout input parameters
Logout does not require path, query, or body parameters.
Sources
Sources are ingress endpoints. External systems send HTTP requests to source URLs.
Sources response fields
16 fieldsidsrc_*Unique source ID. Source IDs use the src_ prefix.
team_idTeam that owns the source.
nameHuman-readable source name, unique within the team.
descriptionOptional description for operators and API clients.
typeWEBHOOK or vendor-specificSource implementation type, usually WEBHOOK for public ingress endpoints.
config.auth_typeVerification mode applied to inbound webhook requests.
config.authAuthentication or verification settings for the selected auth type.
config.custom_responseOptional static or rule-based dynamic response FastHook returns to the sender after accepting a source request.
config.discord_defer_ephemeralDISCORD source setting. When true, FastHook sets the EPHEMERAL flag on the automatic initial defer so follow-up responses remain private.
config.modeSource runtime mode. webhook is normal queued source behavior; proxy forwards the source request to an upstream API and returns the upstream response.
config.proxyProxy mode settings for target URL, path/query forwarding, timeout, response body capture, and allowed methods.
config.allowed_http_methodsHTTP methods accepted by the source endpoint.
urlPublic URL that external systems use to send webhooks to this source.
disabled_atISO timestamp when the source was disabled, or null when active.
created_atISO timestamp when the source was created.
updated_atISO timestamp when the source was last changed.
Sources shared request body fields
required when creating or upserting; optional when updating
optional string or null
optional source type, defaults to WEBHOOK
optional enabled | disabled
optional source URL
BASIC_AUTH | API_KEY | HMAC | null
auth settings for auth_type
optional object or null
json | text | xml
optional fallback response body string
optional ordered dynamic response rules array
optional boolean, false skips the rule
optional method/path/query/headers/body matcher
optional status/content_type/body/headers response override
optional boolean for DISCORD sources; adds EPHEMERAL flags to the initial defer response
optional webhook | proxy; proxy makes the source return the upstream response to the original caller
true enables proxy mode
required absolute http(s) upstream URL for proxy sources
optional boolean, defaults to true; appends the inbound request path to target_url
optional boolean, defaults to true; appends inbound query params to target_url
optional 1000-30000 upstream timeout in milliseconds
optional 0-65536 bytes stored in request trace
Request parameter.
HEAD | GET | POST | PUT | PATCH | DELETE array
/v1/sourcesList sources
Returns configured sources for the active team.
List sources input parameters
List sources accepts the route, header, query, and body inputs listed below.
List sources query parameters
optional ID filter, comma-separated or repeated Used by the List sources operation.
optional exact name filter Used by the List sources operation.
optional resource type filter Used by the List sources operation.
false excludes disabled resources Used by the List sources operation.
name | created_at | updated_at Used by the List sources operation.
asc | desc Used by the List sources operation.
max 255 Used by the List sources operation.
/v1/sources/:idRetrieve a source
Returns one source by id.
Retrieve a source input parameters
Retrieve a source accepts the route, header, query, and body inputs listed below.
Retrieve a source path parameters
Source ID. Used by the Retrieve a source operation.
/v1/sourcesCreate a source
Creates a source. type defaults to WEBHOOK.
Create a source input parameters
Create a source uses the shared request body fields above together with any route, header, or query inputs listed here.
Create a source notes
- Duplicate create returns 409 with RESOURCE_ALREADY_EXISTS.
- custom_response.rules are evaluated before the fallback body; the first enabled matching rule wins.
- custom_response.body and custom_response.rules can be used together; body is the fallback when no enabled rule matches.
- Dynamic response rules support $eq, $ne, $contains, $starts_with, $ends_with, $exists, $in, and $regex operators.
- status defaults to enabled. Send status only when creating a disabled source.
- description is optional metadata for operators and API clients.
/v1/sourcesUpsert a source
Creates or updates a source by name.
Upsert a source input parameters
Upsert a source uses the shared request body fields above together with any route, header, or query inputs listed here.
/v1/sources/:idUpdate a source
Partially updates a source. PUT /sources/:id is also supported.
Update a source input parameters
Update a source uses the shared request body fields above together with any route, header, or query inputs listed here.
Update a source path parameters
Source ID. Used by the Update a source operation.
/v1/sources/:id/disableDisable a source
Disables a source and disables related connections.
Disable a source input parameters
Disable a source accepts the route, header, query, and body inputs listed below.
Disable a source path parameters
Source ID. Used by the Disable a source operation.
Disable a source notes
- Both PUT and POST are accepted for this action.
/v1/sources/:id/enableEnable a source
Enables a previously disabled source.
Enable a source input parameters
Enable a source accepts the route, header, query, and body inputs listed below.
Enable a source path parameters
Source ID. Used by the Enable a source operation.
Enable a source notes
- Both PUT and POST are accepted for this action.
/v1/sources/:idDelete a source
Deletes a source by id.
Delete a source input parameters
Delete a source accepts the route, header, query, and body inputs listed below.
Delete a source path parameters
Source ID. Used by the Delete a source operation.
Destinations
Destinations are outbound endpoints that receive routed events.
Destinations response fields
24 fieldsiddes_*Unique destination ID. Destination IDs use the des_ prefix.
team_idTeam that owns the destination.
nameHuman-readable destination name, unique within the team.
descriptionOptional description for operators and API clients.
typeHTTP | N8N | CLI | MOCK_API | POSTGRESQL | GOOGLE_SHEET | GMAIL | SENDGRID_EMAIL | SLACK | DISCORD_WEBHOOK | TELEGRAM_MESSAGE | CLOUDFLARE_R2 | AWS_S3 | TWILIO_WHATSAPP | TWILIO_SMS | TWILIO_MMSDestination implementation type: HTTP, N8N, CLI, MOCK_API, POSTGRESQL, 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 configHTTP delivery URL, CLI/mock path, PostgreSQL table settings, 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_limitOptional delivery rate limit for this destination.
config.rate_limit_periodTime window used by the destination rate limit.
config.http_methodHTTP method used when delivering events to the destination.
config.path_forwarding_disabledWhether inbound request paths are omitted from forwarded delivery URLs.
config.auth_typeAuthentication mode used for outbound deliveries: null/NO_AUTH, FASTHOOK_SIGNATURE, CUSTOM_HEADER, OAUTH2_CLIENT_CREDENTIALS, OAUTH2_AUTHORIZATION_CODE, GOOGLE_OAUTH_REFRESH_TOKEN, POSTGRES_PASSWORD, SENDGRID_API_KEY, SLACK_BOT_TOKEN, R2_ACCESS_KEY, AWS_ACCESS_KEY, TWILIO_AUTH_TOKEN, or Google Sheet service account auth.
config.authOutbound authentication settings for the selected destination auth type, including OAuth2 token credentials for HTTP destinations.
config.spreadsheet_idGoogle Sheet spreadsheet ID for GOOGLE_SHEET destinations.
config.sheet_nameGoogle Sheet tab name; defaults to Sheet1.
config.value_input_optionGoogle Sheets value input mode: RAW or USER_ENTERED.
config.columnsOptional ordered list of dotted payload or metadata paths to write into sheet columns.
config.include_metadataWhether default metadata is written for GOOGLE_SHEET, CLOUDFLARE_R2, and AWS_S3 destinations when explicit output fields are not configured.
config.key_templateObject key template for CLOUDFLARE_R2 and AWS_S3 destinations.
config.content_typeObject media type for CLOUDFLARE_R2 and AWS_S3 destinations.
disabled_atISO timestamp when the destination was disabled, or null when active.
attempts_24h_countTotal delivery attempts recorded for this destination in the last 24 hours.
attempts_24h_binsRecent delivery-attempt histogram for the destination.
created_atISO timestamp when the destination was created.
updated_atISO timestamp when the destination was last changed.
Destinations shared request body fields
required when creating, upserting, or replacing; optional when patching
optional string or null
HTTP | N8N | CLI | MOCK_API | POSTGRESQL | GOOGLE_SHEET | GMAIL | SENDGRID_EMAIL | SLACK | DISCORD_WEBHOOK | TELEGRAM_MESSAGE | CLOUDFLARE_R2 | AWS_S3 | TWILIO_WHATSAPP | TWILIO_SMS | TWILIO_MMS
required when creating, upserting, or replacing; optional when patching
optional positive integer or null
second | minute | hour | day
POST | PUT | PATCH | DELETE
boolean
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
destination auth settings
disables outbound auth
required for CUSTOM_HEADER
required for OAUTH2_CLIENT_CREDENTIALS
required for OAUTH2_AUTHORIZATION_CODE
client_secret_post | client_secret_basic
required for GOOGLE_OAUTH_REFRESH_TOKEN
required for SENDGRID_API_KEY
optional for OAuth2 auth types and GOOGLE_OAUTH_REFRESH_TOKEN
optional for OAUTH2_AUTHORIZATION_CODE
optional for OAuth2 auth types
required PostgreSQL endpoint; port defaults to 5432
target PostgreSQL schema and table; schema defaults to public
required JSONB target column, defaults to payload
optional text column for FastHook event IDs and idempotency
optional JSONB column for FastHook delivery metadata
optional timestamptz delivery-time column
ERROR | IGNORE; IGNORE requires event_id_column and a matching UNIQUE constraint
verify-full | disable; defaults to verify-full
integer from 1 to 30, defaults to 10
POSTGRES_PASSWORD for POSTGRESQL
required PostgreSQL credentials
Request parameter.
required for GOOGLE_SHEET
optional for GOOGLE_SHEET, defaults to Sheet1
RAW | USER_ENTERED
optional array of dotted payload or metadata paths
optional boolean
required for GMAIL; string or array of recipient templates
optional for GMAIL
optional for GMAIL, defaults to FastHook event {{event_id}}
optional for GMAIL
GOOGLE_OAUTH_REFRESH_TOKEN for GMAIL
required for GMAIL
https://www.googleapis.com/auth/gmail.send for GMAIL
required for SENDGRID_EMAIL; verified SendGrid sender email or authenticated domain address; fasthook.io sender domains are admin-only
optional display name for SENDGRID_EMAIL
required for SENDGRID_EMAIL; string or array of recipient templates
optional for SENDGRID_EMAIL
optional for SENDGRID_EMAIL, defaults to FastHook event {{event_id}}
optional for SENDGRID_EMAIL
optional for SENDGRID_EMAIL; https://api.sendgrid.com or https://api.eu.sendgrid.com
SENDGRID_API_KEY for SENDGRID_EMAIL
required SG... SendGrid API key for SENDGRID_EMAIL
Request parameter.
required for SLACK; channel name or channel ID, with IDs preferred for private or renamed channels
required message text template for SLACK; also used as Slack fallback text when blocks are present
optional JSON string for Slack Block Kit blocks; rendered template must become an array or an object with a blocks array
SLACK_BOT_TOKEN for SLACK
required xoxb- Slack bot token for SLACK
write; add chat:write.public only when posting to public channels without inviting the app first
write.public is not used
WEBHOOK (default) for channel messages or INTERACTION_FOLLOWUP for slash-command follow-ups
required only when delivery_mode is WEBHOOK; Discord execute webhook URL
optional message content template for DISCORD_WEBHOOK, defaults to FastHook event {{event_id}} and {{payload}}
optional WEBHOOK-mode sender overrides
optional JSON object or array of Discord embeds after template rendering
optional Discord components JSON array after template rendering
optional Discord poll JSON object after template rendering
optional JSON array of up to 10 public HTTPS file URLs or objects with url, filename, description, and spoiler fields
WEBHOOK-mode existing thread target or new forum/media thread name; configure only one
optional Discord message flags
optional array containing roles, users, and/or everyone; defaults to empty to avoid pings
Request parameter.
Request parameter.
Request parameter.
required for CLOUDFLARE_R2; client Cloudflare account ID
optional for CLOUDFLARE_R2; defaults to https://<account_id>.r2.cloudflarestorage.com
required for CLOUDFLARE_R2; client R2 bucket name
required for CLOUDFLARE_R2; R2 object key template, defaults to archives/{{team_id}}/{{source_id}}/{{event_id}}.json
optional for CLOUDFLARE_R2; object media type, defaults to application/json
optional for CLOUDFLARE_R2; rendered archive body, otherwise FastHook stores metadata plus payload JSON
optional boolean for CLOUDFLARE_R2 envelope mode
required for CLOUDFLARE_R2; use R2_ACCESS_KEY
required R2 S3 API credentials
optional temporary credential token
required for AWS_S3; AWS region used for SigV4 signing, such as eu-central-1
optional for AWS_S3; defaults to https://s3.<region>.amazonaws.com
required for AWS_S3; client S3 bucket name
optional boolean for AWS_S3 path-style S3 URLs
required for AWS_S3; S3 object key template, defaults to archives/{{team_id}}/{{source_id}}/{{event_id}}.json
optional for AWS_S3; object media type, defaults to application/json
optional for AWS_S3; rendered archive body, otherwise FastHook stores metadata plus payload JSON
optional boolean for AWS_S3 envelope mode
required for AWS_S3; use AWS_ACCESS_KEY
required AWS credentials with s3:PutObject permission
optional temporary AWS session token
required for TWILIO_WHATSAPP; WhatsApp recipient address or template, usually whatsapp:+E.164
required for TWILIO_WHATSAPP unless config.messaging_service_sid is set; Sandbox sender is whatsapp:+14155238886
required message body template for TWILIO_WHATSAPP free-form sends
optional MG... SID; required when config.content_sid is set and common for production sender pools
optional HX... Twilio Content SID for approved WhatsApp templates
optional JSON object string for Twilio ContentVariables, for example {"1":"{{payload.customer.name}}"}
TWILIO_AUTH_TOKEN for TWILIO_WHATSAPP
required for TWILIO_WHATSAPP
Request parameter.
Request parameter.
Request parameter.
required for TWILIO_SMS; SMS recipient phone number or template, usually +E.164
required for TWILIO_SMS unless config.messaging_service_sid is set; SMS-capable Twilio number, short code, or alphanumeric sender ID
required message body template for TWILIO_SMS; supports {{payload.message}} and shorthand {{message}}
optional MG... SID for Twilio Messaging Service sender pools
TWILIO_AUTH_TOKEN for TWILIO_SMS
required for TWILIO_SMS
Request parameter.
Request parameter.
Request parameter.
required for TWILIO_MMS; MMS recipient phone number or template, usually +E.164
required for TWILIO_MMS unless config.messaging_service_sid is set; MMS-capable Twilio number
required message body template for TWILIO_MMS; supports {{payload.message}} and shorthand {{message}}
required array of one to ten public HTTP or HTTPS media URLs; template tokens such as {{payload.media_url}} and {{media_url}} are supported
optional MG... SID for Twilio Messaging Service sender pools
TWILIO_AUTH_TOKEN for TWILIO_MMS
required for TWILIO_MMS
Request parameter.
Request parameter.
Request parameter.
/v1/destinationsList destinations
Returns configured destinations with 24 hour attempt metrics.
List destinations input parameters
List destinations accepts the route, header, query, and body inputs listed below.
List destinations query parameters
optional ID filter, comma-separated or repeated Used by the List destinations operation.
optional exact name filter Used by the List destinations operation.
optional resource type filter Used by the List destinations operation.
false excludes disabled resources Used by the List destinations operation.
name | created_at | updated_at Used by the List destinations operation.
asc | desc Used by the List destinations operation.
max 255 Used by the List destinations operation.
/v1/destinations/:idRetrieve a destination
Returns a destination by id.
Retrieve a destination input parameters
Retrieve a destination accepts the route, header, query, and body inputs listed below.
Retrieve a destination path parameters
Destination ID. Used by the Retrieve a destination operation.
/v1/destinationsCreate a destination
Creates a destination. type defaults to HTTP.
Create a destination input parameters
Create a destination uses the shared request body fields above together with any route, header, or query inputs listed here.
/v1/destinationsUpsert a destination
Creates or updates a destination by name.
Upsert a destination input parameters
Upsert a destination uses the shared request body fields above together with any route, header, or query inputs listed here.
/v1/destinations/:idReplace a destination
Replaces a destination by id. Send the full destination payload; config is replaced, not merged.
Replace a destination input parameters
Replace a destination uses the shared request body fields above together with any route, header, or query inputs listed here.
Replace a destination path parameters
Destination ID. Used by the Replace a destination operation.
Replace a destination notes
- Use PATCH /v1/destinations/:id when you only want to change part of the destination config.
/v1/destinations/:idPatch a destination
Partially updates a destination by merging the provided fields with the existing destination.
Patch a destination input parameters
Patch a destination uses the shared request body fields above together with any route, header, or query inputs listed here.
Patch a destination path parameters
Destination ID. Used by the Patch a destination operation.
Patch a destination notes
- The CLI command fasthook destinations update uses this endpoint.
/v1/destinations/:id/disableDisable a destination
Disables an outbound destination.
Disable a destination input parameters
Disable a destination accepts the route, header, query, and body inputs listed below.
Disable a destination path parameters
Destination ID. Used by the Disable a destination operation.
Disable a destination notes
- Both PUT and POST are accepted for this action.
/v1/destinations/:id/enableEnable a destination
Enables a previously disabled destination.
Enable a destination input parameters
Enable a destination accepts the route, header, query, and body inputs listed below.
Enable a destination path parameters
Destination ID. Used by the Enable a destination operation.
Enable a destination notes
- Both PUT and POST are accepted for this action.
/v1/destinations/:idDelete a destination
Deletes a destination by id.
Delete a destination input parameters
Delete a destination accepts the route, header, query, and body inputs listed below.
Delete a destination path parameters
Destination ID. Used by the Delete a destination operation.
Transformations
Transformations are reusable JavaScript snippets that reshape requests before delivery.
Transformations response fields
15 fieldsidtrs_*Unique transformation ID. Transformation IDs use the trs_ prefix.
team_idTeam that owns the transformation.
nameHuman-readable transformation name, unique within the team.
codeJavaScript code executed to reshape a webhook request before delivery.
envKey-value environment variables available to the transformation runtime.
code_hashHash of the current transformation code for change detection.
deleted_atISO timestamp when the transformation was deleted, or null when active.
executions_24h_countNumber of transformation executions recorded in the last 24 hours.
executions_24h_successful_countNumber of transformation executions without error-level logs in the last 24 hours.
executions_24h_failed_countNumber of transformation executions with error-level logs in the last 24 hours.
executions_24h_successful_binsTop-level six-bucket history of successful transformation executions during the last 24 hours.
executions_24h_failed_binsTop-level six-bucket history of failed transformation executions during the last 24 hours.
connections_countNumber of routing connections that reference this transformation.
created_atISO timestamp when the transformation was created.
updated_atISO timestamp when the transformation was last changed.
/v1/transformationsList transformations
Returns reusable transformation rules without loading execution or connection metrics by default.
List transformations input parameters
List transformations accepts the route, header, query, and body inputs listed below.
List transformations query parameters
optional ID filter, comma-separated or repeated Used by the List transformations operation.
optional exact name filter Used by the List transformations operation.
true includes legacy execution and connection counts Used by the List transformations operation.
name | created_at | updated_at Used by the List transformations operation.
asc | desc Used by the List transformations operation.
max 255 Used by the List transformations operation.
List transformations notes
- Use GET /v1/metrics/transformations after listing visible transformations to load table counts separately.
/v1/transformationsCreate a transformation
Creates a new transformation with code.
Create a transformation input parameters
Create a transformation accepts the route, header, query, and body inputs listed below.
Create a transformation request body
required Used by the Create a transformation operation.
required Used by the Create a transformation operation.
optional object Used by the Create a transformation operation.
/v1/transformationsUpsert a transformation
Upserts a transformation by name.
Upsert a transformation input parameters
Upsert a transformation accepts the route, header, query, and body inputs listed below.
Upsert a transformation request body
required string Used by the Upsert a transformation operation.
required string Used by the Upsert a transformation operation.
optional object Used by the Upsert a transformation operation.
/v1/transformations/runRun a transformation
Runs inline code or a saved transformation against a request sample.
Run a transformation input parameters
Run a transformation accepts the route, header, query, and body inputs listed below.
Run a transformation request body
optional saved transformation ID Used by the Run a transformation operation.
optional JavaScript code when transformation_id is omitted Used by the Run a transformation operation.
optional object of string variables Used by the Run a transformation operation.
optional object Used by the Run a transformation operation.
optional JSON value Used by the Run a transformation operation.
optional object or query string Used by the Run a transformation operation.
optional path string Used by the Run a transformation operation.
optional HTTP method Used by the Run a transformation operation.
/v1/transformations/:idRetrieve a transformation
Returns a transformation by id.
Retrieve a transformation input parameters
Retrieve a transformation accepts the route, header, query, and body inputs listed below.
Retrieve a transformation path parameters
Transformation ID. Used by the Retrieve a transformation operation.
/v1/transformations/:idUpdate a transformation
Updates transformation code or metadata.
Update a transformation input parameters
Update a transformation accepts the route, header, query, and body inputs listed below.
Update a transformation path parameters
Transformation ID. Used by the Update a transformation operation.
Update a transformation request body
optional string Used by the Update a transformation operation.
optional string Used by the Update a transformation operation.
optional object Used by the Update a transformation operation.
/v1/transformations/:idDelete a transformation
Deletes a transformation by id.
Delete a transformation input parameters
Delete a transformation accepts the route, header, query, and body inputs listed below.
Delete a transformation path parameters
Transformation ID. Used by the Delete a transformation operation.
/v1/transformations/:id/executionsList transformation executions
Returns run metadata and logs for executions of a transformation.
List transformation executions input parameters
List transformation executions accepts the route, header, query, and body inputs listed below.
List transformation executions path parameters
Transformation ID. Used by the List transformation executions operation.
List transformation executions notes
- Execution models include team_id for the owning team.
/v1/transformations/:id/executions/:executionIdRetrieve a transformation execution
Returns one execution with logs and original/transformed event data.
Retrieve a transformation execution input parameters
Retrieve a transformation execution accepts the route, header, query, and body inputs listed below.
Retrieve a transformation execution path parameters
Transformation ID. Used by the Retrieve a transformation execution operation.
Transformation execution ID. Used by the Retrieve a transformation execution operation.
Retrieve a transformation execution notes
- The response includes team_id for the owning team.
Request Fixtures
Request fixtures save real inbound webhook payloads as named test cases that can be replayed through a selected connection.
Request Fixtures response fields
11 fieldsidfix_*Unique fixture ID. Request fixture IDs use the fix_ prefix.
team_idTeam that owns the saved request fixture.
nameHuman-readable test-case name, such as Successful payment or Invalid signature.
descriptionOptional expected result, edge case, or operator note for the fixture.
source_idSource from which the original webhook request was captured.
source_nameSource name captured for display alongside the fixture.
original_request_idInbound request used to create the immutable fixture payload snapshot.
replay_countNumber of fixture replays queued so far.
last_replayed_atISO timestamp of the most recent replay, or null before the first replay.
created_atISO timestamp when the fixture was saved.
updated_atISO timestamp when the fixture metadata or replay counters last changed.
/v1/request-fixturesList request fixtures
Returns the active team's saved webhook test fixtures, newest first.
List request fixtures input parameters
List request fixtures does not require path, query, or body parameters.
/v1/request-fixturesSave a request fixture
Creates a named fixture from a stored inbound request in the active team.
Save a request fixture input parameters
Save a request fixture accepts the route, header, query, and body inputs listed below.
Save a request fixture request body
required request ID Used by the Save a request fixture operation.
required string, max 120 characters Used by the Save a request fixture operation.
optional string, max 500 characters Used by the Save a request fixture operation.
Save a request fixture notes
- The request payload, headers, path, query, and HTTP method are copied into the fixture snapshot.
/v1/request-fixtures/:idRetrieve a request fixture
Returns one saved request fixture from the active team.
Retrieve a request fixture input parameters
Retrieve a request fixture accepts the route, header, query, and body inputs listed below.
Retrieve a request fixture path parameters
Saved request fixture ID. Used by the Retrieve a request fixture operation.
/v1/request-fixtures/:idUpdate a request fixture
Renames a fixture or updates its expected result and edge-case notes.
Update a request fixture input parameters
Update a request fixture accepts the route, header, query, and body inputs listed below.
Update a request fixture path parameters
Saved request fixture ID. Used by the Update a request fixture operation.
Update a request fixture request body
optional string, max 120 characters Used by the Update a request fixture operation.
optional string or null, max 500 characters Used by the Update a request fixture operation.
/v1/request-fixtures/:idDelete a request fixture
Deletes a saved fixture without deleting its original request.
Delete a request fixture input parameters
Delete a request fixture accepts the route, header, query, and body inputs listed below.
Delete a request fixture path parameters
Saved request fixture ID. Used by the Delete a request fixture operation.
/v1/request-fixtures/:id/targetsList fixture replay targets
Returns enabled connections that use the fixture's source and can receive a replay.
List fixture replay targets input parameters
List fixture replay targets accepts the route, header, query, and body inputs listed below.
List fixture replay targets path parameters
Saved request fixture ID. Used by the List fixture replay targets operation.
/v1/request-fixtures/:id/replayReplay a request fixture
Queues the saved webhook payload against one selected connection and destination.
Replay a request fixture input parameters
Replay a request fixture accepts the route, header, query, and body inputs listed below.
Replay a request fixture path parameters
Saved request fixture ID. Used by the Replay a request fixture operation.
Replay a request fixture request body
required connection ID returned by the targets endpoint Used by the Replay a request fixture operation.
Replay a request fixture notes
- Returns 202 Accepted after the replay message is published.
Connections
Connections route events from one source to one destination and apply rules.
Connections response fields
11 fieldsidweb_*Unique connection ID. Connection IDs use the web_ prefix.
team_idTeam that owns the connection.
nameHuman-readable connection name, unique within the team.
descriptionOptional description for operators and API clients.
sourceSource object that receives inbound webhook requests.
destinationDestination object that receives routed event deliveries.
rulesOrdered connection rules applied during routing and delivery.
disabled_atISO timestamp when the connection was disabled, or null when active.
paused_atISO timestamp when event delivery was paused, or null when unpaused.
created_atISO timestamp when the connection was created.
updated_atISO timestamp when the connection was last changed.
/v1/connectionsList connections
Returns routing connections for the active team.
List connections input parameters
List connections accepts the route, header, query, and body inputs listed below.
List connections query parameters
name | created_at | updated_at Used by the List connections operation.
asc | desc Used by the List connections operation.
max 255 Used by the List connections operation.
/v1/connections/:idRetrieve a connection
Returns one connection with full source and destination objects.
Retrieve a connection input parameters
Retrieve a connection accepts the route, header, query, and body inputs listed below.
Retrieve a connection path parameters
Connection ID. Used by the Retrieve a connection operation.
/v1/connectionsCreate a connection
Creates a connection between a source and destination.
Create a connection input parameters
Create a connection accepts the route, header, query, and body inputs listed below.
Create a connection request body
required string Used by the Create a connection operation.
optional string or null Used by the Create a connection operation.
required source ID Used by the Create a connection operation.
required destination ID Used by the Create a connection operation.
optional ISO datetime when delivery should be disabled, or null Used by the Create a connection operation.
optional ISO datetime when delivery should be paused, or null Used by the Create a connection operation.
optional array of retry, delay, filter, transform, and deduplicate rules Used by the Create a connection operation.
/v1/connectionsUpsert a connection
Upserts by id, otherwise by source_id and name.
Upsert a connection input parameters
Upsert a connection accepts the route, header, query, and body inputs listed below.
Upsert a connection request body
optional connection ID to upsert directly Used by the Upsert a connection operation.
required string when id is omitted Used by the Upsert a connection operation.
optional string or null Used by the Upsert a connection operation.
required source ID Used by the Upsert a connection operation.
required destination ID Used by the Upsert a connection operation.
optional ISO datetime to disable delivery during the upsert, or null Used by the Upsert a connection operation.
optional ISO datetime to pause delivery during the upsert, or null Used by the Upsert a connection operation.
optional array of retry, delay, filter, transform, and deduplicate rules Used by the Upsert a connection operation.
/v1/connections/:idUpdate a connection
Partially updates a connection. PUT /connections/:id is also supported.
Update a connection input parameters
Update a connection accepts the route, header, query, and body inputs listed below.
Update a connection path parameters
Connection ID. Used by the Update a connection operation.
Update a connection request body
optional string Used by the Update a connection operation.
optional string or null Used by the Update a connection operation.
optional source ID Used by the Update a connection operation.
optional destination ID Used by the Update a connection operation.
optional ISO datetime to change the disabled state, or null Used by the Update a connection operation.
optional ISO datetime to change the paused state, or null Used by the Update a connection operation.
optional array of retry, delay, filter, transform, and deduplicate rules Used by the Update a connection operation.
/v1/connections/:id/latest-inputRetrieve latest input
Returns the latest request input seen by the connection source.
Retrieve latest input input parameters
Retrieve latest input accepts the route, header, query, and body inputs listed below.
Retrieve latest input path parameters
Connection ID. Used by the Retrieve latest input operation.
/v1/connections/:id/pausePause a connection
Pauses delivery for a connection.
Pause a connection input parameters
Pause a connection accepts the route, header, query, and body inputs listed below.
Pause a connection path parameters
Connection ID. Used by the Pause a connection operation.
/v1/connections/:id/unpauseUnpause a connection
Resumes delivery for a paused connection.
Unpause a connection input parameters
Unpause a connection accepts the route, header, query, and body inputs listed below.
Unpause a connection path parameters
Connection ID. Used by the Unpause a connection operation.
/v1/connections/:id/disableDisable a connection
Disables routing for a connection.
Disable a connection input parameters
Disable a connection accepts the route, header, query, and body inputs listed below.
Disable a connection path parameters
Connection ID. Used by the Disable a connection operation.
Disable a connection notes
- Both PUT and POST are accepted for this action.
/v1/connections/:id/enableEnable a connection
Enables routing for a connection.
Enable a connection input parameters
Enable a connection accepts the route, header, query, and body inputs listed below.
Enable a connection path parameters
Connection ID. Used by the Enable a connection operation.
Enable a connection notes
- Both PUT and POST are accepted for this action.
/v1/connections/:idDelete a connection
Deletes a connection by id.
Delete a connection input parameters
Delete a connection accepts the route, header, query, and body inputs listed below.
Delete a connection path parameters
Connection ID. Used by the Delete a connection operation.
Connection Rules
Rules live inside connection.rules and are evaluated in normalized order.
Connection Rules response fields
15 fieldstyperetry | delay | filter | transform | transformation | deduplicateRule type that determines how FastHook evaluates or changes delivery behavior.
strategyRetry scheduling strategy, such as exponential backoff.
intervalBase retry interval in milliseconds.
countMaximum number of retry attempts for the retry rule.
response_status_codesHTTP response status codes or ranges that trigger retry behavior.
delayDelivery delay in milliseconds for delay rules.
headersHeader predicates used by filter or deduplication rules.
bodyBody predicates used by filter or deduplication rules.
queryQuery-string predicates used by filter rules.
pathPath predicate used by filter rules.
transformation_idSaved transformation ID linked to a transform rule.
transformationInline transformation object that can be upserted and linked to the connection.
windowDeduplication window in milliseconds.
include_fieldsRequest fields included when building a deduplication key.
exclude_fieldsRequest fields excluded when building a deduplication key.
/v1/connections/:idRule payload
Supported rule types are retry, delay, filter, transform, transformation, and deduplicate.
Rule payload input parameters
Rule payload accepts the route, header, query, and body inputs listed below.
Rule payload path parameters
Connection ID. Used by the Rule payload operation.
Rule payload request body
Request parameter. Used by the Rule payload operation.
Rule payload notes
- delay must be between 0 and 86400000 ms.
- deduplicate.window must be between 1000 and 3600000 ms.
- inline transformation objects are upserted into transformations and linked by transformation_id.
Project Secrets
Project secrets provide API access and outbound signature verification for a team.
Project Secrets response fields
9 fieldsteam_idTeam that owns the project secrets.
created_atISO timestamp when the secret pair was created.
updated_atISO timestamp when either secret was last changed.
api_key.valueProject API key used to authenticate Control API requests.
api_key.masked_valueRedacted API key display value.
api_key.last_rotated_atISO timestamp when the API key was last rotated.
signing_secret.valueSecret used to sign FastHook outbound webhook deliveries.
signing_secret.masked_valueRedacted signing secret display value.
signing_secret.last_rotated_atISO timestamp when the signing secret was last rotated.
/v1/project-secretsGet project secrets
Returns the team's project API key and signing secret. A missing pair is created lazily.
Get project secrets input parameters
Get project secrets does not require path, query, or body parameters.
/v1/project-secretsUpdate project secrets
Updates one or both caller-provided secret values.
Update project secrets input parameters
Update project secrets accepts the route, header, query, and body inputs listed below.
Update project secrets request body
optional API key string with at least 12 characters Used by the Update project secrets operation.
optional signing secret string with at least 12 characters Used by the Update project secrets operation.
Update project secrets notes
- At least one of api_key or signing_secret is required.
/v1/project-secrets/rotateRotate project secrets
Rotates one or both generated secret values.
Rotate project secrets input parameters
Rotate project secrets accepts the route, header, query, and body inputs listed below.
Rotate project secrets request body
optional array of api_key and signing_secret Used by the Rotate project secrets operation.
Rotate project secrets notes
- Empty body rotates both secrets.
- Use rotate=["signing_secret"] to rotate only the signing secret.
Public Request Bins
Public request bins provide temporary no-login webhook URLs with private read tokens, one-hour cleanup, optional account claiming, and a live request stream.
Public Request Bins response fields
8 fieldsidsrc_*Temporary bin source ID. Public bin IDs use the src_ prefix.
endpointPublic hook URL that receives webhook requests for the bin.
tokenpbn_*Private pbn_ read token returned only when the public bin is created.
expires_atISO timestamp when an unclaimed public bin expires.
ttl_secondsLifetime of the anonymous bin in seconds.
requests[].idCaptured inbound request ID.
requests[].statusAcceptance or rejection status for the captured request.
requests[].dataCaptured headers, body, query, path, and HTTP method.
/v1/public-binsCreate a public request bin
Creates a temporary webhook receiver without requiring a FastHook account.
Create a public request bin input parameters
Create a public request bin does not require path, query, or body parameters.
Create a public request bin notes
- The token is returned once and is required to read or claim the bin.
- Anonymous bin creation is rate limited and bins are automatically cleaned up after one hour.
/v1/public-bins/:idRead a public request bin
Returns captured requests for a temporary bin when the private read token is valid.
Read a public request bin input parameters
Read a public request bin accepts the route, header, query, and body inputs listed below.
Read a public request bin path parameters
Public request bin source ID. Used by the Read a public request bin operation.
Read a public request bin headers
Private read token returned when the bin was created. Used by the Read a public request bin operation.
Read a public request bin notes
- Responses use Cache-Control: no-store.
- Expired bins return 410 Gone.
/v1/public-bins/:id/claimClaim a public request bin
Moves an anonymous bin and its captured requests into the authenticated active team.
Claim a public request bin input parameters
Claim a public request bin accepts the route, header, query, and body inputs listed below.
Claim a public request bin path parameters
Public request bin source ID. Used by the Claim a public request bin operation.
Claim a public request bin headers
Private read token returned when the bin was created. Used by the Claim a public request bin operation.
Claim a public request bin notes
- Claiming preserves captured requests and turns the temporary bin into a team-owned source.
/v1/bins/:id/streamStream bin requests
Upgrades to a WebSocket that emits newly captured requests for an authenticated team bin.
Stream bin requests input parameters
Stream bin requests accepts the route, header, query, and body inputs listed below.
Stream bin requests path parameters
Resource ID from the route. Used by the Stream bin requests operation.
Stream bin requests headers
Required WebSocket upgrade header. Used by the Stream bin requests operation.
Optional fh_token.<base64url> and fh_team.<base64url> protocol values for browser WebSocket authentication. Used by the Stream bin requests operation.
Stream bin requests notes
- A non-WebSocket request returns 426 Upgrade Required.
- Browser clients can pass credentials through Sec-WebSocket-Protocol using fh_token and fh_team values.
Requests
Requests are inbound webhook deliveries received by FastHook.
Requests response fields
19 fieldsidreq_*Unique inbound request ID. Request IDs use the req_ prefix.
team_idTeam that owns the inbound request.
statusaccepted | rejectedInbound request outcome derived from acceptance or rejection.
verifiedWhether the inbound request passed source verification.
original_event_data_idStored payload record containing the original inbound request data.
rejection_causeReason the request was rejected, or null when accepted.
ingested_atISO timestamp when FastHook received the inbound webhook request.
source_idSource that received the inbound webhook request.
events_countNumber of outbound events created from the request.
ignored_countNumber of routed events ignored by filtering or rule evaluation.
cli_events_countNumber of local CLI tunnel deliveries created from the request.
is_retryWhether the request was created by replaying a previous request.
retry_kindsingle | bulkRetry origin, such as single replay or bulk replay.
retry_parent_request_idOriginal request ID when this request was created by a retry.
retry_operation_idBulk operation ID that created the retry request, when applicable.
retried_atISO timestamp when the request was replayed.
dataStored inbound request payload, headers, method, path, query, and body when included.
created_atISO timestamp when the request record was created.
updated_atISO timestamp when the request record was last changed.
/v1/requestsList requests
Returns cursor-paginated inbound requests with deterministic ordering.
List requests input parameters
List requests accepts the route, header, query, and body inputs listed below.
List requests query parameters
ISO datetime or relative time for the start of the request window Used by the List requests operation.
ISO datetime or relative time for the end of the request window Used by the List requests operation.
default 100, max 100 Used by the List requests operation.
opaque next_cursor or next value Used by the List requests operation.
accepted | rejected Used by the List requests operation.
true | false Used by the List requests operation.
Source ID used to filter inbound requests or routed events. Used by the List requests operation.
Connection ID used to filter routed requests or events. Used by the List requests operation.
Bulk operation ID used to filter matching requests or events. Used by the List requests operation.
true | false Used by the List requests operation.
single | bulk Used by the List requests operation.
search across id and external_id Used by the List requests operation.
data, optional stored payload data Used by the List requests operation.
List requests notes
- For request listings, total is exact and total_exact is true when next_cursor is null.
- When next_cursor is present, total is a lower bound for the current query; use /v1/requests/count for an exact total.
/v1/requests/countCount requests
Returns the count matching the same request filters.
Count requests input parameters
Count requests accepts the route, header, query, and body inputs listed below.
Count requests query parameters
ISO datetime or relative lower bound for request ingestion Used by the Count requests operation.
ISO datetime or relative upper bound for request ingestion Used by the Count requests operation.
accepted | rejected Used by the Count requests operation.
true | false Used by the Count requests operation.
Source ID used to filter inbound requests or routed events. Used by the Count requests operation.
Connection ID used to filter routed requests or events. Used by the Count requests operation.
Bulk operation ID used to filter matching requests or events. Used by the Count requests operation.
true | false Used by the Count requests operation.
single | bulk Used by the Count requests operation.
Text search query; search_term is accepted as an alias. Used by the Count requests operation.
/v1/requests/:idRetrieve a request
Returns one request with stored payload data when available.
Retrieve a request input parameters
Retrieve a request accepts the route, header, query, and body inputs listed below.
Retrieve a request path parameters
Request ID. Used by the Retrieve a request operation.
/v1/requests/:id/traceRetrieve request trace
Returns one request with its routed events, ignored branches, delivery attempts, transformation executions, and a sorted timeline for debugging the full webhook path.
Retrieve request trace input parameters
Retrieve request trace accepts the route, header, query, and body inputs listed below.
Retrieve request trace path parameters
Request ID. Used by the Retrieve request trace operation.
Retrieve request trace notes
- Use this endpoint when you need the whole request path in one call instead of fetching request, events, ignored events, attempts, and transformations separately.
- The request.data object contains the original stored inbound payload. Event payload ids and transformation payload ids show where the outbound data changed.
/v1/requests/:id/shareCreate a sanitized request share
Creates an expiring public link for a sanitized snapshot of one request. FastHook redacts common secrets and any custom redact_keys before storing the share payload.
Create a sanitized request share input parameters
Create a sanitized request share accepts the route, header, query, and body inputs listed below.
Create a sanitized request share path parameters
Request ID. Used by the Create a sanitized request share operation.
Create a sanitized request share request body
optional short label for the share Used by the Create a sanitized request share operation.
optional TTL in seconds; default 7 days, max 30 days Used by the Create a sanitized request share operation.
optional ISO datetime; clamped to the maximum TTL Used by the Create a sanitized request share operation.
optional array of additional header, query, or body keys to redact Used by the Create a sanitized request share operation.
optional boolean; set false to omit body content Used by the Create a sanitized request share operation.
/v1/shares/request/:tokenRetrieve a sanitized request share
Returns a sanitized request snapshot by share token. This endpoint is public because the token acts as a bearer share link.
Retrieve a sanitized request share input parameters
Retrieve a sanitized request share accepts the route, header, query, and body inputs listed below.
Retrieve a sanitized request share path parameters
Resource ID from the route. Used by the Retrieve a sanitized request share operation.
Retrieve a sanitized request share notes
- Expired, revoked, missing, or malformed tokens return 404 or 410.
- The response contains the sanitized snapshot only, not the original stored request payload.
/v1/requests/:id/retryRetry a request
Queues a source replay for a previously received request. Send modifications to replay with edited method, path, query, headers, or body.
Retry a request input parameters
Retry a request accepts the route, header, query, and body inputs listed below.
Retry a request path parameters
Request ID. Used by the Retry a request operation.
Retry a request request body
optional HTTP method override Used by the Retry a request operation.
optional request path override Used by the Retry a request operation.
optional query string or object override Used by the Retry a request operation.
optional object of replay headers Used by the Retry a request operation.
optional replay body string or JSON value Used by the Retry a request operation.
/v1/requests/:id/eventsList request events
Returns delivery events produced from one request.
List request events input parameters
List request events accepts the route, header, query, and body inputs listed below.
List request events path parameters
Request ID. Used by the List request events operation.
List request events query parameters
SCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED Used by the List request events operation.
/v1/requests/:id/ignored_eventsList ignored request events
Returns connection-level ignored events for one request.
List ignored request events input parameters
List ignored request events accepts the route, header, query, and body inputs listed below.
List ignored request events path parameters
Request ID. Used by the List ignored request events operation.
/v1/requests/bulk_operationsList request bulk operations
Returns request bulk retry operations.
List request bulk operations input parameters
List request bulk operations accepts the route, header, query, and body inputs listed below.
List request bulk operations query parameters
all | ongoing | history Used by the List request bulk operations operation.
Maximum number of records to return. Used by the List request bulk operations operation.
/v1/requests/bulk_operationsCreate request bulk operation
Creates a bulk retry operation from filters.
Create request bulk operation input parameters
Create request bulk operation accepts the route, header, query, and body inputs listed below.
Create request bulk operation request body
Lower bound for matching inbound requests; accepts an ISO datetime or a relative value such as now-1h Used by the Create request bulk operation operation.
Upper bound for matching inbound requests; accepts an ISO datetime or a relative value such as now Used by the Create request bulk operation operation.
accepted | rejected Used by the Create request bulk operation operation.
Source ID used to filter inbound requests or routed events. Used by the Create request bulk operation operation.
Text search query. Used by the Create request bulk operation operation.
/v1/requests/bulk_operations/:id/cancelCancel request bulk operation
Cancels a planned or running request bulk operation.
Cancel request bulk operation input parameters
Cancel request bulk operation accepts the route, header, query, and body inputs listed below.
Cancel request bulk operation path parameters
Bulk operation ID. Used by the Cancel request bulk operation operation.
Events
Events are outbound delivery records created from accepted requests.
Events response fields
28 fieldsidevt_*Unique outbound event ID. Event IDs use the evt_ prefix.
team_idTeam that owns the outbound event.
request_idInbound request that produced the outbound event.
connection_idConnection that routed the event from source to destination.
webhook_idLegacy alias for the connection ID.
source_idSource that received the original inbound request.
destination_idDestination selected for outbound delivery.
cli_idCLI tunnel identifier when the event targets a local tunnel, otherwise null.
event_data_idStored payload record for the outbound event data.
statusSCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLEDCurrent delivery state of the outbound event.
rejection_causeReason the event was rejected before delivery, or null when not rejected.
failure_messageHuman-readable failure message for failed delivery states.
ignored_reasonReason the event was ignored by routing rules, or null when delivered.
ingested_atISO timestamp inherited from the inbound request ingestion time.
attemptsNumber of delivery attempts made for this event.
response_statusHTTP status from the latest delivery response, when available.
last_attempt_atISO timestamp of the latest delivery attempt.
next_attempt_atISO timestamp when the next retry is scheduled, or null when none is scheduled.
successful_atISO timestamp when the event was delivered successfully.
error_codeMachine-readable error code for the latest failed attempt.
is_retryWhether the event was created by retrying a previous event.
retry_kindsingle | bulkRetry origin, such as single retry or bulk retry.
retry_parent_event_idOriginal event ID when this event was created by a retry.
retry_operation_idBulk operation ID that created the retry event, when applicable.
retried_atISO timestamp when the event retry was queued.
dataStored request and response payload data when included.
created_atISO timestamp when the event record was created.
updated_atISO timestamp when the event record was last changed.
/v1/eventsList events
Returns outbound events across the requested date range.
List events input parameters
List events accepts the route, header, query, and body inputs listed below.
List events query parameters
ISO datetime or relative time for the start of the event window Used by the List events operation.
ISO datetime or relative time for the end of the event window Used by the List events operation.
default 100, max 100 Used by the List events operation.
opaque next_cursor or next value Used by the List events operation.
SCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED Used by the List events operation.
Source ID used to filter inbound requests or routed events. Used by the List events operation.
Connection ID used to filter routed requests or events. Used by the List events operation.
Destination ID used to filter outbound events. Used by the List events operation.
Bulk operation ID used to filter matching requests or events. Used by the List events operation.
Text search query; search_term is accepted as an alias. Used by the List events operation.
List events notes
- For event listings, total is exact and total_exact is true when next_cursor is null.
- When next_cursor is present, total is a lower bound for the current query; use /v1/events/count for an exact total.
/v1/events/countCount events
Returns the event count matching filters.
Count events input parameters
Count events accepts the route, header, query, and body inputs listed below.
Count events query parameters
ISO datetime or relative lower bound for event ingestion Used by the Count events operation.
ISO datetime or relative upper bound for event ingestion Used by the Count events operation.
SCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED Used by the Count events operation.
Source ID used to filter inbound requests or routed events. Used by the Count events operation.
Connection ID used to filter routed requests or events. Used by the Count events operation.
Destination ID used to filter outbound events. Used by the Count events operation.
Bulk operation ID used to filter matching requests or events. Used by the Count events operation.
Text search query; search_term is accepted as an alias. Used by the Count events operation.
Count events notes
- Counts are evaluated against event records directly; source_id and destination_id are event fields.
/v1/events/:idRetrieve an event
Returns one event with stored payload data when available.
Retrieve an event input parameters
Retrieve an event accepts the route, header, query, and body inputs listed below.
Retrieve an event path parameters
Event ID. Used by the Retrieve an event operation.
/v1/events/:id/retryRetry an event
Queues a retry for one outbound event when its source and connection are enabled and the connection is not paused.
Retry an event input parameters
Retry an event accepts the route, header, query, and body inputs listed below.
Retry an event path parameters
Event ID. Used by the Retry an event operation.
/v1/events/bulk_operationsList event bulk operations
Returns event bulk retry operations.
List event bulk operations input parameters
List event bulk operations accepts the route, header, query, and body inputs listed below.
List event bulk operations query parameters
all | ongoing | history Used by the List event bulk operations operation.
Maximum number of records to return. Used by the List event bulk operations operation.
/v1/events/bulk_operations/:idRetrieve an event bulk operation
Returns the current status and progress counters for one event bulk retry operation.
Retrieve an event bulk operation input parameters
Retrieve an event bulk operation accepts the route, header, query, and body inputs listed below.
Retrieve an event bulk operation path parameters
Bulk operation ID. Used by the Retrieve an event bulk operation operation.
/v1/events/bulk_operationsCreate event bulk operation
Creates a bulk event retry operation from filters.
Create event bulk operation input parameters
Create event bulk operation accepts the route, header, query, and body inputs listed below.
Create event bulk operation request body
Lower bound on event ingestion time; accepts an ISO datetime or a relative value such as now-1h Used by the Create event bulk operation operation.
Upper bound on event ingestion time; accepts an ISO datetime or a relative value such as now Used by the Create event bulk operation operation.
SCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED Used by the Create event bulk operation operation.
Source ID used to filter inbound requests or routed events. Used by the Create event bulk operation operation.
Connection ID used to filter routed requests or events. Used by the Create event bulk operation operation.
Destination ID used to filter outbound events. Used by the Create event bulk operation operation.
Text search query. Used by the Create event bulk operation operation.
/v1/events/bulk_operations/:id/cancelCancel event bulk operation
Cancels a planned or running event bulk operation.
Cancel event bulk operation input parameters
Cancel event bulk operation accepts the route, header, query, and body inputs listed below.
Cancel event bulk operation path parameters
Bulk operation ID. Used by the Cancel event bulk operation operation.
Attempts
Attempts are individual outbound delivery attempts for events, including response details, retry context, and timing.
Attempts response fields
23 fieldsidatt_*Unique delivery attempt ID. Attempt IDs use the att_ prefix.
team_idTeam that owns the delivery attempt.
event_idOutbound event this delivery attempt belongs to.
request_idInbound request that produced the attempted event, included when the event record is available.
connection_idConnection that routed the attempted event, included when the event record is available.
source_idSource that received the original inbound request, included when the event record is available.
destination_idDestination that received the delivery attempt.
response_statusHTTP response status returned by the destination, or null when unavailable.
attempt_numberDelivery attempt sequence number for the event.
triggerINITIAL | AUTOMATIC | MANUAL | BULK_RETRY | UNPAUSEReason the attempt was created, such as initial delivery, automatic retry, manual retry, bulk retry, or unpause.
error_codeMachine-readable failure code when delivery failed.
bodyResponse body captured from the destination.
requested_urlFinal URL FastHook attempted to deliver to.
http_methodHTTP method used for the delivery attempt.
bulk_retry_idBulk retry operation that created the attempt, when applicable.
statusSUCCESSFUL | FAILEDFinal delivery attempt result.
successful_atISO timestamp when the attempt succeeded, or null when failed.
delivered_atISO timestamp when FastHook sent the request to the destination.
responded_atISO timestamp when FastHook received the destination response.
delivery_latencyMilliseconds spent preparing and sending the delivery.
response_latencyMilliseconds between delivery and destination response.
created_atISO timestamp when the attempt record was created.
updated_atISO timestamp when the attempt record was last changed.
/v1/attemptsList attempts
Returns delivery attempts for the active team. Filter by one or more event IDs to inspect delivery history for specific events.
List attempts input parameters
List attempts accepts the route, header, query, and body inputs listed below.
List attempts query parameters
Event ID filter. Repeat the parameter to filter by multiple events. Used by the List attempts operation.
Destination ID filter. Repeat the parameter to filter by multiple destinations. Used by the List attempts operation.
FAILED | SUCCESSFUL Used by the List attempts operation.
ISO timestamp or relative time expression such as now-1h. Used by the List attempts operation.
ISO timestamp or relative time expression such as now. Used by the List attempts operation.
search attempt, event, destination, error code, requested URL, or request ID. Used by the List attempts operation.
Sort field. Currently created_at. Used by the List attempts operation.
asc | desc, default desc Used by the List attempts operation.
default 100, max 255 Used by the List attempts operation.
Opaque cursor from pagination.next. Used by the List attempts operation.
Opaque cursor from pagination.prev. Used by the List attempts operation.
List attempts notes
- Use either next or prev from pagination for cursor pagination.
- Attempts preserve per-delivery response details while events keep aggregate delivery status.
/v1/attempts/:idRetrieve an attempt
Returns one delivery attempt for the active team.
Retrieve an attempt input parameters
Retrieve an attempt accepts the route, header, query, and body inputs listed below.
Retrieve an attempt path parameters
Attempt ID. Used by the Retrieve an attempt operation.
Retrieve an attempt notes
- Returns 404 when the attempt does not exist or is outside the active team.
Metrics
Metrics endpoints include zero-filled time series for request and event histograms, plus compact 24 hour summaries for source, destination, and transformation list views.
Metrics response fields
43 fieldsdate_range.startStart of the returned metrics range.
date_range.endEnd of the returned metrics range.
granularity1s | 5s | 10s | 30s | 1m | 5m | 15m | 1hTime bucket size used for the returned series.
series[].timestampStart timestamp for a metrics bucket.
series[].countTotal records counted in the bucket.
series[].accepted_countInbound requests accepted in the bucket.
series[].rejected_countInbound requests rejected in the bucket.
series[].delivered_countOutbound events delivered successfully in the bucket.
series[].failed_countOutbound events failed in the bucket.
series[].queued_countOutbound events queued in the bucket.
series[].processing_countOutbound events processing in the bucket.
series[].hold_countOutbound events held for retry or scheduling in the bucket.
series[].ignored_countOutbound events ignored in the bucket.
models[].idmodels[].id field returned by the Metrics API.
models[].source_idmodels[].source_id field returned by the Metrics API.
models[].connection_idConnection ID for a compact metrics row.
models[].webhook_idLegacy alias of connection_id.
models[].destination_idmodels[].destination_id field returned by the Metrics API.
models[].transformation_idTransformation ID for a compact metrics row.
models[].requests_24h_countmodels[].requests_24h_count field returned by the Metrics API.
models[].requests_24h_total_countmodels[].requests_24h_total_count field returned by the Metrics API.
models[].requests_24h_accepted_countmodels[].requests_24h_accepted_count field returned by the Metrics API.
models[].requests_24h_rejected_countmodels[].requests_24h_rejected_count field returned by the Metrics API.
models[].requests_24h_accepted_binsmodels[].requests_24h_accepted_bins field returned by the Metrics API.
models[].requests_24h_rejected_binsmodels[].requests_24h_rejected_bins field returned by the Metrics API.
models[].connections_countConnections that reference the source or transformation in this metrics row.
models[].events_24h_countEvents routed through the connection in the last 24 hours.
models[].events_24h_successful_countSuccessful connection events in the last 24 hours.
models[].events_24h_failed_countFailed connection events in the last 24 hours.
models[].events_24h_pending_countScheduled, queued, or held connection events in the last 24 hours.
models[].events_24h_cancelled_countCancelled connection events in the last 24 hours.
models[].events_24h_binsSix buckets, oldest to newest, of all connection events in the last 24 hours.
models[].events_24h_successful_binsSix buckets of successful connection events.
models[].events_24h_failed_binsSix buckets of failed connection events.
models[].events_24h_pending_binsSix buckets of pending connection events.
models[].events_24h_cancelled_binsSix buckets of cancelled connection events.
models[].attempts_24h_countmodels[].attempts_24h_count field returned by the Metrics API.
models[].attempts_24h_binsmodels[].attempts_24h_bins field returned by the Metrics API.
models[].executions_24h_countTransformation executions recorded in the last 24 hours.
models[].executions_24h_successful_countTransformation executions without error-level logs in the last 24 hours.
models[].executions_24h_failed_countTransformation executions with error-level logs in the last 24 hours.
models[].executions_24h_successful_binsPer-model six-bucket history of successful transformation executions during the last 24 hours.
models[].executions_24h_failed_binsPer-model six-bucket history of failed transformation executions during the last 24 hours.
/v1/metrics/requestsRequest metrics
Returns request histogram metrics with request-specific measures.
Request metrics input parameters
Request metrics accepts the route, header, query, and body inputs listed below.
Request metrics query parameters
ISO datetime, required Used by the Request metrics operation.
ISO datetime, required Used by the Request metrics operation.
1s | 5s | 10s | 30s | 1m | 5m | 15m | 1h Used by the Request metrics operation.
count | accepted_count | rejected_count Used by the Request metrics operation.
Source ID used to filter inbound requests or routed events. Used by the Request metrics operation.
Bulk operation ID used to filter matching requests or events. Used by the Request metrics operation.
accepted | rejected Used by the Request metrics operation.
Text search query. Used by the Request metrics operation.
/v1/metrics/eventsEvent metrics
Returns event histogram metrics with event-specific measures.
Event metrics input parameters
Event metrics accepts the route, header, query, and body inputs listed below.
Event metrics query parameters
ISO datetime, required Used by the Event metrics operation.
ISO datetime, required Used by the Event metrics operation.
1s | 5s | 10s | 30s | 1m | 5m | 15m | 1h Used by the Event metrics operation.
count | delivered_count | failed_count | queued_count | processing_count | hold_count | ignored_count Used by the Event metrics operation.
Source ID used to filter inbound requests or routed events. Used by the Event metrics operation.
Connection ID used to filter routed requests or events. Used by the Event metrics operation.
Destination ID used to filter outbound events. Used by the Event metrics operation.
Bulk operation ID used to filter matching requests or events. Used by the Event metrics operation.
SCHEDULED | QUEUED | HOLD | SUCCESSFUL | FAILED | CANCELLED Used by the Event metrics operation.
Text search query. Used by the Event metrics operation.
/v1/metrics/sourcesSource summary metrics
Returns compact 24 hour request and connection metrics for one or more sources.
Source summary metrics input parameters
Source summary metrics accepts the route, header, query, and body inputs listed below.
Source summary metrics query parameters
Source ID. Repeat the parameter or pass comma-separated IDs. Used by the Source summary metrics operation.
Plural alias for id; accepts repeated or comma-separated source IDs. Used by the Source summary metrics operation.
Singular source-specific alias for id. Used by the Source summary metrics operation.
Plural source-specific alias for id. Used by the Source summary metrics operation.
Source summary metrics notes
- Use this after GET /v1/sources so the source list response stays lightweight.
- Source request bins are ordered oldest to newest across the last 24 hours.
/v1/metrics/connectionsConnection summary metrics
Returns compact 24 hour event status metrics for one or more routing connections.
Connection summary metrics input parameters
Connection summary metrics accepts the route, header, query, and body inputs listed below.
Connection summary metrics query parameters
Connection ID. Repeat the parameter or pass comma-separated IDs. Used by the Connection summary metrics operation.
Alias for id. Used by the Connection summary metrics operation.
Legacy alias for id. Used by the Connection summary metrics operation.
Connection summary metrics notes
- Use this after GET /v1/connections so the connection list response stays lightweight.
- Connection event bins are ordered oldest to newest across the last 24 hours.
/v1/metrics/destinationsDestination summary metrics
Returns compact 24 hour delivery attempt metrics for one or more destinations.
Destination summary metrics input parameters
Destination summary metrics accepts the route, header, query, and body inputs listed below.
Destination summary metrics query parameters
Destination ID. Repeat the parameter or pass comma-separated IDs. Used by the Destination summary metrics operation.
Plural alias for id; accepts repeated or comma-separated destination IDs. Used by the Destination summary metrics operation.
Singular destination-specific alias for id. Used by the Destination summary metrics operation.
Plural destination-specific alias for id. Used by the Destination summary metrics operation.
Destination summary metrics notes
- Use this after GET /v1/destinations so the destination list response stays lightweight.
- Destination attempt bins are ordered oldest to newest across the last 24 hours.
/v1/metrics/transformationsTransformation summary metrics
Returns compact 24 hour execution and connection metrics for one or more transformations.
Transformation summary metrics input parameters
Transformation summary metrics accepts the route, header, query, and body inputs listed below.
Transformation summary metrics query parameters
Transformation ID. Repeat the parameter or pass comma-separated IDs. Used by the Transformation summary metrics operation.
Plural alias for id; accepts repeated or comma-separated transformation IDs. Used by the Transformation summary metrics operation.
Singular transformation-specific alias for id. Used by the Transformation summary metrics operation.
Plural transformation-specific alias for id. Used by the Transformation summary metrics operation.
Transformation summary metrics notes
- Use this after GET /v1/transformations so the transformation list response stays lightweight.
- Transformation execution bins are ordered oldest to newest across the last 24 hours.
Errors
Errors are returned as JSON with a status code and a human-readable message.
Errors response fields
4 fieldserrorShort error label returned by the API.
codeMachine-readable error code for programmatic handling.
messageHuman-readable explanation of the error.
dataOptional structured details for conflict or validation errors.
/v1/sources/:idError format
Most errors include error/message fields, and some conflict responses include code and data.
Error format input parameters
Error format accepts the route, header, query, and body inputs listed below.
Error format path parameters
Source ID. Used by the Error format operation.
Error format notes
- 401 means authentication is missing or invalid.
- 403 means the authenticated principal cannot access the team.
- 404 means the resource or route was not found.
- 409 is used for duplicate resources or retry conflicts.