curl --request POST \
--url https://client-api.salesfinity.co/v2/sequencer/tasks/{id}/complete \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"user_id": "507f1f77bcf86cd799439011",
"call_log": "<string>",
"note": "<string>",
"subject": "<string>",
"body": "<string>"
}
'import requests
url = "https://client-api.salesfinity.co/v2/sequencer/tasks/{id}/complete"
payload = {
"user_id": "507f1f77bcf86cd799439011",
"call_log": "<string>",
"note": "<string>",
"subject": "<string>",
"body": "<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({
user_id: '507f1f77bcf86cd799439011',
call_log: '<string>',
note: '<string>',
subject: '<string>',
body: JSON.stringify('<string>')
})
};
fetch('https://client-api.salesfinity.co/v2/sequencer/tasks/{id}/complete', 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://client-api.salesfinity.co/v2/sequencer/tasks/{id}/complete",
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([
'user_id' => '507f1f77bcf86cd799439011',
'call_log' => '<string>',
'note' => '<string>',
'subject' => '<string>',
'body' => '<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://client-api.salesfinity.co/v2/sequencer/tasks/{id}/complete"
payload := strings.NewReader("{\n \"user_id\": \"507f1f77bcf86cd799439011\",\n \"call_log\": \"<string>\",\n \"note\": \"<string>\",\n \"subject\": \"<string>\",\n \"body\": \"<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://client-api.salesfinity.co/v2/sequencer/tasks/{id}/complete")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"user_id\": \"507f1f77bcf86cd799439011\",\n \"call_log\": \"<string>\",\n \"note\": \"<string>\",\n \"subject\": \"<string>\",\n \"body\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-api.salesfinity.co/v2/sequencer/tasks/{id}/complete")
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 \"user_id\": \"507f1f77bcf86cd799439011\",\n \"call_log\": \"<string>\",\n \"note\": \"<string>\",\n \"subject\": \"<string>\",\n \"body\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{}{
"message": [
"limit must not be greater than 100"
],
"error": "Bad Request",
"statusCode": 400
}{
"message": "Forbidden resource",
"error": "Forbidden",
"statusCode": 403
}{
"message": "Not found",
"error": "Not Found",
"statusCode": 404
}{
"message": "Too many requests",
"error": "Too Many Requests",
"statusCode": 429
}{
"message": "Internal server error",
"error": "Internal Server Error",
"statusCode": 500
}Complete a task
Resolves the task and advances the cadence.
For a call task, pass the call_log it was resolved by. If the call was dialled inside Salesfinity you do not need to call this at all — dispositioning the call completes the task and applies the outcome automatically.
For a manual_email task, pass subject and body: this queues a real email. The task stays pending until the send is confirmed, and a second attempt while one is in flight is a 409.
curl --request POST \
--url https://client-api.salesfinity.co/v2/sequencer/tasks/{id}/complete \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"user_id": "507f1f77bcf86cd799439011",
"call_log": "<string>",
"note": "<string>",
"subject": "<string>",
"body": "<string>"
}
'import requests
url = "https://client-api.salesfinity.co/v2/sequencer/tasks/{id}/complete"
payload = {
"user_id": "507f1f77bcf86cd799439011",
"call_log": "<string>",
"note": "<string>",
"subject": "<string>",
"body": "<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({
user_id: '507f1f77bcf86cd799439011',
call_log: '<string>',
note: '<string>',
subject: '<string>',
body: JSON.stringify('<string>')
})
};
fetch('https://client-api.salesfinity.co/v2/sequencer/tasks/{id}/complete', 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://client-api.salesfinity.co/v2/sequencer/tasks/{id}/complete",
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([
'user_id' => '507f1f77bcf86cd799439011',
'call_log' => '<string>',
'note' => '<string>',
'subject' => '<string>',
'body' => '<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://client-api.salesfinity.co/v2/sequencer/tasks/{id}/complete"
payload := strings.NewReader("{\n \"user_id\": \"507f1f77bcf86cd799439011\",\n \"call_log\": \"<string>\",\n \"note\": \"<string>\",\n \"subject\": \"<string>\",\n \"body\": \"<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://client-api.salesfinity.co/v2/sequencer/tasks/{id}/complete")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"user_id\": \"507f1f77bcf86cd799439011\",\n \"call_log\": \"<string>\",\n \"note\": \"<string>\",\n \"subject\": \"<string>\",\n \"body\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-api.salesfinity.co/v2/sequencer/tasks/{id}/complete")
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 \"user_id\": \"507f1f77bcf86cd799439011\",\n \"call_log\": \"<string>\",\n \"note\": \"<string>\",\n \"subject\": \"<string>\",\n \"body\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{}{
"message": [
"limit must not be greater than 100"
],
"error": "Bad Request",
"statusCode": 400
}{
"message": "Forbidden resource",
"error": "Forbidden",
"statusCode": 403
}{
"message": "Not found",
"error": "Not Found",
"statusCode": 404
}{
"message": "Too many requests",
"error": "Too Many Requests",
"statusCode": 429
}{
"message": "Internal server error",
"error": "Internal Server Error",
"statusCode": 500
}call task, pass the call_log it was resolved by. If the call was dialled inside Salesfinity you do not need to call this at all — dispositioning the call completes the task and applies the outcome automatically.
For a manual_email task, pass subject and body: this queues a real email. The task stays pending until the send is confirmed, and a second attempt while one is in flight is a 409.Authorizations
Team-scoped API key generated in the Salesfinity dashboard under Settings -> Connections & API. A missing or invalid key returns HTTP 403.
Path Parameters
24-character task id.
Body
The team member this call acts as. Must be an active member of the team the API key belongs to.
"507f1f77bcf86cd799439011"
Call log this task was resolved by. Only meaningful for call tasks, and must belong to your team.
Subject line, for a manual_email task.
HTML body, for a manual_email task. Completing such a task queues a real send; the task stays pending until the send is confirmed.
Response
Success.
The outcome of an action. Shape varies by endpoint — for example enable returns the sequence and how many enrollments it activated, and a bulk verb returns how many rows it moved.