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

# List Groups

> Returns a paginated list of all `Groups` in your organization.



## OpenAPI

````yaml https://spec.speakeasy.com/meitner-2u8/api/directory-api-with-code-samples get /group
openapi: 3.1.0
info:
  title: Directory API
  description: Generated API documentation
  contact:
    name: Meitner
    url: https://meitner.se
    email: support@meitner.se
  license:
    name: Proprietary - Licensed to Authorized Customers Only
    url: https://meitner.se
  version: v1
servers:
  - url: https://api.meitner.se/directory/v1
    description: Server to use in production
    x-speakeasy-server-id: production
  - url: https://api.staging.meitner.se/directory/v1
    description: Server to use when building and testing the API
    x-speakeasy-server-id: staging
security:
  - ClientCredentials: []
    ClientSecret: []
  - OAuth2: []
tags:
  - name: School
    description: >
      The `School` resource represents a school where daily operations occur. A
      school must exist before you can create StudentPlacements,
      EmployeePlacements, or Groups.
       
      This resource can be created, updated, listed, retrieved, and searched
      using the standard resource structure.
  - name: Group
    description: Group holds the information about a group of students.
  - name: Employee
    description: >-
      Employee holds the personal information about an employee in the
      organization.
  - name: EmployeePlacement
    description: >-
      EmployeePlacement holds the information about an employee's placement in a
      school.
  - name: Guardian
    description: Guardian holds the information about a guardian of a student.
  - name: Student
    description: >-
      Student holds the personal information about a student, information about
      the school is stored in the StudentPlacement-resource.
  - name: StudentPlacement
    description: >-
      StudentPlacement holds the placement information about a student in a
      specific school.
  - name: AuditEvent
    description: AuditEvent holds the information about an audit event.
  - name: GradeElementary
    description: >
      GradeElementary represents a grade awarded to a student in elementary
      school (Swedish: grundskola).

      Grades are scoped to the organization of the API key used. The SubjectCode
      field uses the subject code as defined by the Swedish school authorities
      (e.g. "MA" for Mathematics).
  - name: GradeUpperSecondary
    description: >
      GradeUpperSecondary represents a grade awarded to a student in upper
      secondary school (Swedish: gymnasieskola).

      Grades are scoped to the organization of the API key used. The CourseCode
      field uses the national course code as defined by the Swedish school
      authorities (e.g. "MATMAT01a").
  - name: Unit
    description: >
      The `Unit` resource represents an organizational unit that schools can
      belong to.

      This resource can be created, updated, listed, retrieved, and searched
      using the standard resource structure.
paths:
  /group:
    get:
      tags:
        - Group
      summary: List Groups
      description: Returns a paginated list of all `Groups` in your organization.
      operationId: GroupList
      parameters:
        - name: limit
          in: query
          description: >-
            The maximum number of Groups to return (default: 50) when listing
            Groups
          required: false
          schema:
            type: integer
            examples:
              - 1
            default: 50
        - name: offset
          in: query
          description: >-
            The number of Groups to skip before starting to return results
            (default: 0) when listing Groups
          required: false
          schema:
            type: integer
            examples:
              - 0
            default: 0
      responses:
        '200':
          $ref: '#/components/responses/GroupList'
          description: >-
            Response for Group List operation - returns a paginated list of
            Group
        '400':
          $ref: '#/components/responses/Error400ResponseBody'
          description: >-
            Bad Request error for Group List operation - request contains
            invalid parameters
        '401':
          $ref: '#/components/responses/Error401ResponseBody'
          description: >-
            Unauthorized error for Group List operation - authentication
            required
        '403':
          $ref: '#/components/responses/Error403ResponseBody'
          description: Forbidden error for Group List operation - insufficient permissions
        '404':
          $ref: '#/components/responses/Error404ResponseBody'
          description: Not Found error for Group List operation - resource does not exist
        '409':
          $ref: '#/components/responses/Error409ResponseBody'
          description: >-
            Conflict error for Group List operation - request conflicts with
            current state
        '429':
          $ref: '#/components/responses/Error429ResponseBody'
          description: Rate Limit error for Group List operation - too many requests
        '500':
          $ref: '#/components/responses/Error500ResponseBody'
          description: >-
            Internal Server error for Group List operation - unexpected server
            error
      x-codeSamples:
        - lang: csharp
          label: Csharp (SDK)
          source: |-
            using Meitner;
            using Meitner.Models.Components;
            using Meitner.Models.Requests;

            var sdk = new MeitnerSDK(security: new Security() {
                Option1 = new SecurityOption1() {
                    ClientCredentials = "<YOUR_API_KEY_HERE>",
                    ClientSecret = "<YOUR_API_KEY_HERE>",
                },
            });

            GroupListResponse? res = await sdk.Groups.ListAsync(
                limit: 1,
                offset: 0
            );

            while(res != null)
            {
                // handle items

                res = await res.Next!();
            }
        - lang: python
          label: Python (SDK)
          source: |-
            from meitner import Meitner, models
            import os


            with Meitner(
                security=models.Security(
                    option1=models.SecurityOption1(
                        client_credentials=os.getenv("MEITNER_CLIENT_CREDENTIALS", ""),
                        client_secret=os.getenv("MEITNER_CLIENT_SECRET", ""),
                    ),
                ),
            ) as m_client:

                res = m_client.groups.list(limit=1, offset=0)

                while res is not None:
                    # Handle items

                    res = res.next()
