Platform & API

A platform built to be automated and extended

Everything the admin panel does, the REST API does too. And when you need to change how the core behaves, event hooks let you step in without editing a line of it.

The REST API

Run the whole operation over one API

The admin surface and the API share the same permission map, so anything a staff member can do, a token can do. Clients get a scoped surface of their own.

GET 260
POST 185
DELETE 112
PUT 92
PATCH 61
Bearer + API key IP allowlist 120 req/min Token-redacted logs
Open the API Reference
710Endpoints
19Resources
112Endpoints
13Resources
# Create a client straight from your own signup flow
curl -X POST https://yourdomain.com/api/v1/clients \
  -H "Authorization: Bearer $WISECP_TOKEN" \
  -d '{
    "first_name": "Ada",
    "last_name": "Lovelace",
    "email": "[email protected]",
    "country": "GB"
  }'

# 201 Created
{ "status": "success", "data": { "id": 4821, "state": "active" } }
// Create a client straight from your own signup flow
$api = new WisecpClient(getenv('WISECP_TOKEN'));

$client = $api->clients->create([
    'first_name' => 'Ada',
    'last_name'  => 'Lovelace',
    'email'      => '[email protected]',
    'country'    => 'GB',
]);

echo $client->id; // 4821
// Create a client straight from your own signup flow
const api = new WisecpClient(process.env.WISECP_TOKEN);

const client = await api.clients.create({
    firstName: 'Ada',
    lastName: 'Lovelace',
    email: '[email protected]',
    country: 'GB',
});

console.log(client.id); // 4821
# List the signed-in client's unpaid invoices
curl https://yourdomain.com/api/v1/client/invoices?status=unpaid \
  -H "Authorization: Bearer $CLIENT_TOKEN"

# 200 OK
{
  "status": "success",
  "data": [
    { "id": 90233, "total": "42.00", "due": "2026-08-01" }
  ]
}
// List the signed-in client's unpaid invoices
$api = new WisecpClient(getenv('CLIENT_TOKEN'));

$invoices = $api->client->invoices->all([
    'status' => 'unpaid',
]);

foreach ($invoices as $invoice) {
    echo $invoice->total;
}
// List the signed-in client's unpaid invoices
const api = new WisecpClient(process.env.CLIENT_TOKEN);

const invoices = await api.client.invoices.all({
    status: 'unpaid',
});

invoices.forEach(i => console.log(i.total));

Event Hooks

Change how the core behaves, without touching core

Every request travels a path through the platform. At each stage a hook can catch it, reshape its data, inject into the interface, or stop it outright, all from your own code.

302

Actions

React to an event: send, log, sync or trigger your own workflow.

344

UI Injections

Add fields, panels and buttons into the admin and client screens.

198

Filters

Reshape a value before the core uses it, from prices to payloads.

131

Gates

Veto an action outright: block an order, invoice, login or suspension.

11

Registers

Register your own product type, route or scheduled cron job.

Modules

Connect anything with a module

Nine documented module types cover the systems you plug into, from control panels to payment gateways. Each ships with a starter skeleton, so you begin from working code.

Servers

Hosting and server control panels, with create, suspend, SSO and usage stats.

Payments

Payment gateways in four models: merchant, subscription, third-party and tokenized.

Registrars

Domain registrars over a contract of forty-plus functions.

Products

Custom product types with their own provisioning lifecycle.

Addons

Add-ons that attach to any product or service.

SMS

SMS gateways for notifications and verification codes.

Mail

Mail providers for transactional and bulk delivery.

Authentication

Social and single sign-on providers.

Mail Piping

Turn inbound email into support tickets automatically.

Drag-and-drop upload Starter templates on GitHub Test Connection on every module

Architecture

A lean core, tuned for speed

The v5 core runs on a light custom framework, with the API on its own fast path, so a modern stack stays quick under load.

Lightweight core

A custom MVC core (coremio), built for throughput.

API fast path

API requests skip the MVC layer through a lean kernel.

Modern runtime

Runs on PHP 8.2 and newer, current and supported.

OpenAPI 3.1

Docs generated from the code, checked for drift at build time.

Start Building

Everything you need to build

The API reference, hook catalog and module guides all live in the developer docs, with starter templates to fork.