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