http://localhost/api/v1/screen
scope: screen.check
One consolidated call that screens an entire order/transaction — IP, billing/shipping address, email, phone, username, card BIN, device, and cross-order location anomalies (smart_detection) — reusing the same checks as this API's other endpoints, and returns a single shield_score/shield_status decision plus any matched Workflow Automation rules. Any field left out simply comes back null in its section rather than a guessed value.
| Field | Type | Optional | Description |
|---|---|---|---|
ip |
string | Optional | Defaults to the caller's own IP. |
user_order_id |
string | Optional | Your own order identifier, echoed back for correlation. |
name |
string | Optional | Customer/order name — display-only, never scored. Shown on the Order Details tab. |
amount |
number | Optional | Feeds a daily per-email sales-amount threshold check (daily_amount_exceeded) — only accumulated within one currency at a time, no FX conversion. |
currency |
string | Optional | 3-letter code, e.g. USD. Required alongside amount for the daily sales-amount threshold check to run. |
email |
string | Optional | — |
phone |
string | Optional | — |
username |
string | Optional | — |
device_hash |
string | Optional | From a prior POST /api/v1/device/check call. |
bin_no |
string | Optional | First 6-8 digits of the card number. A non-empty value also sets card_submitted, and feeds a daily per-BIN attempt-count threshold check (card_attempts_exceeded). |
bill_name |
string | Optional | Billing "Bill To" name — display-only, never scored. |
bill_addr |
string | Optional | Billing street address — display-only, never scored. |
bill_country |
string | Optional | — |
bill_state |
string | Optional | — |
bill_city |
string | Optional | — |
bill_zip_code |
string | Optional | — |
ship_name |
string | Optional | Shipping recipient name — display-only, never scored. |
ship_country |
string | Optional | — |
ship_state |
string | Optional | — |
ship_city |
string | Optional | — |
ship_zip_code |
string | Optional | — |
ship_addr |
string | Optional | — |
Every parameter here is optional.
curl -X POST http://localhost/api/v1/screen \
-H "Authorization: Bearer wsk_xxx_xxx" \
-d "ip=103.148.154.174&amount=10.00¤cy=USD&email=user%40example.com&bin_no=411111"
<?php
$ch = curl_init('http://localhost/api/v1/screen');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer wsk_xxx_xxx']);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['ip' => '103.148.154.174', 'amount' => '10.00', 'currency' => 'USD', 'email' => '[email protected]', 'bin_no' => '411111']));
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
import requests
response = requests.post("http://localhost/api/v1/screen",
headers={"Authorization": "Bearer wsk_xxx_xxx"},
data={"ip": "103.148.154.174", "amount": "10.00", "currency": "USD", "email": "[email protected]", "bin_no": "411111"},
)
data = response.json()
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
body := strings.NewReader("ip=103.148.154.174&amount=10.00¤cy=USD&email=user%40example.com&bin_no=411111")
req, _ := http.NewRequest("POST", "http://localhost/api/v1/screen", body)
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
req.Header.Set("Authorization", "Bearer wsk_xxx_xxx")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
respBody, _ := io.ReadAll(resp.Body)
fmt.Println(string(respBody))
}
{
"data": {
"ip_geolocation": {
"ip": "103.148.154.174", "continent": null, "country_code": null, "country_name": null,
"region": null, "city": null, "latitude": null, "longitude": null,
"zip_code": null, "timezone": null, "isp_name": null, "domain": null,
"netspeed": null, "mobile_mnc": null, "mobile_mcc": null, "mobile_brand": null, "elevation": null,
"usage_type": [], "is_proxy": false, "proxy_type": null, "is_in_blacklist": false,
"fraud_score": 0, "risk_reasons": ["No risk signals detected"]
},
"billing_address": {"ip_distance_in_km": null, "ip_distance_in_mile": null, "is_ip_country_match": null},
"shipping_address": {
"is_address_ship_forward": null, "is_bill_country_match": null, "is_bill_state_match": null,
"is_bill_city_match": null, "is_bill_postcode_match": null,
"is_export_controlled_country": null, "is_in_blacklist": false
},
"email_address": {"is_free": false, "is_disposable": false, "is_domain_exist": true, "is_new_domain_name": null, "is_in_blacklist": false},
"phone_number": {"is_disposable": null, "is_in_blacklist": null},
"username": {"is_high_risk": null, "is_in_blacklist": null},
"credit_card": {
"card_brand": "Visa", "card_type": "Debit", "card_subtype": "Classic",
"card_issuing_bank": null, "card_issuing_country": null,
"is_prepaid": false, "is_bin_exist": true, "is_bin_country_match": null, "is_in_blacklist": false,
"card_submitted": true
},
"device": {"is_malware_exploit": null, "is_in_blacklist": null},
"smart_detection": {
"ip_location_anomaly": null, "ship_location_anomaly": null,
"ip_anomaly_speed_kmh": null, "ip_anomaly_distance_km": null
},
"user_order_id": "", "shield_id": "20260805-36B0F1",
"shield_score": 0, "shield_status": "APPROVE",
"shield_reasons": ["No risk signals detected"], "shield_rules": [], "shield_rules_detail": [],
"api_version": "1.0.0",
"requests_remaining_today": 200, "requests_remaining_this_month": 1000
}
}