curl --request POST \
--url https://{domain}/api/v2/network/tracking/conv-click-id \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"click_id": "string",
"revenue": 1,
"payout": 1,
"amount": 1,
"conv_status": "string",
"goal_id": 1
}
'import requests
url = "https://{domain}/api/v2/network/tracking/conv-click-id"
payload = {
"click_id": "string",
"revenue": 1,
"payout": 1,
"amount": 1,
"conv_status": "string",
"goal_id": 1
}
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({
click_id: 'string',
revenue: 1,
payout: 1,
amount: 1,
conv_status: 'string',
goal_id: 1
})
};
fetch('https://{domain}/api/v2/network/tracking/conv-click-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://{domain}/api/v2/network/tracking/conv-click-id",
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([
'click_id' => 'string',
'revenue' => 1,
'payout' => 1,
'amount' => 1,
'conv_status' => 'string',
'goal_id' => 1
]),
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://{domain}/api/v2/network/tracking/conv-click-id"
payload := strings.NewReader("{\n \"click_id\": \"string\",\n \"revenue\": 1,\n \"payout\": 1,\n \"amount\": 1,\n \"conv_status\": \"string\",\n \"goal_id\": 1\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://{domain}/api/v2/network/tracking/conv-click-id")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"click_id\": \"string\",\n \"revenue\": 1,\n \"payout\": 1,\n \"amount\": 1,\n \"conv_status\": \"string\",\n \"goal_id\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{domain}/api/v2/network/tracking/conv-click-id")
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 \"click_id\": \"string\",\n \"revenue\": 1,\n \"payout\": 1,\n \"amount\": 1,\n \"conv_status\": \"string\",\n \"goal_id\": 1\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"code": 200,
"name": "OK",
"message": "<string>",
"info": {
"status": "success",
"message": "<string>",
"lead_id": "<string>",
"transaction_id": "<string>",
"conv_status": "<string>",
"affiliate_id": 123,
"offer_id": 123,
"goal_id": 123,
"additional": "<string>",
"delivery_reply": "<unknown>"
}
}Create conversion by click ID
Creates a conversion using an existing click_id for attribution. Affiliate and offer are resolved from the click record. All lead/conversion data fields are accepted. If the offer has a Lead Management Receive Leads campaign with required fields configured, empty or missing required fields will result in conv_status=trash.
curl --request POST \
--url https://{domain}/api/v2/network/tracking/conv-click-id \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"click_id": "string",
"revenue": 1,
"payout": 1,
"amount": 1,
"conv_status": "string",
"goal_id": 1
}
'import requests
url = "https://{domain}/api/v2/network/tracking/conv-click-id"
payload = {
"click_id": "string",
"revenue": 1,
"payout": 1,
"amount": 1,
"conv_status": "string",
"goal_id": 1
}
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({
click_id: 'string',
revenue: 1,
payout: 1,
amount: 1,
conv_status: 'string',
goal_id: 1
})
};
fetch('https://{domain}/api/v2/network/tracking/conv-click-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://{domain}/api/v2/network/tracking/conv-click-id",
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([
'click_id' => 'string',
'revenue' => 1,
'payout' => 1,
'amount' => 1,
'conv_status' => 'string',
'goal_id' => 1
]),
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://{domain}/api/v2/network/tracking/conv-click-id"
payload := strings.NewReader("{\n \"click_id\": \"string\",\n \"revenue\": 1,\n \"payout\": 1,\n \"amount\": 1,\n \"conv_status\": \"string\",\n \"goal_id\": 1\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://{domain}/api/v2/network/tracking/conv-click-id")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"click_id\": \"string\",\n \"revenue\": 1,\n \"payout\": 1,\n \"amount\": 1,\n \"conv_status\": \"string\",\n \"goal_id\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{domain}/api/v2/network/tracking/conv-click-id")
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 \"click_id\": \"string\",\n \"revenue\": 1,\n \"payout\": 1,\n \"amount\": 1,\n \"conv_status\": \"string\",\n \"goal_id\": 1\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"code": 200,
"name": "OK",
"message": "<string>",
"info": {
"status": "success",
"message": "<string>",
"lead_id": "<string>",
"transaction_id": "<string>",
"conv_status": "<string>",
"affiliate_id": 123,
"offer_id": 123,
"goal_id": 123,
"additional": "<string>",
"delivery_reply": "<unknown>"
}
}Authorizations
Preferred authentication method. Pass the API key in the X-API-Key HTTP request header. The user account must have api_status enabled.
Body
(Required) Click ID from the clicks table. Used to resolve affiliate, offer, and geo data.
Conversion status. Values: pending, approved, rejected, hold.
Goal ID. If not provided, default goal is used.
Goal alias. Alternative to goal_id.
Affiliate click ID (external).
IP address. If provided, overrides geo data from the click.
Conversion timestamp. Format: Y-m-d H:i:s.
Click timestamp override. Format: Y-m-d H:i:s.
Forwards the created lead to the external systems configured for its goal. With yes the lead is posted out; with no (the default) it is only recorded in Scaleo. Delivery needs the Leads Management Module, an active Receive campaign bound to the lead's goal_id, and at least one active Deliver vendor on that campaign - without them, or when a vendor's posting instructions are empty, yes has no effect. Each vendor is called with its own posting instructions (URL, method, headers, tokenized body); its answer is matched against the vendor's success reply and sets the lead's delivery status - success or fail. Without a configured success reply, successful HTTP delivery sets success; HTTP or transport errors set fail. Every attempt is stored in the leads log as an Outgoing Lead record. Leads that end up in the trash conversion status (failed campaign validation, geo check, or cap) are never delivered. If the vendor has "return reply" enabled, its raw response is added to the response payload as delivery_reply.
yes, no Was this page helpful?