linkedin-search-people but you can apply the same patterns to other actions by changing the path and JSON body.
Goals:
- How To — Tips and good practice to implement Edges.
- Manage Cursor — paginate with
X-Pagination-Nextuntil done; - Fewer webhooks — use Edges
callback.on: "final"for async so you get one callback per run, then pull data withGET /v1/runs/{run_uid}/outputs(Callbacks).
1. Set the request body to JSON
Use an HTTP Request node:- Method
POST. - Enable Send Body.
- Body Content Type → JSON.
- Paste or build your JSON.

n8n Cloud: HTTP Request JSON body for Edges API
Accept: application/json header to ensure the response is in JSON format.
2. Send the X-API-Key header
For each request to the Edges API you need to authenticate thanks to your API key.
Edges authenticates with X-API-Key (not Bearer).
Add a header field

n8n Cloud: X-API-Key header for Edges API authentication

n8n Cloud: X-API-Key header for Edges API authentication
3. Show headers and body
Enable Include Response Headers and Status / Full response (wording depends on n8n version). The item shape is typically like{ body, headers, statusCode } so the next step can read headers['x-pagination-next'].

n8n Cloud: full response with headers and JSON body for Edges
Live mode: native loop on X-Pagination-Next
In live mode, Edges returns the next page as a full URL in the X-Pagination-Next header.
Call it exactly as returned. stop when the header is missing or empty.
Simple implementation
- Edit Field
cursorto empty string or with the returned cursor header ←{{ $runIndex === 0 ? '' : $('Extract Pagination Cursor').first().json.pagination_cursor }} - Check if
cursoris set. If empty then launch the first request. If cursor exist then go to the cursor request. - HTTP Request —
POSTtohttps://api.edges.run/v1/actions/linkedin-search-people/run/liveand full response enabled. Or use thecursoras URL. - Edit Field — extract
cursor - Check if
cursoris returned. If cursor exist then go back to the first step of the loop ! - If no cursor is returned then continue. You have to process or store the results during the loop.

n8n Cloud: native IF loop for Edges live X-Pagination-Next pagination
Importable workflow (live loop)
Replace the placeholder key in both HTTP nodes after import. Complete the canvas so HTTP Next page connects back to Extract pagination.Async mode: final webhook + outputs pagination
Why callback.on: "final"
With "final", Edges sends one callback when the run finishes instead of streaming many callbacks. That fits n8n Cloud well: one Webhook execution per run, then you pull the full result set with the outputs API (Streaming vs final callbacks).
Start the async run
HTTP Request POST onhttps://api.edges.run/v1/actions/linkedin-search-people/run/async
Body example (replace the webhook URL with yours):
When the Webhook fires
The payload includesrun.run_uid (see Callbacks). Use Edit Fields (Set):
- HTTP Request — method GET. In the URL field, use the
runUidreturned to the callback.https://api.edges.run/v1/runs/{{ $json.runUid }}/outputsand enable full response. - Same Set / IF / HTTP pattern as live mode:
nextUrlfromx-pagination-next
- Loop until no cursor are returned.
Related Edges documentation
- Pagination
- Callbacks —
on: "final" - Get run outputs
- Runs overview
- API introduction

