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

# List Testimonials

> Retrieves testimonials, including unfinished submissions, ordered by creation date with the newest first.



## OpenAPI

````yaml get /testimonials
openapi: 3.0.1
info:
  title: SchoolMaker API V1
  description: API for managing your SchoolMaker school
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://schoolmaker.co/api/v1
    description: Production API
security:
  - bearerAuth: []
paths:
  /testimonials:
    get:
      tags:
        - Testimonials
      summary: List Testimonials
      description: >-
        Retrieves testimonials, including unfinished submissions, ordered by
        creation date with the newest first.
      parameters:
        - name: product_id
          in: query
          required: false
          description: >-
            Filter by program, including testimonials from its milestone steps.
            Can be combined with the member filter.
          schema:
            type: string
            minLength: 1
            maxLength: 255
        - name: member_id
          in: query
          required: false
          description: Filter by member ID. Takes precedence over email.
          schema:
            type: string
            minLength: 1
            maxLength: 255
        - name: email
          in: query
          required: false
          description: >-
            Filter by member email, ignoring case and surrounding spaces.
            Ignored when member_id is supplied. Leave blank for no member
            filter.
          schema:
            type: string
            maxLength: 10000
        - name: page
          in: query
          required: false
          description: Page number.
          schema:
            type: integer
            minimum: 1
            maximum: 10000
            default: 1
        - name: per_page
          in: query
          required: false
          description: Number of testimonials per page.
          schema:
            type: integer
            minimum: 1
            maximum: 30
            default: 30
      responses:
        '200':
          description: List of testimonials
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                  - page
                  - next_page
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - status
                        - source
                        - rating
                        - created_at
                        - product_id
                        - products_step_id
                        - member
                        - review
                        - video_url
                        - file_url
                        - video_id
                        - video_status
                        - video_embed_url
                        - video_poster_url
                      properties:
                        id:
                          type: string
                          description: Testimonial ID.
                          format: uuid
                        status:
                          type: string
                          description: Submission status. Includes unfinished testimonials.
                          enum:
                            - new
                            - rating
                            - submit
                            - ready
                        source:
                          type: string
                          description: >-
                            Testimonial source. banner means the review banner.
                            May contain a custom value.
                        rating:
                          type: integer
                          nullable: true
                          description: >-
                            Star rating. Completed submissions have a rating
                            from 1 to 5. Unfinished submissions can be unrated.
                        created_at:
                          type: string
                          description: Date the testimonial was created.
                          format: date-time
                        product_id:
                          type: string
                          description: >-
                            Program ID, including programs linked through a
                            milestone step. Null for school testimonials.
                          nullable: true
                          format: uuid
                        products_step_id:
                          type: string
                          description: Milestone step ID, when applicable.
                          nullable: true
                          format: uuid
                        member:
                          type: object
                          properties:
                            id:
                              type: string
                              description: Member ID.
                              format: uuid
                            email:
                              type: string
                              description: Member email address.
                            first_name:
                              type: string
                              nullable: true
                            last_name:
                              type: string
                              nullable: true
                            last_seen_at:
                              type: string
                              format: date-time
                              nullable: true
                            is_active:
                              type: boolean
                            is_banned:
                              type: boolean
                            created_at:
                              type: string
                              format: date-time
                            updated_at:
                              type: string
                              format: date-time
                            profile_picture_url:
                              type: string
                              description: >-
                                URL of the attached profile picture. Null when
                                none is attached.
                              nullable: true
                              format: uri
                        review:
                          type: string
                          description: >-
                            Testimonial text rendered as HTML. Can be empty when
                            no text has been submitted.
                        video_url:
                          type: string
                          description: >-
                            Attached video URL, or null if absent. Hosted videos
                            use video_id and video_embed_url.
                          nullable: true
                          format: uri
                        file_url:
                          type: string
                          description: >-
                            URL of the attached testimonial file. Null when
                            absent.
                          nullable: true
                          format: uri
                        video_id:
                          type: string
                          description: >-
                            Hosted video ID, or null if absent. Copied videos
                            retain the original ID.
                          nullable: true
                        video_status:
                          type: string
                          description: Last saved video processing status.
                          nullable: true
                        video_embed_url:
                          type: string
                          description: >-
                            Video player URL when processing is complete and the
                            video library is configured. Otherwise null.
                          nullable: true
                          format: uri
                        video_poster_url:
                          type: string
                          description: URL of the attached video poster. Null when absent.
                          nullable: true
                          format: uri
                  page:
                    type: integer
                  next_page:
                    type: integer
                    nullable: true
                    description: Next page number, or null when there are no more results.
              example:
                data:
                  - id: f41396bd-9bbe-478d-9f33-5fc0d2e2e1f8
                    status: ready
                    source: banner
                    rating: 5
                    created_at: '2026-10-02T08:00:00.000Z'
                    product_id: null
                    products_step_id: null
                    member:
                      id: 15a1f1ae-420c-4b58-b24a-01031ec3c6f3
                      email: member@example.com
                      first_name: Alex
                      last_name: Martin
                      last_seen_at: null
                      is_active: true
                      is_banned: false
                      created_at: '2026-09-01T08:00:00.000Z'
                      updated_at: '2026-10-02T08:00:00.000Z'
                      profile_picture_url: null
                    review: <div class="trix-content"><p>A useful program.</p></div>
                    video_url: null
                    file_url: null
                    video_id: null
                    video_status: null
                    video_embed_url: null
                    video_poster_url: null
                page: 1
                next_page: null
        '401':
          description: Missing or invalid API credentials, or unavailable school account.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
              example:
                error: Access denied
        '404':
          description: Testimonial, program or member not found in your school.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
              example:
                error: Record not found
        '422':
          description: Invalid parameters.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                properties:
                  error:
                    type: string
              example:
                error: Invalid numeric parameter
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````

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