curl --request POST \
--url https://app.gtm-api.com/linkedin/v4/api/linkedin-accounts/{sid}/get-my-analytics \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Team-SID: <api-key>' \
--data '
{
"date_from": "<string>",
"date_to": "<string>"
}
'import requests
url = "https://app.gtm-api.com/linkedin/v4/api/linkedin-accounts/{sid}/get-my-analytics"
payload = {
"date_from": "<string>",
"date_to": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Team-SID": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'Team-SID': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({date_from: '<string>', date_to: '<string>'})
};
fetch('https://app.gtm-api.com/linkedin/v4/api/linkedin-accounts/{sid}/get-my-analytics', 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://app.gtm-api.com/linkedin/v4/api/linkedin-accounts/{sid}/get-my-analytics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'date_from' => '<string>',
'date_to' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.gtm-api.com/linkedin/v4/api/linkedin-accounts/{sid}/get-my-analytics"
payload := strings.NewReader("{\n \"date_from\": \"<string>\",\n \"date_to\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Team-SID", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.gtm-api.com/linkedin/v4/api/linkedin-accounts/{sid}/get-my-analytics")
.header("Authorization", "Bearer <token>")
.header("Team-SID", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"date_from\": \"<string>\",\n \"date_to\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.gtm-api.com/linkedin/v4/api/linkedin-accounts/{sid}/get-my-analytics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Team-SID"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"date_from\": \"<string>\",\n \"date_to\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"operation": "action",
"action": "<string>",
"item": {
"sid": "<string>",
"team_sid": "<string>",
"antidetect_browser_sid": "<string>",
"account_share_sid": "<string>",
"ln_id": "<string>",
"ln_member_id": "<string>",
"sn_id": "<string>",
"nickname": "<string>",
"full_name": "<string>",
"avatar_url": "<string>",
"display_name": "<string>",
"label": "<string>",
"has_premium": true,
"has_sn": true,
"has_recruiter": true,
"inmail_credits": 123,
"last_premium_check_at": "<string>",
"last_connections_sync_at": "<string>",
"last_conversations_sync_at": "<string>",
"last_sales_navigator_conversations_sync_at": "<string>",
"last_connection_requests_sync_at": "<string>",
"last_connection_invitations_sync_at": "<string>",
"last_followers_sync_at": "<string>",
"last_snapshot_at": "<string>",
"initial_sync_completed_at": "<string>",
"last_heartbeat_at": "<string>",
"sync_config": {
"entries": {
"connections": {
"interval_minutes": 123
},
"conversations": {
"interval_minutes": 123
},
"sales_navigator_conversations": {
"interval_minutes": 123
},
"connection_requests": {
"interval_minutes": 123
},
"connection_invitations": {
"interval_minutes": 123
},
"premium_check": {
"interval_minutes": 123
},
"snapshot_check": {
"interval_minutes": 123
}
},
"timezone": "<string>",
"window": [
{
"day_of_week": 4,
"start_minute": 719,
"end_minute": 720
}
]
},
"webhook_config": {
"connections": {
"enabled": true,
"since": "<string>"
},
"connection_requests": {
"enabled": true,
"since": "<string>"
},
"connection_invitations": {
"enabled": true,
"since": "<string>"
},
"conversations": {
"enabled": true,
"since": "<string>"
},
"sales_navigator_conversations": {
"enabled": true,
"since": "<string>"
},
"messages": {
"enabled": true,
"since": "<string>"
},
"followers": {
"enabled": true,
"since": "<string>"
},
"snapshot": {
"enabled": true,
"since": "<string>"
},
"strike_log": {
"enabled": true,
"since": "<string>"
},
"limits": {
"enabled": true,
"since": "<string>"
}
},
"created_by": {
"actor_sid": "<string>",
"team_sid": "<string>",
"permissions": {},
"reason": "<string>",
"request_sid": "<string>"
},
"created_at": "<string>",
"updated_at": "<string>",
"deleted_at": "<string>"
},
"result": {
"status": "<string>",
"analytics": {
"date_from": "<string>",
"date_to": "<string>",
"metrics": {}
}
},
"meta": {
"trace_id": "<string>",
"span_id": "<string>",
"timestamp": "<string>",
"duration_ms": 1,
"debug_url": "<string>"
},
"credits": {
"charged": 1,
"balance_after": 1
}
}{
"success": false,
"error": {
"message": "<string>",
"recoverable": true,
"suggestion": "<string>",
"field_errors": {},
"blockers": [
{
"type": "<string>",
"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,
"debug_url": "<string>"
}
}{
"success": false,
"error": {
"message": "<string>",
"recoverable": true,
"suggestion": "<string>",
"field_errors": {},
"blockers": [
{
"type": "<string>",
"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,
"debug_url": "<string>"
}
}Get my analytics
Read the connected account’s creator content analytics over a date window: per metric (impressions, engagements) the daily series, the period total, and the percentage change against the prior period. Omit both dates to get the trailing 28 days, which is what the LinkedIn dashboard itself opens on. Supplying one date without the other is refused rather than half-defaulted, and a window running into the future is refused too (LinkedIn has no data there and would answer with zeroes that read like a collapse in reach). Non-creditable and identity-bound: this is the account’s own dashboard, not a competitor read. The metrics map is open: new cards LinkedIn adds show up as extra keys. The ‘Discovery’ card (in-network vs out-of-network reach) is a separate component and is NOT included.
Contract:
- MCP tool
get_linkedin_account_my_analytics, registry packagemcp.linkedin/linkedin_accounts, mountlinkedin.accounts. - Operation
action, response envelopeaction. - Flags: read only.
curl --request POST \
--url https://app.gtm-api.com/linkedin/v4/api/linkedin-accounts/{sid}/get-my-analytics \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Team-SID: <api-key>' \
--data '
{
"date_from": "<string>",
"date_to": "<string>"
}
'import requests
url = "https://app.gtm-api.com/linkedin/v4/api/linkedin-accounts/{sid}/get-my-analytics"
payload = {
"date_from": "<string>",
"date_to": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Team-SID": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'Team-SID': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({date_from: '<string>', date_to: '<string>'})
};
fetch('https://app.gtm-api.com/linkedin/v4/api/linkedin-accounts/{sid}/get-my-analytics', 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://app.gtm-api.com/linkedin/v4/api/linkedin-accounts/{sid}/get-my-analytics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'date_from' => '<string>',
'date_to' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.gtm-api.com/linkedin/v4/api/linkedin-accounts/{sid}/get-my-analytics"
payload := strings.NewReader("{\n \"date_from\": \"<string>\",\n \"date_to\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Team-SID", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.gtm-api.com/linkedin/v4/api/linkedin-accounts/{sid}/get-my-analytics")
.header("Authorization", "Bearer <token>")
.header("Team-SID", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"date_from\": \"<string>\",\n \"date_to\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.gtm-api.com/linkedin/v4/api/linkedin-accounts/{sid}/get-my-analytics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Team-SID"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"date_from\": \"<string>\",\n \"date_to\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"operation": "action",
"action": "<string>",
"item": {
"sid": "<string>",
"team_sid": "<string>",
"antidetect_browser_sid": "<string>",
"account_share_sid": "<string>",
"ln_id": "<string>",
"ln_member_id": "<string>",
"sn_id": "<string>",
"nickname": "<string>",
"full_name": "<string>",
"avatar_url": "<string>",
"display_name": "<string>",
"label": "<string>",
"has_premium": true,
"has_sn": true,
"has_recruiter": true,
"inmail_credits": 123,
"last_premium_check_at": "<string>",
"last_connections_sync_at": "<string>",
"last_conversations_sync_at": "<string>",
"last_sales_navigator_conversations_sync_at": "<string>",
"last_connection_requests_sync_at": "<string>",
"last_connection_invitations_sync_at": "<string>",
"last_followers_sync_at": "<string>",
"last_snapshot_at": "<string>",
"initial_sync_completed_at": "<string>",
"last_heartbeat_at": "<string>",
"sync_config": {
"entries": {
"connections": {
"interval_minutes": 123
},
"conversations": {
"interval_minutes": 123
},
"sales_navigator_conversations": {
"interval_minutes": 123
},
"connection_requests": {
"interval_minutes": 123
},
"connection_invitations": {
"interval_minutes": 123
},
"premium_check": {
"interval_minutes": 123
},
"snapshot_check": {
"interval_minutes": 123
}
},
"timezone": "<string>",
"window": [
{
"day_of_week": 4,
"start_minute": 719,
"end_minute": 720
}
]
},
"webhook_config": {
"connections": {
"enabled": true,
"since": "<string>"
},
"connection_requests": {
"enabled": true,
"since": "<string>"
},
"connection_invitations": {
"enabled": true,
"since": "<string>"
},
"conversations": {
"enabled": true,
"since": "<string>"
},
"sales_navigator_conversations": {
"enabled": true,
"since": "<string>"
},
"messages": {
"enabled": true,
"since": "<string>"
},
"followers": {
"enabled": true,
"since": "<string>"
},
"snapshot": {
"enabled": true,
"since": "<string>"
},
"strike_log": {
"enabled": true,
"since": "<string>"
},
"limits": {
"enabled": true,
"since": "<string>"
}
},
"created_by": {
"actor_sid": "<string>",
"team_sid": "<string>",
"permissions": {},
"reason": "<string>",
"request_sid": "<string>"
},
"created_at": "<string>",
"updated_at": "<string>",
"deleted_at": "<string>"
},
"result": {
"status": "<string>",
"analytics": {
"date_from": "<string>",
"date_to": "<string>",
"metrics": {}
}
},
"meta": {
"trace_id": "<string>",
"span_id": "<string>",
"timestamp": "<string>",
"duration_ms": 1,
"debug_url": "<string>"
},
"credits": {
"charged": 1,
"balance_after": 1
}
}{
"success": false,
"error": {
"message": "<string>",
"recoverable": true,
"suggestion": "<string>",
"field_errors": {},
"blockers": [
{
"type": "<string>",
"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,
"debug_url": "<string>"
}
}{
"success": false,
"error": {
"message": "<string>",
"recoverable": true,
"suggestion": "<string>",
"field_errors": {},
"blockers": [
{
"type": "<string>",
"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,
"debug_url": "<string>"
}
}Authorizations
Access token issued by gtm.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
LinkedIn account sid (ln_ac_…).
18^ln_ac_Body
Request body of get_linkedin_account_my_analytics.
Response
action success envelope.
true action kebab-case verb; matches the route segment.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes