curl --request POST \
--url 'https://api.adside.ai/meta/mcp#get_attribution_data' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "<string>",
"method": "<string>",
"params": {
"name": "<string>",
"arguments": {
"object_id": "<string>",
"fields": [
"<string>"
],
"breakdowns": [
"<string>"
],
"limit": 25
}
},
"id": "1"
}
'import requests
url = "https://api.adside.ai/meta/mcp#get_attribution_data"
payload = {
"jsonrpc": "<string>",
"method": "<string>",
"params": {
"name": "<string>",
"arguments": {
"object_id": "<string>",
"fields": ["<string>"],
"breakdowns": ["<string>"],
"limit": 25
}
},
"id": "1"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
jsonrpc: '<string>',
method: '<string>',
params: {
name: '<string>',
arguments: {
object_id: '<string>',
fields: ['<string>'],
breakdowns: ['<string>'],
limit: 25
}
},
id: '1'
})
};
fetch('https://api.adside.ai/meta/mcp#get_attribution_data', 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.adside.ai/meta/mcp#get_attribution_data",
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([
'jsonrpc' => '<string>',
'method' => '<string>',
'params' => [
'name' => '<string>',
'arguments' => [
'object_id' => '<string>',
'fields' => [
'<string>'
],
'breakdowns' => [
'<string>'
],
'limit' => 25
]
],
'id' => '1'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://api.adside.ai/meta/mcp#get_attribution_data"
payload := strings.NewReader("{\n \"jsonrpc\": \"<string>\",\n \"method\": \"<string>\",\n \"params\": {\n \"name\": \"<string>\",\n \"arguments\": {\n \"object_id\": \"<string>\",\n \"fields\": [\n \"<string>\"\n ],\n \"breakdowns\": [\n \"<string>\"\n ],\n \"limit\": 25\n }\n },\n \"id\": \"1\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://api.adside.ai/meta/mcp#get_attribution_data")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"<string>\",\n \"method\": \"<string>\",\n \"params\": {\n \"name\": \"<string>\",\n \"arguments\": {\n \"object_id\": \"<string>\",\n \"fields\": [\n \"<string>\"\n ],\n \"breakdowns\": [\n \"<string>\"\n ],\n \"limit\": 25\n }\n },\n \"id\": \"1\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.adside.ai/meta/mcp#get_attribution_data")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"jsonrpc\": \"<string>\",\n \"method\": \"<string>\",\n \"params\": {\n \"name\": \"<string>\",\n \"arguments\": {\n \"object_id\": \"<string>\",\n \"fields\": [\n \"<string>\"\n ],\n \"breakdowns\": [\n \"<string>\"\n ],\n \"limit\": 25\n }\n },\n \"id\": \"1\"\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": "<string>",
"result": {
"content": [
{
"type": "<string>",
"text": "<string>"
}
]
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Get Attribution Data
Retrieve attribution data with conversion tracking across multiple attribution windows (1-day click, 7-day click, 1-day view). Returns conversion metrics and cost-per-conversion analysis.
Rows are heavy: every row carries actions and cost_per_action_type, each entry split across three attribution windows. The response is capped in size — past that, rows are dropped and a truncation object says how many, and those rows are an arbitrary page rather than the top ones, because this endpoint returns no ranking. summary is always computed over every fetched row. Narrow the call (limit, a single object_id) rather than relying on the cap, and use the reporting-warehouse tools to rank objects over a period.
curl --request POST \
--url 'https://api.adside.ai/meta/mcp#get_attribution_data' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "<string>",
"method": "<string>",
"params": {
"name": "<string>",
"arguments": {
"object_id": "<string>",
"fields": [
"<string>"
],
"breakdowns": [
"<string>"
],
"limit": 25
}
},
"id": "1"
}
'import requests
url = "https://api.adside.ai/meta/mcp#get_attribution_data"
payload = {
"jsonrpc": "<string>",
"method": "<string>",
"params": {
"name": "<string>",
"arguments": {
"object_id": "<string>",
"fields": ["<string>"],
"breakdowns": ["<string>"],
"limit": 25
}
},
"id": "1"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
jsonrpc: '<string>',
method: '<string>',
params: {
name: '<string>',
arguments: {
object_id: '<string>',
fields: ['<string>'],
breakdowns: ['<string>'],
limit: 25
}
},
id: '1'
})
};
fetch('https://api.adside.ai/meta/mcp#get_attribution_data', 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.adside.ai/meta/mcp#get_attribution_data",
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([
'jsonrpc' => '<string>',
'method' => '<string>',
'params' => [
'name' => '<string>',
'arguments' => [
'object_id' => '<string>',
'fields' => [
'<string>'
],
'breakdowns' => [
'<string>'
],
'limit' => 25
]
],
'id' => '1'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://api.adside.ai/meta/mcp#get_attribution_data"
payload := strings.NewReader("{\n \"jsonrpc\": \"<string>\",\n \"method\": \"<string>\",\n \"params\": {\n \"name\": \"<string>\",\n \"arguments\": {\n \"object_id\": \"<string>\",\n \"fields\": [\n \"<string>\"\n ],\n \"breakdowns\": [\n \"<string>\"\n ],\n \"limit\": 25\n }\n },\n \"id\": \"1\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://api.adside.ai/meta/mcp#get_attribution_data")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"<string>\",\n \"method\": \"<string>\",\n \"params\": {\n \"name\": \"<string>\",\n \"arguments\": {\n \"object_id\": \"<string>\",\n \"fields\": [\n \"<string>\"\n ],\n \"breakdowns\": [\n \"<string>\"\n ],\n \"limit\": 25\n }\n },\n \"id\": \"1\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.adside.ai/meta/mcp#get_attribution_data")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"jsonrpc\": \"<string>\",\n \"method\": \"<string>\",\n \"params\": {\n \"name\": \"<string>\",\n \"arguments\": {\n \"object_id\": \"<string>\",\n \"fields\": [\n \"<string>\"\n ],\n \"breakdowns\": [\n \"<string>\"\n ],\n \"limit\": 25\n }\n },\n \"id\": \"1\"\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": "<string>",
"result": {
"content": [
{
"type": "<string>",
"text": "<string>"
}
]
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
API key (sk_live_*) — SHA256 hashed, looked up in Redis. Generate via the web app's workspace settings.