curl --request POST \
--url https://{subdomain}.conveyour.com/api/reports/shared/{pid}/{report_id}/action/{action_key} \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"row_keys": [
"<string>"
],
"params": {}
}
'const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({row_keys: ['<string>'], params: {}})
};
fetch('https://{subdomain}.conveyour.com/api/reports/shared/{pid}/{report_id}/action/{action_key}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({row_keys: ['<string>'], params: {}})
};
fetch('https://{subdomain}.conveyour.com/api/reports/shared/{pid}/{report_id}/action/{action_key}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/reports/shared/{pid}/{report_id}/action/{action_key}"
payload = {
"row_keys": ["<string>"],
"params": {}
}
headers = {
"x-conveyour-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{subdomain}.conveyour.com/api/reports/shared/{pid}/{report_id}/action/{action_key}",
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([
'row_keys' => [
'<string>'
],
'params' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-conveyour-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "<string>",
"message": "<string>",
"data": {}
}Run an action on a shared report
Runs a row action on a shared report without authentication — the pid in the URL is the only thing identifying the caller, exactly like GET /api/reports/shared/{pid}.
Run a shared report action
No token required. Treat the pid as a secret: anyone holding it can run any shared-safe action on that report.
Only actions explicitly marked shared-safe can run. An action that exists but is not flagged for sharing returns 403 with Action is not available on shared reports. An unknown action key returns 404 Action not found; a report whose class cannot be resolved returns 404 Report not found.
row_keys is required and must be non-empty — an empty array returns 400 No rows selected. For a report marked secure, pass the share token so its saved params are applied.
The response shape depends on the action; only message is guaranteed.
curl --request POST \
--url https://{subdomain}.conveyour.com/api/reports/shared/{pid}/{report_id}/action/{action_key} \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"row_keys": [
"<string>"
],
"params": {}
}
'const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({row_keys: ['<string>'], params: {}})
};
fetch('https://{subdomain}.conveyour.com/api/reports/shared/{pid}/{report_id}/action/{action_key}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({row_keys: ['<string>'], params: {}})
};
fetch('https://{subdomain}.conveyour.com/api/reports/shared/{pid}/{report_id}/action/{action_key}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/reports/shared/{pid}/{report_id}/action/{action_key}"
payload = {
"row_keys": ["<string>"],
"params": {}
}
headers = {
"x-conveyour-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{subdomain}.conveyour.com/api/reports/shared/{pid}/{report_id}/action/{action_key}",
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([
'row_keys' => [
'<string>'
],
'params' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-conveyour-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "<string>",
"message": "<string>",
"data": {}
}Authorizations
Your API key token. Contacts endpoints require a Server-only — Full API key — see Authentication.
Path Parameters
Public ID of the shared report.
Report class ID. Defaults to the shared report's own class.
Key of the action to run, as listed in the report's actions block.
Query Parameters
Share token. Required when the report is marked secure, so its saved params apply.