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

# Get user XP ledger entries

> Retrieves XP ledger entries for a user from the XP Ledger table.
Supports optional filtering by applicationId, curriculumId, and date range.
Supports pagination for efficient data retrieval.



## OpenAPI

````yaml /openapi/learn-with-ai/platform-api.yaml get /xp/1.0/users/{userId}/entries
openapi: 3.1.1
info:
  title: TimeBack Platform API
  description: >-
    RESTful API for the TimeBack Platform. Covers authentication, rostering,
    curriculum, insights, assessments, content grading, and more.
  version: 2026.09.10.1
servers:
  - url: https://platform.dev.timeback.com
    description: integration
security: []
tags:
  - name: Auth
    description: Authentication and authorization endpoints
  - name: Organizations
    description: Organizations module contains all endpoints around organization management
  - name: Applications
    description: Applications module contains all endpoints for managing LTI applications
  - name: Users
    description: >-
      Users module contains all endpoints around user creation, update and
      consultation
  - name: Students
    description: Students module contains all endpoints around student management
  - name: Demographics
    description: >-
      Demographics module contains all endpoints around demographics
      consultation
  - name: Consent
    description: >-
      Initiate and query TimeBack parental consent for a student, backed by an
      immutable audit trail.
  - name: Classes
    description: Classes module contains all endpoints around class management
  - name: Courses
    description: Courses module contains all endpoints around course management
  - name: Enrollments
    description: Enrollments module contains all endpoints around enrollment consultation
  - name: CASE
    description: Competency and Academic Standards Exchange (CASE) 1.1 API
  - name: Curriculum
    description: Curriculum module contains endpoints for managing curriculum data
  - name: Competency Track
    description: Competency track endpoints
  - name: Content Grading
    description: >-
      Registration and management of graders for free-response content items —
      bring-your-own external graders (Tier 2) and, once shipped,
      platform-managed grading prompts (Tier 1).
  - name: Caliper
    description: The Caliper module contains all endpoints around Caliper Analytics
  - name: Insights
    description: Coaching insights and session analytics endpoints
paths:
  /xp/1.0/users/{userId}/entries:
    get:
      tags:
        - XP
      summary: Get user XP ledger entries
      description: >-
        Retrieves XP ledger entries for a user from the XP Ledger table.

        Supports optional filtering by applicationId, curriculumId, and date
        range.

        Supports pagination for efficient data retrieval.
      operationId: getUserXpEntries
      parameters:
        - name: userId
          in: path
          description: User ID
          required: true
          schema:
            type: string
            format: uuid
        - name: applicationId
          in: query
          description: Filter by LTI Application ID
          required: false
          schema:
            type: string
            format: uuid
        - name: curriculumItemId
          in: query
          description: Filter by curriculum item ID
          required: false
          schema:
            type: string
            format: uuid
        - name: origin
          in: query
          description: Filter by XP ledger origin (COMPUTED, APP_REPORTED, or MANUAL)
          required: false
          schema:
            type: string
            enum:
              - COMPUTED
              - APP_REPORTED
              - MANUAL
        - name: after
          in: query
          description: Filter entries generated after this date
          required: false
          schema:
            type: string
            format: date-time
        - name: before
          in: query
          description: Filter entries generated before this date
          required: false
          schema:
            type: string
            format: date-time
        - name: limit
          in: query
          description: Maximum number of items to return
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
        - name: offset
          in: query
          description: Number of items to skip
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
      responses:
        '200':
          description: XP ledger entries retrieved successfully
          headers:
            X-Total-Count:
              description: Total number of XP ledger entries
              schema:
                type: integer
            Link:
              description: Pagination links
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedUserXpEntriesOutput'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - CognitoUserPoolAuthorizer:
            - https://purl.imsglobal.org/spec/caliper/v1p2/scope/events.readonly
