curl -X POST "<base_url>/usermanagement/v1/users" \
-H "X-AccessToken: YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"uuid": "string",
"subscriptionType": "paid",
"period": 30,
"services": [
{
"slug": "rmd",
"subscriptionType": "paid",
"period": 30,
"firstName": "string",
"lastName": "string",
"email": "string",
"phoneNumber": "string",
"dateOfBirth": "DD-MM-YYYY",
"addressLine1": "string",
"city": "string",
"state": "string",
"zipCode": "string",
"countryId": 1,
"countrySlug": "US"
},
{
"slug": "dwm",
"subscriptionType": "paid",
"period": 30,
"assets": [
{ "type": "email", "value": "string" },
{ "type": "phone", "value": "string" },
{ "type": "domain", "value": "domain.com" }
]
}
]
}'
const res = await fetch("<base_url>/usermanagement/v1/users", {
method: "POST",
headers: {
"X-AccessToken": process.env.PUREWL_ACCESS_TOKEN,
"Content-Type": "application/json",
},
body: JSON.stringify({
uuid: "string",
subscriptionType: "paid",
period: 30,
services: [
{
slug: "rmd",
subscriptionType: "paid",
period: 30,
firstName: "string",
lastName: "string",
email: "string",
phoneNumber: "string",
dateOfBirth: "DD-MM-YYYY",
addressLine1: "string",
city: "string",
state: "string",
zipCode: "string",
countryId: 1,
countrySlug: "US",
},
{
slug: "dwm",
subscriptionType: "paid",
period: 30,
assets: [
{ type: "email", value: "string" },
{ type: "phone", value: "string" },
{ type: "domain", value: "domain.com" },
],
},
],
}),
});
const user = await res.json();
{
"header": {
"code": 1,
"message": "Account has been created successfully",
"response_code": 1
},
"body": {
"username": "string",
"uuid": "string",
"subscriptionType": "paid",
"period": 30,
"expiryDate": "17-07-2026",
"services": [
{
"slug": "rmd",
"period": 30,
"expiryDate": "17-07-2026",
"firstName": "string",
"lastName": "string",
"email": "string",
"phoneNumber": "string",
"dateOfBirth": "string",
"addressLine1": "string",
"city": "string",
"state": "string",
"zipCode": "string",
"countryId": 1,
"countrySlug": "US"
},
{
"slug": "dwm",
"period": 30,
"expiryDate": "17-07-2026",
"assets": [
{
"type": "email",
"value": "string"
},
{
"type": "phone",
"value": "string"
},
{
"type": "domain",
"value": "domain.com"
}
]
}
]
}
}
User Management
Create a User
Create a user and onboard them to one or more services in a single call.
POST
/
usermanagement
/
v1
/
users
curl -X POST "<base_url>/usermanagement/v1/users" \
-H "X-AccessToken: YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"uuid": "string",
"subscriptionType": "paid",
"period": 30,
"services": [
{
"slug": "rmd",
"subscriptionType": "paid",
"period": 30,
"firstName": "string",
"lastName": "string",
"email": "string",
"phoneNumber": "string",
"dateOfBirth": "DD-MM-YYYY",
"addressLine1": "string",
"city": "string",
"state": "string",
"zipCode": "string",
"countryId": 1,
"countrySlug": "US"
},
{
"slug": "dwm",
"subscriptionType": "paid",
"period": 30,
"assets": [
{ "type": "email", "value": "string" },
{ "type": "phone", "value": "string" },
{ "type": "domain", "value": "domain.com" }
]
}
]
}'
const res = await fetch("<base_url>/usermanagement/v1/users", {
method: "POST",
headers: {
"X-AccessToken": process.env.PUREWL_ACCESS_TOKEN,
"Content-Type": "application/json",
},
body: JSON.stringify({
uuid: "string",
subscriptionType: "paid",
period: 30,
services: [
{
slug: "rmd",
subscriptionType: "paid",
period: 30,
firstName: "string",
lastName: "string",
email: "string",
phoneNumber: "string",
dateOfBirth: "DD-MM-YYYY",
addressLine1: "string",
city: "string",
state: "string",
zipCode: "string",
countryId: 1,
countrySlug: "US",
},
{
slug: "dwm",
subscriptionType: "paid",
period: 30,
assets: [
{ type: "email", value: "string" },
{ type: "phone", value: "string" },
{ type: "domain", value: "domain.com" },
],
},
],
}),
});
const user = await res.json();
{
"header": {
"code": 1,
"message": "Account has been created successfully",
"response_code": 1
},
"body": {
"username": "string",
"uuid": "string",
"subscriptionType": "paid",
"period": 30,
"expiryDate": "17-07-2026",
"services": [
{
"slug": "rmd",
"period": 30,
"expiryDate": "17-07-2026",
"firstName": "string",
"lastName": "string",
"email": "string",
"phoneNumber": "string",
"dateOfBirth": "string",
"addressLine1": "string",
"city": "string",
"state": "string",
"zipCode": "string",
"countryId": 1,
"countrySlug": "US"
},
{
"slug": "dwm",
"period": 30,
"expiryDate": "17-07-2026",
"assets": [
{
"type": "email",
"value": "string"
},
{
"type": "phone",
"value": "string"
},
{
"type": "domain",
"value": "domain.com"
}
]
}
]
}
}
Creates a user and onboards them to every entry in the
See Errors for the response envelope and the full list of codes.
services array in a single call. Each entry’s shape varies by service slug: rmd carries personal and address fields, and dwm carries the assets to monitor.
- URL:
/usermanagement/v1/users - Full URL:
<base_url>/usermanagement/v1/users - Request Method: POST
- Content-Type:
application/json
Authentication
Send the Access Token in theX-AccessToken request header on every authenticated call:
X-AccessToken: YOUR_ACCESS_TOKEN
Your Secret Key must never be used client-side or committed to source control. Exchange it for an Access Token server-side (see Authentication) and send only the Access Token from client code.
Request Body
string
required
Unique external identifier for the user.
string
required
Default subscription type (e.g.
paid).number
Default subscription period in days, used when a service entry doesn’t override it.
array
required
One entry per service the user is onboarded to (see the service entry fields below).
Show service entry
Show service entry
string
required
Service slug, e.g.
rmd or dwm.string
User’s first name. Required for
rmd entries.string
User’s last name. Required for
rmd entries.string
User’s email address. Must be unique. Required for
rmd entries.string
User’s phone number. Must be unique. Required for
rmd entries.number
Subscription period in days for this service. Optional — falls back to the top-level
period.string
Per-service type —
trial or paid. Overrides the top-level value for this entry.string
Date of birth, format
DD-MM-YYYY.string
Street address (Line 1).
string
City name.
string
U.S. state (2-letter abbreviation, e.g.
CA, or full state name, e.g. California).string
U.S. ZIP or ZIP+4 postal code.
number
Numeric country identifier.
string
ISO country code / slug (e.g.
US).On
rmd entries, the email and phoneNumber fields must be unique — user creation fails if either value already exists in the system. All remaining parameters are optional and should be supplied only if they are enabled as part of the partner’s agreed service scope and configuration.Sample Request
curl -X POST "<base_url>/usermanagement/v1/users" \
-H "X-AccessToken: YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"uuid": "string",
"subscriptionType": "paid",
"period": 30,
"services": [
{
"slug": "rmd",
"subscriptionType": "paid",
"period": 30,
"firstName": "string",
"lastName": "string",
"email": "string",
"phoneNumber": "string",
"dateOfBirth": "DD-MM-YYYY",
"addressLine1": "string",
"city": "string",
"state": "string",
"zipCode": "string",
"countryId": 1,
"countrySlug": "US"
},
{
"slug": "dwm",
"subscriptionType": "paid",
"period": 30,
"assets": [
{ "type": "email", "value": "string" },
{ "type": "phone", "value": "string" },
{ "type": "domain", "value": "domain.com" }
]
}
]
}'
const res = await fetch("<base_url>/usermanagement/v1/users", {
method: "POST",
headers: {
"X-AccessToken": process.env.PUREWL_ACCESS_TOKEN,
"Content-Type": "application/json",
},
body: JSON.stringify({
uuid: "string",
subscriptionType: "paid",
period: 30,
services: [
{
slug: "rmd",
subscriptionType: "paid",
period: 30,
firstName: "string",
lastName: "string",
email: "string",
phoneNumber: "string",
dateOfBirth: "DD-MM-YYYY",
addressLine1: "string",
city: "string",
state: "string",
zipCode: "string",
countryId: 1,
countrySlug: "US",
},
{
slug: "dwm",
subscriptionType: "paid",
period: 30,
assets: [
{ type: "email", value: "string" },
{ type: "phone", value: "string" },
{ type: "domain", value: "domain.com" },
],
},
],
}),
});
const user = await res.json();
curl -X POST "<base_url>/usermanagement/v1/users" \
-H "X-AccessToken: YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"uuid": "string",
"subscriptionType": "paid",
"period": 30,
"services": [
{
"slug": "rmd",
"subscriptionType": "paid",
"period": 30,
"firstName": "string",
"lastName": "string",
"email": "string",
"phoneNumber": "string",
"dateOfBirth": "DD-MM-YYYY",
"addressLine1": "string",
"city": "string",
"state": "string",
"zipCode": "string",
"countryId": 1,
"countrySlug": "US"
},
{
"slug": "dwm",
"subscriptionType": "paid",
"period": 30,
"assets": [
{ "type": "email", "value": "string" },
{ "type": "phone", "value": "string" },
{ "type": "domain", "value": "domain.com" }
]
}
]
}'
const res = await fetch("<base_url>/usermanagement/v1/users", {
method: "POST",
headers: {
"X-AccessToken": process.env.PUREWL_ACCESS_TOKEN,
"Content-Type": "application/json",
},
body: JSON.stringify({
uuid: "string",
subscriptionType: "paid",
period: 30,
services: [
{
slug: "rmd",
subscriptionType: "paid",
period: 30,
firstName: "string",
lastName: "string",
email: "string",
phoneNumber: "string",
dateOfBirth: "DD-MM-YYYY",
addressLine1: "string",
city: "string",
state: "string",
zipCode: "string",
countryId: 1,
countrySlug: "US",
},
{
slug: "dwm",
subscriptionType: "paid",
period: 30,
assets: [
{ type: "email", value: "string" },
{ type: "phone", value: "string" },
{ type: "domain", value: "domain.com" },
],
},
],
}),
});
const user = await res.json();
Response
object
object
Show body
Show body
string
Generated username for the created user.
string
The external identifier supplied in the request.
string
Effective subscription type.
number
Effective subscription period in days.
string
Subscription expiry date.
array
Created service entries.
Show service entry
Show service entry
string
Service slug.
number
Effective subscription period in days for this service.
string
Subscription expiry date for this service.
string
User’s first name (echoed back).
string
User’s last name (echoed back).
string
User’s email address (echoed back).
string
User’s phone number (echoed back).
string
Date of birth (echoed back).
string
Street address (echoed back).
string
City name (echoed back).
string
U.S. state (echoed back).
string
ZIP/postal code (echoed back).
number
Numeric country identifier (echoed back).
string
ISO country code / slug (echoed back).
Sample Response
Success
{
"header": {
"code": 1,
"message": "Account has been created successfully",
"response_code": 1
},
"body": {
"username": "string",
"uuid": "string",
"subscriptionType": "paid",
"period": 30,
"expiryDate": "17-07-2026",
"services": [
{
"slug": "rmd",
"period": 30,
"expiryDate": "17-07-2026",
"firstName": "string",
"lastName": "string",
"email": "string",
"phoneNumber": "string",
"dateOfBirth": "string",
"addressLine1": "string",
"city": "string",
"state": "string",
"zipCode": "string",
"countryId": 1,
"countrySlug": "US"
},
{
"slug": "dwm",
"period": 30,
"expiryDate": "17-07-2026",
"assets": [
{
"type": "email",
"value": "string"
},
{
"type": "phone",
"value": "string"
},
{
"type": "domain",
"value": "domain.com"
}
]
}
]
}
}
{
"header": {
"code": 1,
"message": "Account has been created successfully",
"response_code": 1
},
"body": {
"username": "string",
"uuid": "string",
"subscriptionType": "paid",
"period": 30,
"expiryDate": "17-07-2026",
"services": [
{
"slug": "rmd",
"period": 30,
"expiryDate": "17-07-2026",
"firstName": "string",
"lastName": "string",
"email": "string",
"phoneNumber": "string",
"dateOfBirth": "string",
"addressLine1": "string",
"city": "string",
"state": "string",
"zipCode": "string",
"countryId": 1,
"countrySlug": "US"
},
{
"slug": "dwm",
"period": 30,
"expiryDate": "17-07-2026",
"assets": [
{
"type": "email",
"value": "string"
},
{
"type": "phone",
"value": "string"
},
{
"type": "domain",
"value": "domain.com"
}
]
}
]
}
}
Status Codes
| Status | Meaning |
|---|---|
200 | Success. |
500 | Internal server error. |
Error codes
Returned inheader.response_code when the request fails.
| Code | Message |
|---|---|
998 | Internal server error |
1001 | Validation error |
1002 | You are not permitted to the resource! |
1003 | Invalid service slug provided |
1006 | User already exists |
Next steps
Get a User
Retrieve the profile and subscription details of the user you just created.
Dark Web Monitoring
Look up where a user’s identifiers appear in breach data.
Delete a User
Permanently remove a user when the relationship ends.