Get website session
curl --request GET \
--url https://beta.getsales.io/signals/v1/api/website-sessions/{sid} \
--header 'Authorization: Bearer <token>' \
--header 'Team-SID: <api-key>'import requests
url = "https://beta.getsales.io/signals/v1/api/website-sessions/{sid}"
headers = {
"Authorization": "Bearer <token>",
"Team-SID": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: 'Bearer <token>', 'Team-SID': '<api-key>'}
};
fetch('https://beta.getsales.io/signals/v1/api/website-sessions/{sid}', 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://beta.getsales.io/signals/v1/api/website-sessions/{sid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Team-SID: <api-key>"
],
]);
$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://beta.getsales.io/signals/v1/api/website-sessions/{sid}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Team-SID", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://beta.getsales.io/signals/v1/api/website-sessions/{sid}")
.header("Authorization", "Bearer <token>")
.header("Team-SID", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://beta.getsales.io/signals/v1/api/website-sessions/{sid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["Team-SID"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"operation": "get",
"item": {
"sid": "<string>",
"team_sid": "<string>",
"site_sid": "<string>",
"visitor_sid": "<string>",
"person_sid": "<string>",
"company_sid": "<string>",
"attribution": "code",
"fingerprint_sid": "<string>",
"started_at": "<string>",
"last_seen_at": "<string>",
"closed_at": "<string>",
"pageviews_count": 1,
"engaged_seconds": 1,
"entry_path": "<string>",
"exit_path": "<string>",
"pages": [
{
"page_id": "<string>",
"path": "<string>",
"title": "<string>",
"engaged_seconds": 1,
"first_seen_at": "<string>",
"scroll_pct": 50
}
],
"events": [
{
"kind": "event",
"name": "<string>",
"at": "<string>",
"page_id": "<string>"
}
],
"key_pages": [
"<string>"
],
"referrer_type": "direct",
"referrer_host": "<string>",
"utm_source": "<string>",
"utm_medium": "<string>",
"utm_campaign": "<string>",
"utm_content": "<string>",
"utm_term": "<string>",
"landing_code": "<string>",
"browser": "<string>",
"browser_version": "<string>",
"os": "<string>",
"os_version": "<string>",
"device": "desktop",
"screen": "<string>",
"language": "<string>",
"timezone": "<string>",
"geo_country": "<string>",
"geo_region": "<string>",
"geo_city": "<string>",
"ip": "<string>",
"network_status": "pending",
"network_type": "<string>",
"network_name": "<string>",
"network_domain": "<string>",
"asn": 123,
"as_name": "<string>",
"is_internal": true,
"created_at": "<string>",
"updated_at": "<string>"
},
"included": {
"visitor": {
"sid": "<string>"
},
"person": {
"sid": "<string>"
},
"company": {
"sid": "<string>"
}
},
"includes": [
"<string>"
],
"meta": {
"trace_id": "<string>",
"span_id": "<string>",
"timestamp": "<string>",
"duration_ms": 1,
"team_sid": "<string>",
"actor_type": "<string>"
}
}{
"success": false,
"error": {
"code": "validation_failed",
"message": "<string>",
"recoverable": true,
"suggestion": "<string>",
"field_errors": {},
"blockers": [
{
"type": "<string>",
"severity": "hard",
"description": "<string>",
"entity_sid": "<string>",
"resolution": "<string>",
"resolution_hint": "<string>",
"count": 123
}
],
"context": {}
},
"meta": {
"trace_id": "<string>",
"span_id": "<string>",
"timestamp": "<string>",
"duration_ms": 1,
"team_sid": "<string>",
"actor_type": "<string>"
}
}{
"success": false,
"error": {
"code": "validation_failed",
"message": "<string>",
"recoverable": true,
"suggestion": "<string>",
"field_errors": {},
"blockers": [
{
"type": "<string>",
"severity": "hard",
"description": "<string>",
"entity_sid": "<string>",
"resolution": "<string>",
"resolution_hint": "<string>",
"count": 123
}
],
"context": {}
},
"meta": {
"trace_id": "<string>",
"span_id": "<string>",
"timestamp": "<string>",
"duration_ms": 1,
"team_sid": "<string>",
"actor_type": "<string>"
}
}website_sessions
Get website session
One session with its page list (path, title, engaged time), its forms and events, and with include the visitor, the person or the company it was bound to. Private context: never repeated to the lead.
Contract:
- MCP tool
get_website_session, registry packagemcp.signals/website_sessions, mountsignals.visits. - Operation
get, response envelopeget. - Flags: read only.
GET
/
api
/
website-sessions
/
{sid}
Get website session
curl --request GET \
--url https://beta.getsales.io/signals/v1/api/website-sessions/{sid} \
--header 'Authorization: Bearer <token>' \
--header 'Team-SID: <api-key>'import requests
url = "https://beta.getsales.io/signals/v1/api/website-sessions/{sid}"
headers = {
"Authorization": "Bearer <token>",
"Team-SID": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: 'Bearer <token>', 'Team-SID': '<api-key>'}
};
fetch('https://beta.getsales.io/signals/v1/api/website-sessions/{sid}', 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://beta.getsales.io/signals/v1/api/website-sessions/{sid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Team-SID: <api-key>"
],
]);
$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://beta.getsales.io/signals/v1/api/website-sessions/{sid}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Team-SID", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://beta.getsales.io/signals/v1/api/website-sessions/{sid}")
.header("Authorization", "Bearer <token>")
.header("Team-SID", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://beta.getsales.io/signals/v1/api/website-sessions/{sid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["Team-SID"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"operation": "get",
"item": {
"sid": "<string>",
"team_sid": "<string>",
"site_sid": "<string>",
"visitor_sid": "<string>",
"person_sid": "<string>",
"company_sid": "<string>",
"attribution": "code",
"fingerprint_sid": "<string>",
"started_at": "<string>",
"last_seen_at": "<string>",
"closed_at": "<string>",
"pageviews_count": 1,
"engaged_seconds": 1,
"entry_path": "<string>",
"exit_path": "<string>",
"pages": [
{
"page_id": "<string>",
"path": "<string>",
"title": "<string>",
"engaged_seconds": 1,
"first_seen_at": "<string>",
"scroll_pct": 50
}
],
"events": [
{
"kind": "event",
"name": "<string>",
"at": "<string>",
"page_id": "<string>"
}
],
"key_pages": [
"<string>"
],
"referrer_type": "direct",
"referrer_host": "<string>",
"utm_source": "<string>",
"utm_medium": "<string>",
"utm_campaign": "<string>",
"utm_content": "<string>",
"utm_term": "<string>",
"landing_code": "<string>",
"browser": "<string>",
"browser_version": "<string>",
"os": "<string>",
"os_version": "<string>",
"device": "desktop",
"screen": "<string>",
"language": "<string>",
"timezone": "<string>",
"geo_country": "<string>",
"geo_region": "<string>",
"geo_city": "<string>",
"ip": "<string>",
"network_status": "pending",
"network_type": "<string>",
"network_name": "<string>",
"network_domain": "<string>",
"asn": 123,
"as_name": "<string>",
"is_internal": true,
"created_at": "<string>",
"updated_at": "<string>"
},
"included": {
"visitor": {
"sid": "<string>"
},
"person": {
"sid": "<string>"
},
"company": {
"sid": "<string>"
}
},
"includes": [
"<string>"
],
"meta": {
"trace_id": "<string>",
"span_id": "<string>",
"timestamp": "<string>",
"duration_ms": 1,
"team_sid": "<string>",
"actor_type": "<string>"
}
}{
"success": false,
"error": {
"code": "validation_failed",
"message": "<string>",
"recoverable": true,
"suggestion": "<string>",
"field_errors": {},
"blockers": [
{
"type": "<string>",
"severity": "hard",
"description": "<string>",
"entity_sid": "<string>",
"resolution": "<string>",
"resolution_hint": "<string>",
"count": 123
}
],
"context": {}
},
"meta": {
"trace_id": "<string>",
"span_id": "<string>",
"timestamp": "<string>",
"duration_ms": 1,
"team_sid": "<string>",
"actor_type": "<string>"
}
}{
"success": false,
"error": {
"code": "validation_failed",
"message": "<string>",
"recoverable": true,
"suggestion": "<string>",
"field_errors": {},
"blockers": [
{
"type": "<string>",
"severity": "hard",
"description": "<string>",
"entity_sid": "<string>",
"resolution": "<string>",
"resolution_hint": "<string>",
"count": 123
}
],
"context": {}
},
"meta": {
"trace_id": "<string>",
"span_id": "<string>",
"timestamp": "<string>",
"duration_ms": 1,
"team_sid": "<string>",
"actor_type": "<string>"
}
}Authorizations
Access token issued by gs.service.id. Its access_identity claim carries team_sid, actor_sid and actor_type, and that team scope is authoritative.
Team scope for tokens that do not carry one. Ignored when the token already names a team.
Path Parameters
The sg_ws_* sid of the row to read.
Required string length:
18Pattern:
^sg_ws_Query Parameters
Relations to attach to the row; omit for the bare row.
visitor: the browser's row; person and company: the owner's sid (the cards are owed).
Available options:
visitor, person, company