hosting
GET /v1/wordpress/plugin-directory/{slug}
One plugin from the WordPress directory.
Authentication
Send an API key as a bearer token. The key must carry the sites.view permission; a key without it is refused with 403, not 404.
This endpoint takes no organisation id. Your key already identifies the organisation it belongs to, and the response is scoped to it.
Try it
Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.
curl -X GET https://api.zinndigital.com/v1/wordpress/plugin-directory/{slug} \
-H "Authorization: Bearer zdk_live_…"Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console
Details
A single plugin, with its long-form `sections` (description, installation notes, changelog, FAQ) which the search deliberately omits — they are tens of kilobytes per plugin and no list view renders them. ⛔ A slug the directory does not know is a **`404`**. The upstream answers `200` with an `error` field for an unknown slug, which a naive client would render as a real plugin whose every field is empty — one the customer could click Install on. Requires `sites.view`.
Parameters
| Name | Type | Required | What it is |
|---|---|---|---|
slug (path) | string | Yes | The directory slug, as the search returns it. |
Response
| Name | Type | Required | What it is |
|---|---|---|---|
slug | string | Yes | The directory slug — what `installSiteWordPressPlugin` takes. ⛔ The **only** field from this resource that is ever sent to a box; the download URL is resolved by the site itself… |
name | string | Yes | — |
version | string | Yes | — |
author | string | Yes | Plain text. The upstream's surrounding anchor markup is stripped. |
short_description | string | Yes | — |
rating | number | Yes | ⛔ **0–5, normalised here.** The upstream reports 0–100; a client rendering that as stars without dividing shows every plugin as full marks. |
num_ratings | integer | Yes | — |
active_installs | integer | Yes | The directory's own estimate, and it means "at least this many" — it is bucketed upstream, so 4,000,000 and 4,900,000 both arrive as 4000000. |
last_updated | string | Yes | — |
requires_wp | string | Yes | Minimum WordPress version. `""` when the plugin does not say. |
requires_php | string | Yes | Minimum PHP version. `""` when the plugin does not say. |
tested_up_to | string | Yes | The newest WordPress the author has tested against. |
homepage | string | Yes | — |
icon_url | string | Yes | The plugin's icon, best available size. `""` when it has none — ⛔ NOT the directory's grey placeholder, which would give every icon-less plugin the same picture: present, wrong,… |
sections | object | No | Long-form copy (description, installation, changelog, FAQ), plain text. Present only on `getWordPressDirectoryPlugin`; the search omits it because it is tens of kilobytes per pl… |
Errors this endpoint can return
401 · 403 · 404 · 429 · 503