Push employees and roles in, pull competency scores out. This page documents authentication, the employees and scores endpoints, webhook events, and the response schema.
Every request is authenticated with an API key, scoped to your workspace. Pass it as a bearer token in the Authorization header.
Keys are environment-scoped. Use an rk_test_ key against the sandbox while you integrate, and an rk_live_ key once you're ready to sync real employees.
Two endpoints cover most integrations: push a person and their role in, and pull their current scores back out. Most teams call these from a nightly HR sync rather than in real time.
The :external_id in the employees endpoint is your own system's identifier, so a repeated call updates the same person rather than creating a duplicate. Role changes take effect the next morning's lesson.
The scores endpoint returns structured JSON per team, with each employee broken out individually.
| Field | Type | Description |
|---|---|---|
| knowledge_score | number | Share of factual questions answered correctly, 0–1. See Scoring below. |
| judgment_score | number | Ranked score on scenario questions, 0–1. |
| fast_wrong_rate | number | Share of answers given too quickly to have been read. |
| weakest_topic | string | The folder this team scores lowest on right now. |
| updated_at | string | ISO 8601 timestamp of the last completed lesson counted in this score. |
Subscribe to lesson.completed and threshold.breached to push results into your own systems instead of polling. Configure an endpoint URL from your workspace settings.
| Event | Fires when |
|---|---|
| lesson.completed | An employee finishes a daily lesson. |
| threshold.breached | A team's score drops below the alert level you configured. |
| employee.role_changed | A role change from your HR sync updates someone's curriculum. |
| Status | Meaning |
|---|---|
| 401 | Missing or invalid API key. |
| 403 | Key valid but not authorized for this team or employee. |
| 422 | Request body missing required fields, or role unrecognised. |
| 429 | Rate limit exceeded. See Rate limits below. |
| 500 | Something went wrong on our end. Safe to retry with backoff. |
Rate limits are scoped per API key and set during onboarding based on your expected volume. Every response includes standard X-RateLimit-Limit and X-RateLimit-Remaining headers so you can back off proactively.
Ask for API access and we'll issue sandbox and production keys for your workspace.
Yes, rk_test_ keys hit a sandbox with synthetic employees and teams, no real data required.
No. Most teams connect an HR system directly from the dashboard; the API is for teams who want to script it themselves or push results into another tool.
Python, JavaScript, and TypeScript SDKs are available; other languages can call the REST endpoint directly.
Get sandbox access and start syncing employees today.
Request API access →