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

# Get Available Roles

> Retrieves the list of available roles that can be assigned to team members.

Retrieve the list of roles available for assignment when inviting team members or assigning a role to an existing member.

The roles returned depend on the caller's own role. Business Owners and Business Admins receive the full assignable set (`initiator`, `approver`, `business_admin`); other roles only see `initiator`. The `business_owner` and `individual_owner` roles are reserved and never returned by this endpoint.

## Example Request

```bash theme={null}
curl -X GET "https://api.rolla.xyz/api/v1/external/teams/roles" \
  -H "X-API-Key: your_api_key_here"
```

## Example Response

```json theme={null}
{
  "status": 200,
  "success": true,
  "message": "Available roles retrieved successfully",
  "data": {
    "roles": [
      {
        "id": "fc4cd36d-f81c-4971-a23f-688162e14d21",
        "name": "business_admin",
        "description": "Full access to business operations, same as business owner"
      },
      {
        "id": "21302ed1-0e63-44e6-bb02-8db6baa2efcd",
        "name": "initiator",
        "description": "Can initiate transactions including sending money, but cannot approve them."
      },
      {
        "id": "9a7b6c5d-4e3f-2a1b-0c9d-8e7f6a5b4c3d",
        "name": "approver",
        "description": "Can approve transactions and manage beneficiaries, but cannot initiate outbound sends."
      }
    ]
  }
}
```

<Tip>
  Use the role `id` from this response when inviting a team member via the [`/teams/invite`](/api-reference/endpoint/teams/invite) endpoint or assigning a role via [`/teams/members/{userId}/role`](/api-reference/endpoint/teams/assign-role).
</Tip>

## Role Reference

| Role               | Send money | Approve withdrawals | Approve payments | Manage beneficiaries | Manage team | Assignable by           |
| ------------------ | :--------: | :-----------------: | :--------------: | :------------------: | :---------: | ----------------------- |
| **Business Owner** |     Yes    |         Yes         |        Yes       |          Yes         |     Yes     | — (set at signup)       |
| **Business Admin** |     Yes    |         Yes         |        Yes       |          Yes         |     Yes     | Owner                   |
| **Approver**       |      —     |         Yes         |        Yes       |          Yes         |      —      | Owner, Admin            |
| **Initiator**      |     Yes    |          —          |         —        |          Yes         |      —      | Owner, Admin, Initiator |

* **Initiator** — Can initiate transactions including sending money, but cannot approve them. (Formerly named **Collaborator**.)
* **Approver** — Can approve transactions and manage beneficiaries, but cannot initiate outbound sends. Only Business Owners and Business Admins can assign this role.

<Note>
  Approving a transaction (via `POST /wallet/approve-transaction`) is gated on the `approve_withdrawals` permission, not on a specific role name. Business Owners, Business Admins, **and Approvers** all satisfy it.
</Note>

<Info>
  **Migration note:** The `collaborator` role has been renamed to `initiator` — permissions are unchanged. A new `approver` role is now available. If you string-match on role names anywhere in your integration, map `"collaborator"` to `"initiator"` and add an `"approver"` branch. `GET /teams/roles` no longer returns `individual_owner` in business contexts.
</Info>


## OpenAPI

````yaml GET /teams/roles
openapi: 3.1.0
info:
  title: Rolla Developer API
  description: >-
    API for programmatic transaction management on the Rolla platform. Monetary
    `amount` fields use the smallest unit of the referenced currency unless an
    endpoint says otherwise (e.g. NGN = kobo, USD = cents, where **100 cents =
    USD 1.00**).
  version: 1.0.0
servers:
  - url: https://api.rolla.xyz/api/v1/external
    description: Production server
security:
  - apiKeyAuth: []
paths:
  /teams/roles:
    get:
      summary: Get Available Roles
      description: >-
        Retrieves the list of available roles that can be assigned to team
        members.
      operationId: getTeamRoles
      responses:
        '200':
          description: Roles retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Roles retrieved successfully
                  data:
                    type: object
                    properties:
                      roles:
                        type: array
                        items:
                          $ref: '#/components/schemas/TeamRole'
        '401':
          description: Unauthorized - Invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    TeamRole:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Role identifier
        name:
          type: string
          enum:
            - business_admin
            - initiator
            - approver
          example: initiator
          description: >-
            Role name. `business_owner` and `individual_owner` are reserved and
            never returned by this endpoint.
        description:
          type: string
          description: Role description
        permissions:
          type: array
          items:
            type: string
          description: List of permissions granted by this role
    Error:
      type: object
      properties:
        success:
          type: boolean
          example: false
        message:
          type: string
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Your Rolla API key

````