Employee training with a complete public API.

Author courses, assign them to people or groups, and track completion — in the dashboard, or entirely over REST. Scoped keys, an OpenAPI 3.1 spec, a generated TypeScript client, and signed webhooks are on every plan, including free.

Free for up to 10 people · no card required · 60 req/min

Shell
export TALENT_API="https://your-workspace.example/api/v1"
export TALENT_KEY="tlk_live_…"

# Publish a course
curl -X POST "$TALENT_API/courses/$COURSE_ID/publish" \
  -H "Authorization: Bearer $TALENT_KEY"

# Assign it, with a due date
curl -X POST "$TALENT_API/enrollments" \
  -H "Authorization: Bearer $TALENT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "course_id": "b6f0c1e2-3a4b-4c5d-8e9f-0a1b2c3d4e5f",
    "user_id": "4c19a0d7-2f81-4a3e-9b55-7d0e6a1c8f42",
    "due_at": "2026-08-31T00:00:00Z"
  }'

Talent then posts enrollment.completed to your endpoint the moment they finish. Both steps, start to finish, are in the guides.

What it does

A focused LMS core: build a course, put people on it, and know where every one of them stands. The dashboard covers authoring, enrollment, reporting, and the learner's course player. The API covers the same resources, so anything you'd rather automate — provisioning people from your HR system, a player of your own, your own reporting — is a request away.

Course authoring

A course is modules, and a module is an ordered list of lessons. Each lesson is a page — mix text, video, files, and embeds freely — or a quiz. Publishing needs at least one lesson, so nobody opens an empty course.

page · quiz

Quizzes

Six question types, a pass mark, an attempt limit, and an optional time limit. Everything except free text is graded the moment it's submitted; free text waits for a person. Answers are saved as they're given, so an expiring timer submits what the learner actually had.

mcq_single · mcq_multi · true_false · ordering · fill_blank · free_text

Enrollments

Assign a course to one person, or to every member of a group, with a due date. A group assignment expands to its members and each enrollment records the group it came from. Managers you nominate see and act on their own groups only.

POST /enrollments · POST /enrollments/bulk

Progress and completion

Each lesson completion is recorded as it happens and the enrollment's percentage is recomputed from it. At 100% the course completes itself and emits the event — nobody has to remember to mark anything done.

POST /lessons/{id}/progress · enrollment.completed

Reports

Course summary, learner transcript, and group summary: status, score, progress, and due dates per row. Read them as JSON for your own dashboards, or download the same rows as CSV for a spreadsheet.

/reports/course-summary · learner-transcript · group-summary

Notifications

Fifteen event types delivered to your endpoint as signed POSTs, retried on a fixed schedule, with a delivery log you can inspect and redeliver from. Email covers invites, new assignments, due-soon reminders, and endpoints we've had to disable.

HMAC-SHA256 · 8 attempts across 24h

Built to be driven by software

The API isn't an export feature bolted to the side — it's how the product is specified. Scoped keys or OAuth client credentials, cursor pagination, repeat-safe writes, and a spec you generate a client from. Every row belongs to exactly one workspace, enforced in Postgres with row-level security, and an id you shouldn't be able to see returns 404 rather than 403 — so the API never tells you what it isn't showing you.

Protocol
REST over HTTPS · JSON
Specification
OpenAPI 3.1 · version 2026-07
Client
Generated TypeScript SDK
Authentication
Bearer API key · OAuth 2.0 client credentials
Permissions
14 scopes, per key and per token
Pagination
Keyset cursor
Repeat-safe writes
Idempotency-Key header
Rate limit
60 req/min free · 300 req/min paid
Limit headers
RateLimit-Limit · -Remaining · -Reset
Webhook events
15 types · api_version 2026-07
Webhook signature
HMAC-SHA256, base64, v1 prefix
Retry schedule
30s · 2m · 10m · 1h · 4h · 12h · 24h
Isolation
Postgres row-level security, per workspace
Unknown or foreign id
404, never 403

Pricing

Two plans. The free one is not a trial and not a crippled API — it's the same product with a seat cap. The paid one lifts the cap and raises the rate limit.

Free

Everything, for up to ten people.

$0per month

No card required.

People
Up to 10
API
Full
Rate limit
60 req/min
Video
Included

Paid

The same product without the seat cap.

$1per person, per month

$10 monthly minimum.

People
Unlimited
API
Full
Rate limit
300 req/min
Video
Included

Seats are metered on the people in your workspace, so the bill follows the team: 1–10 people is $10 a month, 11 is $11, 100 is $100. Video is included on both plans, with no per-minute charge. Start on Free and upgrade from Workspace settings whenever you need the eleventh seat.

Start on the free plan

Create a workspace, add up to ten people, and use the whole API while you evaluate it. No card, and no clock running down.