---
title: "GET /organizations/{organization_id}/service-accounts"
method: GET
path: "/organizations/{organization_id}/service-accounts"
tags: ["Service Accounts"]
---

# GET /organizations/{organization_id}/service-accounts

`GET /organizations/{organization_id}/service-accounts`

## Request

- Base URL: `https://docs.keycard.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://docs.keycard.ai/organizations/{organization_id}/service-accounts`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Client credentials
    - Token URL: `/service-account-token`

List service accounts for an organization

## Path parameters

- `organization_id` string, required: Organization ID or label identifier

## Query parameters

- `expand[]` union
  - 'permissions' | 'total_count'
  - string[]
- `query[]` string[]
- `after` string: Pagination cursor for navigating through results
- `before` string: Pagination cursor for navigating through results
- `limit` integer

## Headers

- `X-Client-Request-ID` string, uuid

## Response `200`

List of service accounts

- OrgManagementServiceAccountsList
  - `items` OrgManagementServiceAccount[], required
    - `id` string, required: Identifier for API resources. A 26-char nanoid (URL/DNS safe).
    - `name` string, required: A name for the entity to be displayed in UI
    - `description` string: Optional description of the service account
    - `created_at` string, date-time, required: The time the entity was created in utc
    - `updated_at` string, date-time, required: The time the entity was mostly recently updated in utc
    - `permissions` OrgManagementPermissions: Permissions granted to the authenticated principal for this resource. Only populated when the 'expand[]=permissions' query parameter is provided. Keys are resource types (e.g., "organizations"), values are objects mapping permission names to boolean values indicating if the permission is granted.
  - `page_info` OrgManagementPageInfo, required: Pagination information using cursor-based pagination
    - `has_next_page` boolean, required: Whether there are more items after the current page
    - `has_prev_page` boolean, required: Whether there are more items before the current page
    - `start_cursor` string: Pagination cursor for navigating through results
    - `end_cursor` string: Pagination cursor for navigating through results
  - `pagination` OrgManagementPagination, required: Cursor-based pagination metadata returned alongside a list of results
    - `before_cursor` string, required: An opaque cursor used for paginating through a list of results
    - `after_cursor` string, required: An opaque cursor used for paginating through a list of results
    - `total_count` integer: Total number of items across all pages. Only present when the request includes ?expand[]=total_count.
  - `permissions` OrgManagementPermissions: Permissions granted to the authenticated principal for this resource. Only populated when the 'expand[]=permissions' query parameter is provided. Keys are resource types (e.g., "organizations"), values are objects mapping permission names to boolean values indicating if the permission is granted.

## Other responses

- `400`: bad request error response when caller supplied invalid input data
- `401`: unauthorized error response when caller session is not authenticated
- `403`: forbidden error response when caller does not have permissions to a resource
- `404`: not found error response when caller does not have permission to see a resource or the resource does not exist
- `429`: rate limit exceeded error response when caller has exhausted api limits for the given time period
- `500`: internal server error response when server encountered error of its own creation
- `503`: service unavailable error when server you're attempting to reach is not available
- `default`: internal server error response when server encountered error of its own creation

## Changes

- **2026-10-29** `0dee67e0a73a`: 3 breaking, 2 warning, 6 info
  - the `page_info` response's property type changed from `object` to no type for status `200`
  - removed the required property `page_info/has_next_page` from the response with the `200` status
  - removed the required property `page_info/has_prev_page` from the response with the `200` status
  - removed the optional property `page_info/end_cursor` from the response with the `200` status
  - …7 more
- **2026-10-16** `0cfaff865771`: 16 breaking, 8 warning, 82 info
  - the response property `details/items/field` became optional for the status `400`
  - the response property `details/items/field` became optional for the status `401`
  - the response property `details/items/field` became optional for the status `403`
  - the response property `details/items/field` became optional for the status `404`
  - …102 more
- **2026-04-20** `932699a5ea16`: 1 info
  - added the enum value `total_count` to the property `items/` of the `query` request parameter `expand[]`
- **2026-03-16** `d3d69f45bfed`: 3 info
  - the endpoint scheme security `OAuth2` was added to the API
  - the endpoint scheme security `bearerAuth` was added to the API
  - the endpoint scheme security `org-management_bearerAuth` was removed from the API
- …earlier changes not shown

[Operation history](https://skmtc.dev/keycardai/apis/untitled-api/changes/organizations/:organization_id/service-accounts/get.md)

---

[API](https://skmtc.dev/keycardai/apis/untitled-api.md) - [All operations](https://skmtc.dev/keycardai/apis/untitled-api/llms.txt) - [OpenAPI document](https://skmtc.dev/keycardai/apis/untitled-api/revisions/0dee67e0a73a?raw)
