The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "Payload Harness \u2014 Async Callback (Webhook)",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "test-agent-async-callback",
"authentication": "headerAuth",
"responseMode": "responseNode",
"options": {}
},
"id": "a2b3c4d5-e6f7-4890-a123-456789abcdef",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
0,
300
],
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "request-id",
"name": "requestID",
"type": "string",
"value": "={{ ($json.body ?? $json).requestID }}"
}
]
},
"options": {}
},
"id": "b3c4d5e6-f708-4901-b234-56789abcdef0",
"name": "Extract Request ID",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
260,
180
]
},
{
"parameters": {
"method": "POST",
"url": "={{ $env.PAYLOAD_PUBLIC_URL.replace(/\\/$/, '') + '/api/agent-runs/' + $json.requestID + '/events' }}",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ { \"requestID\": $json.requestID, \"status\": \"succeeded\", \"content\": \"Async result is ready\", \"n8nExecutionID\": $execution.id } }}",
"options": {}
},
"id": "d5e6f708-1920-4123-d456-789abcdef012",
"name": "Callback Payload",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
520,
180
],
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ { \"status\": \"waiting\", \"content\": \"Processing asynchronously.\", \"n8nExecutionID\": $execution.id } }}",
"options": {
"responseHeaders": {
"entries": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
}
},
"id": "e6f70819-2021-4234-e567-89abcdef0123",
"name": "Respond Waiting",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [
260,
420
]
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Extract Request ID",
"type": "main",
"index": 0
},
{
"node": "Respond Waiting",
"type": "main",
"index": 0
}
]
]
},
"Extract Request ID": {
"main": [
[
{
"node": "Callback Payload",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"meta": {
"templateCredsSetupCompleted": false
},
"tags": [
{
"name": "payload-harness"
}
]
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
httpHeaderAuth
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Payload Harness — Async Callback (Webhook). Uses httpRequest. Webhook trigger; 4 nodes.
Source: https://github.com/transformable-app/transformable-nodesui/blob/main/docs/n8n-workflows/test-agent-async-callback.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
AGA Complaint Agent (LINE). Uses httpRequest, googleSheets. Webhook trigger; 13 nodes.
Send Postcards to Contacts Automatically using CentralStationCRM and EchtPost. Uses httpRequest. Webhook trigger; 12 nodes.
v2 Like Minds — Instagram Publish. Uses httpRequest. Webhook trigger; 6 nodes.
This is a specific use case. The ElevenLabs guide for Cal.com bookings is comprehensive but I was having trouble with the booking API request. So I built a simple workflow to validate the request and
Materials Search Workflow. Uses httpRequest. Webhook trigger; 5 nodes.