Check a proxy works
curl --request GET \
--url https://api.proxyjam.com/public/v1/ip-check/echo \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.proxyjam.com/public/v1/ip-check/echo"
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://api.proxyjam.com/public/v1/ip-check/echo', 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://api.proxyjam.com/public/v1/ip-check/echo",
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://api.proxyjam.com/public/v1/ip-check/echo"
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://api.proxyjam.com/public/v1/ip-check/echo")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.proxyjam.com/public/v1/ip-check/echo")
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{
"ip": "<string>"
}IP reputation
Check a proxy works
Report the address a request arrived from — send it through a proxy to read that proxy’s exit address.
GET
/
ip-check
/
echo
Check a proxy works
curl --request GET \
--url https://api.proxyjam.com/public/v1/ip-check/echo \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.proxyjam.com/public/v1/ip-check/echo"
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://api.proxyjam.com/public/v1/ip-check/echo', 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://api.proxyjam.com/public/v1/ip-check/echo",
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://api.proxyjam.com/public/v1/ip-check/echo"
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://api.proxyjam.com/public/v1/ip-check/echo")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.proxyjam.com/public/v1/ip-check/echo")
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{
"ip": "<string>"
}Returns the address we saw the request come from, and nothing else.
Sent through one of your proxies, the address that comes back is that proxy’s
exit address. That makes this a working test rather than a claim: if the
request arrives at all, the proxy carries traffic, and the address it reports
is the one your targets will see. Sent directly, it reports your own address.
Free, and it stores nothing — it does not appear in
List checks. To find out what that address is
worth to a fraud system, pass it to Check an IP address.
The Python example uses the SDK’s own
proxy check, which reads the
credentials off the order, sends this request through the proxy and times it.
A proxy that does not answer comes back as
Response
string
The address the request arrived from.
unknown in the rare case the address
cannot be read at all.Example
Through a proxy — the useful form.-x gives cURL the proxy to route through,
and the address in the answer is the proxy’s, not yours.
curl -x http://<username>:<password>@<host>:<port> \
https://api.proxyjam.com/public/v1/ip-check/echo \
-H "X-API-Key: pj_AbCdEf..."
from proxyjam import ProxyJamClient
with ProxyJamClient(api_key="pj_live_...") as proxyjam:
result = proxyjam.proxies.check("<order-id>")
print(result.ok, result.exit_ip, result.latency_ms)
ok=False with the reason in
error, because a dead proxy is a result rather than a failed call.
Sent directly, with no -x, the same endpoint reports the address you are
calling from:
curl https://api.proxyjam.com/public/v1/ip-check/echo \
-H "X-API-Key: pj_AbCdEf..."
Errors
| Status | When |
|---|---|
| 401 | No credential, or one we do not recognise. |
| 429 | Too many calls. This endpoint is cheap but not free to serve; space out a retry loop. |
Nothing here is billable and no free-check allowance is spent. The allowance
described in Get check quota applies to the paid
reputation check only.