curl --request POST \
--url https://{domain}/api/v2/affiliate/leads-upon \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"offer_id": 1,
"affiliate_id": 1,
"goal_id": 1,
"deliver_lead": "yes",
"email": "user@example.com",
"firstname": "string"
}
'import requests
url = "https://{domain}/api/v2/affiliate/leads-upon"
payload = {
"offer_id": 1,
"affiliate_id": 1,
"goal_id": 1,
"deliver_lead": "yes",
"email": "user@example.com",
"firstname": "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({
offer_id: 1,
affiliate_id: 1,
goal_id: 1,
deliver_lead: 'yes',
email: 'user@example.com',
firstname: 'string'
})
};
fetch('https://{domain}/api/v2/affiliate/leads-upon', 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/affiliate/leads-upon",
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,
'goal_id' => 1,
'deliver_lead' => 'yes',
'email' => 'user@example.com',
'firstname' => '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://{domain}/api/v2/affiliate/leads-upon"
payload := strings.NewReader("{\n \"offer_id\": 1,\n \"affiliate_id\": 1,\n \"goal_id\": 1,\n \"deliver_lead\": \"yes\",\n \"email\": \"user@example.com\",\n \"firstname\": \"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://{domain}/api/v2/affiliate/leads-upon")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"offer_id\": 1,\n \"affiliate_id\": 1,\n \"goal_id\": 1,\n \"deliver_lead\": \"yes\",\n \"email\": \"user@example.com\",\n \"firstname\": \"string\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{domain}/api/v2/affiliate/leads-upon")
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 \"goal_id\": 1,\n \"deliver_lead\": \"yes\",\n \"email\": \"user@example.com\",\n \"firstname\": \"string\"\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 lead upon delivery (POST)
Creates a lead with deferred delivery via POST.
curl --request POST \
--url https://{domain}/api/v2/affiliate/leads-upon \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"offer_id": 1,
"affiliate_id": 1,
"goal_id": 1,
"deliver_lead": "yes",
"email": "user@example.com",
"firstname": "string"
}
'import requests
url = "https://{domain}/api/v2/affiliate/leads-upon"
payload = {
"offer_id": 1,
"affiliate_id": 1,
"goal_id": 1,
"deliver_lead": "yes",
"email": "user@example.com",
"firstname": "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({
offer_id: 1,
affiliate_id: 1,
goal_id: 1,
deliver_lead: 'yes',
email: 'user@example.com',
firstname: 'string'
})
};
fetch('https://{domain}/api/v2/affiliate/leads-upon', 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/affiliate/leads-upon",
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,
'goal_id' => 1,
'deliver_lead' => 'yes',
'email' => 'user@example.com',
'firstname' => '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://{domain}/api/v2/affiliate/leads-upon"
payload := strings.NewReader("{\n \"offer_id\": 1,\n \"affiliate_id\": 1,\n \"goal_id\": 1,\n \"deliver_lead\": \"yes\",\n \"email\": \"user@example.com\",\n \"firstname\": \"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://{domain}/api/v2/affiliate/leads-upon")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"offer_id\": 1,\n \"affiliate_id\": 1,\n \"goal_id\": 1,\n \"deliver_lead\": \"yes\",\n \"email\": \"user@example.com\",\n \"firstname\": \"string\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{domain}/api/v2/affiliate/leads-upon")
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 \"goal_id\": 1,\n \"deliver_lead\": \"yes\",\n \"email\": \"user@example.com\",\n \"firstname\": \"string\"\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
Not evaluated on this endpoint - deferred delivery is what it does. When the goal has an active Receive campaign with at least one active Deliver vendor, every such vendor is called before the lead is stored, and each attempt is written to the leads log as an Outgoing Lead record. The verdict comes from the last vendor in that loop: only if its answer matches its configured success reply, or HTTP delivery succeeds when no success reply is configured, is the lead recorded and 200 returned. Otherwise the endpoint returns 400 The Lead creation failed and no conversion is stored - but the outgoing requests have normally already gone out, so retrying the call re-sends the lead to every vendor that already accepted it. With no success reply configured, successful HTTP delivery records the lead with delivery status success; HTTP or transport errors produce fail. When the goal has no such campaign or vendor, or the lead ends up in the trash conversion status, no delivery is attempted at all: the lead is recorded and the endpoint answers 200.
yes, no Was this page helpful?