Completions
The Completions API returns the audit-grade record of which learners have
completed which courses, and when. It includes historical completions imported
via the EmbayLMS Switcher Program (source: "import"), so it is a single source
of truth for compliance reporting and downstream BI.
A completion is an enrollment whose completed_at is set.
The Completion Object
{
"id": "c1d2e3f4-5678-90ab-cdef-1234567890ab",
"user_id": "a3f2c1d0-4e5b-6789-abcd-ef0123456789",
"course_id": "b4c3d2e1-5f6a-7890-bcde-f01234567890",
"status": "completed",
"completed_at": "2026-05-30T16:40:00Z",
"source": "native"
}| Field | Type | Notes |
|---|---|---|
id | uuid | The enrollment id |
user_id | uuid | The learner |
course_id | uuid | The completed course |
status | string | Enrollment status (typically completed) |
completed_at | ISO 8601 | When the course was completed — original date preserved for imports |
source | string | native or import (Switcher historical data) |
List completions
GET /api/v1/completionsReturns completed enrollments (most recent first), paginated.
Query parameters
| Parameter | Type | Default | Notes |
|---|---|---|---|
page | integer | 1 | Page number |
per_page | integer | 50 | Page size (max 200) |
user_id | uuid | — | Filter to a single learner |
Authentication
API key with the read scope, as a Bearer token — see
Authentication. Rate-limited and metered per
Rate Limits.
Example
curl https://acme.embaylms.com/api/v1/completions?per_page=100 \
-H "Authorization: Bearer ems_live_..."Response
{
"data": [ /* Completion objects */ ],
"meta": { "page": 1, "per_page": 100, "total": 1284 },
"error": null
}See Errors for the error envelope and status codes.