SSE Stream
curl --request GET \
--url https://api.linkupapi.com/v2/webhooks/{webhook_id}/streamimport requests
url = "https://api.linkupapi.com/v2/webhooks/{webhook_id}/stream"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.linkupapi.com/v2/webhooks/{webhook_id}/stream', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.linkupapi.com/v2/webhooks/{webhook_id}/stream",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.linkupapi.com/v2/webhooks/{webhook_id}/stream"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.linkupapi.com/v2/webhooks/{webhook_id}/stream")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linkupapi.com/v2/webhooks/{webhook_id}/stream")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodySSE Stream
Receive webhook events in real-time via Server-Sent Events (SSE)
GET
/
v2
/
webhooks
/
{webhook_id}
/
stream
SSE Stream
curl --request GET \
--url https://api.linkupapi.com/v2/webhooks/{webhook_id}/streamimport requests
url = "https://api.linkupapi.com/v2/webhooks/{webhook_id}/stream"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.linkupapi.com/v2/webhooks/{webhook_id}/stream', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.linkupapi.com/v2/webhooks/{webhook_id}/stream",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.linkupapi.com/v2/webhooks/{webhook_id}/stream"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.linkupapi.com/v2/webhooks/{webhook_id}/stream")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linkupapi.com/v2/webhooks/{webhook_id}/stream")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyOpen a persistent SSE connection to receive events in real time. This is the recommended way to consume webhook events in hosted mode (no webhook URL).
This endpoint is only available for hosted webhooks (created without a
url). For custom webhooks, events are sent directly to your URL via POST.Query Parameters
string
required
Your API key. SSE connections use query parameter authentication instead of headers.
Path Parameters
string
required
The unique identifier of the webhook to stream events from
How It Works
The connection stays open indefinitely. The server pushes events as they happen:- On connect — you receive a
connectedevent confirming the stream is active - On event — you receive a
webhookevent with the full payload - Keepalive — the server sends a keepalive comment (
: keepalive) every 30 seconds to prevent timeouts
SSE Event Format
event: connected
data: {"webhook_id": "abc123", "account_id": "69c127c3..."}
event: webhook
data: {"account_id": "69c127c3...", "event": {"type": "message", ...}, "timestamp": "..."}
: keepalive
Notes
- The stream automatically reconnects if the connection drops (browsers handle this natively with
EventSource) - Monitoring starts when the webhook is created. If you stopped it with
/stop, callPOST /v2/webhooks/{webhook_id}/startto resume - Multiple clients can connect to the same stream simultaneously
- The stream does not consume additional credits beyond the monitoring cost (10 credits/day)
Was this page helpful?