---
title: "✨ Seat report"
method: GET
path: "/api/organizations/{id}/seat-report"
tags: ["Organizations"]
---

# ✨ Seat report

`GET /api/organizations/{id}/seat-report`

<Card href="https://humansignal.com/goenterprise">
        <img style="pointer-events: none; margin-left: 0px; margin-right: 0px;" src="https://docs.humansignal.com/images/badge.svg" alt="Label Studio Enterprise badge"/>
        <p style="margin-top: 10px; font-size: 14px;">
            This endpoint is not available in Label Studio Community Edition. [Learn more about Label Studio Enterprise](https://humansignal.com/goenterprise)
        </p>
    </Card>
For each member of the organization: whether they occupy a standard (paid) seat, the effective organization role, what set that role, and every identity-provider group assignment behind it.

Only *organization role* assignments can put a user on a paid seat. Project role and workspace access assignments never affect the seat count.

Use `?email=` to look up a single member, or `?has_stale_role_assignments=true` to find members kept on a seat by leftover group assignments.

## Path parameters

- `id` integer, required

## Query parameters

- `counts_toward_seat_limit` boolean
- `email` string
- `has_stale_role_assignments` boolean
- `include_seat_usage` boolean
- `ordering` string
- `page` integer
- `page_size` integer
- `role_source` string
- `search` string

## Response `200`

- PaginatedSeatReportList
  - `count` integer, required
  - `next` string, uri, nullable
  - `previous` string, uri, nullable
  - `results` SeatReport[], required
    - `account_is_active` boolean, required — Whether the account can log in. Does NOT by itself decide the seat — the organization role does.
    - `counts_toward_seat_limit` boolean, required — Whether this membership occupies a standard (paid) seat, using the same predicate as billing. Service accounts and View-Only seats are licensed separately and do not count here. Note this is per membership, while the licence counts distinct users (instance-wide on-prem), so summing this column is an upper bound on the invoice, not the invoice.
    - `email` string, email, required
    - `first_name` string, required
    - `has_stale_role_assignments` boolean, required — True when any role assignment is orphaned or missing its membership link — the usual cause of stale seats
    - `last_name` string, required
    - `organization_role` string, nullable, required — Effective organization role code
    - `organization_role_assignments` OrganizationRoleAssignment[], required — Group assignments that can put this user on an organization role (and therefore a seat)
      - `assigned_role` string, nullable, required — Role code this group is mapped to
      - `assigned_role_display` string, nullable, required
      - `assignment_id` integer, required — Primary key of the assignment record
      - `created_at` string, date-time, required
      - `identity_provider_group` string, nullable, required — Name of the group in the identity provider (Okta/Entra) that created this record
      - `linked_membership_id` integer, nullable, required — Membership this assignment is attached to; null means an incomplete record
      - `mapping_status` 'configured' | 'orphaned' | 'missing_membership', required — * `configured` - Configured * `orphaned` - Orphaned * `missing_membership` - Missing membership
      - `mapping_status_display` string, required
    - `organization_role_display` string, nullable, required
    - `project_role_assignments` ProjectRoleAssignment[], required — Group assignments scoped to a project. Never affect the seat count.
      - `assigned_role` string, nullable, required — Role code this group is mapped to
      - `assigned_role_display` string, nullable, required
      - `assignment_id` integer, required — Primary key of the assignment record
      - `created_at` string, date-time, required
      - `identity_provider_group` string, nullable, required — Name of the group in the identity provider (Okta/Entra) that created this record
      - `linked_membership_id` integer, nullable, required — Membership this assignment is attached to; null means an incomplete record
      - `mapping_status` 'configured' | 'orphaned' | 'missing_membership', required — * `configured` - Configured * `orphaned` - Orphaned * `missing_membership` - Missing membership
      - `mapping_status_display` string, required
      - `project_id` integer, nullable, required — Null when the record has no linked membership
      - `project_title` string, nullable, required
    - `role_source` string, nullable, required — What set the role: manual, saml, scim, ldap, api, billing
    - `role_source_display` string, nullable, required
    - `user_id` integer, required
    - `user_type` string, nullable, required — standard, service or viewonly
    - `user_type_display` string, nullable, required
    - `workspace_access_assignments` WorkspaceAccessAssignment[], required — Group assignments granting workspace access only. Never affect the seat count.
      - `assignment_id` integer, required — Primary key of the assignment record
      - `created_at` string, date-time, required
      - `identity_provider_group` string, nullable, required — Name of the group in the identity provider (Okta/Entra) that created this record
      - `linked_membership_id` integer, nullable, required — Membership this assignment is attached to; null means an incomplete record
      - `workspace_id` integer, nullable, required — Null when the record has no linked membership
      - `workspace_title` string, nullable, required

---

[API](https://skmtc.net/humansignal/apis/label-studio-api.md) · [All operations](https://skmtc.net/humansignal/apis/label-studio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/humansignal/label-studio-api/versions/1b113b8df950/schema)
