---
search:
  tags:
    - bi
    - GET
seo:
  description: >-
    BI: denormalized hours (scope bi:read). Reference for the GET
    /api/v1/bi/hours endpoint in the Basenet Public API.
sidebar:
  label: 'BI: denormalized hours (scope bi:read)'
  badge: GET
title: 'BI: denormalized hours (scope bi:read)'
type: openapi-operation
---
Endpoint: `GET /api/v1/bi/hours`

Authentication: `bearerAuth` (Scoped API token (bnx\_…). Required scopes are noted per operation.)

Parameters:
- `$top` (in query, integer, optional): Page size ($top, max 200).
- `$skip` (in query, integer or null, optional): Offset ($skip).

Responses:
- `200`: OData v4 collection
- `401`: Unauthenticated
- `403`: Forbidden (missing scope or permission)
- `429`: Rate limited

Response 200 body (`application/json`):
- `@odata.context` (string, required)
- `value` (array of object, required)
- `value[].hourEntryId` (string, required)
- `value[].matterId` (string or null, required)
- `value[].matterNumber` (string or null, required)
- `value[].employeeUserId` (string, required)
- `value[].date` (string, required)
- `value[].workedHours` (number, required)
- `value[].billableHours` (number, required)
- `value[].timeClass` (string, required)
- `value[].rateCents` (integer or null, required)
- `value[].amountCents` (integer, required)
- `value[].billed` (boolean, required)
- `@odata.nextLink` (string, optional)
