WB Ad Manager Pro exposes a comprehensive set of REST API endpoints under the wbam-pro/v1 namespace. There are 70+ routes across 9 API classes covering advertisers, wallet, campaigns, classifieds, analytics, rotation, packages, Stripe, and WooCommerce.
Authentication
All endpoints require authentication unless marked as Public. Two methods are supported:
// Using Application Passwords (recommended for server-to-server)
Authorization: Basic base64(username:application_password)
// Using nonce (for logged-in users on the same WordPress site)
X-WP-Nonce: {nonce}
Permission Levels
| Level | Description |
|---|---|
| Public | No authentication required |
| Logged-in | Any authenticated WordPress user |
| Advertiser | Logged-in user with an advertiser profile |
| Owner | Advertiser who owns the specific resource |
| Admin | User with manage_options capability |
Advertiser API
Manages advertiser profiles, stats, wallet info, transactions, and ads. Class: Advertiser_API.
Advertiser Endpoints (Logged-in)
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET |
/advertiser/profile |
Get current user’s advertiser profile | Logged-in |
POST/PUT |
/advertiser/profile |
Update advertiser profile (company_name) | Logged-in |
GET |
/advertiser/stats |
Get advertiser dashboard stats (ads, campaigns, impressions, clicks, balance) | Logged-in |
GET |
/advertiser/wallet |
Get wallet balance and formatted totals | Logged-in |
GET |
/advertiser/transactions |
Get paginated transaction history | Logged-in |
GET |
/advertiser/ads |
Get advertiser’s ads with pagination | Logged-in |
Common parameters for advertiser endpoints:
user_id(integer, optional) — Admin-only. Specify another user’s ID to view their data.
Transaction list parameters:
page(integer, default: 1)per_page(integer, default: 20, max: 100)type(string, optional) — Filter by transaction type
Ads list parameters:
page(integer, default: 1)per_page(integer, default: 10, max: 50)status(string, optional) — Filter by post status
Advertiser Admin Endpoints
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET |
/admin/advertisers |
List all advertisers with pagination, search, status filter | Admin |
GET |
/admin/advertisers/{id} |
Get single advertiser details | Admin |
POST/PUT |
/admin/advertisers/{id} |
Update advertiser (status, company_name, balance) | Admin |
DELETE |
/admin/advertisers/{id} |
Delete advertiser | Admin |
Admin list parameters:
page(integer, default: 1)per_page(integer, default: 20)status(string, optional)search(string, optional)
Wallet API
Manages wallet balances, transactions, fund additions, and payment confirmations. Class: Wallet_API. Routes are only registered when the wallet module is enabled.
Wallet User Endpoints
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET |
/wallet/balance |
Get current balance, pending credits/debits, available balance, currency | Logged-in |
GET |
/wallet/transactions |
Get paginated transaction history | Logged-in |
POST |
/wallet/add-funds |
Create a pending fund transaction and initiate payment | Logged-in |
POST |
/wallet/confirm-payment |
Verify payment with gateway and complete transaction | Logged-in |
GET |
/wallet/payment-methods |
Get list of enabled payment methods with configuration | Logged-in |
Add funds parameters:
amount(number, required, min: 1) — Amount to addpayment_method(string, required, enum:stripe,paypal,razorpay,woocommerce,manual)notes(string, optional) — Notes for manual payment requests
Confirm payment parameters:
transaction_id(string, required)payment_method(string, required)payment_id(string, optional) — Gateway payment/order ID
Wallet Admin Endpoints
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET |
/admin/wallets |
List all wallets with search and pagination | Admin |
GET |
/admin/wallets/{user_id} |
Get specific user’s wallet details and stats | Admin |
GET |
/admin/wallets/{user_id}/transactions |
Get specific user’s transaction history | Admin |
POST |
/admin/wallets/{user_id}/adjust |
Credit or debit a user’s wallet balance | Admin |
GET |
/admin/transactions |
List all transactions with filters | Admin |
GET |
/admin/transactions/stats |
Get transaction statistics for a period | Admin |
Adjust balance parameters:
amount(number, required)type(string, required, enum:credit,debit)reason(string, optional)
Transaction stats parameters:
period(string, enum:today,week,month,year,all, default:month)
Campaign API
Manages campaigns including creation, status changes, stats, and admin approval. Class: Campaign_API. Routes are only registered when the campaigns module is enabled.
Campaign User Endpoints
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET |
/campaigns |
List current user’s campaigns with pagination and status filter | Logged-in |
POST |
/campaigns |
Create a new campaign | Logged-in |
GET |
/campaigns/{id} |
Get single campaign details | Owner/Admin |
POST/PUT |
/campaigns/{id} |
Update campaign (only if draft, pending, or paused) | Owner/Admin |
DELETE |
/campaigns/{id} |
Delete campaign (refunds reservation if applicable) | Owner/Admin |
POST |
/campaigns/{id}/pause |
Pause an active campaign | Owner/Admin |
POST |
/campaigns/{id}/resume |
Resume a paused campaign | Owner/Admin |
GET |
/campaigns/{id}/stats |
Get campaign performance stats with daily breakdown | Owner/Admin |
Create/update campaign parameters:
name(string, required for create)ad_id(integer, optional)package_id(integer, optional)budget(number, min: 0)pricing_model(string, enum:flat,cpm,cpc)price_per_unit(number, min: 0)impressions_limit(integer, min: 0)clicks_limit(integer, min: 0)start_date(string, date format)end_date(string, date format)
Campaign stats parameters:
period(string, enum:today,week,month,year, default:week)
Campaign Admin Endpoints
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET |
/admin/campaigns |
List all campaigns with filters | Admin |
POST |
/admin/campaigns/{id}/approve |
Approve and activate a campaign | Admin |
POST |
/admin/campaigns/{id}/reject |
Reject (cancel) a campaign | Admin |
Admin list parameters:
page(integer, default: 1)per_page(integer, default: 20)status(string, optional)advertiser_id(integer, optional)
Reject parameters:
reason(string, optional)
Classified API
Manages classified listings with public browsing, user CRUD, and admin moderation. Class: Classified_API. Routes are only registered when the classifieds module is enabled.
Classified Public Endpoints
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET |
/classifieds |
Browse active classifieds with search, category, price, and sort filters | Public |
GET |
/classifieds/{id} |
Get single classified (increments view count) | Public |
GET |
/classifieds/categories |
Get all classified categories | Public |
POST |
/classifieds/{id}/contact |
Send inquiry to seller via contact form | Public |
Browse parameters:
category(integer, optional) — Category term IDlocation(string, optional)search(string, optional)min_price(number, optional)max_price(number, optional)sort(string, enum:newest,price_low,price_high,featured, default:newest)page(integer, default: 1)per_page(integer, default: 20, max: 100)
Contact seller parameters:
name(string, required)email(string, required)phone(string, optional)message(string, required)
Classified User Endpoints
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET |
/my/classifieds |
List current user’s classifieds with status counts | Logged-in |
POST |
/my/classifieds |
Create a new classified listing (charges wallet) | Logged-in |
GET |
/my/classifieds/{id} |
Get single owned classified | Owner |
POST/PUT |
/my/classifieds/{id} |
Update owned classified | Owner |
DELETE |
/my/classifieds/{id} |
Delete owned classified | Owner |
POST |
/my/classifieds/{id}/sold |
Mark classified as sold | Owner |
POST |
/my/classifieds/{id}/renew |
Renew expired classified with a package (charges wallet) | Owner |
POST |
/my/classifieds/{id}/upgrade |
Add upgrades like featured, highlighted, urgent, bump (charges wallet) | Owner |
Create classified parameters:
title(string, required)description(string, required)category_id(integer, required)price(number, optional)price_type(string, enum:fixed,negotiable,free,contact)location(string, optional)contact_method(string, enum:form,email,phone,both)contact_email(string, optional)contact_phone(string, optional)images(array of integers, optional) — Attachment IDspackage_id(integer, required)upgrades(array of strings, optional)
Renew parameters:
package_id(integer, required)
Upgrade parameters:
upgrades(array of strings, required, enum:featured,highlighted,urgent,bump)
Classified Admin Endpoints
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET |
/admin/classifieds |
List all classifieds with filters | Admin |
GET |
/admin/classifieds/{id} |
Get single classified with full admin details | Admin |
POST/PUT |
/admin/classifieds/{id} |
Update any classified field | Admin |
DELETE |
/admin/classifieds/{id} |
Delete classified | Admin |
POST |
/admin/classifieds/{id}/approve |
Approve a pending classified | Admin |
POST |
/admin/classifieds/{id}/reject |
Reject a classified with optional reason | Admin |
Admin list parameters:
status(string, optional)user_id(integer, optional)category(integer, optional)search(string, optional)page(integer, default: 1)per_page(integer, default: 20)
Analytics API
Provides analytics data for ad performance including overview, per-ad stats, charts, geographic and device breakdowns, and data export. Class: Analytics_API. All endpoints require Admin permission.
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET |
/analytics/overview |
Aggregate stats: impressions, clicks, CTR, unique visitors, revenue, active ads | Admin |
GET |
/analytics/ads/{id} |
Per-ad stats with daily and raw data breakdowns | Admin |
GET |
/analytics/chart |
Time-series chart data for a specific metric | Admin |
GET |
/analytics/top-ads |
Top performing ads ranked by impressions, clicks, or CTR | Admin |
GET |
/analytics/geo |
Geographic breakdown of impressions and clicks by country | Admin |
GET |
/analytics/devices |
Device type breakdown (desktop, mobile, tablet) | Admin |
GET |
/analytics/export |
Export analytics data as CSV or JSON | Admin |
Common date parameters (all analytics endpoints):
start_date(string, Y-m-d format, default: 30 days ago)end_date(string, Y-m-d format, default: today)
Chart parameters:
ad_id(integer, optional, default: 0 for all ads)metric(string, enum:impressions,clicks,ctr, default:impressions)
Top ads parameters:
limit(integer, default: 10)orderby(string, enum:impressions,clicks,ctr, default:impressions)
Export parameters:
format(string, enum:csv,json, default:csv)ad_id(integer, optional, default: 0 for all ads)
Rotation API
Manages fair ad rotation with share-of-voice tracking and admin configuration. Class: Rotation_API. Routes are only registered when the rotation module is enabled.
Rotation Advertiser Endpoints
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET |
/rotation/share |
Get advertiser’s share of voice across placements | Advertiser |
GET |
/rotation/log |
Get paginated rotation log for advertiser | Advertiser |
GET |
/rotation/export |
Export rotation log as CSV data | Advertiser |
Share of voice parameters:
placement(string, optional) — Filter to specific placementdate_range(string, enum:today,week,month,year, default:month)
Rotation log parameters:
date_range(string, enum:today,week,month,year, default:week)page(integer, default: 1)per_page(integer, default: 50, max: 100)
Rotation Admin Endpoints
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET |
/admin/rotation/placement |
Get rotation stats for a specific placement | Admin |
GET |
/admin/rotation/settings |
Get rotation configuration | Admin |
POST/PUT |
/admin/rotation/settings |
Update rotation settings | Admin |
Placement stats parameters:
placement(string, required)date_range(string, enum:today,week,month,year, default:month)
Update settings parameters:
enable_rotation(boolean)rotation_model(string, enum:equal,budget_weighted)rotation_ads_per_placement(object) — Per-placement ad limitsrotation_reset_period(string, enum:hourly,daily)
Package API
Manages ad packages with public listing and admin CRUD. Class: Package_API. Routes are only registered when the packages module is enabled.
Package Public Endpoints
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET |
/packages |
List all active packages | Public |
GET |
/packages/{id} |
Get single active package details | Public |
Package Admin Endpoints
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET |
/admin/packages |
List all packages (any status) with counts | Admin |
POST |
/admin/packages |
Create a new package | Admin |
GET |
/admin/packages/{id} |
Get single package with usage count | Admin |
POST/PUT |
/admin/packages/{id} |
Update package | Admin |
DELETE |
/admin/packages/{id} |
Delete package | Admin |
POST |
/admin/packages/{id}/duplicate |
Duplicate a package | Admin |
POST |
/admin/packages/reorder |
Reorder packages by sort order | Admin |
POST |
/admin/packages/create-defaults |
Create default starter packages | Admin |
Create/update package parameters:
name(string, required for create)description(string, optional)placements(array of strings, optional)duration_days(integer, min: 1)impressions_limit(integer, min: 0)clicks_limit(integer, min: 0)price(number, min: 0) — Flat-rate pricepricing_model(string, enum:flat,cpm,cpc)price_per_unit(number, min: 0) — Price per impression/clickrequires_approval(boolean)max_ads(integer, min: 0)status(string, enum:active,inactive,archived)
Reorder parameters:
order(array of integers, required) — Package IDs in desired order
Stripe Integration API
Handles Stripe payment intents, checkout sessions, and webhook processing. Class: Stripe_Integration.
| Method | Endpoint | Description | Permission |
|---|---|---|---|
GET |
/stripe/config |
Get Stripe publishable key and test mode status | Logged-in |
POST |
/stripe/create-payment-intent |
Create a Stripe PaymentIntent for card payments | Logged-in |
POST |
/stripe/confirm-payment |
Verify and confirm a succeeded PaymentIntent, credit wallet | Logged-in |
POST |
/stripe/create-checkout-session |
Create a Stripe Checkout Session (hosted payment page) | Logged-in |
GET |
/stripe/checkout-success |
Handle redirect after successful Checkout, credit wallet | Logged-in |
POST |
/stripe/webhook |
Receive Stripe webhook events (payment_intent.succeeded, checkout.session.completed, charge.refunded) | Public |
Create payment intent parameters:
amount(number, required) — Amount in base currency units (validated against min/max from settings)
Confirm payment parameters:
payment_intent_id(string, required)
Create checkout session parameters:
amount(number, required)
Checkout success parameters:
session_id(string, required) — Stripe Checkout Session ID
Webhook URL: https://yoursite.com/wp-json/wbam-pro/v1/stripe/webhook
WooCommerce Integration API
Adds WooCommerce wallet top-up functionality via a virtual product. Class: WooCommerce_Integration. Only active when WooCommerce plugin is installed.
| Method | Endpoint | Description | Permission |
|---|---|---|---|
POST |
/wallet/woocommerce-add-funds |
Add wallet credit product to WooCommerce cart with custom amount | Logged-in |
Parameters:
amount(number, required) — Credit amount to add
Response includes:
cart_url— WooCommerce cart URLcheckout_url— WooCommerce checkout URL
Wallet credits are automatically applied when the WooCommerce order status changes to completed or processing. Refunds are handled when the order status changes to refunded.
Error Responses
All endpoints return standard WordPress REST API error responses:
{
"code": "rest_forbidden",
"message": "Sorry, you are not allowed to do that.",
"data": {
"status": 403
}
}
Common error codes:
| Code | Status | Description |
|---|---|---|
rest_forbidden |
403 | User lacks permission for this action |
rest_not_logged_in |
401 | User is not authenticated |
rest_not_found / not_found |
404 | Requested resource does not exist |
rest_invalid_param |
400 | A required parameter is missing or invalid |
insufficient_balance |
400 | Advertiser wallet balance is too low |
invalid_status |
400 | Resource is not in a valid state for the requested action |
campaign_not_editable |
400 | Campaign cannot be edited in its current status |
advertiser_not_found |
404 | No advertiser profile found for the user |
Module Availability
Several API classes check whether their module is enabled before registering routes. If a module is disabled in Settings > Modules, its API endpoints will not be available:
| Module | API Class | Setting Key |
|---|---|---|
| Wallet | Wallet_API |
wallet |
| Campaigns | Campaign_API |
campaigns |
| Classifieds | Classified_API |
classifieds |
| Rotation | Rotation_API |
rotation |
| Packages | Package_API |
packages |
The Advertiser, Analytics, Stripe, and WooCommerce APIs are always available when their respective integrations are configured.
