Endpoint
POST https://requiems.xyz/v1/systems/signup/protect
Protect Signup
Evaluate a new user at signup. Returns a full risk decision with per-signal breakdown across email, phone, and IP.
Parameters
| Name |
Type |
Required |
Location |
Description |
email |
string |
no |
body |
Email address to validate and score. At least one of email, phone, or ip_address is required. |
phone |
string |
no |
body |
Phone number in E.164 format to validate and check for VoIP or virtual numbers. |
ip_address |
string |
no |
body |
IPv4 or IPv6 address to check for VPN, proxy, TOR, and hosting status. |
Request Example
{
"email": "user@tempmail.io",
"ip_address": "45.33.32.156",
"phone": "+14155552671"
}
Response Example
{
"data": {
"risk_score": 0.87,
"is_safe": false,
"confidence": 0.94,
"flags": ["disposable_email", "vpn_detected"],
"signals": {
"email": {
"valid": true,
"disposable": true,
"mx_valid": true,
"suggestion": null
},
"phone": {
"valid": false,
"country": "",
"is_voip": false,
"is_virtual": false
},
"ip": {
"country_code": "US",
"is_vpn": true,
"is_proxy": false,
"is_tor": false,
"is_hosting": true,
"fraud_score": 0.72
}
}
},
"metadata": {
"timestamp": "2026-01-01T00:00:00Z"
}
}
Response Fields
| Field |
Type |
Description |
risk_score |
number |
Composite risk score from 0.0 (clean) to 1.0 (high risk) |
is_safe |
boolean |
True when risk_score is below the safety threshold with no critical flags |
confidence |
number |
Confidence in the decision from 0.0 to 1.0, based on which signals resolved successfully |
flags |
array |
Array of triggered risk flags. Possible values: disposable_email, vpn_detected, proxy_detected, tor_detected, is_hosting |
signals.email |
object |
Email validation result including disposable detection and MX check |
signals.phone |
object |
Phone number validation result with country code and VoIP/virtual detection |
signals.ip |
object |
IP intelligence including VPN/proxy/TOR status and fraud score |
Errors
undefined 422 — All of email, phone, and ip_address were omitted. At least one is required.
undefined 401 — Missing or invalid API key in the requiems-api-key header
1---2name: identity-risk-post-protect3description: Evaluate a new user at signup. Returns a full risk decision with per-signal breakdown across email, phone, and IP.4---5
6## Endpoint
7
8**POST https://requiems.xyz/v1/systems/signup/protect**
9
10## Protect Signup
11
12Evaluate a new user at signup. Returns a full risk decision with per-signal breakdown across email, phone, and IP.
13
14## Parameters
15
16| Name | Type | Required | Location | Description |
17| ---- | ---- | -------- | -------- | ----------- |
18| `email` | string | no | body | Email address to validate and score. At least one of email, phone, or ip_address is required. |
19| `phone` | string | no | body | Phone number in E.164 format to validate and check for VoIP or virtual numbers. |
20| `ip_address` | string | no | body | IPv4 or IPv6 address to check for VPN, proxy, TOR, and hosting status. |
21
22## Request Example
23
24```json
25{
26 "email": "user@tempmail.io",
27 "ip_address": "45.33.32.156",
28 "phone": "+14155552671"
29}
30```
31
32## Response Example
33
34```json
35{
36 "data": {
37 "risk_score": 0.87,
38 "is_safe": false,
39 "confidence": 0.94,
40 "flags": ["disposable_email", "vpn_detected"],
41 "signals": {
42 "email": {
43 "valid": true,
44 "disposable": true,
45 "mx_valid": true,
46 "suggestion": null
47 },
48 "phone": {
49 "valid": false,
50 "country": "",
51 "is_voip": false,
52 "is_virtual": false
53 },
54 "ip": {
55 "country_code": "US",
56 "is_vpn": true,
57 "is_proxy": false,
58 "is_tor": false,
59 "is_hosting": true,
60 "fraud_score": 0.72
61 }
62 }
63 },
64 "metadata": {
65 "timestamp": "2026-01-01T00:00:00Z"
66 }
67}
68```
69
70## Response Fields
71
72| Field | Type | Description |
73| ----- | ---- | ----------- |
74| `risk_score` | number | Composite risk score from 0.0 (clean) to 1.0 (high risk) |
75| `is_safe` | boolean | True when risk_score is below the safety threshold with no critical flags |
76| `confidence` | number | Confidence in the decision from 0.0 to 1.0, based on which signals resolved successfully |
77| `flags` | array<string> | Array of triggered risk flags. Possible values: disposable_email, vpn_detected, proxy_detected, tor_detected, is_hosting |
78| `signals.email` | object | Email validation result including disposable detection and MX check |
79| `signals.phone` | object | Phone number validation result with country code and VoIP/virtual detection |
80| `signals.ip` | object | IP intelligence including VPN/proxy/TOR status and fraud score |
81
82## Errors
83
84- `undefined` **422** — All of email, phone, and ip_address were omitted. At least one is required.
85- `undefined` **401** — Missing or invalid API key in the requiems-api-key header