Developers
Zinn® SEO abilities reference
Zinn® SEO registers its actions with the WordPress Abilities API. The same abilities are MCP tools on the site's own server and REST routes under /wp-json/wp-abilities/v1. This page is generated from the plugin's own registry.
Endpoints
MCP over HTTP (streamable)
https://example.com/wp-json/zinn-seo/v1/mcpMCP over WP-CLI (standard input and output)
wp mcp-adapter serve --server=zinn-seo --user=<login>REST: list the abilities
/wp-json/wp-abilities/v1/abilities?category=zinn-seoREST: run an ability
/wp-json/wp-abilities/v1/abilities/<name>/runAuthentication and permissions
HTTP requests authenticate with a WordPress application password (HTTP Basic). Connecting to the MCP server needs the capability shown below; every ability then checks its own permission, per object. Read-only abilities run with GET and their input in the query string; the others with POST and a JSON body {"input": {…}}.
Examples
# REST: run an ability
curl -u your-username:your-application-password \
"https://example.com/wp-json/wp-abilities/v1/abilities/zinn-seo/export-settings/run"# MCP (JSON-RPC over HTTP, after "initialize")
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"zinn-seo-export-settings","arguments":{}}}All abilities
Generated from the plugin's abilities.json, which is itself generated from a running site; a test fails when the two disagree.
| Ability | What it does | Edition | REST | Permission | Parameters |
|---|---|---|---|---|---|
zinn-seo/accept-importzinn-seo-accept-import | Accept the differences Accepts the differences found as intended. | Free edition | POST …/abilities/zinn-seo/accept-import/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/add-content-ideaszinn-seo-add-content-ideas | Add ideas to the content plan (Pro) Adds up to 100 ideas to the content plan. Each idea has a working title, and may have a phrase, an angle, a kind, a due date (YYYY-MM-DD), a keyword list, a length in words and a voice. | Pro edition | POST …/abilities/zinn-seo/add-content-ideas/run | the REST route's own per-item permission check | ideas: array (required), dry_run: boolean |
zinn-seo/add-linkzinn-seo-add-link | Add an internal link (Pro) Adds a link from one post (source) to another (target) on the given anchor text. | Pro edition | POST …/abilities/zinn-seo/add-link/run | edit_post (the REST route's own check) | source: integer (required), target: integer (required), anchor: string (required), dry_run: boolean |
zinn-seo/add-linked-sitezinn-seo-add-linked-site | Add one of your other sites (Agency) Adds another site the owner runs (url, label). Its public posts and pages are read in the background for link suggestions. | Pro edition | POST …/abilities/zinn-seo/add-linked-site/run | the REST route's own per-item permission check | url: string (required), label: string, dry_run: boolean |
zinn-seo/advance-seo-testszinn-seo-advance-seo-tests | Move SEO tests on (Pro) Moves running tests to their next phase when it is due, and returns them. | Pro edition | POST …/abilities/zinn-seo/advance-seo-tests/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/analyse-pagezinn-seo-analyse-page | Analyse a page draft Runs the checks on draft values (content, title, slug, focus keyphrase, SEO title and description …) and returns the results; store true keeps the score. | Free edition | POST …/abilities/zinn-seo/analyse-page/run | the REST route's own per-item permission check | id: string (required), content: string, title: string, slug: string, excerpt: string, seo_title: string, seo_desc: string, focus: string, related: string, cornerstone: boolean, noindex: boolean, store: boolean, dry_run: boolean |
zinn-seo/apply-recommended-cleanupzinn-seo-apply-recommended-cleanup | Switch on the recommended clean-up Turns on the clean-up set that is safe for most sites. | Free edition | POST …/abilities/zinn-seo/apply-recommended-cleanup/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/apply-search-suggestionzinn-seo-apply-search-suggestion | Apply a title or description (Pro) Sets a page's (post_id) SEO title or description (field) to a value. | Pro edition | POST …/abilities/zinn-seo/apply-search-suggestion/run | the REST route's own per-item permission check | post_id: integer (required), field: title|desc (required), value: string (required), dry_run: boolean |
zinn-seo/ask-seo-datazinn-seo-ask-seo-data | Ask your SEO data a question (Pro) Answers a question in plain words from this site's own SEO data (question; history: the conversation so far). | Pro edition | POST …/abilities/zinn-seo/ask-seo-data/run | the REST route's own per-item permission check | question: string (required), history: array, dry_run: boolean |
zinn-seo/assign-keyword-listzinn-seo-assign-keyword-list | Give a keyword list to posts Gives a keyword list to posts (add: post ids) or takes it off them (remove: post ids). Only posts the person may edit change. | Free edition | POST …/abilities/zinn-seo/assign-keyword-list/run | the REST route's own per-item permission check | id: string (required), add: array, remove: array, dry_run: boolean |
zinn-seo/begin-importzinn-seo-begin-import | Start a move from another SEO plugin Starts copying from a source plugin in the background (source, overwrite). | Free edition | POST …/abilities/zinn-seo/begin-import/run | the REST route's own per-item permission check | source: string (required), overwrite: boolean, dry_run: boolean |
zinn-seo/build-link-indexzinn-seo-build-link-index | Rebuild the link index Rebuilds the internal link index in the background. | Free edition | POST …/abilities/zinn-seo/build-link-index/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/build-semantic-indexzinn-seo-build-semantic-index | Index the site for meaning-based links (Pro) Builds the meaning-based link index in the background. | Pro edition | POST …/abilities/zinn-seo/build-semantic-index/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/bulk-apply-fieldszinn-seo-bulk-apply-fields | Set one value on every matching page Sets the same fields on every post or term matching the filters, in the background, as one batch that can be undone. | Free edition | POST …/abilities/zinn-seo/bulk-apply-fields/run | the REST route's own per-item permission check | object: post|term, type: string, status: string, search: string, missing: string, robots: string, discover: boolean, term: integer, fields: object (required), dry_run: boolean |
zinn-seo/bulk-redirectszinn-seo-bulk-redirects | Change many redirects Deletes, enables, disables or groups the redirects with these ids. | Free edition | POST …/abilities/zinn-seo/bulk-redirects/run | the REST route's own per-item permission check | ids: array (required), action: delete|enable|disable|group (required), group: string, dry_run: boolean |
zinn-seo/bulk-update-fieldszinn-seo-bulk-update-fields | Change SEO fields of many pages Saves the fields of many posts or terms at once (rows: id and fields). Each row is checked as on the editor screen; every change can be undone as one batch. | Free edition | POST …/abilities/zinn-seo/bulk-update-fields/run | the REST route's own per-item permission check | object: post|term, rows: array (required), dry_run: boolean |
zinn-seo/cancel-scheduled-changezinn-seo-cancel-scheduled-change | Cancel a scheduled change (Pro) Cancels one scheduled change of a page. | Pro edition | POST …/abilities/zinn-seo/cancel-scheduled-change/run | the REST route's own per-item permission check | id: string (required), entry: string (required), dry_run: boolean |
zinn-seo/check-all-pages-indexedzinn-seo-check-all-pages-indexed | Check every page is indexed Starts, pauses, resumes or cancels an index check of every page, on credits. | Free edition | POST …/abilities/zinn-seo/check-all-pages-indexed/run | the REST route's own per-item permission check | action: start|pause|resume|cancel, dry_run: boolean |
zinn-seo/check-broken-linkszinn-seo-check-broken-links | Check links now (Pro) Checks every link in the background. | Pro edition | POST …/abilities/zinn-seo/check-broken-links/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/check-content-coveragezinn-seo-check-content-coverage | Check a draft against its guidelines (Pro) Scores text (or the saved post) against one post's guidelines: each term marked missing, too few, too many or right, and the heading count. | Pro edition | POST …/abilities/zinn-seo/check-content-coverage/run | the REST route's own per-item permission check | post: integer (required), text: string, headings: integer, dry_run: boolean |
zinn-seo/check-domain-movezinn-seo-check-domain-move | Check a move from another domain Checks what moving from another domain (from) to this site needs: which old addresses redirect where. | Free edition | GET …/abilities/zinn-seo/check-domain-move/run | manage_options (the REST route's own check) | from: string (required) |
zinn-seo/check-importzinn-seo-check-import | Compare pages before switching Compares real pages with both plugins to prove nothing is lost (keep: keep the comparison). | Free edition | POST …/abilities/zinn-seo/check-import/run | the REST route's own per-item permission check | keep: boolean, dry_run: boolean |
zinn-seo/check-indexzinn-seo-check-index | Check if Google indexed an address Inspects one address in Search Console (url). | Free edition | POST …/abilities/zinn-seo/check-index/run | the REST route's own per-item permission check | url: string (required), dry_run: boolean |
zinn-seo/check-originalityzinn-seo-check-originality | Check a draft for copied text (Pro) Checks a post or pasted text for sentences copied from other sites, on the site owner's Zinn® credits (post or text; count: sentences). | Pro edition | POST …/abilities/zinn-seo/check-originality/run | edit_post (the REST route's own check) | post: integer, text: string, count: integer, dry_run: boolean |
zinn-seo/check-pages-after-updatezinn-seo-check-pages-after-update | Check the pages' SEO output Reads the home page and newest posts and pages again and reports any title, description, canonical, robots or structured data that changed. | Pro edition | POST …/abilities/zinn-seo/check-pages-after-update/run | update_plugins (the REST route's own check) | dry_run: boolean |
zinn-seo/check-pages-indexedzinn-seo-check-pages-indexed | Check pages are indexed Checks whether addresses (urls) are in Google's index, on credits. | Free edition | POST …/abilities/zinn-seo/check-pages-indexed/run | the REST route's own per-item permission check | urls: array (required), dry_run: boolean |
zinn-seo/check-redirectszinn-seo-check-redirects | Check redirects Checks every redirect for chains and loops, and (targets) whether targets answer. | Free edition | POST …/abilities/zinn-seo/check-redirects/run | the REST route's own per-item permission check | targets: boolean, dry_run: boolean |
zinn-seo/check-server-ruleszinn-seo-check-server-rules | Check server rules (Pro) Checks draft server rules (text) without saving them. | Pro edition | POST …/abilities/zinn-seo/check-server-rules/run | the REST route's own per-item permission check | text: string (required), dry_run: boolean |
zinn-seo/check-site-indexzinn-seo-check-site-index | Check the whole site's index Starts, pauses, resumes or cancels inspecting every page in Search Console. | Free edition | POST …/abilities/zinn-seo/check-site-index/run | the REST route's own per-item permission check | action: start|pause|resume|cancel (required), dry_run: boolean |
zinn-seo/choose-ai-modelzinn-seo-choose-ai-model | Choose the AI model for a task Chooses the model one AI task (feature: writer, proofread or image) uses (choice, one of the models listed for it; empty goes back to the automatic choice). | Free edition | POST …/abilities/zinn-seo/choose-ai-model/run | the REST route's own per-item permission check | feature: writer|proofread|image (required), choice: string (required), dry_run: boolean |
zinn-seo/choose-google-propertieszinn-seo-choose-google-properties | Choose the Google properties Chooses the Search Console property and Analytics stream this site reports on. | Free edition | POST …/abilities/zinn-seo/choose-google-properties/run | the REST route's own per-item permission check | search_console_property: string, analytics_property: string, business_location: string, dry_run: boolean |
zinn-seo/clear-missing-pageszinn-seo-clear-missing-pages | Clear the missing pages log Deletes one entry (hash) or every entry (all) of the 404 log. | Free edition | POST …/abilities/zinn-seo/clear-missing-pages/run | the REST route's own per-item permission check | kind: 404|404b, hash: string, all: boolean, dry_run: boolean |
zinn-seo/clear-site-searcheszinn-seo-clear-site-searches | Clear the site search log Deletes one entry (hash) or every entry (all). | Free edition | POST …/abilities/zinn-seo/clear-site-searches/run | the REST route's own per-item permission check | kind: search|search0, hash: string, all: boolean, dry_run: boolean |
zinn-seo/comment-on-taskzinn-seo-comment-on-task | Comment on an SEO task (Agency) Adds a comment (text) to a task. | Pro edition | POST …/abilities/zinn-seo/comment-on-task/run | the REST route's own per-item permission check | id: string (required), text: string (required), dry_run: boolean |
zinn-seo/complete-taskzinn-seo-complete-task | Mark an SEO task done (Agency) Marks a task done, or open again with done false. | Pro edition | POST …/abilities/zinn-seo/complete-task/run | the REST route's own per-item permission check | id: string (required), done: boolean, dry_run: boolean |
zinn-seo/connect-bingzinn-seo-connect-bing | Connect Bing Webmaster Tools Connects Bing with the site owner's Bing API key (key). The key is never returned. | Free edition | POST …/abilities/zinn-seo/connect-bing/run | the REST route's own per-item permission check | key: string (required), dry_run: boolean |
zinn-seo/connect-edgezinn-seo-connect-edge | Connect Cloudflare (Pro) Connects Cloudflare with the owner's API token (token). The token is never returned. | Pro edition | POST …/abilities/zinn-seo/connect-edge/run | the REST route's own per-item permission check | token: string (required), dry_run: boolean |
zinn-seo/connect-supportzinn-seo-connect-support | Connect to support Connects this site to Zinn Digital® support (name, email, consent). | Free edition | POST …/abilities/zinn-seo/connect-support/run | manage_options (the REST route's own check) | email: string (required), name: string, consent: boolean (required), dry_run: boolean |
zinn-seo/control-ai-bulkzinn-seo-control-ai-bulk | Pause, resume or cancel an AI bulk run (Pro) Controls a running AI job (job, action). | Pro edition | POST …/abilities/zinn-seo/control-ai-bulk/run | the REST route's own per-item permission check | job: ai-bulk|ai-accept|ai-map (required), action: pause|resume|cancel (required), dry_run: boolean |
zinn-seo/control-jobzinn-seo-control-job | Start, pause, resume or cancel a background job Runs action (start, pause, resume or cancel) on one background job (id). | Free edition | POST …/abilities/zinn-seo/control-job/run | the REST route's own per-item permission check | id: string (required), action: start|pause|resume|cancel (required), dry_run: boolean |
zinn-seo/copy-importzinn-seo-copy-import | Copy from another SEO plugin Copies a source plugin's data now (source, overwrite). | Free edition | POST …/abilities/zinn-seo/copy-import/run | the REST route's own per-item permission check | source: string (required), overwrite: boolean, dry_run: boolean |
zinn-seo/count-importzinn-seo-count-import | Count what a move would copy Counts what moving from a source plugin would copy (source, overwrite). Nothing changes. | Free edition | POST …/abilities/zinn-seo/count-import/run | the REST route's own per-item permission check | source: string (required), overwrite: boolean, dry_run: boolean |
zinn-seo/create-affiliate-linkzinn-seo-create-affiliate-link | Add an affiliate link (Pro) Adds an affiliate link: the destination (target), its short address (slug), a label, the redirect code (301, 302 or 307) and nofollow. | Pro edition | POST …/abilities/zinn-seo/create-affiliate-link/run | the REST route's own per-item permission check | target: string (required), slug: string, label: string, code: 301|302|307, nofollow: boolean, dry_run: boolean |
zinn-seo/create-faq-from-questionszinn-seo-create-faq-from-questions | Turn questions into an FAQ Creates an FAQ block draft (items: question and answer; post_id or a new title). | Free edition | POST …/abilities/zinn-seo/create-faq-from-questions/run | edit_posts (the REST route's own check) | items: array (required), post_id: integer, title: string, dry_run: boolean |
zinn-seo/create-glossary-pagezinn-seo-create-glossary-page | Make the glossary page (Pro) Creates a draft page that lists the glossary with its structured data. | Pro edition | POST …/abilities/zinn-seo/create-glossary-page/run | publish_pages (the REST route's own check) | dry_run: boolean |
zinn-seo/create-keyword-listzinn-seo-create-keyword-list | Create a keyword list Creates a keyword list from a label, a colour and its phrases. | Free edition | POST …/abilities/zinn-seo/create-keyword-list/run | the REST route's own per-item permission check | label: string, color: blue|green|amber|red|purple|teal|grey, phrases: array|string, dry_run: boolean |
zinn-seo/create-redirectzinn-seo-create-redirect | Create a redirect Creates a redirect: source, target, code (301, 302, 307, 308, 410, 451), regex, group, note. | Free edition | POST …/abilities/zinn-seo/create-redirect/run | the REST route's own per-item permission check | source: string, target: string, code: 301|302|307|308|410|451, regex: boolean, enabled: boolean, group: string, note: string, position: integer, dry_run: boolean |
zinn-seo/create-report-linkzinn-seo-create-report-link | Make a client report link (Agency) Creates a private web link a client opens to read their reports, without a WordPress login (label; days until it expires). | Pro edition | POST …/abilities/zinn-seo/create-report-link/run | the REST route's own per-item permission check | label: string, days: integer, dry_run: boolean |
zinn-seo/create-taskzinn-seo-create-task | Create an SEO task (Agency) Creates a task: title, detail, url, issue, assignee (a user id) and due date. | Pro edition | POST …/abilities/zinn-seo/create-task/run | the REST route's own per-item permission check | title: string (required), detail: string, url: string, issue: string, assignee: integer, due: string, dry_run: boolean |
zinn-seo/create-writer-draftzinn-seo-create-writer-draft | Save a written draft as a post Saves a reviewed draft as a draft post: draft holds title, excerpt, intro paragraphs, sections (heading and paragraphs), seo_title and seo_desc; options hold post_type, phrase and kwlist. Nothing is published. | Free edition | POST …/abilities/zinn-seo/create-writer-draft/run | edit_posts (the REST route's own check) | draft: object (required), options: object, dry_run: boolean |
zinn-seo/decide-ai-redirectszinn-seo-decide-ai-redirects | Accept or reject AI redirects (Pro) Accepts (creates the redirects) or rejects the suggestions with these ids. | Pro edition | POST …/abilities/zinn-seo/decide-ai-redirects/run | the REST route's own per-item permission check | ids: array (required), action: accept|reject (required), dry_run: boolean |
zinn-seo/decide-ai-suggestionzinn-seo-decide-ai-suggestion | Accept or reject an AI suggestion Accepts (optionally with edited fields) or rejects one item's suggestion for a task. | Free edition | POST …/abilities/zinn-seo/decide-ai-suggestion/run | edit_post (the REST route's own check) | id: string (required), task: string (required), action: accept|reject (required), fields: object, dry_run: boolean |
zinn-seo/delete-affiliate-linkzinn-seo-delete-affiliate-link | Delete an affiliate link (Pro) Deletes one affiliate link; its short address stops redirecting. | Pro edition | POST …/abilities/zinn-seo/delete-affiliate-link/run | the REST route's own per-item permission check | id: string (required), dry_run: boolean |
zinn-seo/delete-content-ideazinn-seo-delete-content-idea | Delete an idea from the content plan (Pro) Deletes one idea from the plan; a draft already written from it stays. | Pro edition | POST …/abilities/zinn-seo/delete-content-idea/run | the REST route's own per-item permission check | id: string (required), dry_run: boolean |
zinn-seo/delete-keyword-listzinn-seo-delete-keyword-list | Delete a keyword list Deletes one keyword list; the posts it was given to are not changed. | Free edition | POST …/abilities/zinn-seo/delete-keyword-list/run | the REST route's own per-item permission check | id: string (required), dry_run: boolean |
zinn-seo/delete-redirectzinn-seo-delete-redirect | Delete a redirect Deletes one redirect. | Free edition | POST …/abilities/zinn-seo/delete-redirect/run | the REST route's own per-item permission check | id: string (required), dry_run: boolean |
zinn-seo/delete-seo-testzinn-seo-delete-seo-test | Delete an SEO test (Pro) Deletes a finished test's record. | Pro edition | POST …/abilities/zinn-seo/delete-seo-test/run | the REST route's own per-item permission check | id: string (required), dry_run: boolean |
zinn-seo/delete-taskzinn-seo-delete-task | Delete an SEO task (Agency) Deletes a task and its comments. | Pro edition | POST …/abilities/zinn-seo/delete-task/run | the REST route's own per-item permission check | id: string (required), dry_run: boolean |
zinn-seo/disable-cdnzinn-seo-disable-cdn | Switch the Zinn® CDN off Switches the Zinn® CDN off: the site serves its own files again at once. | Free edition | POST …/abilities/zinn-seo/disable-cdn/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/disconnect-bingzinn-seo-disconnect-bing | Disconnect Bing Disconnects Bing Webmaster Tools. | Free edition | POST …/abilities/zinn-seo/disconnect-bing/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/disconnect-edgezinn-seo-disconnect-edge | Disconnect Cloudflare (Pro) Disconnects Cloudflare and turns the edge features off. | Pro edition | POST …/abilities/zinn-seo/disconnect-edge/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/disconnect-googlezinn-seo-disconnect-google | Disconnect Google Disconnects Google Search Console and Analytics from this site. | Free edition | POST …/abilities/zinn-seo/disconnect-google/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/disconnect-google-docszinn-seo-disconnect-google-docs | Disconnect the Google Docs add-on (Pro) Revokes the person's Google Docs add-on key: their add-on can no longer send drafts to this site. | Pro edition | POST …/abilities/zinn-seo/disconnect-google-docs/run | edit_posts (the REST route's own check) | dry_run: boolean |
zinn-seo/disconnect-supportzinn-seo-disconnect-support | Disconnect from support Disconnects this site from support. | Free edition | POST …/abilities/zinn-seo/disconnect-support/run | manage_options (the REST route's own check) | dry_run: boolean |
zinn-seo/dismiss-findingzinn-seo-dismiss-finding | Hide a finding Hides one finding (id) for some days, or for good. | Free edition | POST …/abilities/zinn-seo/dismiss-finding/run | the REST route's own per-item permission check | id: string (required), days: integer, dry_run: boolean |
zinn-seo/dismiss-noticeszinn-seo-dismiss-notices | Dismiss notices Dismisses notices (ids, or all). | Free edition | POST …/abilities/zinn-seo/dismiss-notices/run | the REST route's own per-item permission check | ids: array, all: boolean, dry_run: boolean |
zinn-seo/draft-content-ideaszinn-seo-draft-content-ideas | Write drafts from planned ideas (Pro) Writes a draft post for each chosen idea (ids, up to 500) in the background, on the site owner's AI. Nothing is published. | Pro edition | POST …/abilities/zinn-seo/draft-content-ideas/run | the REST route's own per-item permission check | ids: array (required), dry_run: boolean |
zinn-seo/draft-custom-blockzinn-seo-draft-custom-block | Draft a custom block with AI (Pro) Drafts a custom block from one sentence describing it. | Pro edition | POST …/abilities/zinn-seo/draft-custom-block/run | the REST route's own per-item permission check | sentence: string (required), dry_run: boolean |
zinn-seo/draft-from-briefzinn-seo-draft-from-brief | Write a page from a brief (Pro) Creates a draft page from a content brief (brief). | Pro edition | POST …/abilities/zinn-seo/draft-from-brief/run | edit_posts (the REST route's own check) | brief: object (required), dry_run: boolean |
zinn-seo/draft-from-keywordzinn-seo-draft-from-keyword | Draft a page for a keyword (Pro) Creates a draft from a keyword row (row), against a competitor (rival), as a post type (type). | Pro edition | POST …/abilities/zinn-seo/draft-from-keyword/run | edit_posts (the REST route's own check) | row: object (required), rival: string, type: string, dry_run: boolean |
zinn-seo/draft-page-for-searchzinn-seo-draft-page-for-search | Draft a page for a search Creates a draft whose title and focus keyphrase are a phrase visitors searched for. | Free edition | POST …/abilities/zinn-seo/draft-page-for-search/run | edit_posts (the REST route's own check) | phrase: string (required), type: string, dry_run: boolean |
zinn-seo/draw-social-cardszinn-seo-draw-social-cards | Draw social card images (Pro) Draws a social card image for every post in the background. | Pro edition | POST …/abilities/zinn-seo/draw-social-cards/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/enable-cdnzinn-seo-enable-cdn | Switch the Zinn® CDN on Switches the Zinn® CDN on for this site, a paid Zinn® service on the site owner's account. | Free edition | POST …/abilities/zinn-seo/enable-cdn/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/estimate-authority-checkzinn-seo-estimate-authority-check | Price an authority check Says what checking these metrics from this source would cost (metrics, cadence_days). | Free edition | POST …/abilities/zinn-seo/estimate-authority-check/run | the REST route's own per-item permission check | source: string (required), metrics: array, cadence_days: 1|7|30, dry_run: boolean |
zinn-seo/export-server-redirectszinn-seo-export-server-redirects | Export redirects as server rules (Pro) Returns the redirects as rules for one server (kind: apache or nginx). | Pro edition | GET …/abilities/zinn-seo/export-server-redirects/run | the REST route's own per-item permission check | kind: string (required) |
zinn-seo/export-settingszinn-seo-export-settings | Export the SEO settings Returns this site's settings as a file another site can import. Nothing secret is included. | Free edition | GET …/abilities/zinn-seo/export-settings/run | the REST route's own per-item permission check | none |
zinn-seo/find-local-businesszinn-seo-find-local-business | Find the business for local tracking (Pro) Finds the business on the map to track. | Pro edition | POST …/abilities/zinn-seo/find-local-business/run | the REST route's own per-item permission check | query: string (required), geo_id: string, dry_run: boolean |
zinn-seo/find-placeszinn-seo-find-places | Find a business on the map Finds businesses for the local tools (query, location, language, lat, lng). | Free edition | POST …/abilities/zinn-seo/find-places/run | the REST route's own per-item permission check | query: string (required), location: string, language: string, lat: number, lng: number, dry_run: boolean |
zinn-seo/find-test-pageszinn-seo-find-test-pages | Find pages to test (Pro) Finds pages for a test (search). | Pro edition | GET …/abilities/zinn-seo/find-test-pages/run | the REST route's own per-item permission check | search: string |
zinn-seo/fix-broken-linkzinn-seo-fix-broken-link | Fix a broken link (Pro) Rechecks, ignores, unlinks or replaces (url) one broken link everywhere it appears. | Pro edition | POST …/abilities/zinn-seo/fix-broken-link/run | the REST route's own per-item permission check | hash: string (required), action: recheck|ignore|unignore|unlink|replace (required), url: string, dry_run: boolean |
zinn-seo/fix-conflictzinn-seo-fix-conflict | Fix an SEO conflict Applies the fix for one conflict (id). It can be undone. | Free edition | POST …/abilities/zinn-seo/fix-conflict/run | the REST route's own per-item permission check | id: string (required), dry_run: boolean |
zinn-seo/fix-crawl-wastezinn-seo-fix-crawl-waste | Stop crawl waste (Pro) Turns one crawl budget fix (what) on or off (on). | Pro edition | POST …/abilities/zinn-seo/fix-crawl-waste/run | the REST route's own per-item permission check | what: string (required), on: boolean, dry_run: boolean |
zinn-seo/fix-redirect-chainszinn-seo-fix-redirect-chains | Fix redirect chains Points every chained redirect straight at its final target. | Free edition | POST …/abilities/zinn-seo/fix-redirect-chains/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/generate-imagezinn-seo-generate-image | Create a picture with AI (Pro) Draws a picture from a prompt into the media library, with alt text, a caption and a file name, in a size, on the owner's own AI key or Zinn® credits (funding). For a picture still being drawn, ask again with its run. | Pro edition | POST …/abilities/zinn-seo/generate-image/run | edit_post and upload_files (the REST route's own check) | post: integer, prompt: string (required), alt: string, caption: string, filename: string, size: landscape|square|portrait, funding: auto|own|credits, model: string, run: string, dry_run: boolean |
zinn-seo/generate-pageszinn-seo-generate-pages | Make pages from a spreadsheet (Agency) Creates one page per spreadsheet row from the plan, each with its own SEO title and description; thin rows are held back. Undo removes the whole run. | Pro edition | POST …/abilities/zinn-seo/generate-pages/run | publish_pages (the REST route's own check) | csv: string, url: string, plan: object, dry_run: boolean |
zinn-seo/get-ad-earningszinn-seo-get-ad-earnings | Read ad earnings per page Returns each page's ad earnings in minor units beside its Google clicks and average position. | Pro edition | GET …/abilities/zinn-seo/get-ad-earnings/run | the REST route's own per-item permission check | days: 7|28|90, fresh: boolean |
zinn-seo/get-address-changezinn-seo-get-address-change | Read the address change state Returns the site's permalink structure, category and tag bases, and any address change in progress with its redirects. | Free edition | GET …/abilities/zinn-seo/get-address-change/run | manage_options (the REST route's own check) | none |
zinn-seo/get-affiliate-clickszinn-seo-get-affiliate-clicks | Read affiliate clicks (Pro) Returns clicks per day for one affiliate link (id) or for all of them (id 0), over the last days. | Pro edition | GET …/abilities/zinn-seo/get-affiliate-clicks/run | the REST route's own per-item permission check | id: integer, days: integer |
zinn-seo/get-affiliate-jobszinn-seo-get-affiliate-jobs | Read the affiliate link jobs (Pro) Returns the progress of the two background jobs: finding affiliate links in every post (index) and checking every destination (check). | Pro edition | GET …/abilities/zinn-seo/get-affiliate-jobs/run | the REST route's own per-item permission check | none |
zinn-seo/get-ai-bulkzinn-seo-get-ai-bulk | Read the AI bulk run (Pro) Returns the running or last AI bulk job and what it did. | Pro edition | GET …/abilities/zinn-seo/get-ai-bulk/run | the REST route's own per-item permission check | none |
zinn-seo/get-ai-settingszinn-seo-get-ai-settings | Read the AI settings Returns how AI is paid for (the site owner's own key, Zinn® credits or automatic), which tasks are available, and what is waiting for review. | Free edition | GET …/abilities/zinn-seo/get-ai-settings/run | the REST route's own per-item permission check | none |
zinn-seo/get-ai-suggestionszinn-seo-get-ai-suggestions | Read one item's AI suggestions Returns the suggestions waiting for one post or term. | Free edition | GET …/abilities/zinn-seo/get-ai-suggestions/run | edit_post (the REST route's own check) | id: string (required) |
zinn-seo/get-ai-visitorszinn-seo-get-ai-visitors | Read visits from AI assistants Returns visits sent by AI assistants per assistant, landing page and day, from Google Analytics and the site's own count. | Pro edition | GET …/abilities/zinn-seo/get-ai-visitors/run | the REST route's own per-item permission check | days: 7|28|90, fresh: boolean |
zinn-seo/get-alert-channelszinn-seo-get-alert-channels | Read the alert channels (Agency) Lists where SEO alerts go: e-mail and chat channels (Slack, Teams, Discord, Telegram, webhook), each with its state. Secrets are never returned. | Pro edition | GET …/abilities/zinn-seo/get-alert-channels/run | the REST route's own per-item permission check | none |
zinn-seo/get-authorityzinn-seo-get-authority | Read authority scores Returns the site's domain rating and authority scores from every connected source, and the competitors tracked. | Free edition | GET …/abilities/zinn-seo/get-authority/run | the REST route's own per-item permission check | fresh: boolean |
zinn-seo/get-authority-historyzinn-seo-get-authority-history | Read authority history Returns one metric's history from one source (source, metric; days). | Free edition | GET …/abilities/zinn-seo/get-authority-history/run | the REST route's own per-item permission check | source: string (required), metric: string (required), days: integer |
zinn-seo/get-autolinkszinn-seo-get-autolinks | Read automatic links (Pro) Returns the rules that turn a phrase into a link everywhere. | Pro edition | GET …/abilities/zinn-seo/get-autolinks/run | the REST route's own per-item permission check | none |
zinn-seo/get-backlinkszinn-seo-get-backlinks | Read backlinks (Pro) Returns the site's backlinks, new and lost, and their quality. | Pro edition | GET …/abilities/zinn-seo/get-backlinks/run | the REST route's own per-item permission check | fresh: boolean |
zinn-seo/get-bingzinn-seo-get-bing | Read Bing Webmaster Tools Returns Bing clicks, impressions and crawl state (days). | Free edition | GET …/abilities/zinn-seo/get-bing/run | the REST route's own per-item permission check | days: integer, fresh: boolean |
zinn-seo/get-bing-datazinn-seo-get-bing-data | Read Bing crawl and link data Returns the crawl problems Bing reported, Bing's daily crawl figures, the pages with links and, in Pro, the hourly crawl rate. | Free edition | GET …/abilities/zinn-seo/get-bing-data/run | the REST route's own per-item permission check | fresh: boolean |
zinn-seo/get-bing-links-to-pagezinn-seo-get-bing-links-to-page | Read the links to a page in Bing Returns the pages Bing knows link to one of this site's pages, with their anchor text. | Free edition | GET …/abilities/zinn-seo/get-bing-links-to-page/run | the REST route's own per-item permission check | url: string (required), page: integer |
zinn-seo/get-bulk-choiceszinn-seo-get-bulk-choices | List bulk editing filters Returns the post types, statuses and terms the bulk filters accept. | Free edition | GET …/abilities/zinn-seo/get-bulk-choices/run | the REST route's own per-item permission check | none |
zinn-seo/get-business-listingzinn-seo-get-business-listing | Read one business listing (Pro) Returns one listing's details (service). | Pro edition | GET …/abilities/zinn-seo/get-business-listing/run | the REST route's own per-item permission check | service: string (required) |
zinn-seo/get-cdnzinn-seo-get-cdn | Read the Zinn® CDN state Says whether the site's images, CSS and JavaScript are served from the Zinn® CDN, what it costs and what the site is doing now. | Free edition | GET …/abilities/zinn-seo/get-cdn/run | the REST route's own per-item permission check | none |
zinn-seo/get-change-timelinezinn-seo-get-change-timeline | See which changes moved rankings (Pro) Returns SEO changes beside search performance over time (days, page). | Pro edition | GET …/abilities/zinn-seo/get-change-timeline/run | the REST route's own per-item permission check | days: integer, fresh: boolean, page: string |
zinn-seo/get-check-resultszinn-seo-get-check-results | Read a check's results Returns the latest results of one check (tool). | Free edition | GET …/abilities/zinn-seo/get-check-results/run | the REST route's own per-item permission check | tool: string (required) |
zinn-seo/get-check-runzinn-seo-get-check-run | Read a check run Returns one run's state and results. | Free edition | GET …/abilities/zinn-seo/get-check-run/run | the REST route's own per-item permission check | id: string (required) |
zinn-seo/get-cleanupzinn-seo-get-cleanup | Read the clean-up settings Returns every clean-up switch (head tags, feeds, address parameters, search spam, previews) with what it removes. | Free edition | GET …/abilities/zinn-seo/get-cleanup/run | the REST route's own per-item permission check | fresh: boolean |
zinn-seo/get-comment-spamzinn-seo-get-comment-spam | Read the comment honeypot Returns how many spam comments the invisible honeypot stopped and its settings. | Free edition | GET …/abilities/zinn-seo/get-comment-spam/run | the REST route's own per-item permission check | none |
zinn-seo/get-connectionzinn-seo-get-connection | Read the Zinn® account connection Says whether this site is connected to a Zinn® account, and to which. | Free edition | GET …/abilities/zinn-seo/get-connection/run | the REST route's own per-item permission check | none |
zinn-seo/get-content-guidelineszinn-seo-get-content-guidelines | Read a post's content guidelines (Pro) Returns the content guidelines brought in for one post (pasted from Surfer, Clearscope, MarketMuse, Frase, Semrush or another tool, or fetched from Surfer or Frase) and how well the post follows them. | Pro edition | GET …/abilities/zinn-seo/get-content-guidelines/run | the REST route's own per-item permission check | post: string (required) |
zinn-seo/get-content-plan-draftingzinn-seo-get-content-plan-drafting | Read the drafting job (Pro) Returns the progress of the background job writing drafts from the plan. | Pro edition | GET …/abilities/zinn-seo/get-content-plan-drafting/run | the REST route's own per-item permission check | none |
zinn-seo/get-crawl-logzinn-seo-get-crawl-log | Read crawler visits (Pro) Lists search and AI crawler visits (bot, search) and crawl budget waste. | Pro edition | GET …/abilities/zinn-seo/get-crawl-log/run | the REST route's own per-item permission check | bot: string, search: string |
zinn-seo/get-crawlerszinn-seo-get-crawlers | Read AI crawler rules Returns which search and AI crawlers may read the site and how often each visited. | Free edition | GET …/abilities/zinn-seo/get-crawlers/run | the REST route's own per-item permission check | none |
zinn-seo/get-creditszinn-seo-get-credits | Read the Zinn® credit balance Returns the credit balance, what each check costs, what is held for running checks and the forecast for scheduled ones. | Free edition | GET …/abilities/zinn-seo/get-credits/run | the REST route's own per-item permission check | fresh: boolean |
zinn-seo/get-csv-exportzinn-seo-get-csv-export | Export SEO fields as a spreadsheet (Pro) Returns what can be exported and a download address for a CSV of every page's SEO fields. | Pro edition | GET …/abilities/zinn-seo/get-csv-export/run | the REST route's own per-item permission check | none |
zinn-seo/get-diagnosticszinn-seo-get-diagnostics | Read the site diagnostics Returns the diagnostics a support ticket would carry: versions, active plugins, limits and recent errors. | Free edition | GET …/abilities/zinn-seo/get-diagnostics/run | manage_options (the REST route's own check) | none |
zinn-seo/get-disavowzinn-seo-get-disavow | Read the disavow list (Pro) Returns the domains and addresses to disavow. | Pro edition | GET …/abilities/zinn-seo/get-disavow/run | the REST route's own per-item permission check | none |
zinn-seo/get-disavow-filezinn-seo-get-disavow-file | Make the disavow file (Pro) Returns the disavow file text for Google. | Pro edition | GET …/abilities/zinn-seo/get-disavow-file/run | the REST route's own per-item permission check | none |
zinn-seo/get-duplicates-summaryzinn-seo-get-duplicates-summary | Count duplicates Counts duplicate titles, descriptions, H1s and keyphrases. | Free edition | GET …/abilities/zinn-seo/get-duplicates-summary/run | the REST route's own per-item permission check | none |
zinn-seo/get-edgezinn-seo-get-edge | Read the Cloudflare connection (Pro) Returns whether Cloudflare is connected and which edge features are on. | Pro edition | GET …/abilities/zinn-seo/get-edge/run | the REST route's own per-item permission check | none |
zinn-seo/get-fieldszinn-seo-get-fields | Read a page's SEO fields Returns the SEO fields of one post or term (object: post or term; id). | Free edition | GET …/abilities/zinn-seo/get-fields/run | the REST route's own per-item permission check | object: string (required), id: string (required) |
zinn-seo/get-glossaryzinn-seo-get-glossary | Read the glossary (Pro) Returns the glossary terms and their definitions. | Pro edition | GET …/abilities/zinn-seo/get-glossary/run | edit_posts (the REST route's own check) | none |
zinn-seo/get-google-connectionzinn-seo-get-google-connection | Read the Google connection Says whether Google Search Console and Analytics are connected and which properties are used (choices: list the properties to choose from). | Free edition | GET …/abilities/zinn-seo/get-google-connection/run | the REST route's own per-item permission check | choices: boolean, fresh: boolean |
zinn-seo/get-google-docs-connectionzinn-seo-get-google-docs-connection | Read the Google Docs connection (Pro) Says whether the person has a Google Docs add-on key for this site. The key is never returned. | Pro edition | GET …/abilities/zinn-seo/get-google-docs-connection/run | edit_posts (the REST route's own check) | none |
zinn-seo/get-google-indexingzinn-seo-get-google-indexing | Read Google indexing for jobs and live streams Returns whether job and live stream pages are sent to Google's Indexing API. | Free edition | GET …/abilities/zinn-seo/get-google-indexing/run | the REST route's own per-item permission check | none |
zinn-seo/get-headzinn-seo-get-head | Read the SEO tags of a post or term (Pro) Returns the tags the plugin prints for one post, term or user (kind, id). | Pro edition | GET …/abilities/zinn-seo/get-head/run | the REST route's own per-item permission check | kind: string (required), id: string (required) |
zinn-seo/get-head-for-urlzinn-seo-get-head-for-url | Read the SEO tags of an address (Pro) Returns the exact title, meta, social and structured data tags the plugin prints for an address on this site. | Pro edition | GET …/abilities/zinn-seo/get-head-for-url/run | the REST route's own per-item permission check | url: string (required) |
zinn-seo/get-imageszinn-seo-get-images | Read image SEO Counts images without alt text or with poor file names, and the running job. | Free edition | GET …/abilities/zinn-seo/get-images/run | the REST route's own per-item permission check | none |
zinn-seo/get-importzinn-seo-get-import | Read the move from another SEO plugin Returns which SEO plugins were found, what each holds and where a move stands. | Free edition | GET …/abilities/zinn-seo/get-import/run | the REST route's own per-item permission check | none |
zinn-seo/get-index-checkszinn-seo-get-index-checks | Read index checks Returns which pages Google has indexed according to the last checks. | Free edition | GET …/abilities/zinn-seo/get-index-checks/run | the REST route's own per-item permission check | none |
zinn-seo/get-index-coveragezinn-seo-get-index-coverage | Read Google index coverage Returns which pages Google has indexed and why others are not (page). | Free edition | GET …/abilities/zinn-seo/get-index-coverage/run | the REST route's own per-item permission check | page: integer |
zinn-seo/get-index-runzinn-seo-get-index-run | Read an index check run Returns one index run's progress and results. | Free edition | GET …/abilities/zinn-seo/get-index-run/run | the REST route's own per-item permission check | id: string (required) |
zinn-seo/get-indexingzinn-seo-get-indexing | Read instant indexing Returns the IndexNow and Google indexing state and the last submissions. | Free edition | GET …/abilities/zinn-seo/get-indexing/run | the REST route's own per-item permission check | none |
zinn-seo/get-indexing-logzinn-seo-get-indexing-log | Read the indexing log Returns one page of what each search engine answered for each submitted address, the exclusion rules and which search engines are ready. | Free edition | GET …/abilities/zinn-seo/get-indexing-log/run | the REST route's own per-item permission check | engine: |indexnow|bing|google, state: |sent|failed|skipped|retried, search: string, page: integer |
zinn-seo/get-infozinn-seo-get-info | Read the SEO plugin status Returns the Zinn® SEO version, plan, how many modules and features this build has, whether no-trace mode is on and the next setup step. | Free edition | GET …/abilities/zinn-seo/get-info/run | the REST route's own per-item permission check | none |
zinn-seo/get-keyword-list-coveragezinn-seo-get-keyword-list-coverage | Read a keyword list's coverage For each phrase of one keyword list: the topic it falls in and its Google impressions and best position over 90 days, or nothing when it still needs a page. | Free edition | GET …/abilities/zinn-seo/get-keyword-list-coverage/run | the REST route's own per-item permission check | id: string (required) |
zinn-seo/get-licencezinn-seo-get-licence | Read the licence Returns this site's Zinn® SEO plan, licence state, renewal date and what the plan includes. | Free edition | GET …/abilities/zinn-seo/get-licence/run | manage_options (the REST route's own check) | none |
zinn-seo/get-link-updateszinn-seo-get-link-updates | Read link updates Returns internal links being rewritten after addresses changed. | Free edition | GET …/abilities/zinn-seo/get-link-updates/run | the REST route's own per-item permission check | none |
zinn-seo/get-links-summaryzinn-seo-get-links-summary | Read the internal links summary Counts orphan pages, dead ends and broken links. | Free edition | GET …/abilities/zinn-seo/get-links-summary/run | the REST route's own per-item permission check | none |
zinn-seo/get-llms-txtzinn-seo-get-llms-txt | Read llms.txt Returns the site's llms.txt (lang: one language) and how it is built. | Free edition | GET …/abilities/zinn-seo/get-llms-txt/run | the REST route's own per-item permission check | lang: string |
zinn-seo/get-local-trackingzinn-seo-get-local-tracking | Read local rank tracking (Pro) Returns the business and towns tracked for local rankings. | Pro edition | GET …/abilities/zinn-seo/get-local-tracking/run | the REST route's own per-item permission check | none |
zinn-seo/get-noindex-defaultszinn-seo-get-noindex-defaults | Read thin-page rules Returns the rules that keep thin pages (empty archives, search, attachments …) out of search, with counts. | Free edition | GET …/abilities/zinn-seo/get-noindex-defaults/run | the REST route's own per-item permission check | none |
zinn-seo/get-notracezinn-seo-get-notrace | Read the no-trace mode Says whether no-trace mode (hiding that the site uses an SEO plugin) is on, whether the hosting manages it, and the last switches. | Free edition | GET …/abilities/zinn-seo/get-notrace/run | the REST route's own per-item permission check | none |
zinn-seo/get-originality-checkzinn-seo-get-originality-check | Read an originality check (Pro) Returns one originality check's result: each sentence found elsewhere, with where. | Pro edition | GET …/abilities/zinn-seo/get-originality-check/run | the REST route's own per-item permission check | run: string (required) |
zinn-seo/get-page-analysiszinn-seo-get-page-analysis | Read a page's analysis Returns a page's SEO and readability checks: each check, its result and how to fix it. | Free edition | GET …/abilities/zinn-seo/get-page-analysis/run | the REST route's own per-item permission check | id: string (required) |
zinn-seo/get-page-focuszinn-seo-get-page-focus | Read a page's target market (Pro) Returns a page's keyword rows, brief and market. | Pro edition | GET …/abilities/zinn-seo/get-page-focus/run | edit_post (the REST route's own check) | post: string (required) |
zinn-seo/get-page-generatorzinn-seo-get-page-generator | Read the page generator (Agency) Returns the pages made from a spreadsheet so far and the last run's plan. | Pro edition | GET …/abilities/zinn-seo/get-page-generator/run | publish_pages (the REST route's own check) | none |
zinn-seo/get-page-linkszinn-seo-get-page-links | Read a page's links Returns the links into and out of one page. | Free edition | GET …/abilities/zinn-seo/get-page-links/run | the REST route's own per-item permission check | id: string (required) |
zinn-seo/get-page-lockzinn-seo-get-page-lock | Read a page's lock (Pro) Says whether a page's SEO fields are locked, and by whom. | Pro edition | GET …/abilities/zinn-seo/get-page-lock/run | the REST route's own per-item permission check | id: string (required) |
zinn-seo/get-page-schedulezinn-seo-get-page-schedule | Read a page's scheduled changes (Pro) Lists one page's scheduled SEO changes. | Pro edition | GET …/abilities/zinn-seo/get-page-schedule/run | the REST route's own per-item permission check | id: string (required) |
zinn-seo/get-page-schemazinn-seo-get-page-schema | Read a page's added structured data (Pro) Returns the structured data added to one page by hand. | Pro edition | GET …/abilities/zinn-seo/get-page-schema/run | the REST route's own per-item permission check | id: string (required) |
zinn-seo/get-page-speedzinn-seo-get-page-speed | Read real page speed Returns the site's real-user Core Web Vitals (form: phone or desktop). | Free edition | GET …/abilities/zinn-seo/get-page-speed/run | the REST route's own per-item permission check | form: phone|desktop, fresh: boolean |
zinn-seo/get-post-affiliate-linkszinn-seo-get-post-affiliate-links | Read one post's affiliate links (Pro) Lists the affiliate links one post or page uses. | Pro edition | GET …/abilities/zinn-seo/get-post-affiliate-links/run | edit_post (the REST route's own check) | post: string (required) |
zinn-seo/get-post-keyword-listszinn-seo-get-post-keyword-lists | Read one post's keyword lists Lists the keyword lists one post or page is given to. | Free edition | GET …/abilities/zinn-seo/get-post-keyword-lists/run | the REST route's own per-item permission check | post: string (required) |
zinn-seo/get-redirect-conditionszinn-seo-get-redirect-conditions | Read a redirect's conditions (Pro) Returns the conditions one redirect needs before it runs. | Pro edition | GET …/abilities/zinn-seo/get-redirect-conditions/run | the REST route's own per-item permission check | id: string (required) |
zinn-seo/get-redirect-healthzinn-seo-get-redirect-health | Read redirect health Counts chains, loops and redirects to missing pages. | Free edition | GET …/abilities/zinn-seo/get-redirect-health/run | the REST route's own per-item permission check | none |
zinn-seo/get-redirect-importzinn-seo-get-redirect-import | Read redirect import sources Lists the plugins and files redirects can be imported from. | Free edition | GET …/abilities/zinn-seo/get-redirect-import/run | the REST route's own per-item permission check | none |
zinn-seo/get-reportzinn-seo-get-report | Read a sent report (Agency) Returns one report that was made: its figures, summary in plain words and where it went. | Pro edition | GET …/abilities/zinn-seo/get-report/run | the REST route's own per-item permission check | id: string (required) |
zinn-seo/get-report-settingszinn-seo-get-report-settings | Read the client report (Agency) Returns the scheduled client report: name, recipients, language, sections, cadence, brand, and its Google Sheets or Drive destinations. | Pro edition | GET …/abilities/zinn-seo/get-report-settings/run | the REST route's own per-item permission check | none |
zinn-seo/get-research-runzinn-seo-get-research-run | Read a research run Returns one run's results. | Free edition | GET …/abilities/zinn-seo/get-research-run/run | the REST route's own per-item permission check | id: string (required) |
zinn-seo/get-resolved-fieldszinn-seo-get-resolved-fields | Read a page's final SEO values Returns the title, description, robots and canonical a page really gets after templates and defaults (object: post or term). | Free edition | GET …/abilities/zinn-seo/get-resolved-fields/run | the REST route's own per-item permission check | object: string (required), id: string (required) |
zinn-seo/get-robots-txtzinn-seo-get-robots-txt | Read robots.txt Returns the site's robots.txt, the owner's own rules and the checks on them. | Free edition | GET …/abilities/zinn-seo/get-robots-txt/run | the REST route's own per-item permission check | none |
zinn-seo/get-roleszinn-seo-get-roles | Read the SEO permissions of each role (Pro) Lists every role except administrator with the SEO capabilities it holds, and what each capability allows. | Pro edition | GET …/abilities/zinn-seo/get-roles/run | manage_options and promote_users (the REST route's own check) | none |
zinn-seo/get-schema-graphzinn-seo-get-schema-graph | Read a page's structured data Returns the JSON-LD graph a page (post) prints. | Free edition | GET …/abilities/zinn-seo/get-schema-graph/run | the REST route's own per-item permission check | post: integer (required) |
zinn-seo/get-schema-templateszinn-seo-get-schema-templates | Read custom schema types (Pro) Returns the site's own structured data templates. | Pro edition | GET …/abilities/zinn-seo/get-schema-templates/run | edit_posts (the REST route's own check) | none |
zinn-seo/get-score-markszinn-seo-get-score-marks | Read the marks on score history Returns the days SEO changes were made and the score alerts that fired, for marking a score's history chart. | Pro edition | GET …/abilities/zinn-seo/get-score-marks/run | the REST route's own per-item permission check | days: integer |
zinn-seo/get-search-overviewzinn-seo-get-search-overview | Read search performance Returns clicks, impressions, average position and their change (days). | Free edition | GET …/abilities/zinn-seo/get-search-overview/run | the REST route's own per-item permission check | days: integer, fresh: boolean |
zinn-seo/get-search-reportzinn-seo-get-search-report | Read a search report Returns Search Console rows by page, query, country or device (dim, days). | Free edition | GET …/abilities/zinn-seo/get-search-report/run | the REST route's own per-item permission check | dim: page|query|country|device, days: integer, fresh: boolean |
zinn-seo/get-search-revenuezinn-seo-get-search-revenue | Read revenue from search (Pro) Returns Analytics sessions, conversions and revenue from organic search (days). | Pro edition | GET …/abilities/zinn-seo/get-search-revenue/run | the REST route's own per-item permission check | days: integer, fresh: boolean |
zinn-seo/get-semantic-linkszinn-seo-get-semantic-links | Read meaning-based link suggestions (Pro) Returns whether meaning-based link suggestions can run and how much of the site is indexed. | Pro edition | GET …/abilities/zinn-seo/get-semantic-links/run | the REST route's own per-item permission check | none |
zinn-seo/get-server-redirectszinn-seo-get-server-redirects | Read redirects as server rules (Pro) Returns the redirects as Apache and Nginx rules, for the fastest redirects. | Pro edition | GET …/abilities/zinn-seo/get-server-redirects/run | the REST route's own per-item permission check | none |
zinn-seo/get-server-ruleszinn-seo-get-server-rules | Read .htaccess and Nginx rules (Pro) Returns the server rules file, its backups and whether it can be edited here. | Pro edition | GET …/abilities/zinn-seo/get-server-rules/run | the REST route's own per-item permission check | none |
zinn-seo/get-server-rules-backupzinn-seo-get-server-rules-backup | Read a server rules backup (Pro) Returns one backup's text. | Pro edition | GET …/abilities/zinn-seo/get-server-rules-backup/run | the REST route's own per-item permission check | name: string (required) |
zinn-seo/get-settingszinn-seo-get-settings | Read the SEO settings Returns every site-wide SEO setting with its schema (type, default and allowed values). | Free edition | GET …/abilities/zinn-seo/get-settings/run | the REST route's own per-item permission check | none |
zinn-seo/get-setupzinn-seo-get-setup | Read the setup state Returns each step of the guided setup (done, skipped or to do) and what it detected on the site: the kind of site, other SEO plugins, multilingual plugins, WooCommerce and whether search engines are discouraged. | Free edition | GET …/abilities/zinn-seo/get-setup/run | the REST route's own per-item permission check | none |
zinn-seo/get-sitemapszinn-seo-get-sitemaps | Read the sitemaps Returns the sitemap addresses, what they include and their state. | Free edition | GET …/abilities/zinn-seo/get-sitemaps/run | the REST route's own per-item permission check | none |
zinn-seo/get-social-cardszinn-seo-get-social-cards | Read social card images (Pro) Says whether the server can draw social card images and the running job. | Pro edition | GET …/abilities/zinn-seo/get-social-cards/run | the REST route's own per-item permission check | none |
zinn-seo/get-social-refreshzinn-seo-get-social-refresh | Read social link refresh Returns whether shared links are refreshed on Facebook, the app id, how many pages wait and the last answers; the app secret is never returned. | Free edition | GET …/abilities/zinn-seo/get-social-refresh/run | the REST route's own per-item permission check | none |
zinn-seo/get-spam-scanzinn-seo-get-spam-scan | Read the spam page scan Returns the last scan for spam pages, links and injected content. | Free edition | GET …/abilities/zinn-seo/get-spam-scan/run | the REST route's own per-item permission check | none |
zinn-seo/get-speed-testzinn-seo-get-speed-test | Read a lab speed test Returns a lab test's results. | Free edition | GET …/abilities/zinn-seo/get-speed-test/run | the REST route's own per-item permission check | id: string (required) |
zinn-seo/get-submitted-sitemapszinn-seo-get-submitted-sitemaps | Read submitted sitemaps Lists the sitemaps Search Console knows, with errors. | Free edition | GET …/abilities/zinn-seo/get-submitted-sitemaps/run | the REST route's own per-item permission check | none |
zinn-seo/get-support-connectionzinn-seo-get-support-connection | Read the support connection Says whether this site is connected to Zinn Digital® support, and as whom. | Free edition | GET …/abilities/zinn-seo/get-support-connection/run | manage_options (the REST route's own check) | refresh: boolean |
zinn-seo/get-title-templateszinn-seo-get-title-templates | Read title templates Returns the title and description templates per post type, taxonomy and archive. | Free edition | GET …/abilities/zinn-seo/get-title-templates/run | the REST route's own per-item permission check | none |
zinn-seo/get-topical-mapzinn-seo-get-topical-map | Read the topical map (Pro) Returns the site's topics and the gaps between them (days). | Pro edition | GET …/abilities/zinn-seo/get-topical-map/run | the REST route's own per-item permission check | days: integer, fresh: boolean |
zinn-seo/get-update-checkszinn-seo-get-update-checks | Read the update checks Returns each waiting plugin and theme update with its verdict against this site's WordPress and PHP, and the reports of SEO output that changed after updates. | Pro edition | GET …/abilities/zinn-seo/get-update-checks/run | update_plugins (the REST route's own check) | none |
zinn-seo/get-url-speedzinn-seo-get-url-speed | Read one page's speed Returns one address's real-user Core Web Vitals (url, form). | Free edition | GET …/abilities/zinn-seo/get-url-speed/run | the REST route's own per-item permission check | url: string (required), form: phone|desktop |
zinn-seo/get-white-labelzinn-seo-get-white-label | Read the white label (Agency) Returns the agency brand shown instead of Zinn® SEO: name, menu, logo, colour, help link, which screens clients see and who counts as agency staff. | Pro edition | GET …/abilities/zinn-seo/get-white-label/run | manage_options (the REST route's own check) | none |
zinn-seo/get-writer-sitezinn-seo-get-writer-site | Read what the writer knows about the site Returns what the AI writer is told about the site when it suggests ideas: its name, its main categories and its recent post titles. | Free edition | GET …/abilities/zinn-seo/get-writer-site/run | edit_posts (the REST route's own check) | none |
zinn-seo/ignore-missing-pagezinn-seo-ignore-missing-page | Ignore a missing page Stops listing one missing address. | Free edition | POST …/abilities/zinn-seo/ignore-missing-page/run | the REST route's own per-item permission check | kind: 404|404b, address: string (required), dry_run: boolean |
zinn-seo/import-redirectszinn-seo-import-redirects | Import redirects Imports redirects from a source plugin or a pasted list (source, text). | Free edition | POST …/abilities/zinn-seo/import-redirects/run | the REST route's own per-item permission check | source: string (required), text: string, dry_run: boolean |
zinn-seo/import-robots-filezinn-seo-import-robots-file | Bring in a real robots.txt file Imports the rules of a robots.txt file on the server into the editor (import), or moves the file aside (move). | Free edition | POST …/abilities/zinn-seo/import-robots-file/run | manage_options (the REST route's own check) | action: import|move (required), dry_run: boolean |
zinn-seo/import-schemazinn-seo-import-schema | Read another page's structured data (Pro) Reads the JSON-LD of any public address (url), to copy into a template. | Pro edition | POST …/abilities/zinn-seo/import-schema/run | the REST route's own per-item permission check | url: string (required), dry_run: boolean |
zinn-seo/import-settingszinn-seo-import-settings | Import SEO settings Imports a settings export from another site (document). With dry_run true (the default) it only lists what would change; with dry_run false it applies all of it, or nothing when a value is refused. | Free edition | POST …/abilities/zinn-seo/import-settings/run | the REST route's own per-item permission check | document: object (required), dry_run: boolean |
zinn-seo/inspect-urlzinn-seo-inspect-url | Inspect an address in Google Asks Google's URL inspection whether an address is indexed and why (url). | Free edition | GET …/abilities/zinn-seo/inspect-url/run | the REST route's own per-item permission check | url: string (required) |
zinn-seo/list-affiliate-link-postszinn-seo-list-affiliate-link-posts | List the posts using an affiliate link (Pro) Lists the posts and pages that use one affiliate link (after: keyset). | Pro edition | GET …/abilities/zinn-seo/list-affiliate-link-posts/run | the REST route's own per-item permission check | id: string (required), after: integer |
zinn-seo/list-affiliate-linkszinn-seo-list-affiliate-links | List affiliate links (Pro) Lists the site's affiliate links with their short address, destination and state (search; problem: broken or blocked; after: keyset). | Pro edition | GET …/abilities/zinn-seo/list-affiliate-links/run | the REST route's own per-item permission check | after: integer, search: string, problem: |broken|blocked |
zinn-seo/list-ai-modelszinn-seo-list-ai-models | List the AI models to choose from Lists the current models of the connected AI providers that one AI task (feature) can use, and the model chosen for it now. | Free edition | GET …/abilities/zinn-seo/list-ai-models/run | the REST route's own per-item permission check | feature: writer|proofread|image (required) |
zinn-seo/list-ai-redirectszinn-seo-list-ai-redirects | List AI redirect suggestions (Pro) Lists the redirects AI proposed for missing pages or a site move, waiting for review. | Pro edition | GET …/abilities/zinn-seo/list-ai-redirects/run | the REST route's own per-item permission check | before: integer |
zinn-seo/list-ai-suggestionszinn-seo-list-ai-suggestions | List AI suggestions Lists AI suggestions waiting for review for one task (task; after, limit). | Free edition | GET …/abilities/zinn-seo/list-ai-suggestions/run | the REST route's own per-item permission check | task: string (required), after: integer, limit: integer |
zinn-seo/list-analysis-languageszinn-seo-list-analysis-languages | List the analysis languages Lists the site's languages and which checks (readability, keyphrase) run in each. | Free edition | GET …/abilities/zinn-seo/list-analysis-languages/run | the REST route's own per-item permission check | none |
zinn-seo/list-blockszinn-seo-list-blocks | List the SEO blocks Lists the SEO blocks (FAQ, how-to, table of contents, breadcrumbs …) with whether each is switched on. | Free edition | GET …/abilities/zinn-seo/list-blocks/run | edit_posts (the REST route's own check) | none |
zinn-seo/list-broken-linkszinn-seo-list-broken-links | List broken links (Pro) Lists links that fail (verdict broken) or are blocked, with the pages they are on. | Pro edition | GET …/abilities/zinn-seo/list-broken-links/run | the REST route's own per-item permission check | verdict: broken|blocked |
zinn-seo/list-bulk-batcheszinn-seo-list-bulk-batches | List bulk changes Lists earlier bulk changes (batches) and the running job. | Free edition | GET …/abilities/zinn-seo/list-bulk-batches/run | the REST route's own per-item permission check | none |
zinn-seo/list-bulk-rowszinn-seo-list-bulk-rows | List pages for bulk editing Lists posts or terms with their SEO title, description and robots (filters: type, status, search, missing, robots, term; before, per_page). | Free edition | GET …/abilities/zinn-seo/list-bulk-rows/run | the REST route's own per-item permission check | object: post|term, type: string, status: string, search: string, missing: string, robots: string, discover: boolean, term: integer, before: integer|string, per_page: integer |
zinn-seo/list-business-listingszinn-seo-list-business-listings | Read business listings (Pro) Returns the Google Business Profile, Apple and Bing listings and their state. | Pro edition | GET …/abilities/zinn-seo/list-business-listings/run | the REST route's own per-item permission check | none |
zinn-seo/list-business-reviewszinn-seo-list-business-reviews | Read Google reviews (Pro) Lists the Business Profile's reviews (page: next page token). | Pro edition | GET …/abilities/zinn-seo/list-business-reviews/run | the REST route's own per-item permission check | page: string |
zinn-seo/list-check-alertszinn-seo-list-check-alerts | List check alerts (Pro) Lists alerts from watched checks (ranking drops, lost links, mentions). | Pro edition | GET …/abilities/zinn-seo/list-check-alerts/run | the REST route's own per-item permission check | none |
zinn-seo/list-check-pageszinn-seo-list-check-pages | List pages for index checks Lists pages with their last index check (search, state; before). | Free edition | GET …/abilities/zinn-seo/list-check-pages/run | the REST route's own per-item permission check | search: string, before: integer, state: |yes|no|unknown|never |
zinn-seo/list-checkszinn-seo-list-checks | List the pay-per-use checks Lists every check (rank, index, AI visibility, backlinks, audit, keywords, content gap, local, mentions) with its price, schedule and last result. | Free edition | GET …/abilities/zinn-seo/list-checks/run | the REST route's own per-item permission check | none |
zinn-seo/list-conflictszinn-seo-list-conflicts | List SEO conflicts Lists duplicate tags or settings coming from the theme or other plugins, each with its fix. | Free edition | GET …/abilities/zinn-seo/list-conflicts/run | the REST route's own per-item permission check | none |
zinn-seo/list-content-planzinn-seo-list-content-plan | List the content plan (Pro) Lists the ideas in the content plan with their state (status; after: keyset). | Pro edition | GET …/abilities/zinn-seo/list-content-plan/run | the REST route's own per-item permission check | after: integer, status: |idea|queued|drafted|failed |
zinn-seo/list-ctr-opportunitieszinn-seo-list-ctr-opportunities | List pages that could win more clicks (Pro) Lists pages with many Google impressions and few clicks, with their queries, for new AI titles. | Pro edition | GET …/abilities/zinn-seo/list-ctr-opportunities/run | the REST route's own per-item permission check | none |
zinn-seo/list-custom-blockszinn-seo-list-custom-blocks | List custom schema blocks (Pro) Lists the site's own blocks with structured data. | Pro edition | GET …/abilities/zinn-seo/list-custom-blocks/run | edit_posts (the REST route's own check) | none |
zinn-seo/list-decaying-pageszinn-seo-list-decaying-pages | List pages losing clicks (Pro) Lists pages whose clicks are falling, to refresh (days). | Pro edition | GET …/abilities/zinn-seo/list-decaying-pages/run | the REST route's own per-item permission check | days: integer, fresh: boolean |
zinn-seo/list-duplicateszinn-seo-list-duplicates | List duplicate titles and descriptions Lists pages sharing a title, description, H1 or focus keyphrase (kind; after, per). | Free edition | GET …/abilities/zinn-seo/list-duplicates/run | the REST route's own per-item permission check | kind: title|desc|h1|focus, after: string, per: integer |
zinn-seo/list-featureszinn-seo-list-features | List what the SEO plugin does Lists every feature this build of the plugin has, with its plan and module. | Free edition | GET …/abilities/zinn-seo/list-features/run | the REST route's own per-item permission check | none |
zinn-seo/list-field-historyzinn-seo-list-field-history | Read a page's SEO change history (Pro) Lists every change to a page's SEO fields: when, who (a person or an AI agent), before and after. | Pro edition | GET …/abilities/zinn-seo/list-field-history/run | the REST route's own per-item permission check | object: string (required), id: string (required), before: integer |
zinn-seo/list-fieldszinn-seo-list-fields | List the per-page SEO fields Lists the SEO fields a post or term can carry (title, description, robots, canonical and those modules add), with their types. | Free edition | GET …/abilities/zinn-seo/list-fields/run | the REST route's own per-item permission check | none |
zinn-seo/list-findingszinn-seo-list-findings | List what to fix Lists every SEO problem found on the site, most important first, each with its one-click fix where one exists. | Free edition | GET …/abilities/zinn-seo/list-findings/run | the REST route's own per-item permission check | fresh: boolean |
zinn-seo/list-import-differenceszinn-seo-list-import-differences | List differences found Returns the first differences the comparison found. | Free edition | GET …/abilities/zinn-seo/list-import-differences/run | the REST route's own per-item permission check | none |
zinn-seo/list-integrationszinn-seo-list-integrations | List integrations Lists the plugins Zinn® SEO works with, which are installed and which integrations are on. | Free edition | GET …/abilities/zinn-seo/list-integrations/run | the REST route's own per-item permission check | none |
zinn-seo/list-jobszinn-seo-list-jobs | List the background jobs Lists the plugin's background jobs with their status and progress. | Free edition | GET …/abilities/zinn-seo/list-jobs/run | the REST route's own per-item permission check | none |
zinn-seo/list-keyword-list-postszinn-seo-list-keyword-list-posts | List the posts of a keyword list Lists the posts and pages a keyword list is given to (after: keyset). | Free edition | GET …/abilities/zinn-seo/list-keyword-list-posts/run | the REST route's own per-item permission check | id: string (required), after: integer |
zinn-seo/list-keyword-listszinn-seo-list-keyword-lists | List keyword lists Lists the site's keyword lists with their phrases and colour (search; limit; after: keyset). | Free edition | GET …/abilities/zinn-seo/list-keyword-lists/run | the REST route's own per-item permission check | after: integer, limit: integer, search: string |
zinn-seo/list-link-problemszinn-seo-list-link-problems | List orphan and dead-end pages Lists pages nothing links to (orphan) or that link nowhere (deadend) (type; before, per). | Free edition | GET …/abilities/zinn-seo/list-link-problems/run | the REST route's own per-item permission check | kind: orphan|deadend, type: string, before: integer, per: integer |
zinn-seo/list-linked-siteszinn-seo-list-linked-sites | List your other sites (Agency) Lists the owner's other sites that link suggestions are drawn from, with how many pages were read from each and when. | Pro edition | GET …/abilities/zinn-seo/list-linked-sites/run | the REST route's own per-item permission check | none |
zinn-seo/list-locked-pageszinn-seo-list-locked-pages | List locked pages (Pro) Lists pages whose SEO fields are locked against changes (after: keyset). | Pro edition | GET …/abilities/zinn-seo/list-locked-pages/run | the REST route's own per-item permission check | after: integer |
zinn-seo/list-mentionszinn-seo-list-mentions | List brand mentions (Pro) Lists mentions of the brand and copies of the content (phrase, tone; limit, offset). | Pro edition | GET …/abilities/zinn-seo/list-mentions/run | the REST route's own per-item permission check | phrase: string, tone: string, limit: integer, offset: integer |
zinn-seo/list-missing-pageszinn-seo-list-missing-pages | List missing pages (404s) Lists addresses visitors and bots asked for that do not exist (kind 404 or bots), with hits (order, search; after, per). | Free edition | GET …/abilities/zinn-seo/list-missing-pages/run | the REST route's own per-item permission check | kind: 404|404b, order: hits|last_seen|first_seen, after: string, search: string, per: integer |
zinn-seo/list-moduleszinn-seo-list-modules | List the SEO modules Lists the plugin's feature modules: name, plan, whether each is on, and what it needs. | Free edition | GET …/abilities/zinn-seo/list-modules/run | the REST route's own per-item permission check | none |
zinn-seo/list-noticeszinn-seo-list-notices | List notices Lists the notices about checks, credits and problems. | Free edition | GET …/abilities/zinn-seo/list-notices/run | the REST route's own per-item permission check | fresh: boolean |
zinn-seo/list-offerszinn-seo-list-offers | List Zinn® services for this site Lists the Zinn® services that fix what was found here (hosting, content, links), with prices. | Free edition | GET …/abilities/zinn-seo/list-offers/run | the REST route's own per-item permission check | fresh: boolean |
zinn-seo/list-orderszinn-seo-list-orders | List Zinn® orders Lists orders placed through Zinn® from this site, with their state. | Free edition | GET …/abilities/zinn-seo/list-orders/run | the REST route's own per-item permission check | none |
zinn-seo/list-page-scoreszinn-seo-list-page-scores | List page SEO scores Lists pages with their SEO and readability ratings, newest first (type, rating, issue; before, per). | Free edition | GET …/abilities/zinn-seo/list-page-scores/run | the REST route's own per-item permission check | type: string, rating: |good|ok|bad|none|cornerstone|nofocus, issue: string, before: integer, per: integer |
zinn-seo/list-redirect-conditionszinn-seo-list-redirect-conditions | List redirect conditions (Pro) Lists what a redirect can depend on: login, role, device, country, language, referrer, time. | Pro edition | GET …/abilities/zinn-seo/list-redirect-conditions/run | the REST route's own per-item permission check | none |
zinn-seo/list-redirectszinn-seo-list-redirects | List redirects Lists redirects (search, group, code, origin, problem, regex, enabled; before, per). | Free edition | GET …/abilities/zinn-seo/list-redirects/run | the REST route's own per-item permission check | search: string, group: string, code: integer, origin: string, problem: string, regex: string, enabled: string, before: integer, per: integer |
zinn-seo/list-research-runszinn-seo-list-research-runs | List research runs Lists earlier runs (tool, watch). | Free edition | GET …/abilities/zinn-seo/list-research-runs/run | the REST route's own per-item permission check | tool: string, watch: string |
zinn-seo/list-research-watcheszinn-seo-list-research-watches | List repeating research Lists tools set to run again every 1, 7 or 30 days. | Free edition | GET …/abilities/zinn-seo/list-research-watches/run | the REST route's own per-item permission check | none |
zinn-seo/list-rollback-versionszinn-seo-list-rollback-versions | List earlier versions Lists the earlier Zinn® SEO versions this site can go back to. | Free edition | GET …/abilities/zinn-seo/list-rollback-versions/run | the REST route's own per-item permission check | fresh: boolean |
zinn-seo/list-scheduled-changeszinn-seo-list-scheduled-changes | List scheduled SEO changes (Pro) Lists SEO changes waiting for their date. | Pro edition | GET …/abilities/zinn-seo/list-scheduled-changes/run | the REST route's own per-item permission check | none |
zinn-seo/list-schema-builderszinn-seo-list-schema-builders | List structured data builders (Pro) Lists the structured data types that can be added to a page, with their fields. | Pro edition | GET …/abilities/zinn-seo/list-schema-builders/run | edit_posts (the REST route's own check) | none |
zinn-seo/list-schema-propertieszinn-seo-list-schema-properties | List a type's properties Lists a schema.org type's properties (type). | Free edition | GET …/abilities/zinn-seo/list-schema-properties/run | edit_posts (the REST route's own check) | type: string (required) |
zinn-seo/list-search-opportunitieszinn-seo-list-search-opportunities | List search opportunities (Pro) Lists the biggest search wins available, with what to do. | Pro edition | GET …/abilities/zinn-seo/list-search-opportunities/run | the REST route's own per-item permission check | days: integer, fresh: boolean |
zinn-seo/list-seo-testszinn-seo-list-seo-tests | List SEO title tests (Pro) Lists title and description tests with their results. | Pro edition | GET …/abilities/zinn-seo/list-seo-tests/run | the REST route's own per-item permission check | none |
zinn-seo/list-site-searcheszinn-seo-list-site-searches | List what visitors search for Lists searches made on the site, and those with no results (kind search0). | Free edition | GET …/abilities/zinn-seo/list-site-searches/run | the REST route's own per-item permission check | kind: search|search0, order: hits|last_seen|first_seen, after: string, search: string, per: integer |
zinn-seo/list-sitemap-fileszinn-seo-list-sitemap-files | List sitemap files Lists every sitemap file with its address and entry count. | Free edition | GET …/abilities/zinn-seo/list-sitemap-files/run | the REST route's own per-item permission check | none |
zinn-seo/list-striking-distancezinn-seo-list-striking-distance | List almost-ranking searches (Pro) Lists queries where a page ranks just below the first page (days). | Pro edition | GET …/abilities/zinn-seo/list-striking-distance/run | the REST route's own per-item permission check | days: integer, fresh: boolean |
zinn-seo/list-task-peoplezinn-seo-list-task-people | List who can take tasks (Agency) Lists the users a task can be given to. | Pro edition | GET …/abilities/zinn-seo/list-task-people/run | the REST route's own per-item permission check | none |
zinn-seo/list-taskszinn-seo-list-tasks | List SEO tasks (Agency) Lists the team's SEO tasks (status: open, done or all; after: keyset). | Pro edition | GET …/abilities/zinn-seo/list-tasks/run | the REST route's own per-item permission check | status: open|done|all, after: integer |
zinn-seo/list-toolboxzinn-seo-list-toolbox | List research tools Lists every research tool (SERP, reviews, shopping, Amazon, YouTube, traffic, technology …) with its price in credits. | Free edition | GET …/abilities/zinn-seo/list-toolbox/run | the REST route's own per-item permission check | none |
zinn-seo/list-zinn-priceszinn-seo-list-zinn-prices | List Zinn® services and prices Returns every Zinn® service that helps this site with its live price, monthly or one-off, where the plugin uses it and what the account already holds. | Free edition | GET …/abilities/zinn-seo/list-zinn-prices/run | the REST route's own per-item permission check | fresh: boolean |
zinn-seo/mark-alerts-readzinn-seo-mark-alerts-read | Mark alerts read (Pro) Marks alerts read (ids). | Pro edition | POST …/abilities/zinn-seo/mark-alerts-read/run | the REST route's own per-item permission check | ids: array (required), dry_run: boolean |
zinn-seo/open-support-ticketzinn-seo-open-support-ticket | Open a support ticket Files a support ticket (subject, message, kind, email), with this site's diagnostics when the administrator agreed. It never creates a login or sends one. | Free edition | POST …/abilities/zinn-seo/open-support-ticket/run | manage_options (the REST route's own check) | subject: string (required), message: string (required), kind: help|bug|feedback|feature_request, email: string, name: string, diagnostics: boolean, dry_run: boolean |
zinn-seo/optimise-sitezinn-seo-optimise-site | Optimise this site A guided run: the agent audits the site, proposes a plan, tries every change first, applies what you agree to as undoable changes, and reports what it did. | Pro edition | POST …/abilities/zinn-seo/optimise-site/run | zseo_manage | focus: string |
zinn-seo/post-business-updatezinn-seo-post-business-update | Post a Business Profile update (Pro) Publishes an update (summary), optionally linking a post (post_id). | Pro edition | POST …/abilities/zinn-seo/post-business-update/run | the REST route's own per-item permission check | summary: string (required), post_id: integer, dry_run: boolean |
zinn-seo/preview-address-changezinn-seo-preview-address-change | Preview an address change Shows how post, category and tag addresses would change with a new permalink structure (structure, category_base, tag_base), page by page (after, per). Nothing changes. | Free edition | POST …/abilities/zinn-seo/preview-address-change/run | manage_options (the REST route's own check) | structure: string, category_base: string, tag_base: string, after: string, per: integer, dry_run: boolean |
zinn-seo/preview-generated-pageszinn-seo-preview-generated-pages | Preview pages from a spreadsheet (Agency) Reads a spreadsheet (csv text or a Google Sheets url) and a plan (template page, title and description patterns) and shows the pages it would make, with the rows it would hold back. Nothing is created. | Pro edition | POST …/abilities/zinn-seo/preview-generated-pages/run | publish_pages (the REST route's own check) | csv: string, url: string, plan: object, dry_run: boolean |
zinn-seo/preview-image-fixzinn-seo-preview-image-fix | Preview an image fix Shows what an image action (action) would write on a sample of images. Nothing changes. | Free edition | POST …/abilities/zinn-seo/preview-image-fix/run | the REST route's own per-item permission check | action: object (required), dry_run: boolean |
zinn-seo/preview-redirect-importzinn-seo-preview-redirect-import | Preview a redirect import Shows what importing from a source (source; text for a pasted list) would add. Nothing changes. | Free edition | POST …/abilities/zinn-seo/preview-redirect-import/run | the REST route's own per-item permission check | source: string (required), text: string, dry_run: boolean |
zinn-seo/preview-robots-txtzinn-seo-preview-robots-txt | Preview robots.txt Shows the whole robots.txt and its checks with draft rules (custom). Nothing changes. | Free edition | POST …/abilities/zinn-seo/preview-robots-txt/run | the REST route's own per-item permission check | custom: string (required), dry_run: boolean |
zinn-seo/preview-social-cardzinn-seo-preview-social-card | Preview a social card (Pro) Draws one post's card with draft settings (post, settings). | Pro edition | POST …/abilities/zinn-seo/preview-social-card/run | the REST route's own per-item permission check | post: integer, settings: object, dry_run: boolean |
zinn-seo/preview-title-templatezinn-seo-preview-title-template | Preview a title template Renders a draft template (key, title, desc, sep) on a real example. | Free edition | POST …/abilities/zinn-seo/preview-title-template/run | the REST route's own per-item permission check | key: string (required), title: string, desc: string, sep: string, dry_run: boolean |
zinn-seo/proofreadzinn-seo-proofread | Check spelling, grammar and tone Checks a post (post) or text for spelling and grammar mistakes, and its tone, in a language. Nothing changes. | Free edition | POST …/abilities/zinn-seo/proofread/run | the REST route's own per-item permission check | post: integer, text: string, language: string, tone: boolean, dry_run: boolean |
zinn-seo/purge-cdnzinn-seo-purge-cdn | Empty the Zinn® CDN cache Empties the CDN's cache so visitors get the site's current files. | Free edition | POST …/abilities/zinn-seo/purge-cdn/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/queue-link-updatezinn-seo-queue-link-update | Rewrite links to a changed address Rewrites every internal link from one address (old) to another (new) in the background. | Free edition | POST …/abilities/zinn-seo/queue-link-update/run | the REST route's own per-item permission check | old: string (required), new: string (required), dry_run: boolean |
zinn-seo/quote-originality-checkzinn-seo-quote-originality-check | Price an originality check (Pro) Says what checking a text for copies on other sites costs in Zinn® credits, for a number of sentences (count). | Pro edition | GET …/abilities/zinn-seo/quote-originality-check/run | the REST route's own per-item permission check | count: integer |
zinn-seo/quote-research-toolzinn-seo-quote-research-tool | Price a research tool run Says what running a tool (tool) with these values (params) would cost. Nothing is spent. | Free edition | POST …/abilities/zinn-seo/quote-research-tool/run | the REST route's own per-item permission check | tool: string (required), params: object (required), dry_run: boolean |
zinn-seo/read-linked-siteszinn-seo-read-linked-sites | Read your other sites again (Agency) Reads every listed site's public posts and pages again, in the background. | Pro edition | POST …/abilities/zinn-seo/read-linked-sites/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/rebuild-redirect-indexzinn-seo-rebuild-redirect-index | Rebuild the redirect index Rebuilds the fast lookup index of redirects. | Free edition | POST …/abilities/zinn-seo/rebuild-redirect-index/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/rebuild-sitemapszinn-seo-rebuild-sitemaps | Rebuild the sitemaps Rebuilds every sitemap in the background. | Free edition | POST …/abilities/zinn-seo/rebuild-sitemaps/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/record-support-consentzinn-seo-record-support-consent | Consent to support diagnostics Records the administrator's consent to send diagnostics with support tickets. | Free edition | POST …/abilities/zinn-seo/record-support-consent/run | manage_options (the REST route's own check) | consent: boolean (required), dry_run: boolean |
zinn-seo/redirect-missing-pagezinn-seo-redirect-missing-page | Redirect a missing page Creates a redirect from a missing address (address) to a page (target, code). | Free edition | POST …/abilities/zinn-seo/redirect-missing-page/run | the REST route's own per-item permission check | kind: 404|404b, address: string (required), target: string, code: integer, dry_run: boolean |
zinn-seo/refresh-llms-txtzinn-seo-refresh-llms-txt | Rebuild llms.txt Rebuilds llms.txt and llms-full.txt now. | Free edition | POST …/abilities/zinn-seo/refresh-llms-txt/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/refresh-shared-linkszinn-seo-refresh-shared-links | Refresh shared links now Asks Facebook to read these pages of this site again so their shared card shows the latest title, text and image. | Free edition | POST …/abilities/zinn-seo/refresh-shared-links/run | the REST route's own per-item permission check | urls: array (required), dry_run: boolean |
zinn-seo/remove-authority-keyzinn-seo-remove-authority-key | Remove a data account key Deletes the stored key for one source. | Free edition | POST …/abilities/zinn-seo/remove-authority-key/run | the REST route's own per-item permission check | source: string (required), dry_run: boolean |
zinn-seo/remove-content-guidelineszinn-seo-remove-content-guidelines | Remove a post's content guidelines (Pro) Removes the guidelines brought in for one post. | Pro edition | POST …/abilities/zinn-seo/remove-content-guidelines/run | the REST route's own per-item permission check | post: string (required), dry_run: boolean |
zinn-seo/remove-linked-sitezinn-seo-remove-linked-site | Remove one of your other sites (Agency) Removes one site and the pages read from it. | Pro edition | POST …/abilities/zinn-seo/remove-linked-site/run | the REST route's own per-item permission check | id: string (required), dry_run: boolean |
zinn-seo/remove-report-sheetzinn-seo-remove-report-sheet | Stop copying reports to a sheet (Agency) Disconnects one Google Sheets or Drive destination. Reports already written stay there. | Pro edition | POST …/abilities/zinn-seo/remove-report-sheet/run | the REST route's own per-item permission check | id: string (required), dry_run: boolean |
zinn-seo/reply-to-reviewzinn-seo-reply-to-review | Reply to a Google review (Pro) Posts a public reply (text) to one review (id). | Pro edition | POST …/abilities/zinn-seo/reply-to-review/run | the REST route's own per-item permission check | id: string (required), text: string (required), dry_run: boolean |
zinn-seo/research-bing-keywordzinn-seo-research-bing-keyword | Research a search on Bing Returns weekly Bing impressions for one search in a country and language. | Free edition | GET …/abilities/zinn-seo/research-bing-keyword/run | the REST route's own per-item permission check | q: string (required), country: string, language: string |
zinn-seo/research-keywordszinn-seo-research-keywords | Find keywords worth writing for (Pro) Finds keywords for a seed (seed, country, language), on credits. | Pro edition | POST …/abilities/zinn-seo/research-keywords/run | the REST route's own per-item permission check | tool: string, seed: string, competitor: string, page_url: string, country: string, language: string, dry_run: boolean |
zinn-seo/restore-field-changezinn-seo-restore-field-change | Undo an SEO change (Pro) Puts back the value one history row replaced. | Pro edition | POST …/abilities/zinn-seo/restore-field-change/run | the REST route's own per-item permission check | row: string (required), dry_run: boolean |
zinn-seo/restore-findingszinn-seo-restore-findings | Show hidden findings again Brings back every hidden finding. | Free edition | POST …/abilities/zinn-seo/restore-findings/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/restore-server-ruleszinn-seo-restore-server-rules | Put back a server rules backup (Pro) Restores one backup (backup) of the server rules. | Pro edition | POST …/abilities/zinn-seo/restore-server-rules/run | the REST route's own per-item permission check | backup: string (required), dry_run: boolean |
zinn-seo/retry-failed-submissionszinn-seo-retry-failed-submissions | Send failed pages again Sends failed submissions again, each to the search engine it failed on; with no ids every failed row is sent. | Free edition | POST …/abilities/zinn-seo/retry-failed-submissions/run | the REST route's own per-item permission check | ids: array, dry_run: boolean |
zinn-seo/revoke-report-linkzinn-seo-revoke-report-link | Revoke a client report link (Agency) Turns one client report link off at once. | Pro edition | POST …/abilities/zinn-seo/revoke-report-link/run | the REST route's own per-item permission check | id: string (required), dry_run: boolean |
zinn-seo/rewrite-for-queryzinn-seo-rewrite-for-query | Rewrite a page for a query with AI (Pro) Writes a new title and description for a page (post_id) aimed at a query. | Pro edition | POST …/abilities/zinn-seo/rewrite-for-query/run | the REST route's own per-item permission check | post_id: integer (required), query: string (required), dry_run: boolean |
zinn-seo/run-ai-taskzinn-seo-run-ai-task | Write SEO text with AI Runs an AI task (task: e.g. titles, descriptions, alt text) for the given items (ids, options). Results wait as suggestions for a person to accept. Uses the site owner's key or Zinn® credits. | Free edition | POST …/abilities/zinn-seo/run-ai-task/run | the REST route's own per-item permission check | task: string (required), ids: array, options: object, dry_run: boolean |
zinn-seo/run-authority-checkzinn-seo-run-authority-check | Check authority now Checks one source now (with the owner's own key, or on Zinn® credits). | Free edition | POST …/abilities/zinn-seo/run-authority-check/run | the REST route's own per-item permission check | source: string (required), dry_run: boolean |
zinn-seo/run-checkzinn-seo-run-check | Run a check now Runs one check (tool: rank, index, ai, links, audit, keywords, gap …) on the site owner's Zinn® credits (seed, page_url where the check takes one). Each check's price is in the list of checks. | Free edition | POST …/abilities/zinn-seo/run-check/run | the REST route's own per-item permission check | tool: string (required), seed: string, page_url: string, dry_run: boolean |
zinn-seo/run-edge-actionzinn-seo-run-edge-action | Run a Cloudflare action (Pro) Runs one edge action (what): purge, deploy the redirects or the crawler rules. | Pro edition | POST …/abilities/zinn-seo/run-edge-action/run | the REST route's own per-item permission check | what: string (required), dry_run: boolean |
zinn-seo/run-fixzinn-seo-run-fix | Run a fix Runs one finding's fix (action, as listed). | Free edition | POST …/abilities/zinn-seo/run-fix/run | the REST route's own per-item permission check | action: string (required), dry_run: boolean |
zinn-seo/run-image-fixzinn-seo-run-image-fix | Fix image alt text Runs an image action (action) on every image in the background. | Free edition | POST …/abilities/zinn-seo/run-image-fix/run | the REST route's own per-item permission check | action: object (required), dry_run: boolean |
zinn-seo/run-reportzinn-seo-run-report | Make the client report now (Agency) Makes the client report now and, with send_email true, e-mails it to the recipients. | Pro edition | POST …/abilities/zinn-seo/run-report/run | the REST route's own per-item permission check | send_email: boolean, dry_run: boolean |
zinn-seo/run-research-toolzinn-seo-run-research-tool | Run a research tool Runs a tool (tool) with its values (params) on the site owner's Zinn® credits and returns the run. | Free edition | POST …/abilities/zinn-seo/run-research-tool/run | the REST route's own per-item permission check | tool: string (required), params: object (required), dry_run: boolean |
zinn-seo/run-speed-testzinn-seo-run-speed-test | Run a lab speed test Runs a Lighthouse test of one address (url). | Free edition | POST …/abilities/zinn-seo/run-speed-test/run | the REST route's own per-item permission check | url: string (required), dry_run: boolean |
zinn-seo/scan-conflictszinn-seo-scan-conflicts | Scan for SEO conflicts Reads real pages to find what the theme and other plugins print twice. | Free edition | POST …/abilities/zinn-seo/scan-conflicts/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/scan-duplicateszinn-seo-scan-duplicates | Find duplicates Rebuilds the duplicate index in the background. | Free edition | POST …/abilities/zinn-seo/scan-duplicates/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/scan-spamzinn-seo-scan-spam | Scan for spam pages Scans the site's content for spam pages and injected links. | Free edition | POST …/abilities/zinn-seo/scan-spam/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/schedule-changezinn-seo-schedule-change | Schedule an SEO change (Pro) Changes a page's SEO fields (fields) at a date (at), optionally changing them back later (revert_at), with a note. | Pro edition | POST …/abilities/zinn-seo/schedule-change/run | the REST route's own per-item permission check | id: string (required), fields: object (required), at: string (required), revert_at: string, note: string, dry_run: boolean |
zinn-seo/schedule-checkzinn-seo-schedule-check | Schedule a check Turns a check's repeat schedule on or off (on). | Free edition | POST …/abilities/zinn-seo/schedule-check/run | the REST route's own per-item permission check | tool: string (required), on: boolean (required), dry_run: boolean |
zinn-seo/score-all-pageszinn-seo-score-all-pages | Score every page Starts a background job that scores every page, so lists and reports are complete. | Free edition | POST …/abilities/zinn-seo/score-all-pages/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/score-headlineszinn-seo-score-headlines | Score headlines Scores one or more headlines (titles) for clicks, in a language, with what would make each one stronger. | Free edition | POST …/abilities/zinn-seo/score-headlines/run | the REST route's own per-item permission check | titles: array (required), language: string, dry_run: boolean |
zinn-seo/search-domainszinn-seo-search-domains | Search domain names Checks which domain names are free and their prices (query). | Free edition | POST …/abilities/zinn-seo/search-domains/run | the REST route's own per-item permission check | query: string (required), dry_run: boolean |
zinn-seo/search-local-placeszinn-seo-search-local-places | Search towns (Pro) Finds towns and areas in a country (country, q). | Pro edition | GET …/abilities/zinn-seo/search-local-places/run | the REST route's own per-item permission check | country: string (required), q: string (required) |
zinn-seo/search-offer-listingszinn-seo-search-offer-listings | Search a Zinn® service's listings Lists what one service offers (offer, product; q, max_price_minor). | Free edition | GET …/abilities/zinn-seo/search-offer-listings/run | the REST route's own per-item permission check | offer: string (required), product: string (required), q: string, max_price_minor: integer |
zinn-seo/search-schema-typeszinn-seo-search-schema-types | Search schema.org types Finds schema.org types by name (q). | Free edition | GET …/abilities/zinn-seo/search-schema-types/run | edit_posts (the REST route's own check) | q: string (required) |
zinn-seo/send-work-logzinn-seo-send-work-log | Count the work done for the report (Agency) Sends the counts of SEO changes made on this site since the last report (no content) so the report can show the work done. | Pro edition | POST …/abilities/zinn-seo/send-work-log/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/set-ai-fundingzinn-seo-set-ai-funding | Choose how AI is paid for Sets funding: byo (the site owner's own AI key), credits (Zinn® credits) or auto. | Free edition | POST …/abilities/zinn-seo/set-ai-funding/run | the REST route's own per-item permission check | funding: auto|byo|credits (required), dry_run: boolean |
zinn-seo/set-authority-competitorszinn-seo-set-authority-competitors | Set the competitors to track (Pro) Sets the competitor domains whose authority is tracked beside this site's. | Pro edition | POST …/abilities/zinn-seo/set-authority-competitors/run | the REST route's own per-item permission check | competitors: array (required), dry_run: boolean |
zinn-seo/set-authority-feedzinn-seo-set-authority-feed | Set what an authority source checks Chooses the metrics and how often one source is checked (metrics, cadence_days, on). | Free edition | POST …/abilities/zinn-seo/set-authority-feed/run | the REST route's own per-item permission check | source: string (required), show: array, track: array, alerts: array, cadence_days: 1|7|30, enabled: boolean, dry_run: boolean |
zinn-seo/set-authority-keyzinn-seo-set-authority-key | Add your own data account key Stores the site owner's own API key for a source (key; plus login where the source needs one). The key is never returned. | Free edition | POST …/abilities/zinn-seo/set-authority-key/run | the REST route's own per-item permission check | source: string (required), api_key: string, access_id: string, access_secret: string, database: string, dry_run: boolean |
zinn-seo/set-bing-crawl-ratezinn-seo-set-bing-crawl-rate | Set Bing's crawl rate Saves how fast Bing crawls this site, hour by hour from 1 (slowest) to 10 (fastest). | Free edition | POST …/abilities/zinn-seo/set-bing-crawl-rate/run | the REST route's own per-item permission check | rate: array (required), boost: boolean, dry_run: boolean |
zinn-seo/set-check-listzinn-seo-set-check-list | Set what a check tracks Sets the keywords, pages or competitors a check tracks (items). | Free edition | POST …/abilities/zinn-seo/set-check-list/run | the REST route's own per-item permission check | tool: string (required), items: array (required), dry_run: boolean |
zinn-seo/set-content-guidelineszinn-seo-set-content-guidelines | Bring in content guidelines for a post (Pro) Brings in guidelines for one post: pasted text with its source, or a report (ref) fetched from Surfer or Frase (tool) with the owner's key, in a language. | Pro edition | POST …/abilities/zinn-seo/set-content-guidelines/run | the REST route's own per-item permission check | post: string (required), text: string, source: surfer|clearscope|marketmuse|frase|semrush|other, tool: |surfer|frase, ref: string, language: string, dry_run: boolean |
zinn-seo/set-content-todozinn-seo-set-content-todo | Mark a page to refresh or write (Pro) Marks a page (page) to refresh or write (kind), done or not, with a note. | Pro edition | POST …/abilities/zinn-seo/set-content-todo/run | the REST route's own per-item permission check | kind: refresh|write (required), page: string (required), done: boolean, note: string, dry_run: boolean |
zinn-seo/set-content-tool-keyzinn-seo-set-content-tool-key | Add a content tool key (Pro) Stores the site owner's own API key for a content tool (key). The key is never returned. | Pro edition | POST …/abilities/zinn-seo/set-content-tool-key/run | the REST route's own per-item permission check | tool: string (required), key: string (required), dry_run: boolean |
zinn-seo/set-crawl-logzinn-seo-set-crawl-log | Record crawler visits (Pro) Turns crawler logging on or off (on), with a sample rate (sample). | Pro edition | POST …/abilities/zinn-seo/set-crawl-log/run | the REST route's own per-item permission check | on: boolean (required), sample: integer, dry_run: boolean |
zinn-seo/set-expected-termszinn-seo-set-expected-terms | Learn the terms top pages use (Pro) Reads reference pages (urls) and stores the terms a page about the same topic is expected to cover. | Pro edition | POST …/abilities/zinn-seo/set-expected-terms/run | the REST route's own per-item permission check | id: string (required), urls: array (required), dry_run: boolean |
zinn-seo/set-google-indexingzinn-seo-set-google-indexing | Send job and live stream pages to Google Turns the Indexing API on or off (on) for these post types (types). | Free edition | POST …/abilities/zinn-seo/set-google-indexing/run | the REST route's own per-item permission check | on: boolean (required), types: array, dry_run: boolean |
zinn-seo/set-indexing-ruleszinn-seo-set-indexing-rules | Set the pages kept out of indexing Saves the wildcard rules that keep matching pages out of automatic submission to search engines. | Free edition | POST …/abilities/zinn-seo/set-indexing-rules/run | the REST route's own per-item permission check | rules: string (required), dry_run: boolean |
zinn-seo/set-integrationzinn-seo-set-integration | Turn an integration on or off Switches one integration (id) on or off (on). | Free edition | POST …/abilities/zinn-seo/set-integration/run | the REST route's own per-item permission check | id: string (required), on: boolean (required), dry_run: boolean |
zinn-seo/set-local-trackingzinn-seo-set-local-tracking | Set up local rank tracking (Pro) Sets the business, keywords and towns for local rankings. | Pro edition | POST …/abilities/zinn-seo/set-local-tracking/run | the REST route's own per-item permission check | business: object (required), keywords: array (required), places: array (required), dry_run: boolean |
zinn-seo/set-mention-phraseszinn-seo-set-mention-phrases | Set the phrases to watch (Pro) Sets the brand phrases watched for mentions (phrases). | Pro edition | POST …/abilities/zinn-seo/set-mention-phrases/run | the REST route's own per-item permission check | phrases: array (required), dry_run: boolean |
zinn-seo/set-modulezinn-seo-set-module | Switch an SEO module on or off Switches one module (id) on or off (enabled). | Free edition | POST …/abilities/zinn-seo/set-module/run | the REST route's own per-item permission check | id: string (required), enabled: boolean (required), dry_run: boolean |
zinn-seo/set-notracezinn-seo-set-notrace | Switch no-trace mode Turns no-trace mode on or off (enabled). Run it with dry_run true first: it lists every address that would change, which search engines must be told about. | Free edition | POST …/abilities/zinn-seo/set-notrace/run | the REST route's own per-item permission check | enabled: boolean (required), dry_run: boolean |
zinn-seo/set-order-placementzinn-seo-set-order-placement | Tell Zinn® where an order goes Gives an order the address of the page it is for (url). | Free edition | POST …/abilities/zinn-seo/set-order-placement/run | the REST route's own per-item permission check | id: string (required), url: string (required), dry_run: boolean |
zinn-seo/set-page-focuszinn-seo-set-page-focus | Set a page's target market (Pro) Sets a page's country, language and phrase for keyword research. | Pro edition | POST …/abilities/zinn-seo/set-page-focus/run | edit_post (the REST route's own check) | post: string (required), country: string, language: string, phrase: string, dry_run: boolean |
zinn-seo/set-page-lockzinn-seo-set-page-lock | Lock or unlock a page (Pro) Locks (locked true) or unlocks a page's SEO fields. | Pro edition | POST …/abilities/zinn-seo/set-page-lock/run | edit_post (the REST route's own check) | id: string (required), locked: boolean (required), dry_run: boolean |
zinn-seo/set-page-schemazinn-seo-set-page-schema | Set a page's structured data (Pro) Replaces the structured data added to one page (types: type and field values). | Pro edition | POST …/abilities/zinn-seo/set-page-schema/run | the REST route's own per-item permission check | id: string (required), types: array (required), dry_run: boolean |
zinn-seo/set-post-keyword-listszinn-seo-set-post-keyword-lists | Set one post's keyword lists Replaces the keyword lists one post or page is given to (lists: list ids). | Free edition | POST …/abilities/zinn-seo/set-post-keyword-lists/run | the REST route's own per-item permission check | post: string (required), lists: array (required), dry_run: boolean |
zinn-seo/set-proofread-keyzinn-seo-set-proofread-key | Add a proofreading service key Stores the site owner's own key for the proofreading service (key). The key is never returned. | Free edition | POST …/abilities/zinn-seo/set-proofread-key/run | the REST route's own per-item permission check | key: string (required), dry_run: boolean |
zinn-seo/set-redirect-conditionszinn-seo-set-redirect-conditions | Set a redirect's conditions (Pro) Sets when one redirect runs (match: all or any; rules: condition, operator, value). | Pro edition | POST …/abilities/zinn-seo/set-redirect-conditions/run | the REST route's own per-item permission check | id: string (required), match: all|any, rules: array (required), dry_run: boolean |
zinn-seo/set-search-visibilityzinn-seo-set-search-visibility | Let search engines index the site, or not Changes WordPress's own Reading setting (public: true lets search engines index the site). Administrators only. | Free edition | POST …/abilities/zinn-seo/set-search-visibility/run | the REST route's own per-item permission check | public: boolean (required), dry_run: boolean |
zinn-seo/start-address-changezinn-seo-start-address-change | Change the site's addresses safely Changes the permalink structure and bases, with a 301 redirect from every old address to its new one, so no ranking or link is lost. | Free edition | POST …/abilities/zinn-seo/start-address-change/run | manage_options (the REST route's own check) | structure: string, category_base: string, tag_base: string, dry_run: boolean |
zinn-seo/start-affiliate-jobzinn-seo-start-affiliate-job | Start an affiliate link job (Pro) Starts finding affiliate links in every post (job: index) or checking that every destination still answers (job: check), in the background. | Pro edition | POST …/abilities/zinn-seo/start-affiliate-job/run | the REST route's own per-item permission check | job: string (required), dry_run: boolean |
zinn-seo/start-ai-bulkzinn-seo-start-ai-bulk | Write SEO text for many pages with AI (Pro) Starts an AI bulk job (task) over post types (types), only where text is missing (missing), with a dry run or straight acceptance (accept). | Pro edition | POST …/abilities/zinn-seo/start-ai-bulk/run | the REST route's own per-item permission check | task: string (required), types: array, missing: boolean, dry_run: boolean, accept: boolean |
zinn-seo/start-seo-testzinn-seo-start-seo-test | Start an SEO title test (Pro) Starts a test of new titles or descriptions on pages (name, pages, phases, hours, keep). | Pro edition | POST …/abilities/zinn-seo/start-seo-test/run | the REST route's own per-item permission check | name: string (required), pages: array (required), phases: array, hours: integer, keep: string, dry_run: boolean |
zinn-seo/start-trialzinn-seo-start-trial | Start the free Pro trial Starts the 14-day Zinn® SEO Pro trial for this site (no payment needed). | Free edition | POST …/abilities/zinn-seo/start-trial/run | manage_options (the REST route's own check) | dry_run: boolean |
zinn-seo/stop-importzinn-seo-stop-import | Stop a move Stops a running copy or comparison. | Free edition | POST …/abilities/zinn-seo/stop-import/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/stop-local-trackingzinn-seo-stop-local-tracking | Stop local rank tracking (Pro) Stops tracking local rankings. | Pro edition | POST …/abilities/zinn-seo/stop-local-tracking/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/stop-research-watchzinn-seo-stop-research-watch | Stop repeating research Stops a repeating run. | Free edition | POST …/abilities/zinn-seo/stop-research-watch/run | the REST route's own per-item permission check | id: string (required), dry_run: boolean |
zinn-seo/stop-seo-testzinn-seo-stop-seo-test | Stop an SEO test (Pro) Stops a test and keeps version A or B (keep). | Pro edition | POST …/abilities/zinn-seo/stop-seo-test/run | the REST route's own per-item permission check | id: string (required), keep: A|B, dry_run: boolean |
zinn-seo/submit-pageszinn-seo-submit-pages | Send pages to search engines Sends this site's addresses to IndexNow, Bing's URL API or Google's Indexing API (job and livestream pages only); each answer is logged. | Free edition | POST …/abilities/zinn-seo/submit-pages/run | the REST route's own per-item permission check | urls: array (required), engines: array (required), dry_run: boolean |
zinn-seo/submit-sitemapszinn-seo-submit-sitemaps | Submit the sitemaps Submits the site's sitemaps to Search Console. | Free edition | POST …/abilities/zinn-seo/submit-sitemaps/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/submit-to-bingzinn-seo-submit-to-bing | Submit to Bing Submits the sitemaps and recent addresses to Bing. | Free edition | POST …/abilities/zinn-seo/submit-to-bing/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/submit-urlszinn-seo-submit-urls | Ask search engines to index addresses Sends addresses (urls) to IndexNow and, where allowed, Google. | Free edition | POST …/abilities/zinn-seo/submit-urls/run | the REST route's own per-item permission check | urls: array (required), dry_run: boolean |
zinn-seo/suggest-ai-redirectszinn-seo-suggest-ai-redirects | Suggest redirects with AI (Pro) Matches missing addresses (kind notfound) or an old site's addresses (kind move: sitemap or addresses) to the best page here. | Pro edition | POST …/abilities/zinn-seo/suggest-ai-redirects/run | the REST route's own per-item permission check | kind: notfound|move (required), sitemap: string, addresses: array, dry_run: boolean |
zinn-seo/suggest-linkszinn-seo-suggest-links | Suggest internal links Suggests pages a page (or its draft content) should link to, with anchor text. | Free edition | POST …/abilities/zinn-seo/suggest-links/run | the REST route's own per-item permission check | id: string (required), content: string, dry_run: boolean |
zinn-seo/suggest-links-between-siteszinn-seo-suggest-links-between-sites | Suggest links to your other sites (Agency) Suggests pages on the owner's other sites one post could link to, with the words in the post to link from. | Pro edition | GET …/abilities/zinn-seo/suggest-links-between-sites/run | the REST route's own per-item permission check | post: string (required) |
zinn-seo/suggest-semantic-linkszinn-seo-suggest-semantic-links | Suggest links by meaning (Pro) Suggests pages close in meaning to one page (or its draft content). | Pro edition | POST …/abilities/zinn-seo/suggest-semantic-links/run | the REST route's own per-item permission check | id: string (required), content: string, dry_run: boolean |
zinn-seo/switch-off-old-pluginzinn-seo-switch-off-old-plugin | Switch off the old SEO plugin Deactivates the old SEO plugin after a clean comparison. It can be undone. | Free edition | POST …/abilities/zinn-seo/switch-off-old-plugin/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/sync-noticeszinn-seo-sync-notices | Fetch new notices Fetches new notices from the Zinn® account now. | Free edition | POST …/abilities/zinn-seo/sync-notices/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/sync-report-sheetzinn-seo-sync-report-sheet | Copy the report to its sheet now (Agency) Writes the latest report into its connected Google Sheet or Drive folder now. | Pro edition | POST …/abilities/zinn-seo/sync-report-sheet/run | the REST route's own per-item permission check | id: string (required), dry_run: boolean |
zinn-seo/test-alert-channelzinn-seo-test-alert-channel | Send a test alert (Agency) Sends a test message to one channel (index) and says whether it arrived. | Pro edition | POST …/abilities/zinn-seo/test-alert-channel/run | the REST route's own per-item permission check | index: integer (required), dry_run: boolean |
zinn-seo/test-redirectzinn-seo-test-redirect | Test an address Says which redirect an address (url) meets and where it ends. | Free edition | GET …/abilities/zinn-seo/test-redirect/run | the REST route's own per-item permission check | url: string (required) |
zinn-seo/test-robots-txtzinn-seo-test-robots-txt | Test robots.txt Says whether a crawler (agent) may fetch an address (url), with the saved or draft rules. | Free edition | POST …/abilities/zinn-seo/test-robots-txt/run | the REST route's own per-item permission check | url: string (required), agent: string, custom: string, dry_run: boolean |
zinn-seo/track-keyword-listzinn-seo-track-keyword-list | Track a keyword list's rankings Adds every phrase of one keyword list to the phrases whose rankings are tracked (a paid check on the site owner's Zinn® credits); none already tracked is lost. | Free edition | POST …/abilities/zinn-seo/track-keyword-list/run | the REST route's own per-item permission check | id: string (required), dry_run: boolean |
zinn-seo/track-keywordszinn-seo-track-keywords | Track keywords (Pro) Adds keyword rows (rows) to rank tracking. | Pro edition | POST …/abilities/zinn-seo/track-keywords/run | the REST route's own per-item permission check | rows: array (required), dry_run: boolean |
zinn-seo/undo-bulk-batchzinn-seo-undo-bulk-batch | Undo a bulk change Puts back every value one batch changed. | Free edition | POST …/abilities/zinn-seo/undo-bulk-batch/run | the REST route's own per-item permission check | batch: string (required), dry_run: boolean |
zinn-seo/undo-conflict-fixzinn-seo-undo-conflict-fix | Undo a conflict fix Puts back what one conflict fix changed (id). | Free edition | POST …/abilities/zinn-seo/undo-conflict-fix/run | the REST route's own per-item permission check | id: string (required), dry_run: boolean |
zinn-seo/undo-generated-pageszinn-seo-undo-generated-pages | Undo the last page run (Agency) Moves every page the last spreadsheet run made to the trash. | Pro edition | POST …/abilities/zinn-seo/undo-generated-pages/run | publish_pages (the REST route's own check) | dry_run: boolean |
zinn-seo/undo-importzinn-seo-undo-import | Undo a move Puts back the values the move overwrote and switches the old plugin on again. | Free edition | POST …/abilities/zinn-seo/undo-import/run | the REST route's own per-item permission check | dry_run: boolean |
zinn-seo/update-affiliate-linkzinn-seo-update-affiliate-link | Change an affiliate link (Pro) Changes one affiliate link's destination, short address, label, redirect code or nofollow. | Pro edition | POST …/abilities/zinn-seo/update-affiliate-link/run | the REST route's own per-item permission check | id: string (required), target: string, slug: string, label: string, code: 301|302|307, nofollow: boolean, dry_run: boolean |
zinn-seo/update-alert-channelszinn-seo-update-alert-channels | Change the alert channels (Agency) Replaces the alert channels (channels: type, url or chat, label, on, important_only) and the e-mail switch (email). | Pro edition | POST …/abilities/zinn-seo/update-alert-channels/run | the REST route's own per-item permission check | channels: array, email: boolean, dry_run: boolean |
zinn-seo/update-autolinkszinn-seo-update-autolinks | Change automatic links (Pro) Replaces the automatic link rules (rules: phrase, target, limits). | Pro edition | POST …/abilities/zinn-seo/update-autolinks/run | the REST route's own per-item permission check | rules: array (required), dry_run: boolean |
zinn-seo/update-check-profilezinn-seo-update-check-profile | Change the site's check profile Changes the brand, category, market and how often scheduled checks run (cadence_days). | Free edition | POST …/abilities/zinn-seo/update-check-profile/run | the REST route's own per-item permission check | brand: string, category: string, market: string, cadence_days: integer, dry_run: boolean |
zinn-seo/update-content-ideazinn-seo-update-content-idea | Change an idea in the content plan (Pro) Changes one idea's working title, phrase, angle, kind, due date, keyword list, length or voice. | Pro edition | POST …/abilities/zinn-seo/update-content-idea/run | the REST route's own per-item permission check | id: string (required), title: string, phrase: string, angle: string, kind: string, due: string, kwlist: integer, words: 300|600|1000|1500|2000, voice: friendly|professional|expert|casual|persuasive|neutral, dry_run: boolean |
zinn-seo/update-custom-blockszinn-seo-update-custom-blocks | Change custom schema blocks (Pro) Replaces the site's own blocks (blocks: name, fields, schema type and mapping). | Pro edition | POST …/abilities/zinn-seo/update-custom-blocks/run | the REST route's own per-item permission check | blocks: array (required), dry_run: boolean |
zinn-seo/update-disavowzinn-seo-update-disavow | Change the disavow list (Pro) Replaces the domains and addresses to disavow (domains, urls). | Pro edition | POST …/abilities/zinn-seo/update-disavow/run | the REST route's own per-item permission check | domains: array, urls: array, dry_run: boolean |
zinn-seo/update-fieldszinn-seo-update-fields | Change a page's SEO fields Changes the SEO fields you send (fields: name to value) of one post or term; an empty value clears a field. Nothing is stored when one value is refused. | Free edition | POST …/abilities/zinn-seo/update-fields/run | the REST route's own per-item permission check | object: string (required), id: string (required), fields: object (required), dry_run: boolean |
zinn-seo/update-glossaryzinn-seo-update-glossary | Change the glossary (Pro) Replaces the glossary terms (terms: term and definition). | Pro edition | POST …/abilities/zinn-seo/update-glossary/run | the REST route's own per-item permission check | terms: array (required), dry_run: boolean |
zinn-seo/update-keyword-listzinn-seo-update-keyword-list | Change a keyword list Changes one keyword list's label, colour or phrases. | Free edition | POST …/abilities/zinn-seo/update-keyword-list/run | the REST route's own per-item permission check | id: string (required), label: string, color: blue|green|amber|red|purple|teal|grey, phrases: array|string, dry_run: boolean |
zinn-seo/update-redirectzinn-seo-update-redirect | Change a redirect Changes one redirect's source, target, code, group, note or whether it is on. | Free edition | POST …/abilities/zinn-seo/update-redirect/run | the REST route's own per-item permission check | id: string (required), source: string, target: string, code: 301|302|307|308|410|451, regex: boolean, enabled: boolean, group: string, note: string, position: integer, dry_run: boolean |
zinn-seo/update-report-settingszinn-seo-update-report-settings | Change the client report (Agency) Changes the scheduled client report (name, recipients, locale, sections, contact_name, cadence, send_email, narrative, active) and its brand. | Pro edition | POST …/abilities/zinn-seo/update-report-settings/run | the REST route's own per-item permission check | name: string, recipients: array, locale: string, sections: array, contact_name: string, cadence: string, send_email: boolean, narrative: boolean, active: boolean, brand: object, dry_run: boolean |
zinn-seo/update-research-watchzinn-seo-update-research-watch | Change repeating research Changes a repeating run (active, cadence_days, params). | Free edition | POST …/abilities/zinn-seo/update-research-watch/run | the REST route's own per-item permission check | id: string (required), active: boolean, cadence_days: 1|7|30, params: object, dry_run: boolean |
zinn-seo/update-robots-txtzinn-seo-update-robots-txt | Change robots.txt Stores the owner's own robots.txt rules (custom). | Free edition | POST …/abilities/zinn-seo/update-robots-txt/run | the REST route's own per-item permission check | custom: string (required), dry_run: boolean |
zinn-seo/update-roleszinn-seo-update-roles | Change a role's SEO permissions (Pro) Gives or takes SEO capabilities (caps: capability to true or false) of one role (role). Administrators only; the administrator role is never changed. | Pro edition | POST …/abilities/zinn-seo/update-roles/run | manage_options and promote_users (the REST route's own check) | role: string (required), caps: object (required), dry_run: boolean |
zinn-seo/update-schema-templateszinn-seo-update-schema-templates | Change custom schema types (Pro) Replaces the site's own structured data templates (templates). | Pro edition | POST …/abilities/zinn-seo/update-schema-templates/run | the REST route's own per-item permission check | templates: array (required), dry_run: boolean |
zinn-seo/update-server-ruleszinn-seo-update-server-rules | Change .htaccess rules (Pro) Saves new server rules (text) after a syntax check and a backup; the site is tested at once and the backup put back if it stops answering. accept_warnings saves despite warnings. | Pro edition | POST …/abilities/zinn-seo/update-server-rules/run | the REST route's own per-item permission check | text: string (required), accept_warnings: boolean, dry_run: boolean |
zinn-seo/update-settingszinn-seo-update-settings | Change the SEO settings Changes the settings you send (settings: key to value) and keeps the rest. Every value is checked as on the settings screen; nothing is stored when one is refused. The no-trace switch has its own tool. | Free edition | POST …/abilities/zinn-seo/update-settings/run | the REST route's own per-item permission check | settings: object (required), dry_run: boolean |
zinn-seo/update-taskzinn-seo-update-task | Change an SEO task (Agency) Changes a task's title, detail, url, assignee or due date. | Pro edition | POST …/abilities/zinn-seo/update-task/run | the REST route's own per-item permission check | id: string (required), title: string, detail: string, url: string, assignee: integer, due: string, dry_run: boolean |
zinn-seo/update-white-labelzinn-seo-update-white-label | Change the white label (Agency) Changes the agency brand (enabled, name, menu, description, author, author_url, help_url, logo_id, colour, hide_zinn) and the client view (client_screens, client_edit, agency_users). | Pro edition | POST …/abilities/zinn-seo/update-white-label/run | manage_options (the REST route's own check) | enabled: boolean, name: string, menu: string, description: string, author: string, author_url: string, help_url: string, logo_id: integer, colour: string, hide_zinn: boolean, client_screens: array, client_edit: boolean, agency_users: array, dry_run: boolean |
zinn-seo/upload-redirect-listzinn-seo-upload-redirect-list | Send a redirect list Keeps a CSV or .htaccess list of redirects (content) for the import. | Free edition | POST …/abilities/zinn-seo/upload-redirect-list/run | the REST route's own per-item permission check | content: string, dry_run: boolean |
zinn-seo/validate-schemazinn-seo-validate-schema | Validate structured data Validates a page's graph (post) or pasted JSON-LD (json) against schema.org and Google's rich result rules. | Free edition | POST …/abilities/zinn-seo/validate-schema/run | edit_posts (the REST route's own check) | post: integer, json: string, dry_run: boolean |
zinn-seo/watch-mentionszinn-seo-watch-mentions | Watch a page for copies (Pro) Watches one page (post) for copies of its content on other sites, on the site owner's Zinn® credits. | Pro edition | POST …/abilities/zinn-seo/watch-mentions/run | the REST route's own per-item permission check | post: integer (required), dry_run: boolean |
zinn-seo/watch-research-toolzinn-seo-watch-research-tool | Repeat a research tool Runs a tool (tool, params) again every 1, 7 or 30 days (every), on credits. | Free edition | POST …/abilities/zinn-seo/watch-research-tool/run | the REST route's own per-item permission check | params: object (required), tool: string (required), every: 1|7|30, dry_run: boolean |
zinn-seo/write-content-briefzinn-seo-write-content-brief | Plan a page with an AI brief (Pro) Writes a content brief for a topic (step write), then a draft from it (step draft, with brief and post type). | Pro edition | POST …/abilities/zinn-seo/write-content-brief/run | the REST route's own per-item permission check | topic: string (required), step: write|draft, brief: object, type: string, dry_run: boolean |
zinn-seo/write-ctr-titlezinn-seo-write-ctr-title | Write a title that wins more clicks (Pro) Writes a new title and description for a page (post_id) from its search queries (step write), or starts a test of them (step test). | Pro edition | POST …/abilities/zinn-seo/write-ctr-title/run | the REST route's own per-item permission check | post_id: integer (required), step: write|test, title: string, desc: string, queries: array, impressions: integer, ctr: number, position: number, dry_run: boolean |
zinn-seo/write-faq-answerszinn-seo-write-faq-answers | Answer questions with AI (Pro) Writes answers to questions (questions) people ask about a phrase (phrase). | Pro edition | POST …/abilities/zinn-seo/write-faq-answers/run | edit_posts (the REST route's own check) | questions: array (required), phrase: string, dry_run: boolean |
zinn-seo/write-review-replieszinn-seo-write-review-replies | Draft replies to reviews with AI (Pro) Drafts replies to reviews (reviews) in the business's voice (business). | Pro edition | POST …/abilities/zinn-seo/write-review-replies/run | edit_posts (the REST route's own check) | reviews: array (required), business: string, dry_run: boolean |
zinn-seo/write-social-textzinn-seo-write-social-text | Write social sharing text with AI (Pro) Writes the Facebook and X title and description of one post. | Pro edition | POST …/abilities/zinn-seo/write-social-text/run | edit_post and upload_files (the REST route's own check) | id: string (required), dry_run: boolean |
WP-CLI commands
Run these on the server with WP-CLI. Each command checks the same permissions as the plugin's screens; the examples are taken from the plugin's own help text.
| Command | What it does | Edition |
|---|---|---|
wp zinn-seo ai accept<task> <id> | Accept a suggestion (as the AI wrote it). | Free edition |
wp zinn-seo ai bulk<task> [--dry-run] [--types=<list>] [--all] [--accept] | Pro: write suggestions for the whole site (or count them first) and run the job to the end. | Free edition |
wp zinn-seo ai queue<task> [--after=<id>] | The review queue of a task. | Free edition |
wp zinn-seo ai run<task> [<id>...] [--options=<json>] | Run a task on items now. The answers are kept as suggestions; nothing changes until accepted. | Free edition |
wp zinn-seo ai statuswp zinn-seo ai status | How AI is set up: own key or Zinn® credits, and the tasks. | Free edition |
wp zinn-seo analysis score[<id>...] [--all] | Score and store posts: the given IDs, or every post with --all (runs the resumable job). | Free edition |
wp zinn-seo analysis show<id> [--format=<format>] | Analyse one post and print every check. | Free edition |
wp zinn-seo bulk apply[--object=<object>] [--type=<type>] [--status=<status>] [--search=<text>] [--missing=<field>] [--term=<id>] [--yes] | Change fields on every post or term matching the filters (runs here, to the end). | Free edition |
wp zinn-seo bulk history[--format=<format>] | List the recent changes. | Free edition |
wp zinn-seo bulk undo<batch> | Undo a change (fields edited since are left as they are). | Free edition |
wp zinn-seo commerce<action> | Check every product, or write the feed to a file. | Pro edition |
wp zinn-seo csv export<file> [--kinds=<kinds>] | Export to a file. | Pro edition |
wp zinn-seo csv import<file> [--yes] | Import a file: without --yes, only report what would change. | Pro edition |
wp zinn-seo features[--format=<format>] | List the features this build has. | Free edition |
wp zinn-seo field get<object> <id> [<field>] | Print a field, or every field, of a post or term. | Free edition |
wp zinn-seo field set<object> <id> <field> <value> | Change a field of a post or term. The value is read as JSON when it parses. | Free edition |
wp zinn-seo import accept | Accept the listed differences, which opens the switch-off. | Free edition |
wp zinn-seo import begin<source> | Start reading the other plugin's data side by side without copying it. | Free edition |
wp zinn-seo import check[--keep] [--resume] | Compare every page as the other plugin renders it with what Zinn® SEO would print. | Free edition |
wp zinn-seo import copy[<source>] [--overwrite] [--resume] | Copy the other plugin's data in (resumes a copy that was stopped with --resume). | Free edition |
wp zinn-seo import count<source> [--overwrite] | Count what a copy would bring over. Nothing is written. | Free edition |
wp zinn-seo import differences | The differences the comparison found (the first 500), as JSON. | Free edition |
wp zinn-seo import sources | The SEO plugins found on this site. | Free edition |
wp zinn-seo import status | The state of the move, as JSON. | Free edition |
wp zinn-seo import stop | Stop reading side by side and put the settings back (before anything was copied). | Free edition |
wp zinn-seo import switch[--yes] | Switch the other plugin off (only after the comparison passed), then read the pages again; a page that says something else switches it back on. | Free edition |
wp zinn-seo import undo[--yes] | Undo the move: the other plugin back on, copied values and settings removed. | Free edition |
wp zinn-seo info[--format=<format>] | Show the version, plan, modules and setup state. | Free edition |
wp zinn-seo integrations<action> [<id>] | The plugins Zinn® SEO works with on this site. | Free edition |
wp zinn-seo jobs list[--format=<format>] | List the jobs. | Free edition |
wp zinn-seo jobs run<id> [--restart] | Run a job to the end in this process (starts it when it is not running). | Free edition |
wp zinn-seo links build[--resume] | Build the whole index (in this process; resumes where a killed build stopped with --resume). | Free edition |
wp zinn-seo links report<kind> | Pages nothing links to (orphan) or that link nowhere (deadend). | Free edition |
wp zinn-seo links status | Totals: links, orphans, dead ends. | Free edition |
wp zinn-seo modules disable<id> | Switch a module off. | Free edition |
wp zinn-seo modules enable<id> | Switch a module on. | Free edition |
wp zinn-seo modules list[--format=<format>] | List the modules. | Free edition |
wp zinn-seo network<action> [<value>] | The network from a shell. | Pro edition |
wp zinn-seo notrace off | Switch it off (lists what changes). | Free edition |
wp zinn-seo notrace on | Switch it on (lists what changes). | Free edition |
wp zinn-seo notrace status | Show whether it is on. | Free edition |
wp zinn-seo redirects add<source> [<target>] [--code=<code>] [--regex] [--group=<group>] [--replace] | Add (or, with --replace, replace) a redirect. | Free edition |
wp zinn-seo redirects check[--targets] [--fix] | Find chains and loops (and, with --targets, targets that are missing); --fix fixes them. | Free edition |
wp zinn-seo redirects delete<id>... | Delete redirects by id. | Free edition |
wp zinn-seo redirects export<file> | Export every redirect as a spreadsheet. | Free edition |
wp zinn-seo redirects import<source> [--apply] | Import redirects (dry run unless --apply). | Free edition |
wp zinn-seo redirects list[--search=<text>] [--problem=<problem>] [--per=<n>] [--format=<format>] | List redirects (newest first). | Free edition |
wp zinn-seo redirects rebuild | Rewrite the redirect index visitors' requests read. | Free edition |
wp zinn-seo redirects test<url> | What a visitor asking for an address gets. | Free edition |
wp zinn-seo schema graph<post>wp zinn-seo schema graph 42 | Print the graph a page prints. | Free edition |
wp zinn-seo schema validate[<post>] [--file=<file>] [--format=<format>]wp zinn-seo schema validate 42wp zinn-seo schema validate --file=page.html --format=json | Validate a page's structured data offline (schema.org and Google's rich-result rules). | Free edition |
wp zinn-seo settings export | Print the settings export (JSON) for another site. | Free edition |
wp zinn-seo settings get[<key>] | Print one setting, or all of them. | Free edition |
wp zinn-seo settings import<file> [--yes] | Import a settings export. Without --yes it only lists what would change. | Free edition |
wp zinn-seo settings set<key> <value> | Change one setting. The value is read as JSON when it parses (true, 3, ["a"]). | Free edition |
wp zinn-seo setup reset | Start the setup again from the first step. | Free edition |
wp zinn-seo setup status | Show each step and what the setup found. | Free edition |
wp zinn-seo sitemaps build[--wait] [--quiet-progress]wp zinn-seo sitemaps buildwp zinn-seo sitemaps build --wait | Build every sitemap file now (runs here, to the end), then any page changed meanwhile. | Free edition |
wp zinn-seo sitemaps files[--format=<format>] | Every sitemap file. | Free edition |
wp zinn-seo sitemaps status | The sitemap's health as JSON. | Free edition |
PHP functions
Functions themes and other plugins can call. Check function_exists() first, so your code keeps working while the plugin is inactive.
| Function | What it does | Edition |
|---|---|---|
zinn_seo(): \ZinnDigital\ZinnSEO\Api | The Zinn® SEO API (see ZinnDigital\ZinnSEO\Api). | Free edition |
zinn_seo_get_field( string $field, ?int $post_id = null ) | A post's SEO field (shortcut for templates). | Free edition |
zinn_seo_site_facts( string $language = '' ): array | Who runs the site, how to reach them and which pages matter, as short plain texts for an assistant to answer from: the same facts the page's structured data and llms.txt give. | Free edition |
zinn_seo_translatable_texts(): array | The site-wide texts that should exist in each language: title and description patterns, the llms.txt summary, the description of the organisation. Answer with a translation on the `zinn_seo_template` filter (patterns) and the `zinn_seo_site_text` filter (the others). | Free edition |
zinn_seo_translation_fields( string $kind = 'post' ): array | The SEO fields a translation plugin translates with a post or a term, and the per-page settings a new translation takes from its original unchanged (Tranzly asks this). | Free edition |
Actions and filters
Every hook the plugin offers, with the description from its source code. Filters change a value; actions let you run code at a moment; entry points are actions you fire to ask the plugin to do something.
| Hook | Kind | What it does | Parameters | Edition |
|---|---|---|---|---|
zinn_seo_abtest_switched | Action | A test switched wording: caches holding the pages must let go (Zinn® Cache, the edge). | none | Pro edition |
zinn_seo_actor | Filter | Filters who is making a change through the REST API (user or agent). | string $actor | Free edition |
zinn_seo_admin_data | Filter | Filters the data the admin app boots with. | none | Free edition |
zinn_seo_agency_plan | Filter | Filters whether the Agency-plan features run (the plan decides; tests set it). | bool $agency | Free edition |
zinn_seo_ai_accepted | Action | Fires after a person accepted an AI suggestion. | int $id, string $task | Free edition |
zinn_seo_ai_available | Filter | Filters whether AI writing is available on this site (the AI module answers true when a key or Zinn® credits can pay for it). The editor and the blocks screen show AI buttons only when it is true. | bool $available Whether AI is available. Default false. | Free edition |
zinn_seo_ai_crawlers | Filter | Filters the AI crawlers the policy screen lists (id => token, company, kind, docs). | none | Free edition |
zinn_seo_ai_draft_block | Filter | Filters a custom block drafted from a sentence: return a definition (title, fields, template, schema) or a WP_Error. The AI features answer here when an AI connection (your own key or Zinn® credits) is set up. | string $sentence | Pro edition |
zinn_seo_ai_rejected | Action | Fires after a suggestion was thrown away unused (a drawn image is deleted then). | int $id, string $task | Free edition |
zinn_seo_ai_spent | Action | Fires after AI was paid with Zinn® credits. | int $charged, int $balance, string $purpose | Free edition |
zinn_seo_ai_tasks | Action | Fires when the AI tasks are registered: the Pro module adds its own here. | none | Free edition |
zinn_seo_alert | Action | Fires for every notice the site's rule says to send, so other channels (Slack, Teams, Discord, Telegram, a webhook) get the same alerts as e-mail: ONE rule set. | none | Free edition |
zinn_seo_alert_mail | Filter | Filters whether a due notice is e-mailed (the alert channels may take e-mail off). | bool $mail | Free edition |
zinn_seo_analysis | Filter | Filters an analysis (other modules add groups: link suggestions, entities, AI preview). | Doc $doc, \WP_Post $copy | Free edition |
zinn_seo_analysis_input | Filter | Filters what the checks know about a page before they run. | \WP_Post $copy | Free edition |
zinn_seo_analysis_language | Filter | Filters the language a post is analysed in. | string $locale, int $post_id | Free edition |
zinn_seo_analysis_phrase_limit | Filter | Filters how many focus phrases per post the analysis measures (0: no limit; Pro lifts it). | int $limit | Free edition |
zinn_seo_analysis_stored | Action | Fires after a post's analysis was stored. | int $post_id | Free edition |
zinn_seo_analysis_types | Filter | Filters the post types the content analysis runs on. | none | Free edition |
zinn_seo_authority_competitors | Filter | Filters whether the authority screen offers competitor tracking (Zinn® SEO Pro answers true). | bool $can Whether competitors can be tracked. Default false. | Free edition |
zinn_seo_authority_sources | Filter | Filters the SEO data sources this site can connect (Pro adds the paid-account vendors). | none | Free edition |
zinn_seo_backlink_spam_words | Filter | Filters the words that mark a link's text as spam. | none | Pro edition |
zinn_seo_block_css_inline_limit | Filter | Filters the most CSS the blocks print inline in one page (bytes; 0 = always files). | int $limit | Free edition |
zinn_seo_block_lookup | Filter | Filters a block the list does not hold yet (Pro loads a custom block's definition only when a page uses it, so other pages read nothing). | Block|null $found, string $name | Free edition |
zinn_seo_block_scan | Filter | Filters the SEO blocks found in a post. Each adapter adds what its builder stores (block markup, shortcodes, Elementor data). | \WP_Post $post | Free edition |
zinn_seo_block_values | Filter | Filters a block's cleaned values before it renders (every builder). | string $name, Render_Context $ctx | Free edition |
zinn_seo_blocks | Filter | Filters the SEO blocks. Each item is a Block; Pro adds its blocks and the site's custom blocks here, and they appear in every builder with no more code. | none | Free edition |
zinn_seo_brief_searches | Filter | Filters the related searches a brief is planned from: the keyword lists (zs-731) add the phrases of the list the person chose (`$opts['kwlist']`). | string $topic | Pro edition |
zinn_seo_card_font | Filter | Filters the font file used for a word the shipped fonts cannot draw. | string|null $font, string $word | Pro edition |
zinn_seo_carousel_kind | Filter | Filters what a post is in an archive's carousel ('' = not in it). | string $kind, \WP_Post $post | Free edition |
zinn_seo_cdn_changed | Action | Fires after the Zinn® CDN went on, off or was purged, for a cache this plugin does not know. | none | Free edition |
zinn_seo_cdn_serving | Filter | Filters whether the CDN host serves the site's files (true/false skips the request). | bool|null $serving, string $host | Free edition |
zinn_seo_cli_defer | Filter | Filters whether a WP-CLI command starts Zinn® SEO after WordPress has loaded. | bool $defer | Free edition |
zinn_seo_cli_lean | Filter | Filters whether this WP-CLI command starts without Zinn® SEO's modules. | bool $lean | Free edition |
zinn_seo_connect_site_url | Filter | Filters the address this site connects to a Zinn® account as (its home address). | string $url | Free edition |
zinn_seo_connected | Action | Fires when the site has been connected to a Zinn® account. | none | Free edition |
zinn_seo_counter_ceiling | Filter | Filters how many rows one kind of counter keeps (least recently seen are removed first). | int $ceiling, string $kind | Free edition |
zinn_seo_crawlers_data | Filter | Filters the crawler screen's data (the Pro hit log adds `hits`). | none | Free edition |
zinn_seo_credit_news | Action | Fires when Zinn® has news about the account's credit: the kept balance is stale. | none | Free edition |
zinn_seo_credit_resumed | Action | Fires when credit came back and paused checks are running again. | none | Free edition |
zinn_seo_credit_state | Action | Fires when the account's credit state changes (held, empty, short, low, ok). | string $state, string $before | Free edition |
zinn_seo_disconnected | Action | Fires when the site has been disconnected from its Zinn® account. | none | Free edition |
zinn_seo_editor_data | Filter | Filters the data the block editor's panels boot with (the schema module adds its choices). ⛔ Printed into the page: nothing secret. | none | Free edition |
zinn_seo_field_placeholders | Filter | Filters the template results a page's empty fields show as placeholders. | Context $c | Free edition |
zinn_seo_field_saved | Action | Fires after an SEO field changed (the history module records it). | string $kind, int $id, string $name, mixed $before, mixed $clean, string $actor | Free edition |
zinn_seo_fixit_actions | Action | Fires so other modules register their one-click fixes (`Fixit::action()`). | none | Free edition |
zinn_seo_fixit_fixed | Action | Fires when a one-click fix ran (the client report's "work done" counts it). | string $id | Free edition |
zinn_seo_fixit_sources | Filter | Filters the sources of the Fix-it inbox: callables returning lists of issues (`id`, `area`, `priority` 1-100, `title`, `detail`, `count`, `minutes`, `fix`). | none | Free edition |
zinn_seo_form_fields | Filter | Filters the per-page fields the classic editor and term forms show (the social module adds its own). | none | Free edition |
zinn_seo_frontend_prefix | Filter | Filters the class prefix the SEO blocks print (default `zd`, shared with the other Zinn® plugins so a page carries one neutral prefix). | string $prefix | Free edition |
zinn_seo_fs_loaded | Action | Fires once the licensing SDK has started, before the plugin itself loads. | none | Free edition |
zinn_seo_google_changed | Action | The site now reads another Search Console or Analytics property: kept answers are gone. | none | Free edition |
zinn_seo_google_indexing_sent | Action | Google's Indexing API answered one address (the indexing console keeps every answer). | string $url, string $kind, bool $ok, string $note | Free edition |
zinn_seo_graph | Filter | Filters the page's JSON-LD nodes (one graph per page). Keys are local names; values are schema.org nodes with an `@id` when anything refers to them. | Context $c | Free edition |
zinn_seo_guide_base | Filter | Filters the address of the guide's site (a white-label build points it at its own). | string $base | Free edition |
zinn_seo_guide_slugs | Filter | Filters the guide pages screens link to: screen or section id => slug under the guide. An add-on adds its own screens here. | none | Free edition |
zinn_seo_head_tags | Filter | Filters the tags the head block prints (one complete tag per entry). The social module adds Open Graph and X here. | Context $c | Free edition |
zinn_seo_honeypot_applies | Filter | Filters whether the honeypot checks a comment (a plugin with its own comment form can opt out). | bool $applies | Free edition |
zinn_seo_import_begun | Action | Fires when a move from another SEO plugin begins (its settings are in, the head reads its data side by side). | string $id, array $state | Free edition |
zinn_seo_import_checked | Action | Fires when the side-by-side comparison has finished. | array $check | Free edition |
zinn_seo_import_finished | Action | Fires when a count or a copy from another SEO plugin has finished. | string $source, bool $dry, array $counts | Free edition |
zinn_seo_import_sources | Filter | Filters the import sources (id => a Source). Another plugin can add its own reader. | none | Free edition |
zinn_seo_import_switched | Action | Fires when the switch-off was proven on the rendered pages, or rolled back. | bool $ok, array $state | Free edition |
zinn_seo_inbound_links | Filter | Filters the number of internal links pointing at a post (the links module answers). | int|null $count, int $post_id | Free edition |
zinn_seo_inclusive_terms | Filter | Filters the inclusive-language terms of a language: lists of `{t: "term|form", alt: "suggestion", cat: "…", level: "bad"|"ok"}`. | string $base | Free edition |
zinn_seo_index_check_types | Filter | Filters the content types "check every page" walks. | none | Free edition |
zinn_seo_indexing_allowed | Filter | Filters whether an address may be sent automatically (the indexing console's wildcard rules say no to the pages the owner keeps out). | bool $allowed, string $url | Free edition |
zinn_seo_indexing_api_eligible | Filter | Filters whether a post's address is sent to Google's Indexing API. Return true only for pages carrying JobPosting or a BroadcastEvent in a VideoObject (Google's rule). | bool $yes, \WP_Post $post | Free edition |
zinn_seo_indexnow_endpoint | Filter | Filters the IndexNow endpoint (tests point it at a local mock). | string $endpoint | Free edition |
zinn_seo_indexnow_refusal | Filter | Filters why this site does not send to IndexNow ('' = it sends). A site reached through a proxy under another name can allow its own host; tests point a local site at a mock engine. | string $reason | Free edition |
zinn_seo_indexnow_sent | Action | IndexNow answered a batch (the indexing console keeps every address's answer). | int $code, string $message | Free edition |
zinn_seo_integrations | Filter | Filters the plugins Zinn® SEO works with. An add-on adds its own entry with an absolute `file` (its `integration.php`). | none | Free edition |
zinn_seo_is_pro | Filter | Filters whether the premium features run (the licensing SDK decides; tests set it). | bool $pro | Free edition |
zinn_seo_is_service_product | Filter | Filters whether a product is sold as a service (Woo Sell Services). | bool $service, \WC_Product $product | Pro edition |
zinn_seo_jobs_loopback | Filter | Filters whether the next step is chained by a loopback request. A site whose host or security plugin blocks requests to itself can turn it off: the watchdog then finishes every job, one step per run. | bool $loopback, string $id | Free edition |
zinn_seo_kit_data | Filter | Filters the admin shell's boot data. ⛔ Printed into the page: nothing secret. | none | Free edition |
zinn_seo_language_profile | Filter | Filters what the readability checks know about a language (add transition words, a passive-voice rule or a reading-ease formula for a language). | string $locale | Free edition |
zinn_seo_link_suggestion_limit | Filter | Filters how many outgoing link suggestions are shown (0: all; Pro lifts the limit). | int $limit | Free edition |
zinn_seo_link_suggestions | Filter | Filters the link suggestions sent to the editor (Pro adds `incoming`). | \WP_Post $post | Free edition |
zinn_seo_list_column | Filter | Filters the extra lines under a post's SEO scores in the post list (the links module adds its link counts). | string $extra, int $post_id | Free edition |
zinn_seo_list_filter | Action | Fires for an SEO list filter this module does not know (the links module's). | string $filter, \WP_Query $query | Free edition |
zinn_seo_list_filters | Filter | Filters the SEO filter's choices on post lists (the links module adds orphans). | none | Free edition |
zinn_seo_llms_item | Filter | Filters one page's line in llms.txt (the Pro Markdown version links its `.md`). | \WP_Post $post | Free edition |
zinn_seo_llms_sections | Filter | Filters the pages llms.txt lists, as sections (`title`, `posts`). | none | Free edition |
zinn_seo_loaded | Action | This action is documented below. | none | Free edition |
zinn_seo_locations_slug | Filter | Filters the address part location pages live under (`/locations/<name>/`). | string $slug | Pro edition |
zinn_seo_menu | Filter | Filters the admin menu entry (an agency's white label renames it and sets its icon). | none | Free edition |
zinn_seo_meta_fields | Filter | Filters the per-object SEO fields. A module adds its own here. | none | Free edition |
zinn_seo_module_roots | Filter | Filters the directories modules are read from. An add-on plugin can ship its own modules by adding its directory; the first directory is the free one, every later one is treated as premium (booted only under a licence). | none | Free edition |
zinn_seo_news_exclude | Filter | Filters whether a story is kept out of the Google News sitemap (the news module's per-story "keep out of Google News", zs-706). | bool $skip, \WP_Post $post | Pro edition |
zinn_seo_nginx_rules_file | Filter | Filters the Nginx rules file the editor may change (a host that includes a per-site file from the site's folder names it here). | string $file | Pro edition |
zinn_seo_notrace_changed | Action | Fires after the no-trace mode was switched. Modules redirect old addresses here. | bool $on, string $actor | Free edition |
zinn_seo_notrace_changes | Filter | Filters what a switch of the no-trace mode would change. Each module that prints a fingerprint adds a row: a label, the old and new value, and whether search engines should be told (a sitemap address). | bool $on | Free edition |
zinn_seo_offers_cap | Filter | How many times a week one person may see the same offer (default 3; at least 1). | int $cap | Free edition |
zinn_seo_offers_show | Filter | Whether offers may be shown to the current person (false hides every offer). | bool $show | Free edition |
zinn_seo_page_nodes | Filter | Filters the nodes a page adds to its graph besides its blocks: local key => node (`@page` = properties of the page node itself). | \WP_Post $post, string $url | Free edition |
zinn_seo_person | Filter | Filters a person's node (author, reviewer, fact-checker). | int $user_id | Free edition |
zinn_seo_product_node | Filter | Filters a product's node before it is printed (Zinn® SEO Pro adds sizes and colours as variants, delivery and returns). | \WC_Product $product, Context $c | Free edition |
zinn_seo_product_variants_limit | Filter | A product with variations as a group of variants. | \WC_Product_Variable $product | Pro edition |
zinn_seo_redirect_allowed | Filter | Filters whether a matched redirect answers this request. | bool $allowed, string $phase | Free edition |
zinn_seo_redirect_condition_ | Filter | A custom condition: return true for the visitors this rule is for. | bool $match, int $rule | Pro edition |
zinn_seo_redirect_conditions_changed | Action | Fires after a redirect's conditions changed (server and Cloudflare rules are rebuilt). | int $id | Pro edition |
zinn_seo_redirect_saved | Action | Fires after a redirect is created or changed. | none | Free edition |
zinn_seo_redirecting | Action | Fires just before a redirect is sent. | none | Free edition |
zinn_seo_redirects_changed | Action | Fires at the end of a request in which redirect rules changed. | none | Free edition |
zinn_seo_related_candidates | Filter | Filters related posts before they are chosen here (the internal-link engine's answer). Return post IDs to use them; null to let this block choose. | \WP_Post $post, int $count | Free edition |
zinn_seo_render_stamp | Filter | Filters what the cached rendering of a post is keyed on (an integration adds what its output depends on outside the post: its own tables, its settings). | string $stamp, \WP_Post $post | Free edition |
zinn_seo_rendered_content | Filter | Filters the rendered content of a post for the analysis, before WordPress's own filters (a page builder returns its own HTML here; Elementor does). | string $content, \WP_Post $post | Free edition |
zinn_seo_resolved | Filter | Filters what the head says about a page (the social module adds `social` and `discover`). | Context $c | Free edition |
zinn_seo_robots_groups | Filter | Filters extra groups, each a list of lines (the crawler module adds the blocked AI crawlers). | none | Free edition |
zinn_seo_robots_saved | Action | Fires after the owner's robots.txt rules changed. | string $custom, string $before | Free edition |
zinn_seo_robots_sitemaps | Filter | Filters the sitemap addresses robots.txt names. | none | Free edition |
zinn_seo_robots_star | Filter | Filters the lines of the `*` group after its rules (the crawler module adds the content-signal line). | none | Free edition |
zinn_seo_rollback_releases | Filter | Filters the releases a site can go back to (a test, or a mirror inside a company network, can offer its own). Each: version, url, sha256 (or '' with source dotorg), requires_wp, requires_php, published, source. | none | Free edition |
zinn_seo_served_llms | Action | Fires when llms.txt or llms-full.txt was requested (the AI-crawler log counts bots). | string $lang, bool $full | Free edition |
zinn_seo_served_robots | Action | Fires when robots.txt is requested (the AI-crawler log counts bots here). | none | Free edition |
zinn_seo_served_sitemap | Action | Fires when a sitemap address was requested (the AI-crawler log counts bots here). | string $path | Free edition |
zinn_seo_setting_locked | Filter | Filters whether a setting is fixed from outside this site (a multisite network that locked its group). A locked setting sent back unchanged is left alone; a different value is refused. | bool $locked, string $key | Free edition |
zinn_seo_settings_saved | Action | Fires after settings changed. | string $actor | Free edition |
zinn_seo_settings_schema | Filter | Filters the settings schema. A module adds its own keys here. | none | Free edition |
zinn_seo_setup_steps | Filter | Filters the setup steps. A module adds its own (id => {title, section}). | none | Free edition |
zinn_seo_site_facts | Filter | Filters the facts about the site handed to an assistant (Zinn® Chat). | string $lang | Free edition |
zinn_seo_site_graph_types | Filter | Filters the content types the site graph lists. | none | Free edition |
zinn_seo_site_text | Filter | Filters a site-wide text for a language. A translation plugin's integration answers with its translation. | string $text, string $key, string $lang | Free edition |
zinn_seo_site_texts_changed | Action | Fires when the translation of one of this plugin's site-wide texts (a title or description pattern, the llms.txt summary, the organisation's description) changed. | string $option | Free edition |
zinn_seo_sitemap_allowed_host | Filter | Filters whether sitemap addresses on another host are expected (a language served on its own domain). Others are reported on the health screen as a possible staging leak. | bool $allowed, string $host | Free edition |
zinn_seo_sitemap_changed | Action | Fires when the sitemap files changed (a full build finished, or a file was rebuilt). The Search Console module resubmits the sitemap here. | none | Free edition |
zinn_seo_sitemap_entry | Filter | Filters one post's sitemap entry. Return an empty array to leave the post out (the redirects module drops redirected posts here; the Pro sitemap adds videos). | \WP_Post $post | Free edition |
zinn_seo_sitemap_index_rows | Filter | Filters the index's rows (the Pro news sitemap adds its own). | none | Free edition |
zinn_seo_sitemap_namespaces | Filter | Filters the XML namespaces sitemap files declare (the Pro video sitemap adds `video`). | none | Free edition |
zinn_seo_sitemap_sources | Filter | Filters the sitemap's other sources: id (`[a-z0-9-]+`) => `read`, `entry` and optionally `count`. | none | Free edition |
zinn_seo_sitemap_submit | Filter | Lets the Bing module (and any other) send the sitemap too. | string $sitemap, string $why | Free edition |
zinn_seo_sitemap_term_entry | Filter | Filters one term's entry in the sitemap before it is written (add images, change the address). | array $entry The entry: loc, and lastmod or alternates when known., WP_Term $term The term. | Free edition |
zinn_seo_sitemap_units | Filter | Filters the sitemap's units: `home`, `post:<type>`, `tax:<taxonomy>`, `authors`, and `x:<id>` for each source of other addresses (see `zinn_seo_sitemap_sources`). | none | Free edition |
zinn_seo_social_image | Filter | Filters the image a page is shared with (Pro's generated cards answer here). | Context $c, string $source | Free edition |
zinn_seo_spam_scanned | Action | Fires when a hacked-site scan finishes (Pro e-mails new findings here). | none | Free edition |
zinn_seo_spam_watch | Filter | Filters whether new content is watched for spam as it is saved (Zinn® SEO Pro answers true). | bool $watch Whether the watch is on. Default false. | Free edition |
zinn_seo_spam_words | Filter | Filters the words that mark a link as spam in the hacked-site scan. | none | Free edition |
zinn_seo_template | Filter | Filters the record that applies to a context (the defaults with the site's changes on top). A translation plugin's integration answers with the title and description templates in the language being viewed. | string $key | Free edition |
zinn_seo_toolbox_products | Filter | The research toolbox's tools this edition runs (Pro adds its own). | none | Free edition |
zinn_seo_toolbox_run | Action | Fires after a research toolbox run was paid for. | string $product | Free edition |
zinn_seo_translate_fields_step | Filter | Filters one step of filling the SEO fields that existing translations lack. A translation plugin answers with `next` (the last original it did, or null when none is left), `originals`, `filled`, `failed` and `error` ('' or why it stopped). | int $after, int $limit | Free edition |
zinn_seo_translation_fields | Filter | Filters the SEO fields a translation plugin translates with a post or term, and the ones a new translation takes unchanged. | string $kind | Free edition |
zinn_seo_unanswered_404 | Action | Fires on a 404 no redirect answered (the 404 monitor counts it here). | string $uri | Free edition |
zinn_seo_value | Filter | Filters a value worked out for a page, once per page view: `title` and `desc` (plain text), `canonical` (an address) and `robots` (directive => true or a limit). An integration with another plugin answers here for the pages that plugin adds (a seller's store, a forum profile) and for its own rules (a filtered shop listing kept out of search results). Return the same type. | mixed $value, string $field, Context $c | Free edition |
zinn_seo_words_per_minute | Filter | Filters the reading speed, in words a minute (default 225: adults reading on screen). | int $wpm | Free edition |
zinn_seo_writer_drafted | Action | Fires when the writer has made a draft (the Pro planner marks its idea done). | int $id | Free edition |
zseo_kit_api_base | Filter | Filters the Zinn Digital® API base the support screens call. | string $base | Free edition |
zseo_kit_diagnostics | Filter | Filters the diagnostics before the site owner sees them. A plugin adds its own facts under `extra`. ⛔ This runs BEFORE the preview, never between the preview and the send. | none | Free edition |
zseo_kit_promotions | Filter | Filters the promotion registry before it is resolved. Add a row to promote another product: `id`, `kind` (hosting|marketplace|platform|plugin|bundle), `slot` (promo|cross-sell), and `url` or (for a plugin) `name`, `site`, `main_files`. | none | Free edition |
zseo_kit_tier | Filter | Filters the plan tier the kit reports for this plugin (tests and staging; the licence decides in production). | string $tier | Free edition |