curl --request GET \
--url https://app.leadconduit.com/flows/{flow_id}/sources/{source_id}/pingimport requests
url = "https://app.leadconduit.com/flows/{flow_id}/sources/{source_id}/ping"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://app.leadconduit.com/flows/{flow_id}/sources/{source_id}/ping', 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://app.leadconduit.com/flows/{flow_id}/sources/{source_id}/ping",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://app.leadconduit.com/flows/{flow_id}/sources/{source_id}/ping"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.leadconduit.com/flows/{flow_id}/sources/{source_id}/ping")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.leadconduit.com/flows/{flow_id}/sources/{source_id}/ping")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"outcome": "success",
"reason": "lead.phone must have valid format",
"price": 20
}{
"error": "Bad Request",
"message": "Inbound integration does not support ping"
}{
"message": "Unpaid account"
}{
"message": "Flow is disabled"
}{
"message": "Flow does not exist"
}{
"message": "Invalid flow ID",
"error": "Submitting pings for real-time bidding is not enabled for this flow."
}{
"status": 429,
"message": "Too Many Requests",
"retry_after": 5400000
}Ping a source within a flow
Asks a flow whether it would accept a lead, and at what price, without submitting it.
This is the pre-check used in real-time bidding: the seller pings first and only posts
the full lead to /submit if the answer is worth it.
A ping sends the same fields as a submission, in the query string for GET or in the
body for POST. Nothing is stored and no flow step runs. Acceptance criteria are
evaluated leniently: rules that need a field the ping did not include are skipped, so a
partial lead can still get an answer.
Pings must be enabled on the flow (ping_enabled) and the source’s inbound integration
must support them. No credentials are needed. Ping limits configured on the flow or
the source apply to this endpoint; caps do not.
curl --request GET \
--url https://app.leadconduit.com/flows/{flow_id}/sources/{source_id}/pingimport requests
url = "https://app.leadconduit.com/flows/{flow_id}/sources/{source_id}/ping"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://app.leadconduit.com/flows/{flow_id}/sources/{source_id}/ping', 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://app.leadconduit.com/flows/{flow_id}/sources/{source_id}/ping",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://app.leadconduit.com/flows/{flow_id}/sources/{source_id}/ping"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.leadconduit.com/flows/{flow_id}/sources/{source_id}/ping")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.leadconduit.com/flows/{flow_id}/sources/{source_id}/ping")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"outcome": "success",
"reason": "lead.phone must have valid format",
"price": 20
}{
"error": "Bad Request",
"message": "Inbound integration does not support ping"
}{
"message": "Unpaid account"
}{
"message": "Flow is disabled"
}{
"message": "Flow does not exist"
}{
"message": "Invalid flow ID",
"error": "Submitting pings for real-time bidding is not enabled for this flow."
}{
"status": 429,
"message": "Too Many Requests",
"retry_after": 5400000
}Path Parameters
The ID of the flow 24 character alpha-numeric BSON identifier
^[0-9a-fA-F]{24}$"5fd4371e940df5a34a3888b2"
The ID of the source within the flow 24 character alpha-numeric BSON identifier
^[0-9a-fA-F]{24}$"5fd4371e940df5a34a3888b2"
Response
The ping was evaluated. Check outcome to see whether the flow would accept the lead.
The result of a ping. Same shape as a submission response, without the lead
object because a ping does not create a lead.
Whether the flow would accept the lead.
success, failure, error Why the lead would not be accepted. Absent or null when the outcome is success.
"lead.phone must have valid format"
The price the flow would pay for the lead. 0 when it would not be accepted or the source has no pricing.
20