provision scope except the reads, which
need read.
Provision an account
POST /accounts creates a customer account keyed by your own externalRef.
Idempotent by design. Two calls with the same
externalRef return the same
account. The first returns 201 with existing: false; a repeat returns 200
with existing: true and ignores the other body fields. Build your provisioning
as fire-and-forget: retries never create duplicates.licenseKey, and you drive
everything else through the API or the dashboard.
Read an account
GET /accounts/:accountId returns the account with its credit balances and site
count.
Change the plan
POST /accounts/:accountId/plan moves an account to a different plan.
Grant credits
POST /accounts/:accountId/credits adds credits to an account. This is a grant
from your partner allocation, not a purchase: the customer gets no billing email.
amount is a positive integer. The response returns the new balance. Watch for
the credits.low webhook to top accounts up before
they run dry.
Suspend or reactivate
POST /accounts/:accountId/status sets the account’s status. Suspending stops the
account from spending credits within one plugin validation cycle (about five
minutes); setting it back to active re-enables it.
status is one of active, suspended, or cancelled. Use this when a customer
churns or fails to pay you: it is your lever, not WPOS’s.
List an account’s sites
GET /accounts/:accountId/sites returns the WordPress sites connected to the
account, including each site’s white-label handoff state.
You do not create sites by API. A site appears here once your customer activates
the plugin on a real WordPress site with the account’s license key. That
registration also fires a
site.registered webhook.Ownership and errors
Every account and site must resolve to your partner. A request for one that is not yours returns404 not_found, never 403, so the API never leaks whether an id
exists. See the error reference.
Next
Build jobs
Run the agent on a connected site.
Branding
White-label the assistant on a site.