Provider docs

Plugin API reference

Base path is versioned. Use this for the official WordPress plugin or a custom integration.

API base URL https://subflow.synergylabs.cloud/api/v1

Base URL

https://subflow.synergylabs.cloud/api/v1

Authentication

After activate, every protected route needs both headers:

Authorization: Bearer PX-XXXX-XXXX-XXXX
X-Provxo-Site: {site_uid}

Activate itself is public (rate-limited by license and max sites). Do not expose your license key in front-end JavaScript.

Endpoints

Method Path Auth Purpose
POST/plugin/activateNoneBind WP/site to license; returns site_uid
GET/plugin/settingsBearer + siteRead branding, trial settings, packages, quotas
PUT/POST/plugin/settingsBearer + sitePush settings from the plugin to Provxo
POST/plugin/configBearer + siteSame payload as settings (legacy alias)
GET/plugin/panelsBearer + siteList panels + currently bound panel_id
POST/plugin/site-panelBearer + siteBind this site to a panel_id
GET/plugin/statsBearer + siteDashboard counters for the site
GET/plugin/trialsBearer + sitePaginated trials (page, per_page)
POST/plugin/trialsBearer + siteCreate a trial (panel must be bound)
GET/plugin/trials/{id}Bearer + siteTrial detail + credentials presentation
POST/plugin/trials/{id}/resendBearer + siteResend credentials email / WhatsApp
GET/plugin/customers/{id}Bearer + siteCustomer detail

Create a trial

Requires a bound panel. Example:

POST https://subflow.synergylabs.cloud/api/v1/plugin/trials
Authorization: Bearer PX-XXXX-XXXX-XXXX
X-Provxo-Site: 00000000-0000-0000-0000-000000000000
Content-Type: application/json

{
  "name": "John Doe",
  "email": "john@example.com",
  "phone": "+212600000000",
  "device_type": "android",
  "duration_hours": 24,
  "connection_type": "user",
  "package_id": null,
  "locale": "en"
}

Create-trial fields

FieldNotes
nameUsually required
emailUsually required
phoneDepends on form settings
whatsappOptional
device_typeMust be in allowed_devices
duration_hoursHours (must match allowed durations)
device_idOptional / required by settings
connection_typeuser | mag | code
mac_addressRequired when connection_type = mag
package_idOptional Provxo package id
localeen | fr

Bind panel

POST https://subflow.synergylabs.cloud/api/v1/plugin/site-panel
Authorization: Bearer PX-XXXX-XXXX-XXXX
X-Provxo-Site: {site_uid}
Content-Type: application/json

{ "panel_id": 1 }
Do not use POST /api/v1/tenants/{slug}/trials for production integrations. Prefer the authenticated plugin API above.