Remove Dynamic Action Prospect
curl --request POST \
--url https://api.example.com/api/public/tools/remove_dynamic_action_prospect \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"enrollmentId": null,
"prospectId": null,
"reason": null
}
'import requests
url = "https://api.example.com/api/public/tools/remove_dynamic_action_prospect"
payload = {
"enrollmentId": None,
"prospectId": None,
"reason": None
}
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({enrollmentId: null, prospectId: null, reason: null})
};
fetch('https://api.example.com/api/public/tools/remove_dynamic_action_prospect', 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.example.com/api/public/tools/remove_dynamic_action_prospect",
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([
'enrollmentId' => null,
'prospectId' => null,
'reason' => null
]),
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://api.example.com/api/public/tools/remove_dynamic_action_prospect"
payload := strings.NewReader("{\n \"enrollmentId\": null,\n \"prospectId\": null,\n \"reason\": null\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://api.example.com/api/public/tools/remove_dynamic_action_prospect")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"enrollmentId\": null,\n \"prospectId\": null,\n \"reason\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/public/tools/remove_dynamic_action_prospect")
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 \"enrollmentId\": null,\n \"prospectId\": null,\n \"reason\": null\n}"
response = http.request(request)
puts response.read_body{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}FirstTouch tools
Remove Dynamic Action Prospect
Cancel one MCP Dynamic Actions enrollment.
Usage notes
- Use enrollmentId when available because add_dynamic_action always returns it, including email-/LinkedIn-/phone-only enrollments where prospectId can be null.
- prospectId is only a fallback when it identifies exactly one non-canceled MCP Dynamic Actions enrollment; otherwise call find_mcp_enrollment and pass the selected enrollmentId.
- This does not modify normal flow plans.
POST
/
api
/
public
/
tools
/
remove_dynamic_action_prospect
Remove Dynamic Action Prospect
curl --request POST \
--url https://api.example.com/api/public/tools/remove_dynamic_action_prospect \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"enrollmentId": null,
"prospectId": null,
"reason": null
}
'import requests
url = "https://api.example.com/api/public/tools/remove_dynamic_action_prospect"
payload = {
"enrollmentId": None,
"prospectId": None,
"reason": None
}
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({enrollmentId: null, prospectId: null, reason: null})
};
fetch('https://api.example.com/api/public/tools/remove_dynamic_action_prospect', 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.example.com/api/public/tools/remove_dynamic_action_prospect",
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([
'enrollmentId' => null,
'prospectId' => null,
'reason' => null
]),
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://api.example.com/api/public/tools/remove_dynamic_action_prospect"
payload := strings.NewReader("{\n \"enrollmentId\": null,\n \"prospectId\": null,\n \"reason\": null\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://api.example.com/api/public/tools/remove_dynamic_action_prospect")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"enrollmentId\": null,\n \"prospectId\": null,\n \"reason\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/public/tools/remove_dynamic_action_prospect")
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 \"enrollmentId\": null,\n \"prospectId\": null,\n \"reason\": null\n}"
response = http.request(request)
puts response.read_body{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"message": "<string>",
"traceId": "<string>"
}Authorizations
Body
application/json
MCP Dynamic Actions enrollment/activity id to cancel. Prefer this exact value from add_dynamic_action or find_mcp_enrollment, especially when prospectId is null.
Persisted FirstTouch prospect id whose MCP dynamic action enrollment should be canceled.
- Use only when enrollmentId is not available and this prospect has exactly one non-canceled MCP Dynamic Actions enrollment, or include with enrollmentId to validate both identify the same enrollment.
Optional cancellation reason stored on the enrollment. Defaults to MCP dynamic action cleanup.
Response
Tool result.

