curl --request POST \
--url https://{domain}/api/v2/network/tracking/conv-offer-id \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"offer_id": 1,
"affiliate_id": 1,
"revenue": 1,
"payout": 1,
"amount": 1,
"conv_status": "pending"
}
'import requests
url = "https://{domain}/api/v2/network/tracking/conv-offer-id"
payload = {
"offer_id": 1,
"affiliate_id": 1,
"revenue": 1,
"payout": 1,
"amount": 1,
"conv_status": "pending"
}
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({
offer_id: 1,
affiliate_id: 1,
revenue: 1,
payout: 1,
amount: 1,
conv_status: 'pending'
})
};
fetch('https://{domain}/api/v2/network/tracking/conv-offer-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-offer-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([
'offer_id' => 1,
'affiliate_id' => 1,
'revenue' => 1,
'payout' => 1,
'amount' => 1,
'conv_status' => 'pending'
]),
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-offer-id"
payload := strings.NewReader("{\n \"offer_id\": 1,\n \"affiliate_id\": 1,\n \"revenue\": 1,\n \"payout\": 1,\n \"amount\": 1,\n \"conv_status\": \"pending\"\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-offer-id")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"offer_id\": 1,\n \"affiliate_id\": 1,\n \"revenue\": 1,\n \"payout\": 1,\n \"amount\": 1,\n \"conv_status\": \"pending\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{domain}/api/v2/network/tracking/conv-offer-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 \"offer_id\": 1,\n \"affiliate_id\": 1,\n \"revenue\": 1,\n \"payout\": 1,\n \"amount\": 1,\n \"conv_status\": \"pending\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"code": 200,
"name": "OK",
"message": "<string>",
"info": {
"result": {}
}
}{
"status": "error",
"code": 400,
"name": "Bad Request",
"message": "Request could not be parsed.",
"info": {
"errors": {}
}
}{
"status": "error",
"code": 401,
"name": "Unauthorized",
"message": "API key is invalid or missing."
}{
"status": "error",
"code": 403,
"name": "Forbidden",
"message": "This endpoint is not available for your role."
}{
"status": "error",
"code": 422,
"name": "Unprocessable entity",
"message": "Validation error",
"info": {
"errors": {
"email": [
"Email cannot be blank."
],
"currency": [
"Currency must be a valid ISO code."
]
}
}
}{
"status": "error",
"code": 500,
"name": "Internal Server Error",
"message": "An unexpected error occurred.",
"info": {
"errors": {}
}
}Create conversion by offer ID
Creates a conversion for a specific offer. Requires offer_id. If affiliate_id is omitted, the default affiliate for the offer is used.
curl --request POST \
--url https://{domain}/api/v2/network/tracking/conv-offer-id \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"offer_id": 1,
"affiliate_id": 1,
"revenue": 1,
"payout": 1,
"amount": 1,
"conv_status": "pending"
}
'import requests
url = "https://{domain}/api/v2/network/tracking/conv-offer-id"
payload = {
"offer_id": 1,
"affiliate_id": 1,
"revenue": 1,
"payout": 1,
"amount": 1,
"conv_status": "pending"
}
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({
offer_id: 1,
affiliate_id: 1,
revenue: 1,
payout: 1,
amount: 1,
conv_status: 'pending'
})
};
fetch('https://{domain}/api/v2/network/tracking/conv-offer-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-offer-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([
'offer_id' => 1,
'affiliate_id' => 1,
'revenue' => 1,
'payout' => 1,
'amount' => 1,
'conv_status' => 'pending'
]),
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-offer-id"
payload := strings.NewReader("{\n \"offer_id\": 1,\n \"affiliate_id\": 1,\n \"revenue\": 1,\n \"payout\": 1,\n \"amount\": 1,\n \"conv_status\": \"pending\"\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-offer-id")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"offer_id\": 1,\n \"affiliate_id\": 1,\n \"revenue\": 1,\n \"payout\": 1,\n \"amount\": 1,\n \"conv_status\": \"pending\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{domain}/api/v2/network/tracking/conv-offer-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 \"offer_id\": 1,\n \"affiliate_id\": 1,\n \"revenue\": 1,\n \"payout\": 1,\n \"amount\": 1,\n \"conv_status\": \"pending\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"code": 200,
"name": "OK",
"message": "<string>",
"info": {
"result": {}
}
}{
"status": "error",
"code": 400,
"name": "Bad Request",
"message": "Request could not be parsed.",
"info": {
"errors": {}
}
}{
"status": "error",
"code": 401,
"name": "Unauthorized",
"message": "API key is invalid or missing."
}{
"status": "error",
"code": 403,
"name": "Forbidden",
"message": "This endpoint is not available for your role."
}{
"status": "error",
"code": 422,
"name": "Unprocessable entity",
"message": "Validation error",
"info": {
"errors": {
"email": [
"Email cannot be blank."
],
"currency": [
"Currency must be a valid ISO code."
]
}
}
}{
"status": "error",
"code": 500,
"name": "Internal Server Error",
"message": "An unexpected error occurred.",
"info": {
"errors": {}
}
}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
Offer ID.
Affiliate ID. If omitted, the default affiliate for the offer is used.
Initial conversion status.
pending, approved, rejected, hold Advertiser order ID.
Advertiser user ID.
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?