- Most routes are scoped by project name, a few by project ID.
keywords.list,metrics.getand the rest take the project name exactly asprojects.listreturns it, which may be a subproject writtenParent[sub]Child. The bulk routes andmindshare.historytake the numericproject_idinstead. - A group is a project. Keyword calls them groups in its API and projects in its app, and
projects.listreturns both projects and subprojects, told apart by the[sub]marker in the id. - The project’s own auth key is never returned. Keyword includes a per-project
authkey in every project and keyword resource. The plugin removes it before a result reaches a caller, so it never lands in a log or a response body. - Adding a keyword that already exists returns the existing one rather than an error, so a bulk add is safe to repeat.
- A refresh spends the plan’s daily quota.
keywords.refreshqueues keywords for an on-demand check. The whole request is refused when the quota would be exceeded, and the answer names how many refreshes remain. - A full plan is a 402, not a rate limit. Keyword enforces the plan’s keyword allowance, and that failure is permanent, so it is not retried. A 429 is a throughput limit and is retried twice.
- Rank history is bounded.
rankChart.getrefuses a call covering more than 400,000 keyword-days, so a large group needs a shorterlimitor fewer keywords. - Paging.
keywords.listtakespageandper_pageand returns ametablock; Keyword does not publish a total-count cursor, so readmetafor what it does send. - Webhooks. The plugin does not receive Keyword webhooks; none are configured here.
- 23 typed API operations
Setup
1
Install
2
Add the plugin
corsair.ts
multiTenancy: true, scope calls with corsair.withTenant(id). See Quick start for KEK + Hub keys, and Multi-tenancy for account isolation.3
Choose authentication
- API Key (Recommended)
Store the Keyword API key before the first call: More: API Key
pnpm corsair setup --plugin=keyword --tenant=acme api_key=<your-key> (leave out --tenant without multiTenancy), or pass it as key in the plugin options. With Hub, each tenant enters their own key on the connect page. See API key auth.4
Connect a tenant
Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see Connect / OAuth.
Example API calls
List a project’s keywordsWhat’s next
API reference
Every
keyword.api.* operation with input and output types.Connect / OAuth
createLink, Hub delivery, and tenant connect flows.
Use with agents
Expose this plugin’s operations as MCP tools.