Get the sample payload a trigger will deliver
workflow:readReturns what {{trigger.*}} will actually contain for a GIVEN trigger configuration — the shape every expression in the workflow is written against.
Why this exists rather than reading sampleData off the catalog: three internal triggers DERIVE their payload from the author's own configuration (a Form's sample is the fields you defined, a Schedule's is its real next fire time, a Callable's is its declared input), so the frozen literal in the catalog is a lie for them. derived: true means the answer reflects the config you sent; derived: false means it is the trigger's generic declaration.
The body is optional — an absent or empty body means 'no config yet' and the worker answers with the declared fallback rather than failing. Safe to call for ANY trigger: a piece that does not implement derivation falls back to its declared sample instead of erroring.
Runs on a worker, so it is 503 when the fleet is down.
KNOWN ROUGH EDGE: a triggerId that does not exist on an EXISTING piece answers 500 INTERNAL_ERROR (message trigger "x" not found on piece "y"), not 404. An unknown PIECE does answer 404.
Send Content-Type: application/json if you send a body.
Requires workflow:read. Resolving a dynamic value is not a catalog read: it can return tenant data (the subflow piece's workflow_id option is this workspace's whole workflow list) and, when the request carries a connectionId, the credential is resolved and decrypted on a worker so the piece can call the third party.
Authorization
bearerAuth An API token: Authorization: Bearer grt_…. Mint one in the app under Settings → Workspace → API tokens; the raw value is shown once. Scopes confine the token — see x-permission on each operation.
In: header
Path Parameters
Piece id of the trigger.
Trigger id — the value stored in the definition's trigger actionId.
Request Body
application/json
The trigger's configuration, exactly as it would sit in the definition's trigger config. Omit for the declared fallback.
TypeScript Definitions
Use the request body type in TypeScript.
The trigger configuration to derive a sample for. Optional in full.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/pieces/webhook/triggers/catch_webhook/sample" \ -H "Content-Type: application/json" \ -d '{}'{ "data": { "sampleData": {}, "derived": true }}