API ReferenceCompletions

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"
}
FieldTypeNotes
iduuidThe enrollment id
user_iduuidThe learner
course_iduuidThe completed course
statusstringEnrollment status (typically completed)
completed_atISO 8601When the course was completed — original date preserved for imports
sourcestringnative or import (Switcher historical data)

List completions

GET /api/v1/completions

Returns completed enrollments (most recent first), paginated.

Query parameters

ParameterTypeDefaultNotes
pageinteger1Page number
per_pageinteger50Page size (max 200)
user_iduuid—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": [
    {
      "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"
    },
    {
      "id": "d2e3f4a5-6789-0abc-def1-234567890abc",
      "user_id": "a3f2c1d0-4e5b-6789-abcd-ef0123456789",
      "course_id": "e5f6a7b8-9012-3cde-f456-7890abcdef12",
      "status": "completed",
      "completed_at": "2024-11-12T00:00:00Z",
      "source": "import"
    }
  ],
  "meta": { "page": 1, "per_page": 100, "total": 1284 },
  "error": null
}

See Errors for the error envelope and status codes.