> ## Documentation Index
> Fetch the complete documentation index at: https://docs.junojourney.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List learning activities (Preview)

> Get each learner's current progress, completion and score per learning item. Requires the `learning_activities:read` scope; the token's creator must still be an Admin. Each token can make 60 requests per minute.

Results are sorted by `last_activity_at`. Send back the `cursor` from each response to get the next page. See the [overview](/integrations/learning-activities-api) for filters and keeping your system in sync.



## OpenAPI

````yaml /api-reference/openapi.yaml post /api/v1/public-api/learning-activities/.search-cursor
openapi: 3.1.0
info:
  title: Juno Journey API
  version: 1.0.0
  description: >-
    The Juno public API. See the [API
    overview](https://docs.junojourney.com/integrations/api-overview) for
    authentication, scopes and limits.
servers:
  - url: https://api.the-juno.com
security:
  - BearerAuth: []
paths:
  /api/v1/public-api/learning-activities/.search-cursor:
    post:
      tags:
        - Learning activities
      summary: List learning activities (Preview)
      description: >-
        Get each learner's current progress, completion and score per learning
        item. Requires the `learning_activities:read` scope; the token's creator
        must still be an Admin. Each token can make 60 requests per minute.


        Results are sorted by `last_activity_at`. Send back the `cursor` from
        each response to get the next page. See the
        [overview](/integrations/learning-activities-api) for filters and
        keeping your system in sync.
      operationId: listLearningActivities
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LearningActivitiesSearchRequest'
            example:
              filters:
                user_email: dana.levi@acme.com
                unit_id: 64f0c0ffee0000000000abcd
              select:
                status: 1
                completed_at: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/LearningActivity'
                  cursor:
                    type:
                      - string
                      - 'null'
                    description: >-
                      Send it back to get the next page. `null` when the first
                      page is empty.
                  dataAsOf:
                    type:
                      - string
                      - 'null'
                    format: date-time
                    description: >-
                      When the data was last updated, or `null` if unknown.
                      Activity usually arrives within about 15 minutes.
              example:
                data:
                  - activity_id: 9b2f1c5e8a7d4e3f9c0b1a2d3e4f5a6b
                    status: completed
                    completed_at: '2026-10-19T09:41:07.000Z'
                    last_activity_at: '2026-10-19T09:41:07.000Z'
                cursor: eyJ0aW1lc3RhbXAiOi...
                dataAsOf: '2026-10-19T09:52:30.912Z'
        '400':
          description: 'Invalid body: an unknown field, filter, operator, or cursor.'
        '401':
          description: Missing or invalid token.
        '403':
          description: >-
            The token lacks `learning_activities:read`, or its creator is no
            longer an Admin.
        '429':
          description: More than 60 requests in a minute with this token.
          headers:
            Retry-After:
              description: When to try again.
              schema:
                type: integer
components:
  schemas:
    LearningActivitiesSearchRequest:
      type: object
      additionalProperties: false
      properties:
        filters:
          type: object
          additionalProperties: false
          description: >-
            Narrow the rows. Filters combine. Any other filter name or operator
            returns `400`.
          properties:
            user_email:
              description: Learner email. Matching ignores case.
              oneOf:
                - type: string
                  format: email
                - type: object
                  additionalProperties: false
                  required:
                    - $in
                  properties:
                    $in:
                      type: array
                      maxItems: 500
                      items:
                        type: string
                        format: email
            user_id:
              description: Learner ID.
              oneOf:
                - type: string
                - type: object
                  additionalProperties: false
                  required:
                    - $in
                  properties:
                    $in:
                      type: array
                      maxItems: 500
                      items:
                        type: string
            unit_id:
              description: Learning item ID.
              oneOf:
                - type: string
                - type: object
                  additionalProperties: false
                  required:
                    - $in
                  properties:
                    $in:
                      type: array
                      maxItems: 500
                      items:
                        type: string
            unit_type:
              description: Learning item type.
              oneOf:
                - type: string
                  enum:
                    - learning
                    - course
                    - path
                    - module
                    - scorm
                    - quiz
                    - survey
                    - event
                    - ilt
                    - webinar
                    - workshop
                    - meeting
                    - video
                    - article
                    - audio
                    - podcast
                    - document
                    - mooc
                    - subscription
                    - playlist
                    - certification
                    - book
                    - conference
                    - blended
                    - website
                    - channel
                    - text
                    - other
                - type: object
                  additionalProperties: false
                  required:
                    - $in
                  properties:
                    $in:
                      type: array
                      maxItems: 500
                      items:
                        type: string
                        enum:
                          - learning
                          - course
                          - path
                          - module
                          - scorm
                          - quiz
                          - survey
                          - event
                          - ilt
                          - webinar
                          - workshop
                          - meeting
                          - video
                          - article
                          - audio
                          - podcast
                          - document
                          - mooc
                          - subscription
                          - playlist
                          - certification
                          - book
                          - conference
                          - blended
                          - website
                          - channel
                          - text
                          - other
            status:
              description: Progress status.
              oneOf:
                - type: string
                  enum:
                    - not_started
                    - in_progress
                    - in_review
                    - completed
                    - passed
                    - failed
                    - attended
                    - not_attended
                - type: object
                  additionalProperties: false
                  required:
                    - $in
                  properties:
                    $in:
                      type: array
                      maxItems: 500
                      items:
                        type: string
                        enum:
                          - not_started
                          - in_progress
                          - in_review
                          - completed
                          - passed
                          - failed
                          - attended
                          - not_attended
            assigned_at:
              type: object
              additionalProperties: false
              description: >-
                When the item was assigned. Use `from`/`to` or `$gte`/`$lt`, not
                both.
              properties:
                from:
                  type: string
                  description: On or after. ISO 8601 date-time or date.
                to:
                  type: string
                  description: On or before. ISO 8601 date-time or date.
                $gte:
                  type: string
                  description: On or after.
                $lt:
                  type: string
                  description: Before (excludes this value).
            started_at:
              type: object
              additionalProperties: false
              description: >-
                When the learner started. Use `from`/`to` or `$gte`/`$lt`, not
                both.
              properties:
                from:
                  type: string
                  description: On or after. ISO 8601 date-time or date.
                to:
                  type: string
                  description: On or before. ISO 8601 date-time or date.
                $gte:
                  type: string
                  description: On or after.
                $lt:
                  type: string
                  description: Before (excludes this value).
            completed_at:
              type: object
              additionalProperties: false
              description: >-
                When the learner completed it. Use `from`/`to` or `$gte`/`$lt`,
                not both.
              properties:
                from:
                  type: string
                  description: On or after. ISO 8601 date-time or date.
                to:
                  type: string
                  description: On or before. ISO 8601 date-time or date.
                $gte:
                  type: string
                  description: On or after.
                $lt:
                  type: string
                  description: Before (excludes this value).
            due_date:
              type: object
              additionalProperties: false
              description: Assignment due date. Use `from`/`to` or `$gte`/`$lt`, not both.
              properties:
                from:
                  type: string
                  description: On or after. ISO 8601 date-time or date.
                to:
                  type: string
                  description: On or before. ISO 8601 date-time or date.
                $gte:
                  type: string
                  description: On or after.
                $lt:
                  type: string
                  description: Before (excludes this value).
            last_activity_at:
              type: object
              additionalProperties: false
              description: >-
                The learner's latest progress on the item. Use `from`/`to` or
                `$gte`/`$lt`, not both.
              properties:
                from:
                  type: string
                  description: On or after. ISO 8601 date-time or date.
                to:
                  type: string
                  description: On or before. ISO 8601 date-time or date.
                $gte:
                  type: string
                  description: On or after.
                $lt:
                  type: string
                  description: Before (excludes this value).
        select:
          type: object
          additionalProperties: false
          description: >-
            Fields to return, for example `{ "status": 1, "completed_at": 1 }`.
            `activity_id` and `last_activity_at` are always included. Leave it
            out to get every field. Select only the fields you use: smaller
            responses come back faster.
          properties:
            activity_id:
              enum:
                - 1
                - true
            user_id:
              enum:
                - 1
                - true
            user_email:
              enum:
                - 1
                - true
            user_name:
              enum:
                - 1
                - true
            unit_id:
              enum:
                - 1
                - true
            unit_title:
              enum:
                - 1
                - true
            unit_type:
              enum:
                - 1
                - true
            consumption_context_id:
              enum:
                - 1
                - true
            status:
              enum:
                - 1
                - true
            assigned_at:
              enum:
                - 1
                - true
            started_at:
              enum:
                - 1
                - true
            completed_at:
              enum:
                - 1
                - true
            due_date:
              enum:
                - 1
                - true
            last_activity_at:
              enum:
                - 1
                - true
            score:
              enum:
                - 1
                - true
            graded_at:
              enum:
                - 1
                - true
        limit:
          type: integer
          minimum: 1
          maximum: 1000
          default: 50
          description: Rows per page.
        cursor:
          type: string
          maxLength: 1024
          description: The `cursor` from the previous response, to get the next page.
      description: >-
        All fields are optional. An empty body returns the first page of every
        learning activity in your organization.
    LearningActivity:
      type: object
      description: >-
        A learner's current state for one learning item. Dates are ISO 8601 in
        UTC. A field with no value is `null`.
      properties:
        activity_id:
          type: string
          description: Unique ID of this row. Use it to update rows you already stored.
        user_id:
          type:
            - string
            - 'null'
        user_email:
          type:
            - string
            - 'null'
        user_name:
          type:
            - string
            - 'null'
        unit_id:
          type:
            - string
            - 'null'
        unit_title:
          type:
            - string
            - 'null'
        unit_type:
          type:
            - string
            - 'null'
          description: >-
            For example `scorm`, `quiz`, `learning`, `path` (a journey),
            `event`.
        consumption_context_id:
          type:
            - string
            - 'null'
          description: >-
            `0` when taken on its own, otherwise the ID of the unit it was taken
            inside, such as a journey.
        status:
          type:
            - string
            - 'null'
          enum:
            - not_started
            - in_progress
            - in_review
            - completed
            - passed
            - failed
            - attended
            - not_attended
            - null
        assigned_at:
          type:
            - string
            - 'null'
          format: date-time
          description: Empty for live events.
        started_at:
          type:
            - string
            - 'null'
          format: date-time
          description: For live events, the session start.
        completed_at:
          type:
            - string
            - 'null'
          format: date-time
          description: Set when the learner completed the item.
        due_date:
          type:
            - string
            - 'null'
          format: date-time
          description: Empty for live events.
        last_activity_at:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            The learner's latest progress on this item. Results are sorted by
            it.
        score:
          type:
            - number
            - 'null'
          description: Quiz and scored SCORM results.
        graded_at:
          type:
            - string
            - 'null'
          format: date-time
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Personal access token. Create one in Admin → Security → Developer
        Settings → Generate Personal Access Token.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.