Guide
Limits
Page sizes, plan history windows and request rates for the API and the MCP server.
Page sizes
| Where | Default | Maximum |
|---|---|---|
| REST list endpoints | 20 | 100. A larger limit is capped, not rejected |
GET /v1/events | 20 | 200 |
search_events | 15 | 50 |
search_people, search_companies | 20 | 100 |
resolve_search_terms | 20 | 50 |
get_company_aum_history | 24 | 120 |
Plan history windows
| Plan | Events | Profiles and organisations |
|---|---|---|
| Free | Leadership moves from the last 7 days | Not included |
| Starter | Every event type from the last 30 days | Not included |
| Professional and above | Full history | Included, not windowed |
GET /v1/events is held to your plan's window whatever publishedDateFrom asks for. When it has been, the response meta carries window with the number of days and the first date included. No meta.window means full history.
On Free and Starter, profile, organisation, report and workspace endpoints answer 403 with code: "plan_feature_locked", the locked feature and the plan that includes it under upgrade. Free accounts can't create an API key, so the MCP server starts on Starter.
search_events states the window in every response under applied.date_window, so an empty result is never mistaken for a quiet period.
Request rates
Chikara Intelligence doesn't apply a per-minute request limit to the API or the MCP server at present. Per-plan limits will be published on this page before they're enforced.
The one exception is the Free plan, which is limited to 60 event requests an hour across listing events, reading one event and searching them. Past that the API answers 429.
Build for them now. Treat a 429 as a signal to wait and retry with exponential backoff, and keep concurrent requests to a handful per token.
async function get(url, attempt = 0) {
const res = await fetch(url, {
headers: { Authorization: `Bearer ${process.env.CHIKARA_API_TOKEN}` }
});
if (res.status === 429 && attempt < 5) {
await new Promise((r) => setTimeout(r, 2 ** attempt * 500));
return get(url, attempt + 1);
}
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
return res.json();
}
const { success } = await get("https://api.chikaraintel.com/v1/events?eventType=move&limit=20");
console.log(success.length);Fair use
The Terms cover acceptable use, including not working around published limits. If a workload needs more than a handful of concurrent requests, book a call and we'll size it with you.
Related
- GuideAuthenticationOne kind of token works for both the MCP server and the REST API. Sign in with OAuth where your client supports it, or create an API key.
- GuidePaginationPage through list endpoints with page and limit, and stop when a page comes back short.
- GuideErrorsStatus codes, the error body, and the cases that need handling in code.