curl --request POST \
--url https://dashboard.launchpointhq.com/api/v1/posts/{id}/exclude \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"message": "<string>",
"reason": "<string>"
}
'import requests
url = "https://dashboard.launchpointhq.com/api/v1/posts/{id}/exclude"
payload = {
"message": "<string>",
"reason": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({message: '<string>', reason: '<string>'})
};
fetch('https://dashboard.launchpointhq.com/api/v1/posts/{id}/exclude', 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://dashboard.launchpointhq.com/api/v1/posts/{id}/exclude",
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([
'message' => '<string>',
'reason' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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://dashboard.launchpointhq.com/api/v1/posts/{id}/exclude"
payload := strings.NewReader("{\n \"message\": \"<string>\",\n \"reason\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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://dashboard.launchpointhq.com/api/v1/posts/{id}/exclude")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"message\": \"<string>\",\n \"reason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://dashboard.launchpointhq.com/api/v1/posts/{id}/exclude")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"message\": \"<string>\",\n \"reason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"excluded": true,
"creatorNotified": true
}Exclude a post from earnings
Exclude a post in a canvas program from creator earnings. This is permanent. The exclusion covers the post’s whole video, including its cross-posts on other platforms (same crossPostGroupId). The video stops counting in pay and analytics, its pending pay is removed, and it is not tracked again. Afterwards the posts are no longer returned by /posts.
With a message, the creator is told that the video will not be paid, and why. Without one, the creator is not told.
The request is refused with 409 and a code when real pay already reached the creator or a paid ad uses the video. paid: false in /posts does not guarantee that the exclusion is allowed.
With ?dryRun=true, the request runs the same checks and changes nothing. It answers 200 with { id, excluded: false, dryRun: true, canExclude, blockedBy, crossPostIds, pendingCentsToRemove }. A refusal is canExclude: false with its code in blockedBy.
curl --request POST \
--url https://dashboard.launchpointhq.com/api/v1/posts/{id}/exclude \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"message": "<string>",
"reason": "<string>"
}
'import requests
url = "https://dashboard.launchpointhq.com/api/v1/posts/{id}/exclude"
payload = {
"message": "<string>",
"reason": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({message: '<string>', reason: '<string>'})
};
fetch('https://dashboard.launchpointhq.com/api/v1/posts/{id}/exclude', 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://dashboard.launchpointhq.com/api/v1/posts/{id}/exclude",
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([
'message' => '<string>',
'reason' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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://dashboard.launchpointhq.com/api/v1/posts/{id}/exclude"
payload := strings.NewReader("{\n \"message\": \"<string>\",\n \"reason\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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://dashboard.launchpointhq.com/api/v1/posts/{id}/exclude")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"message\": \"<string>\",\n \"reason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://dashboard.launchpointhq.com/api/v1/posts/{id}/exclude")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"message\": \"<string>\",\n \"reason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"excluded": true,
"creatorNotified": true
}Authorizations
API key created in Dashboard → Settings → Developer
Path Parameters
ID of the post
Query Parameters
Choose the data scope. company (default) limits results to the API key company's data. agency includes the parent agency and its linked brands. scope=agency requires a parent agency key; other keys receive 403.
company, agency With true, run every check and roll back. Nothing is excluded, recorded, or sent.