The gateway
API & validation logs
The endpoints the WordPress plugin calls, and every request flowing through them.
Reference · no auth (the key is the credential)
POST
/api/v1/licenses/activateCalled when a customer submits a key in wp-admin. Upserts the key+domain activation. Unlimited sites — never rejected for count.
Response
{
"activated": true,
"status": "active",
"expires_at": null,
"message": "License activated. Unlimited sites."
}POST
/api/v1/licenses/validateCalled by each site at most once per 12h. Same checks as activate; upserts if the row is missing (backup restores).
Response
{
"valid": true,
"status": "active",
"expires_at": null
}POST
/api/v1/licenses/deactivateBest-effort when a customer removes their key. Marks deactivated_at (history kept). Always succeeds.
Response
{ "deactivated": true }Shared request body (all endpoints)
{
"key": "WF-9K3F-A7Q2-MX81-DD4C",
"site_url": "https://plumberpro.com/",
"domain": "plumberpro.com",
"product": "wolf_forge",
"plugin_version": "2.0.0",
"wp_version": "6.8"
}domain is lowercased and stripped of a leading www. before matching. Always HTTP 200 for business answers; 5xx only on real outages (plugin keeps sites alive 72h).
Rejection responses (HTTP 200, valid:false)
invalidUnknown license key.key not found
revokedThis license has been revoked.kill switch
blockedThis domain is not permitted for this license.per-key or global block
Last 57 calls
Validation log
| Key | Endpoint | Domain | Result | IP | When |
|---|---|---|---|---|---|
| validate | wolfforge.ph | OK | 198.252.105.5 | in 1d | |
| geo/dataset | wolfforge.ph | OK | 198.252.105.5 | in 22h | |
| validate | d.com | Invalid | 160.79.106.105 | in 22h | |
| geo/dataset | d.com | Invalid | 160.79.106.73 | in 22h | |
| geo/business | d.com | Invalid | 160.79.106.105 | in 22h | |
| validate | d.com | Invalid | 160.79.106.2 | in 21h | |
| validate | d.com | Invalid | 160.79.106.21 | in 21h | |
| validate | d.com | Invalid | 160.79.106.113 | in 19h | |
| validate | wolfforge.ph | OK | 198.252.105.5 | in 15h | |
| activate | wolfforge.ph | OK | 198.252.105.5 | in 15h | |
| validate | wolfforge.ph | OK | 198.252.105.5 | in 13h | |
| activate | wolfforge.ph | OK | 198.252.105.5 | in 13h | |
| validate | 127.0.0.1 | OK | 146.148.98.137 | in 13h | |
| validate | wolfforge.ph | OK | 198.252.105.5 | in 12h | |
| validate | wolfforge.ph | OK | 198.252.105.5 | in 12h | |
| validate | wolfforge.ph | OK | 198.252.105.5 | in 12h | |
| activate | wolfforge.ph | OK | 198.252.105.5 | in 12h | |
| validate | wolfforge.ph | OK | 198.252.105.5 | in 12h | |
| validate | wolfforge.ph | OK | 198.252.105.5 | in 12h | |
| activate | wolfforge.ph | OK | 198.252.105.5 | in 12h | |
| activate | wolfforge.ph | OK | 198.252.105.5 | in 12h | |
| activate | wolfforge.ph | OK | 198.252.105.5 | in 12h | |
| validate | wolfforge.ph | OK | 34.170.141.253 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| validate | ratelimit-probe.test | Invalid | 34.69.247.5 | in 12h | |
| activate | 127.0.0.1 | Invalid | 146.148.98.137 | in 12h | |
| deactivate | demo-test.com | OK | 146.148.98.137 | in 12h | |
| activate | demo-test.com | Invalid | 34.69.247.5 | in 12h | |
| validate | demo-test.com | Invalid | 146.148.98.137 | in 12h |
Events
Webhook configuration
license.created→https://hooks.wolfforge.io/billing/createdlicense.expired→https://hooks.wolfforge.io/dunning/expiredactivation.blocked→https://hooks.wolfforge.io/abuse/blocked
Static mockup — all data simulated. No real customers, keys, or revenue.