components:
  responses:
    GroupList:
      description: Response for Group List operation - returns a paginated list of Group
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              data:
                type: array
                examples:
                  - - id: 123e4567-e89b-12d3-a456-426614174000
                      meta:
                        createdAt: '2024-01-15T10:30:00Z'
                        createdBy: 987fcdeb-51a2-43d1-b567-123456789abc
                        updatedAt: '2024-01-15T14:45:00Z'
                        updatedBy: 987fcdeb-51a2-43d1-b567-123456789abc
                      external:
                        sourceID: '12345678'
                        source: ExternalIntegrationAPI
                      schoolID: 123e4567-e89b-12d3-a456-426614174000
                      category: Education
                      title: 1A
                      types:
                        - Class
                      moderatorIDs:
                        - 123e4567-e89b-12d3-a456-426614174000
                      memberIDs:
                        - 123e4567-e89b-12d3-a456-426614174000
                items:
                  allOf:
                    - $ref: '#/components/schemas/Group'
                description: Array of Group objects
              pagination:
                allOf:
                  - $ref: '#/components/schemas/Pagination'
                examples:
                  - offset: 0
                    limit: 1
                    total: 100
                description: Pagination information
          examples:
            responseExample:
              summary: Response body example
              value:
                data:
                  - id: 123e4567-e89b-12d3-a456-426614174000
                    meta:
                      createdAt: '2024-01-15T10:30:00Z'
                      createdBy: 987fcdeb-51a2-43d1-b567-123456789abc
                      updatedAt: '2024-01-15T14:45:00Z'
                      updatedBy: 987fcdeb-51a2-43d1-b567-123456789abc
                    external:
                      sourceID: '12345678'
                      source: ExternalIntegrationAPI
                    schoolID: 123e4567-e89b-12d3-a456-426614174000
                    category: Education
                    title: 1A
                    types:
                      - Class
                    moderatorIDs:
                      - 123e4567-e89b-12d3-a456-426614174000
                    memberIDs:
                      - 123e4567-e89b-12d3-a456-426614174000
                pagination:
                  offset: 0
                  limit: 1
                  total: 100
    Error400ResponseBody:
      description: Bad Request - The request was malformed or contained invalid parameters
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                allOf:
                  - $ref: '#/components/schemas/Error'
                examples:
                  - code: BadRequest
                    message: The request contains invalid parameters or malformed data
                    requestID: 550e8400-e29b-41d4-a716-446655440000
            required:
              - error
          examples:
            errorExample:
              summary: Bad Request error example
              value:
                error:
                  code: BadRequest
                  message: The request contains invalid parameters or malformed data
                  requestID: 550e8400-e29b-41d4-a716-446655440000
    Error401ResponseBody:
      description: Unauthorized - The request is missing valid authentication credentials
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                allOf:
                  - $ref: '#/components/schemas/Error'
                examples:
                  - code: BadRequest
                    message: The request contains invalid parameters or malformed data
                    requestID: 550e8400-e29b-41d4-a716-446655440000
            required:
              - error
          examples:
            errorExample:
              summary: Unauthorized error example
              value:
                error:
                  code: Unauthorized
                  message: Authentication credentials are missing or invalid
                  requestID: 550e8400-e29b-41d4-a716-446655440000
    Error403ResponseBody:
      description: >-
        Forbidden - Request is authenticated, but the user is not allowed to
        perform the operation
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                allOf:
                  - $ref: '#/components/schemas/Error'
                examples:
                  - code: BadRequest
                    message: The request contains invalid parameters or malformed data
                    requestID: 550e8400-e29b-41d4-a716-446655440000
            required:
              - error
          examples:
            errorExample:
              summary: Forbidden error example
              value:
                error:
                  code: Forbidden
                  message: You do not have permission to perform this operation
                  requestID: 550e8400-e29b-41d4-a716-446655440000
    Error404ResponseBody:
      description: Not Found - The requested resource does not exist
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                allOf:
                  - $ref: '#/components/schemas/Error'
                examples:
                  - code: BadRequest
                    message: The request contains invalid parameters or malformed data
                    requestID: 550e8400-e29b-41d4-a716-446655440000
            required:
              - error
          examples:
            errorExample:
              summary: Not Found error example
              value:
                error:
                  code: NotFound
                  message: The requested resource could not be found
                  requestID: 550e8400-e29b-41d4-a716-446655440000
    Error409ResponseBody:
      description: Conflict - The request could not be completed due to a conflict
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                allOf:
                  - $ref: '#/components/schemas/Error'
                examples:
                  - code: BadRequest
                    message: The request contains invalid parameters or malformed data
                    requestID: 550e8400-e29b-41d4-a716-446655440000
            required:
              - error
          examples:
            errorExample:
              summary: Conflict error example
              value:
                error:
                  code: Conflict
                  message: The request conflicts with the current state of the resource
                  requestID: 550e8400-e29b-41d4-a716-446655440000
    Error429ResponseBody:
      description: Too Many Requests - When the rate limit has been exceeded
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                allOf:
                  - $ref: '#/components/schemas/Error'
                examples:
                  - code: BadRequest
                    message: The request contains invalid parameters or malformed data
                    requestID: 550e8400-e29b-41d4-a716-446655440000
            required:
              - error
          examples:
            errorExample:
              summary: Rate Limited error example
              value:
                error:
                  code: RateLimited
                  message: Too many requests - rate limit exceeded
                  requestID: 550e8400-e29b-41d4-a716-446655440000
    Error500ResponseBody:
      description: Internal Server Error - An unexpected server error occurred
      headers:
        RateLimit-Limit:
          description: >-
            The maximum number of API requests you're permitted to make per
            hour.
          schema:
            type: integer
            examples:
              - 5000
        RateLimit-Remaining:
          description: >-
            The number of API requests remaining in the current rate limit
            window.
          schema:
            type: integer
            examples:
              - 4999
        RateLimit-Reset:
          description: >-
            The time at which the current rate limit window resets in UTC epoch
            milliseconds.
          schema:
            type: string
            examples:
              - '1728316800000'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                allOf:
                  - $ref: '#/components/schemas/Error'
                examples:
                  - code: BadRequest
                    message: The request contains invalid parameters or malformed data
                    requestID: 550e8400-e29b-41d4-a716-446655440000
            required:
              - error
          examples:
            errorExample:
              summary: Internal Server error example
              value:
                error:
                  code: Internal
                  message: An unexpected server error occurred
                  requestID: 550e8400-e29b-41d4-a716-446655440000
  schemas:
    Group:
      type: object
      properties:
        id:
          type: string
          examples:
            - 123e4567-e89b-12d3-a456-426614174000
          format: uuid
          description: Unique identifier for the Group
        meta:
          allOf:
            - $ref: '#/components/schemas/Meta'
          examples:
            - createdAt: '2024-01-15T10:30:00Z'
              createdBy: 987fcdeb-51a2-43d1-b567-123456789abc
              updatedAt: '2024-01-15T14:45:00Z'
              updatedBy: 987fcdeb-51a2-43d1-b567-123456789abc
          description: Metadata information for the Group
        external:
          allOf:
            - $ref: '#/components/schemas/External'
          examples:
            - sourceID: '12345678'
              source: ExternalIntegrationAPI
            - null
          description: >-
            External is a reusable object that can be used to store external
            information about the employee from another system, used for
            third-party integration tracking.
          nullable: true
        schoolID:
          type: string
          examples:
            - 123e4567-e89b-12d3-a456-426614174000
          format: uuid
          description: The ID of the school the group belongs to
        category:
          allOf:
            - $ref: '#/components/schemas/GroupCategory'
          examples:
            - Education
          description: >
            If the category is Education, the ModeratorIDs have to be employees
            and the MemberIDs have to be students of the school. If the category
            is Other, it will not be possible to use the IsClass, IsChildcare
            and IsMentor fields.
          default: Education
        title:
          type: string
          examples:
            - 1A
          description: The title of the group, must be unique within the school.
        types:
          type: array
          examples:
            - - Class
          items:
            allOf:
              - $ref: '#/components/schemas/GroupType'
          description: >-
            The types of the group. A group can have multiple types
            simultaneously. For preschools (FS), Class and Childcare types are
            automatically paired - adding Class will automatically include
            Childcare, and vice versa. Integration note for Mentor type - when
            importing groups from external systems, it can be difficult to
            determine whether a group should have the Mentor type. One
            recommended approach is to not include the Mentor type when creating
            or updating groups via the API, allowing school administrators to
            manually configure the Mentor type in Meitner as needed. When
            updating a group, you can preserve existing types by reading the
            current group state first and only modifying the specific types your
            integration manages (e.g., Class, Childcare). This ensures the
            Mentor type remains under administrator control.
        moderatorIDs:
          type: array
          examples:
            - - 123e4567-e89b-12d3-a456-426614174000
          items:
            type: string
            format: uuid
          description: >
            The IDs of the moderators of the group.  Can be any user type
            (Student, Employee, Guardian) if the Category is Other. If the
            Category is Education, the Moderators have to be employees of the
            school.
        memberIDs:
          type: array
          examples:
            - - 123e4567-e89b-12d3-a456-426614174000
          items:
            type: string
            format: uuid
          description: >
            The IDs of the members of the group. Can be any user type (Student,
            Employee, Guardian) if the Category is Other. If the Category is
            Education, the Members have to be students of the school.
      required:
        - id
        - schoolID
        - title
      description: Group holds the information about a group of students.
    Pagination:
      type: object
      properties:
        offset:
          type: integer
          examples:
            - 0
          description: Number of items to skip from the beginning of the result set
        limit:
          type: integer
          examples:
            - 1
          description: Maximum number of items to return in the result set
        total:
          type: integer
          examples:
            - 100
          description: Total number of items available for pagination
      required:
        - offset
        - limit
        - total
      description: Pagination parameters for controlling result sets in list operations
    Error:
      type: object
      properties:
        code:
          allOf:
            - $ref: '#/components/schemas/ErrorCode'
          description: The specific error code indicating the type of error
        message:
          type: string
          examples:
            - example
          description: Human-readable error message providing additional details
        requestID:
          type: string
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          description: >-
            Unique identifier for the request that generated this error, used
            for logging and debugging
      required:
        - code
        - message
        - requestID
      description: >-
        Standard error response object containing error code, message, and
        request ID
    Meta:
      type: object
      properties:
        createdAt:
          type: string
          examples:
            - '2024-01-15T10:30:00Z'
          format: date-time
          description: Timestamp when the resource was created
        createdBy:
          type: string
          examples:
            - 987fcdeb-51a2-43d1-b567-123456789abc
            - null
          format: uuid
          description: User who created the resource
          nullable: true
        updatedAt:
          type: string
          examples:
            - '2024-01-15T14:45:00Z'
            - null
          format: date-time
          description: Timestamp when the resource was last updated
          nullable: true
        updatedBy:
          type: string
          examples:
            - 987fcdeb-51a2-43d1-b567-123456789abc
            - null
          format: uuid
          description: User who last updated the resource
          nullable: true
      required:
        - createdAt
      description: >-
        Meta contains information about the creation and modification of a
        resource for auditing purposes
    External:
      type: object
      properties:
        sourceID:
          type: string
          examples:
            - '12345678'
            - null
          description: The ID of the external source
          nullable: true
        source:
          type: string
          examples:
            - ExternalIntegrationAPI
            - null
          description: The source of the external information
          nullable: true
      description: >-
        External is a reusable object that can be used to store external
        information from another system, used for third-party integration
        tracking.
    GroupCategory:
      type: string
      enum:
        - Education
        - Other
      description: The category of the group
    GroupType:
      type: string
      enum:
        - Class
        - Childcare
        - Mentor
      description: >-
        The type of the group. A group can have multiple types simultaneously,
        each enabling specific functionality for the group's members and
        moderators.
    ErrorCode:
      type: string
      enum:
        - BadRequest
        - Unauthorized
        - Forbidden
        - NotFound
        - Conflict
        - UnprocessableEntity
        - RateLimited
        - Internal
      description: Standard error codes used in API responses
  securitySchemes:
    ClientCredentials:
      type: apiKey
      name: Client-ID
      in: header
    ClientSecret:
      type: apiKey
      name: Client-Secret
      in: header
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: /oauth/token
          scopes: {}

````