curl --request GET \
--url https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}/leads/upload/{job_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}/leads/upload/{job_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}/leads/upload/{job_id}', 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.coldsend.pro/api/public/v1/campaigns/{campaign_id}/leads/upload/{job_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}/leads/upload/{job_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}/leads/upload/{job_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}/leads/upload/{job_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"campaign_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "<string>",
"progress_percentage": 123,
"processed_count": 123,
"success_count": 123,
"duplicate_count": 123,
"error_count": 123,
"total_count": 123,
"errors": [
{}
],
"blocked_count": 0,
"blocked_entries": [
{}
],
"matched_contact_count": 0,
"other_campaign_count": 0,
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Get upload progress
Check lead upload progress
Monitor the progress of an asynchronous lead upload job.
Example Usage
import requests
campaign_id = "550e8400-e29b-41d4-a716-446655440000"
job_id = "650e8400-e29b-41d4-a716-446655440000"
response = requests.get(
f"https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}/leads/upload/{job_id}",
headers={"X-API-Key": "your-api-key"}
)
print(response.json())
curl --request GET \
--url https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}/leads/upload/{job_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}/leads/upload/{job_id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}/leads/upload/{job_id}', 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.coldsend.pro/api/public/v1/campaigns/{campaign_id}/leads/upload/{job_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}/leads/upload/{job_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}/leads/upload/{job_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coldsend.pro/api/public/v1/campaigns/{campaign_id}/leads/upload/{job_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"campaign_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "<string>",
"progress_percentage": 123,
"processed_count": 123,
"success_count": 123,
"duplicate_count": 123,
"error_count": 123,
"total_count": 123,
"errors": [
{}
],
"blocked_count": 0,
"blocked_entries": [
{}
],
"matched_contact_count": 0,
"other_campaign_count": 0,
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
API key with format cs_live_xxx
Response
Upload progress retrieved
Response for lead upload progress tracking.
Job ID
Campaign ID
Job status (PENDING, VALIDATING, IN_PROGRESS, COMPLETED, FAILED)
Progress percentage (0-100)
Number of rows processed
Number of valid leads created
Number of duplicate emails found
Number of invalid rows
Total rows in CSV
Detailed error information for failed rows
Number of rows skipped because they matched the team blocklist
Per-row blocklist hits. Each entry has email_address, block_type ('email'|'domain') and blocked_value.
Rows whose address was already in the team's contact directory. These update a person the team already knows rather than adding someone new.
Rows whose contact already belongs to at least one other campaign. Distinct from duplicate_count, which counts rows already present in this campaign.
Was this page helpful?

