curl --request GET \
--url https://public-api.lonescale.com/trigger/crm-sync/{id} \
--header 'x-api-key: <api-key>'import requests
url = "https://public-api.lonescale.com/trigger/crm-sync/{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://public-api.lonescale.com/trigger/crm-sync/{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://public-api.lonescale.com/trigger/crm-sync/{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://public-api.lonescale.com/trigger/crm-sync/{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://public-api.lonescale.com/trigger/crm-sync/{id}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.lonescale.com/trigger/crm-sync/{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{
"id": "<string>",
"status": "processing",
"total": 123,
"processed": 123,
"failed": 123,
"errors_sample": [
{
"index": 123,
"kind": "<string>",
"error": "<string>"
}
],
"warnings": [
{
"crm": "<string>",
"warning": "<string>"
}
]
}{
"message": "Invalid API Key",
"error": "Unauthorized",
"statusCode": 401
}{
"message": "Run not found",
"error": "Not Found",
"statusCode": 404
}CRM Sync Status
Get the status and progress counters of a CRM sync run.
curl --request GET \
--url https://public-api.lonescale.com/trigger/crm-sync/{id} \
--header 'x-api-key: <api-key>'import requests
url = "https://public-api.lonescale.com/trigger/crm-sync/{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://public-api.lonescale.com/trigger/crm-sync/{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://public-api.lonescale.com/trigger/crm-sync/{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://public-api.lonescale.com/trigger/crm-sync/{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://public-api.lonescale.com/trigger/crm-sync/{id}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.lonescale.com/trigger/crm-sync/{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{
"id": "<string>",
"status": "processing",
"total": 123,
"processed": 123,
"failed": 123,
"errors_sample": [
{
"index": 123,
"kind": "<string>",
"error": "<string>"
}
],
"warnings": [
{
"crm": "<string>",
"warning": "<string>"
}
]
}{
"message": "Invalid API Key",
"error": "Unauthorized",
"statusCode": 401
}{
"message": "Run not found",
"error": "Not Found",
"statusCode": 404
}Authorizations
Provide your API key in the x-api-key header.
Path Parameters
The run id returned by POST /trigger/crm-sync
Response
Run status
Terminal values name the outcome: finished = all records synced, partial = some failed, failed = every record failed. Treat all three as terminal when polling — not only finished. The completion webhook carries the same status plus errors_sample.
processing, finished, partial, failed Records synced successfully
Records that failed after retries
First few failed records (present only when failed > 0)
Show child attributes
Show child attributes
Per-CRM lookups that were skipped, not failed: for example a linkedin_url was given but no LinkedIn property is mapped in that CRM's settings, so only the other identifiers were searched. Present only when something was skipped. An empty matches alongside warnings is weaker than a plain "no match": say so to the user before creating a record.
Show child attributes
Show child attributes

