POST ?action=create_trial

Requests a free trial for a customer. The request runs full anti-abuse checks including VPN detection and disposable email validation before provisioning.

The customer's real IP address is required and must be collected server-side from their browser request — do not pass your own server's IP address.

Depending on your Panelr trial settings, the response will either confirm automatic provisioning or indicate the trial is pending manual approval.

Request Parameters

email — string — Required. Customer email address.

customer_ip — string — Required. Customer's real browser IP. Collect this server-side and forward it here.

name — string — Optional. Customer name.

user_agent — string — Optional. Customer browser user agent.

bypass_abuse_checks — boolean — Optional. Skips all abuse, duplicate, and rate limit checks. For admin-initiated trials only.

Collecting the Customer IP

When calling from a PHP backend, resolve the real IP before making the request:

$customerIp = $_SERVER['HTTP_CF_CONNECTING_IP']
?? $_SERVER['HTTP_X_FORWARDED_FOR']
?? $_SERVER['REMOTE_ADDR'];

Response — Auto-provisioned

{
  "success": true,
  "data": {
  "trial_request_id": 12,
  "activation_id": 45,
  "status": "approved"
},
  "error": null
}

Response — Pending Manual Approval

{
  "success": true,
  "data": {
  "trial_request_id": 12,
  "work_order_id": 44,
  "reference_code": "WO-2026-12347",
  "status": "pending"
},
  "error": null
}

When status is "pending", the trial will not be active until approved in the Panelr admin panel.

Example

curl -X POST "https://YOUR_DOMAIN/api/api.php?action=create_trial" \
  -H "X-Panelr-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "email": "[email protected]",
  "name": "John Doe",
  "customer_ip": "1.2.3.4",
  "user_agent": "Mozilla/5.0 ..."
}'