Cubicle

List service accounts

GET
/v1/orgs/{org}/service-accounts

Returns the organization's service accounts, ordered by identity, each with its API keys, oldest key first. Deleted service accounts and revoked keys are left out. Tokens are never returned; hint identifies each key.

A key past its expiresAt stays in the list until it is revoked, but it no longer authenticates.

Only the organization's owners and admins may call this route, with a sign-in session; API keys are refused.

See Run CI jobs in Boxes.

Authorization

session
headerAuthorizationBearer <token>

A sign-in session token (jvs_…) from the Dashboard, cubicle login or the device authorization flow.

Path Parameters

org*string

The organization's ID or name. An organization where the caller is not an active member returns 404.

Response Body

The organization's service accounts.

application/json
  1. response
[index: integer]?

A non-interactive member that one organization owns, identified as ORG/NAME. It receives Box grants like a person, holds the organization's API keys and never signs in.

Example Request
curl -X GET 'https://api.cubicle.sh/v1/orgs/acme/service-accounts'
Example Response
[  {    "id": "8e0a2c4e-6b8d-4f1a-a3c5-9e1b3d5f7a9c",    "name": "ci",    "identity": "acme/ci",    "role": "member",    "createdAt": "2026-11-01T09:00:00.000Z",    "keys": [      {        "id": "4b6d8f0a-2c4e-4a6b-8d0f-1a3c5e7b9d2f",        "name": "github-actions",        "scope": "write",        "hint": "cbk_2QwBcGYt",        "createdBy": {          "id": "2c4e6a8b-0d1f-4e3a-9b5c-7d9f1b3d5e7a",          "identity": "ada@example.com"        },        "createdAt": "2026-11-01T09:05:00.000Z",        "expiresAt": "2027-01-30T09:05:00.000Z",        "lastUsedAt": "2026-11-05T10:14:21.000Z"      }    ]  }]