Most WordPress REST endpoints in the wild fail a basic security review.
Permission callbacks set to __return_true. No schema validation. Cache invalidation
missing. Rate limits unset. Client teams pinging Slack at midnight because the API
contract changed without warning. The WordPress REST API is excellent. Most
implementations of it are not.
We build endpoints the way WordPress core intends them. Schema first, auth
enforced, cached at the right layer, rate limited at the route, tested in CI,
and documented before the frontend team starts integrating.
A request, hop by hop
Where the milliseconds actually go.
A real call against a custom WP REST endpoint we built. Auth, schema validate, DB query,
serialize, response. Each hop measured in production. The bottleneck is where you would
expect; the fix is cached lookups + prepared statements. Scroll up and back down to replay.
GET /wp-json/acme/v1/members?role=premium · authenticated measuredTotal 184ms
Auth verifyapplication password · cached
9ms
Capability checkuser_can(list_members)
5ms
Schema validaterest_sanitize_request_arg
3ms
DB query · WP_User_Query7 joins · prepared
111msbottleneck
Serialize · prepare_response142 rows · 4.8KB
47ms
Response · gzip2.1KB compressed
9ms
OpenAPI spec generated · the frontend team sees types before integration
Rate-limited · per-key, per-IP, per-route · audit logged for compliance
What we build
REST endpoints the frontend team can rely on.
Schema validated, properly authenticated, cached where it matters, rate limited where it counts. PHPUnit tests in CI. OpenAPI docs auto-generated. Versioned so the contract holds.
01
Auth that survives security review
Application passwords for service accounts, JWT for headless frontends, nonce + capability checks for browser calls. Permission callbacks on every route. No public endpoint that should be authenticated.
→ Endpoints pass enterprise security audits.
02
Schema validation, not duck typing
Every endpoint declares its request schema and response schema. WP_REST_Request validates inputs before they hit the callback. OpenAPI spec generated from the schema for client teams.
→ Frontend never gets a surprise response shape.
03
Object cache aware
Endpoints use WordPress transients or object cache for expensive queries. Cache keys versioned, invalidation tied to the underlying post or option saves. Redis or Memcached when the host supports it.
→ API stays fast under traffic spikes.
04
Rate limited at the route
Per IP and per user rate limits, configurable per route. 429 responses with proper Retry-After headers. Optional integration with Cloudflare Rate Limiting at the edge for the routes that need it.
→ Abuse blocked without breaking real clients.
05
Tested with PHPUnit and Postman
PHPUnit tests with WP_UnitTestCase covering happy path, auth failures, validation errors, and edge cases. Postman or Bruno collections committed to the repo for manual testing and client teams.
→ Refactor without breaking the contract.
06
Documented for client teams
Auto-generated OpenAPI spec, plus a human-readable README per endpoint group. Examples in curl and JavaScript fetch. Versioning policy documented from day one.
→ Frontend team integrates without Slack pings.
0 incidents
across our shipped REST endpoints in WordPress.org plugin reviews
100+ plugins shipped, every endpoint passes WordPress.org security review.
Pattern we ship
Controller-style endpoints, the way WordPress core does it.
Extending WP_REST_Controller gives you the right hook points for permissions, schema, and serialization. We follow the same pattern WordPress core uses for posts, users, and comments.
One week. Endpoint inventory, request and response schemas, auth model, rate limit map, cache strategy. Output is an OpenAPI draft and fixed price quote.
→ Frontend team can start mocking on day three.
02
Build and test
Two to four weeks. Endpoints written one at a time, PHPUnit tests alongside. Postman or Bruno collection updated as we go. Code review per route.
→ Every route ships green.
03
Document and hand over
One week. OpenAPI spec finalized, README per endpoint group, examples in curl and JavaScript. Optional client SDK generated.
→ Client teams onboard without Slack pings.
Common questions
Frequently asked
Why custom REST endpoints instead of GraphQL?
REST is built into WordPress core. No extra plugin to maintain, no resolver layer to debug, no schema sync issues. For most use cases REST is faster to ship and easier to cache. We build GraphQL when the data shape needs it, not by default.
How do you authenticate REST calls?
Three patterns. Browser calls use nonce + capability checks. Server-to-server uses application passwords. Headless frontends use JWT. Each has the right permission callback and rate limit. We pick the pattern in the discovery call.
How do you handle versioning?
Namespace per major version. wbcom/v1, wbcom/v2. Old versions kept live for 12 months minimum after a v2 ships, with deprecation headers. No breaking changes inside a version, ever.
Can you wrap an existing third-party plugin's data in custom endpoints?
Yes. Common pattern: WooCommerce or BuddyPress data exposed through cleaner, faster, project-specific endpoints. We do not modify the upstream plugin, we layer on top with proper caching and schema validation.
Do you write the client too?
When asked. We have shipped TypeScript client SDKs and React hooks generated from the OpenAPI spec. Frontend teams consume the API the same way they would consume Stripe or Twilio.
What does it cost?
A focused REST endpoint suite (5 to 10 routes with auth, caching, tests, docs) are scoped per project. Larger API surfaces with versioning, rate limiting, and client SDK generation are scoped after discovery. Discovery call is free.
Need REST endpoints that hold up?
Tell us what you want to build.
Discovery call is free. Fixed-price quote within 48 hours. Projects are scope-dependent.
Seriously, one of the best software tech experiences I've ever had!
After 16 years of buying WordPress themes and plugins, I know exactly what bad support looks like and Wbcom Designs is the polar opposite. My setup was a nightmare: multiple tools, deep integrations, custom configurations that required…
Duston McGroarty·US·
Great service, great plugins
I was using an excellent plugin created by Wbcom Designs and had both an error and discovered a slight bug in one aspect of the plugin. After creating a support ticket I got a super-quick response and discovered the error was on my part…
Edward Bonthrone·US·
Excellent Theme, Powerful Plugins and Outstanding Support
I am using the REIGN theme and several plugins from Wbcom Designs on my website. The theme is beautifully designed, and the plugins are user-friendly. Everything works smoothly, and the features are perfect for building professional…
S W Malcolm·US·
The best development team ever
It has been a very pleasurable experience working with Wbcom Designs. Anmybia Siddiqui has been a stellar leader of the dev team. Her communications are very professional and productive. Anmybia and her team have completed every task we…
Real America's Voice News·US·
Top notch support
Top notch support. I have been frustrated generally by the slow support for most themes and plugins, but they are helpful and quick to reply. Highly recommend.
Woods·DE·
I was impressed
I have worked with many WordPress plugins over the past 14 years part time. I have learned that if the support is not prompt and effective it is a sign to move on. Tonight, Wbcom has impressed me and I will be hiring them for some more…
Steve Valencia·US·
Perfect plugins for community sites
I wanted to build a community website and these guys created the perfect plugins for me. To be honest, I want to buy every single one of their plugins. If I had more money I would.
Sora Seaton·US·
Excellent Plugins and Outstanding Support
We use BuddyPress with several free BP plugins from Wbcom Designs, and we are extremely satisfied. The plugins add real value for our community, are updated regularly, and are continuously improved. They integrate seamlessly with their…
Peter Gibson·DE·
Great and very supportive
This company have been great and very supportive. I highly recommend them.
Steve s·GB·
Excellent template and first-class support
The template from Wbcom Designs is truly great, modern, flexible, and easy to use. The support is very helpful and friendly. For questions or problems you receive fast, competent assistance and feel well taken care of. Highly recommended.