# Roles


Gemini uses role-based access control to enforce least-privilege permissions across API keys.

Roles let you isolate responsibilities:

- Grant trading capabilities to automated bots.
- Restrict withdrawal permissions to treasury systems.
- Limit monitoring and reporting tools to read-only access.

Configure key roles in [API Settings](https://exchange.gemini.com/settings/api).

<div className="p-4 text-sm section-icon section-info rounded-lg font-medium flex items-center" role="alert">
    <svg
        viewBox="0 0 24 24"
        >
        <path
            fillRule="evenodd"
            clipRule="evenodd"
            d="M4 12C4 7.58172 7.58172 4 12 4C16.4183 4 20 7.58172 20 12C20 16.4183 16.4183 20 12 20C7.58172 20 4 16.4183 4 12ZM12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2ZM11 17V11H13V17H11ZM11 9V7H13V9H11Z"
        />
    </svg>
  <span>When you create an API key, Gemini assigns the Trader role by default.</span>
</div>

If you call an endpoint without the required role, Gemini returns HTTP `403 Forbidden` with reason `MissingRole`:

- `403` status
- a JSON response body with:
  - `reason` set to `MissingRole`
  - `message` explaining the required role

See [Error Codes](/error-codes#error-codes) for additional error response details.

## Administrator

<div className="p-4 text-sm section-icon section-info rounded-lg font-medium flex items-center" role="alert">
    <svg
        viewBox="0 0 24 24"
        >
        <path
            fillRule="evenodd"
            clipRule="evenodd"
            d="M4 12C4 7.58172 7.58172 4 12 4C16.4183 4 20 7.58172 20 12C20 16.4183 16.4183 20 12 20C7.58172 20 4 16.4183 4 12ZM12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2ZM11 17V11H13V17H11ZM11 9V7H13V9H11Z"
        />
    </svg>
  <span>The Administrator role is exclusive to Master API keys.</span>
</div>

The Administrator role permits keys to:

- Create accounts within the Master Group
- View accounts within the Master Group

### Trader
The Trader role permits keys to:

- Check balances
- Place and cancel orders
- Check order status
- View deposit addresses
- View active orders
- View trade history and volume
- View accounts within the Master Group

### Fund Manager
The Fund Manager role permits keys to:

- Check balances
- View deposit addresses
- Request new cryptocurrency deposit addresses
- Withdraw cryptocurrency funds
- View accounts within the Master Group
- Execute internal transfers between two accounts in the same Master group


## Auditor

<div className="p-4 text-sm section-icon section-info rounded-lg font-medium flex items-center" role="alert">
    <svg
        viewBox="0 0 24 24"
        >
        <path
            fillRule="evenodd"
            clipRule="evenodd"
            d="M4 12C4 7.58172 7.58172 4 12 4C16.4183 4 20 7.58172 20 12C20 16.4183 16.4183 20 12 20C7.58172 20 4 16.4183 4 12ZM12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2ZM11 17V11H13V17H11ZM11 9V7H13V9H11Z"
        />
    </svg>
  <span>The Auditor role is read-only and cannot be combined with other roles.</span>
</div>


The Auditor role permits keys to:

- Check balances
- Check order status
- View deposit and withdrawal history
- View deposit addresses
- View active orders
- View trade volume
- View past trades
- View accounts within the Master Group

### Endpoint summary

The table below summarizes required roles by endpoint:

#### Account Scoped Endpoints

<table>
   <thead>
      <tr>
         <th style={{minWidth: 125}}>Endpoint</th>
         <th style={{minWidth: 200}}>URI</th>
         <th style={{maxWidth: 70}}>Trader can access?</th>
         <th style={{maxWidth: 70}}>Fund Manager can access?</th>
         <th style={{maxWidth: 70}}>Auditor can access?</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td>[Create New Order](/rest/orders#create-new-order)</td>
         <td>`/v1/order/new`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Cancel Order](/rest/orders#cancel-order)</td>
         <td>`/v1/order/cancel`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Cancel All Session Orders](/rest/orders#cancel-all-session-orders)</td>
         <td>`/v1/order/cancel/session`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Cancel All Active Orders](/rest/orders#cancel-all-active-orders)</td>
         <td>`/v1/order/cancel/all`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Wrap Order](/rest/orders#wrap-order)</td>
         <td>`/v1/wrap/:symbol`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Order Status](/rest/orders#get-order-status)</td>
         <td>`/v1/order/status`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✓</td>
      </tr>
      <tr>
         <td>[Get Active Orders](/rest/orders#list-active-orders)</td>
         <td>`/v1/orders`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✓</td>
      </tr>
      <tr>
         <td>[List Past Trades](/rest/orders#list-past-trades)</td>
         <td>`/v1/mytrades`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✓</td>
      </tr>
      <tr>
         <td>[Get Orders History](/rest/orders#list-past-orders)</td>
         <td>`/v1/orders/history`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✓</td>
      </tr>
      <tr>
         <td>[Get Trade Volume](/rest/orders#get-trading-volume)</td>
         <td>`/v1/tradevolume`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✓</td>
      </tr>
      <tr>
         <td>[Get Notional Volume](/rest/orders#get-notional-trading-volume)</td>
         <td>`/v1/notionalvolume`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✓</td>
      </tr>
      <tr>
         <td>[Heartbeat](/rest/session#heartbeat)</td>
         <td>`/v1/heartbeat`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Get Available Balances](/rest/fund-management#get-available-balances)</td>
         <td>`/v1/balances`</td>
         <td>✓</td>
         <td>✓</td>
         <td>✓</td>
      </tr>
      <tr>
         <td>[Get Notional Balances](/rest/fund-management#get-notional-balances)</td>
         <td>`v1/notionalbalances/:currency`</td>
         <td>✓</td>
         <td>✓</td>
         <td>✓</td>
      </tr>
      <tr>
         <td>[Get Deposit Addresses](/rest/fund-management#list-deposit-addresses)</td>
         <td>`/v1/addresses/:network`</td>
         <td>✓</td>
         <td>✓</td>
         <td>✓</td>
      </tr>
      <tr>
         <td>[New Deposit Address](/rest/fund-management#create-new-deposit-address)</td>
         <td>`/v1/deposit/:network/newAddress`</td>
         <td>✗</td>
         <td>✓</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Transfers](/rest/fund-management#list-past-transfers)</td>
         <td>`/v2/transfers`</td>
         <td>✓</td>
         <td>✓</td>
         <td>✓</td>
      </tr>
      <tr>
         <td>[Custody Account Fees](/rest/fund-management#list-custody-fee-transfers)</td>
         <td>`/v1/custodyaccountfees`</td>
         <td>✓</td>
         <td>✓</td>
         <td>✓</td>
      </tr>
      <tr>
         <td>[Withdraw Crypto Funds](/rest/fund-management#withdraw-crypto-funds)</td>
         <td>`/v2/withdraw/:network/:ticker`</td>
         <td>✗</td>
         <td>✓</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[New Clearing Order](/rest/clearing#create-new-clearing-order)</td>
         <td>`/v1/clearing/new`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Clearing Order Status](/rest/clearing#get-clearing-order)</td>
         <td>`/v1/clearing/status`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✓</td>
      </tr>
      <tr>
         <td>[Cancel Clearing Order](/rest/clearing#cancel-clearing-order)</td>
         <td>`/v1/clearing/cancel`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Confirm Clearing Order](/rest/clearing#confirm-clearing-order)</td>
         <td>`/v1/clearing/confirm`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Clearing Order List](/rest/clearing#list-clearing-orders)</td>
         <td>`/v1/clearing/list`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Clearing Broker List](/rest/clearing#list-clearing-brokers)</td>
         <td>`/v1/clearing/broker/list`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Clearing Trades](/rest/clearing#list-clearing-trades)</td>
         <td>`/v1/clearing/trades`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Get Instant Quote](/rest/instant#get-instant-quote)</td>
         <td>`/v1/instant/quote`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Execute Instant Order](/rest/instant#execute-instant-order)</td>
         <td>`/v1/instant/execute`</td>
         <td>✓</td>
         <td>✗</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Add A Bank](/rest/fund-management#add-bank)</td>
         <td>`/v1/payments/addbank`</td>
         <td>✗</td>
         <td>✓</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Add A Bank CAD](/rest/fund-management#add-bank-cad)</td>
         <td>`/v1/payments/addbank/cad`</td>
         <td>✗</td>
         <td>✓</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[View Payment Methods](/rest/fund-management#list-payment-methods)</td>
         <td>`/v1/payments/methods`</td>
         <td>✓</td>
         <td>✓</td>
         <td>✓</td>
      </tr>
      <tr>
         <td>[Account Detail](/rest/account-administration#get-account-detail)</td>
         <td>`/v1/account`</td>
         <td>✓</td>
         <td>✓</td>
         <td>✓</td>
      </tr>
      <tr>
         <td>[List Approved Addresses](/rest/fund-management#list-approved-addresses)</td>
         <td>`/v1/approvedAddresses/account/:network`</td>
         <td>✓</td>
         <td>✓</td>
         <td>✓</td>
      </tr>
      <tr>
         <td>[Create Approved Address](/rest/fund-management#create-new-approved-address)</td>
         <td>`/v1/approvedAddresses/:network/request`</td>
         <td>✗</td>
         <td>✓</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[Remove Approved Address](/rest/fund-management#remove-approved-address)</td>
         <td>`/v1/approvedAddresses/:network/remove`</td>
         <td>✗</td>
         <td>✓</td>
         <td>✗</td>
      </tr>
      <tr>
         <td>[FX Rate](/rest/market-data#fx-rate)</td>
         <td>`/v2/fxrate/:symbol/:timestamp`</td>
         <td>✗</td>
         <td>✗</td>
         <td>✓</td>
      </tr>
   </tbody>
</table>


#### Master Scoped Endpoints

<table>
  <thead>
    <tr>
      <th>Endpoint</th>
      <th style={{minWidth: 250}}>URI</th>
      <th>Administrator can access?</th>
      <th>Trader can access?</th>
      <th>Fund Manager can access?</th>
      <th>Auditor can access?</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>[Create Account](/rest/account-administration#create-new-account)</td>
      <td>`/v1/account/create`</td>
      <td>✓</td>
      <td>✗</td>
      <td>✗</td>
      <td>✗</td>
    </tr>
    <tr>
      <td>[Rename Account](/rest/account-administration#rename-account)</td>
      <td>`/v1/account/rename`</td>
      <td>✓</td>
      <td>✗</td>
      <td>✗</td>
      <td>✗</td>
    </tr>
    <tr>
      <td>[Get Accounts](/rest/account-administration#list-accounts-in-group)</td>
      <td>`/v1/account/list`</td>
      <td>✓</td>
      <td>✓</td>
      <td>✓</td>
      <td>✓</td>
    </tr>
    <tr>
      <td>[Transfer Between Accounts](/rest/fund-management#transfer-between-accounts)</td>
      <td>`/v1/account/transfer/:currency`</td>
      <td>✗</td>
      <td>✗</td>
      <td>✓</td>
      <td>✗</td>
    </tr>
    <tr>
      <td>[Transactions](/rest/fund-management#get-transaction-history)</td>
      <td>`/v1/transactions`</td>
      <td>✓</td>
      <td>✓</td>
      <td>✓</td>
      <td>✓</td>
    </tr>
  </tbody>
</table>


<div className="p-4 text-sm section-icon section-info rounded-lg font-medium flex items-center" role="alert">
    <svg
        viewBox="0 0 24 24"
        >
        <path
            fillRule="evenodd"
            clipRule="evenodd"
            d="M4 12C4 7.58172 7.58172 4 12 4C16.4183 4 20 7.58172 20 12C20 16.4183 16.4183 20 12 20C7.58172 20 4 16.4183 4 12ZM12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2ZM11 17V11H13V17H11ZM11 9V7H13V9H11Z"
        />
    </svg>
  <span>Master level API keys can access Account level endpoints if the proper role is assigned. The account will need to be passed in the payload of the request as detailed [Using Master API Keys](/account-admin-endpoints#using-master-api-keys).</span>
</div>
