API keys
Keys are self-serve and belong to the person who creates them — no admin approval, no elevated scopes. There are two kinds: an organization member's key and a candidate's own key.
Last updated 17 Oct 2026
Where
- Organization members (recruiter, lead, admin, billing, interviewer) manage
rk_keys on /account → Organisation API keys (reachable from the user chip in any portal's top bar). They reach/api/v1/recruiter/…,/api/v1/interviewer/…and the common endpoints, and the/api/mcp/recruiterand/api/mcp/interviewerservers. - Candidates manage
rkc_keys in their account settings, /account → Candidate API keys. A candidate belongs to no organization, so the key belongs to the profile it was created on and to nothing else. It reaches/api/v1/candidate/…,/api/mcp/candidateand/api/a2a/candidateonly — every organization endpoint refuses it with403, and the candidate endpoints refuse an organization's key the same way. A profile holds at most ten live keys, and keys are created and revoked signed in: a key never mints another.
How they work
- Keys look like
rk_p_…(an organization member's) orrkc_p_…(a candidate's). The full value is shown once at creation — copy it then. - We store only a display prefix and a sha256 hash. We can never show you the full key again.
- Lists show each key's name, prefix, scope, created date and last-used time.
- Revoke instantly — a revoked key is rejected with
401on the next call.
One key, one organization (organization members)
- A key is bound to the organization you were acting in when you created it, and it can only ever read and write that organization's data.
- Belong to several organizations? Switch organization first, then create a key there — one key per organization. There is no header or parameter that switches tenants mid-request.
- Ask
GET /api/v1/me/organizationswhich organization a key is acting in, and what else the account can reach. - Sending
X-Organization(id or slug) cross-checks the key: a mismatch returns404, so a misrouted script fails instead of writing to the wrong place.
Role scope (least privilege)
- When you create a key, you pick which of your own roles it acts as — a subset, never more.
- Effective roles on a request are your live roles ∩ the key's scope. A key scoped to interviewer gets
403on the recruiter endpoints even if you are also a recruiter. An organization's key never carries the candidate role: a candidate's key is their own, above. - Scope can only ever narrow access. Lose a role and any key scoped to it stops reaching those endpoints.
- Signing in with your session (the docs try-it console) always carries your full roles — scoping applies to keys only.
Treat a key like a password. Anyone holding it acts as you, within your access. Rotate by creating a new key and revoking the old one.