List Platform modules
const url = 'https://example.com/wp-json/wp2/modules/v1/modules?scope=network';const options = {method: 'GET', headers: {'X-WP-Nonce': '<X-WP-Nonce>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://example.com/wp-json/wp2/modules/v1/modules?scope=network' \ --header 'X-WP-Nonce: <X-WP-Nonce>'Resolved enable state via ModulesManager::is_module_enabled. Query scope selects editable map context (network vs site). DualRest: cookie+nonce, Application Password, or Studio Sync Bearer. Managed bypass allowed on GET only.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Editable map context. Single-site always forces network. On MS site scope hides network-only modules.
Responses
Section titled “Responses”Module list
object
object
Module id.
Display name.
Resolved enable via is_module_enabled.
Network map forces on for site scope.
Category id.
Site UI locked when forced_by_network.
Example
{ "scope": "network", "modules": [ { "id": "turbo" } ]}Invalid scope
object
Machine-readable error or event code.
Message text (log, PIN, or password reset).
Extra WP_Error or license payload.
object
Examplegenerated
{ "code": "example", "message": "example", "data": {}}Auth or capability failure
object
Machine-readable error or event code.
Message text (log, PIN, or password reset).
Extra WP_Error or license payload.
object
Examplegenerated
{ "code": "example", "message": "example", "data": {}}