Create, suspend, resume and terminate monitored services for your customers.
Create, suspend, resume and terminate monitored services for your customers. These are the endpoints the WHMCS module calls from its provisioning hooks. Call them directly if you integrate with a different billing system. All provisioning actions are idempotent: repeating a call for a service that is already in the target state succeeds with a note in the response.
Every endpoint in this group is also available under the /api/v1/provisioning/* prefix (for example /api/v1/provisioning/provision). The two namespaces are identical. Pick one and stay consistent.
Endpoint actions (suspend, resume, terminate) address a monitored server by endpoint_id; subscription and domain actions address the WHMCS service by client_id + service_id (+ product_slug).
Provision endpoint monitoring
POST/api/v1/whmcs/provision
Auth: Bearer API keyRate limit: 60 requests / minute per API key
Start monitoring a server for a customer. Creates the monitored endpoint (and the customer's account on first use) and schedules the first scan. Idempotent: provisioning the same IP again for the same customer returns the existing endpoint with a note.
›When the IP is already monitored for this customer, the call returns 200 with the existing endpoint_id and a note field instead of creating a duplicate.
Body parameters
Name
Type
Required
Notes
client_id
integer
Required
WHMCS client ID of the customer.min:1
ip_address
ip
Required
IPv4 or IPv6 address of the server to monitor.
service_id
integer
Optional
WHMCS service ID linking this endpoint to a product instance.min:1
hostname
string
Optional
Display hostname shown alongside the IP.max:255
client_name
string
Optional
Customer name, used to create their account on first provision.max:255
client_email
email
Optional
Customer email, used to create their account on first provision.max:255
product_slug
string
Optional
Platform product to bill this endpoint against.max:50
plan_slug
string
Optional
Plan tier for the product.max:50
mrr
numeric
Optional
Monthly recurring revenue you charge for this service, for revenue reporting.min:0.01 · max:9999.99
Auth: Bearer API keyRate limit: 60 requests / minute per API key
Queue an on-demand scan for one of the customer's endpoints. Scans are asynchronous. The response confirms the scan was queued, and results appear on the endpoint once it completes. Manual scans are rate limited per endpoint with a cooldown window.
Body parameters
Name
Type
Required
Notes
client_id
integer
Required
WHMCS client ID of the customer who owns the endpoint.min:1
The endpoint is paused or terminated. Resume it before scanning.
RATE_LIMITED
429
The endpoint is still in its scan cooldown. details.retry_after_seconds says when to retry.
SCANNING_UNAVAILABLE
503
The scanning service is temporarily unavailable.
SCAN_DISPATCH_FAILED
500
The scan could not be queued. Try again.
Provision domain monitoring
POST/api/v1/whmcs/provision-domain
Auth: Bearer API keyRate limit: 60 requests / minute per API key
Start watching a domain for leaked credentials and dark-web mentions. The domain is normalized (URLs are reduced to their hostname) before validation. Idempotent: an already-monitored domain returns its existing record with a note, and a previously terminated domain is restored.
Body parameters
Name
Type
Required
Notes
client_id
integer
Required
WHMCS client ID of the customer.min:1
domain
string
Required
Domain to monitor. Full URLs are accepted and reduced to the hostname.max:253 · valid domain
service_id
integer
Required
WHMCS service ID linking this domain to a product instance.min:1
client_name
string
Optional
Customer name, used to create their account on first provision.max:255
client_email
email
Optional
Customer email, used to create their account on first provision.max:255
No monitored domain with that ID belongs to your account.
Change a monitored domain
POST/api/v1/whmcs/update-domain
Auth: Bearer API keyRate limit: 60 requests / minute per API key
Point an existing domain-monitoring service at a different domain (for example after a customer rebrand). Scan history for the old domain stays attached to the record; scanning continues against the new domain.
No monitored domain with that ID belongs to your account.
DOMAIN_ALREADY_EXISTS
409
The customer already monitors the new domain.
Provision a subscription
POST/api/v1/whmcs/provision-subscription
Auth: Bearer API keyRate limit: 60 requests / minute per API key
Create (or update) a standalone product subscription for a customer, used for monitoring products that are not tied to a single server, such as domain-monitoring slots. Per-plan products take plan_slug; per-unit products take quantity.
›Returns 201 when the subscription is created and 200 when an existing subscription is updated.
Body parameters
Name
Type
Required
Notes
client_id
integer
Required
WHMCS client ID of the customer.min:1
service_id
integer
Required
WHMCS service ID for this product instance.min:1
product_slug
string
Required
Platform product to subscribe the customer to.max:50
plan_slug
string
Optional
Plan tier (for per-plan products such as port_monitoring).max:50
quantity
integer
Optional
Unit count (for per-unit products such as domain_monitoring slots).min:1 · max:10000
mrr
numeric
Optional
Monthly recurring revenue you charge, for revenue reporting.min:0.01 · max:9999.99
client_name
string
Optional
Customer name, used to create their account on first provision.max:255
client_email
email
Optional
Customer email, used to create their account on first provision.max:255
The customer has no subscription for this product and service.
Change a subscription plan or quantity
POST/api/v1/whmcs/change-subscription
Auth: Bearer API keyRate limit: 60 requests / minute per API key
Upgrade or downgrade a subscription: change the plan tier of a per-plan product or the unit count of a per-unit product. Downgrades are checked against current usage first, so a customer using 8 domain slots cannot drop to 5.
›A no-op change (already on the requested plan and quantity) returns changed: false with the current plan.
›At least one of new_plan_slug or new_quantity is required.
Body parameters
Name
Type
Required
Notes
client_id
integer
Required
WHMCS client ID of the customer.min:1
service_id
integer
Required
WHMCS service ID for this product instance.min:1
product_slug
string
Required
Product of the subscription to change.max:50
new_plan_slug
string
Optional
Target plan tier for per-plan products.max:50
new_quantity
integer
Optional
Target unit count for per-unit products.min:1 · max:10000
force
boolean
Optional
Reserved for administrative overrides; leave unset in normal integrations.