---
title: "List quiz question-bank assignments"
method: GET
path: "/v2/quizzes/{quiz_id}/question-banks/"
tags: ["Quizzes"]
---

# List quiz question-bank assignments

`GET /v2/quizzes/{quiz_id}/question-banks/`

## Request

- Base URL: `https://api.skilljar.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.skilljar.com/v2/quizzes/{quiz_id}/question-banks/`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/skilljar/apis/skilljar-api-v2/docs/v2/quizzes/:quiz_id/question-banks/get.ts> (a function with typed inputs; its response is checked against the schema)

List the question-bank assignments for a quiz, cursor-paginated by ``order``.

A malformed / cross-org / soft-deleted ``quiz_id`` raises a document-level
404 (the quiz is the path resource) before pagination runs.

``query`` is declared for the OpenAPI contract only — ``CursorPaginator``
reads the params off ``request.GET``, so the bound object is unused.

**Required OAuth scope:** `quizzes:read`

## Path parameters

- `quiz_id` string, required

## Query parameters

- `page[size]` integer: Maximum number of records to return. Values above 100 are served as 100; values below 1 are served as 1.
- `page[cursor]` string, nullable: Opaque cursor from the previous page's links.next.

## Response `200`

OK

- PaginatedListResponseQuestionBankAssignmentResource
  - `data` QuestionBankAssignmentResource[], required: The resources on this page, in cursor order.
    - `type` 'question-bank-assignments': Always "question-bank-assignments".
    - `id` string, required: Opaque assignment ID.
    - `attributes` QuestionBankAssignmentAttributes, required: Attributes of a question-bank-assignment resource object. Fields mirror the writable/observable ``quiz.models.QuestionBankAssignment`` columns. ``question_bank_id`` (obfuscated) identifies the bound bank; the assignment's own obfuscated PK is the resource ``id``. No ``external_id`` — the model is not an ``ExternallyAuditableModel``.
      - `question_bank_id` string, required: Obfuscated ID of the bound question bank.
      - `order` integer, required: Ordering value of this bank within the quiz.
      - `randomize_questions` boolean, required: If true, the bank's questions are presented in a random order.
      - `limit_question_count` integer, required: Number of questions drawn from this bank. 0 means all questions.
      - `created_at` string, date-time, required: Timestamp when the assignment was created.
      - `modified_at` string, date-time, required: Timestamp when the assignment was last modified.
    - `links` object, nullable: Self and related links.
  - `meta` object, nullable: Pagination metadata, e.g. {"page_size": 25}.
  - `links` PaginationLinks: JSON:API §Links object for a paginated collection. Typed rather than a free-form ``dict`` so ``next`` reaches the generated OpenAPI/SDK/MCP contract. Since GE-256227 removed the top-level ``next_cursor``, ``links.next`` is the only pagination affordance a machine consumer has — an untyped ``dict`` would leave it undiscoverable.
    - `self` string, nullable: Path of the current request, relative and without its query string (so every page of a filtered collection reports the same value).
    - `next` string, nullable: Relative path of the next page, ready to request as-is. Carries ``page[cursor]`` plus every non-cursor query param from the current request (``page[size]``, ``filter[*]``, ``include``). Null on the last page.
    - `prev` string, nullable: Relative path of the previous page. Not implemented — currently always null.
  - `included` object[], nullable: Related resources requested via ?include=. Absent when no include was requested.

## Other responses

- `400`: Bad Request: page[cursor] is not a valid cursor.
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `406`: Not Acceptable: Accept rules out application/vnd.api+json.
- `422`: Unprocessable Entity
- `500`: Internal Server Error

## Changes

- **2026-10-16** `bed169429eb2`: 7 info
  - added the new optional `query` request parameter `page[cursor]`
  - added the new optional `query` request parameter `page[size]`
  - added the non-success response with the status `400`
  - added the non-success response with the status `406`
  - …3 more
- **2026-09-15** `9fc34e55336d`: 6 info
  - media type `application/json` was changed to a more specific media type `application/vnd.api+json` for the response status `200`
  - media type `application/json` was changed to a more specific media type `application/vnd.api+json` for the response status `401`
  - media type `application/json` was changed to a more specific media type `application/vnd.api+json` for the response status `403`
  - media type `application/json` was changed to a more specific media type `application/vnd.api+json` for the response status `404`
  - …2 more

[Operation history](https://skmtc.dev/skilljar/apis/skilljar-api-v2/changes/v2/quizzes/:quiz_id/question-banks/get.md)

---

[API](https://skmtc.dev/skilljar/apis/skilljar-api-v2.md) - [All operations](https://skmtc.dev/skilljar/apis/skilljar-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/skilljar/apis/skilljar-api-v2/revisions/fbda30ce1742?raw)
