Chronos LMS API

REST v1 · Token-authenticated · JSON-in / JSON-out

Stable Base URL: https://www.itschronos.com/api/v1

Authentication

All endpoints (except /ping) require a Bearer token. Admins create tokens in Admin → API Tokens.

curl https://www.itschronos.com/api/v1/me \
     -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Accept: application/json"

Conventions

Endpoints

GET/ping

Public health check. Returns { status, service, version, time }.

GET/me

Returns the authenticated user + token metadata.

GET/users

List users. Query params: email, role, status, search, since (ISO date), per_page (max 200).

GET/users/{id}

POST/users

{
  "name": "Jane Doe",
  "email": "jane.doe@acme.com",
  "role": "student",
  "external_id": "EMP-000123",
  "phone": "+1 555 0100",
  "timezone": "America/New_York",
  "status": "active"
}

PUT/users/{id}

Update any subset of fields.

GET/users/{id}/progress

Per-user enrollment progress across all courses.

GET/users/{id}/certificates

All issued (non-revoked) certificates, including the LinkedIn "Add to Profile" URL.

GET/enrollments

List enrollments. Filters: user_id, user_email, course_id, status, since.

POST/enrollments

{
  "user_email": "jane.doe@acme.com",
  "course_slug": "workplace-safety-101",
  "expires_at": "2026-12-31"
}

PUT/enrollments/{id}/status

{ "status": "active" | "suspended" | "expired" | "completed" }

POST/webhooks/hr-sync

Bulk upsert users from your HR system. Upsert by email; stores external_id on each user.

{
  "users": [
    {
      "external_id": "EMP-000123",
      "email": "jane.doe@acme.com",
      "name": "Jane Doe",
      "role": "student",
      "status": "active",
      "phone": "+1 555 0100",
      "timezone": "America/New_York"
    }
  ]
}

Roles

SlugPurpose
super_adminRoot access
adminPlatform management
hrWorkforce visibility + enrollment + compliance
supervisorTeam compliance oversight
instructorCourse creation + grading
studentLearner

Example: End-to-end onboarding

A new hire is added in your HR system. Your HR system calls three Chronos endpoints:

# 1. Sync the new employee into Chronos
POST /api/v1/webhooks/hr-sync
{ "users": [{ "external_id": "EMP-000456", "email": "new.hire@acme.com",
              "name": "Alex Kim", "role": "student" }] }

# 2. Enroll them in mandatory onboarding
POST /api/v1/enrollments
{ "user_email": "new.hire@acme.com", "course_slug": "workplace-onboarding" }

# 3. Later, pull their progress for dashboards
GET /api/v1/users/{id}/progress

Chronos LMS · Home · API Tokens