components:
  schemas:
    PaginatedUserXpEntriesOutput:
      type: object
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/TbXpLedgerOutput'
          description: Array of XP ledger entries
        total:
          type: integer
          description: Total number of XP ledger entries matching the query
        limit:
          type: integer
          description: Maximum number of items returned in this response
        offset:
          type: integer
          description: Number of items skipped before this response
      required:
        - entries
        - total
        - limit
        - offset
    TbXpLedgerOutput:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the XP ledger entry
        value:
          type: number
          format: double
          description: XP value (signed decimal supporting positive and negative amounts)
        userId:
          type: string
          format: uuid
          description: User ID who received or lost the XP
        applicationId:
          type: string
          format: uuid
          description: LTI Application ID that generated the XP change
        curriculumItemId:
          type:
            - string
            - 'null'
          format: uuid
          description: >-
            Optional CASE curriculum item identifier associated with the XP
            change
        dateGenerated:
          type: string
          format: date-time
          description: Date and time when the XP was generated
        sourceEventId:
          type: string
          format: uuid
          description: Source Caliper event ID that originated this XP change
        sourceEvent:
          $ref: '#/components/schemas/SourceEventOutput'
        origin:
          type: string
          enum:
            - COMPUTED
            - APP_REPORTED
            - MANUAL
          description: >-
            How the XP was produced — engine-computed, app-reported verbatim, or
            manual adjustment
        subjectId:
          type:
            - string
            - 'null'
          format: uuid
          description: Optional CASE subject identifier associated with the XP change
        reason:
          type:
            - string
            - 'null'
          description: >-
            Free-text reason for a manual XP adjustment; null for non-manual
            entries
      required:
        - id
        - value
        - userId
        - applicationId
        - dateGenerated
        - sourceEventId
        - sourceEvent
        - origin
    SourceEventOutput:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Caliper event ID
        extensions:
          type:
            - object
            - 'null'
          additionalProperties: true
          description: Custom extensions from the source Caliper event
      required:
        - id
        - extensions
  responses:
    BadRequest:
      description: Bad request
    Unauthorized:
      description: Unauthorized
    Forbidden:
      description: Forbidden
    NotFound:
      description: Resource not found
    InternalError:
      description: Internal server error
  securitySchemes:
    CognitoUserPoolAuthorizer:
      type: oauth2
      description: >-
        OAuth 2.0 client credentials flow. Contact timeback@trilogy.com to
        request credentials for your application.
      flows:
        clientCredentials:
          tokenUrl: https://platform.dev.timeback.com/auth/1.0/token
          scopes:
            https://purl.imsglobal.org/spec/or/v1p2/scope/roster.readonly: roster readonly
            https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.readonly: roster-core readonly
            https://purl.imsglobal.org/spec/or/v1p2/scope/roster.createput: roster createput
            https://purl.imsglobal.org/spec/lti/v1p3/scope/lti.readonly: lti readonly
            https://purl.imsglobal.org/spec/or/v1p2/scope/roster-demographics.readonly: roster-demographics readonly
            https://timeback-platform.trilogy.com/consent/scope/consent.write: consent write
            https://timeback-platform.trilogy.com/consent/scope/consent.read: consent read
            https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.createput: roster-core createput
            https://purl.imsglobal.org/spec/or/v1p2/scope/roster.delete: roster delete
            https://purl.imsglobal.org/spec/or/v1p2/scope/roster-core.delete: roster-core delete
            https://purl.imsglobal.org/spec/case/v1p0/scope/case.readonly: case readonly
            https://purl.imsglobal.org/spec/case/v1p0/scope/case.createput: case createput
            https://purl.imsglobal.org/spec/case/v1p0/scope/case.delete: case delete
            https://timeback-platform.trilogy.com/competency-track/scope/competency-track.readonly: competency-track readonly
            https://timeback-platform.trilogy.com/competency-track/scope/competency-track.write: competency-track write
            https://timeback-platform.trilogy.com/competency-track/scope/competency-track.delete: competency-track delete
            https://timeback-platform.trilogy.com/content/scope/content.write: content write
            https://timeback-platform.trilogy.com/content/scope/content.read: content read
            https://purl.imsglobal.org/spec/caliper/v1p2/scope/events.write: events write
            https://purl.imsglobal.org/spec/caliper/v1p2/scope/events.readonly: events readonly
            https://timeback-platform.trilogy.com/webhooks/scope/webhooks.write: webhooks write
            https://timeback-platform.trilogy.com/webhooks/scope/webhooks.read: webhooks read
            https://timeback-platform.trilogy.com/webhooks/scope/webhooks.delete: webhooks delete

````