Skip to navigation

Read Table

Beta

Returns the records of any Business Central table, one JSON object per record, with every stored field of the table as a property.

The table has to be enabled for the calling API key, or for the calling Entra ID application, in the BI API Allowed Tables setup in Business Central. Reading a table that is not enabled fails with 403 and the error code bi_table_not_allowed.

Every read is incremental. Records always come back ordered by row version and always carry rowVersion, so the table needs an index that starts with the row version; without it the call fails with 400 and the error code bi_missing_rowversion_index. Read a table for the first time by omitting lastRowVersion and following nextPageKey to the end, then pass the highest rowVersion you received as lastRowVersion to pick up changes later.

The default page size is 1000 records, because a BI record carries every field of its table. The maximum is 20000.

Authentication

x-np-api-keystring
API Key authentication via header

Path parameters

tenantstringRequired

Your Entra Tenant ID. More details.

environmentstringRequired

Your Business Central Environment. More details.

companystringRequired

Your Business Central Company. More details.

tableNointegerRequired

The Business Central table number. GET /tablemetadata lists the available tables.

Headers

x-api-versiondateOptional

Used for API versioning. More details.

Query parameters

pageSizeintegerOptional
The maximum number of records to return per page. Defaults to 1000, maximum 20000.
pageKeystringOptional
The key for the next page of results, obtained from a previous response.
lastRowVersionstringOptional
The highest row version received previously. Only newer records are returned. Omit it to read the table from the beginning. A page stops below any write still in progress, so it can be shorter than pageSize or empty while one is in flight, which is what makes storing the highest rowVersion you received safe.
syncbooleanOptional

Deprecated and no longer needed. Every read is incremental, so sync=true is accepted and does nothing, and sync=false is rejected with invalid_input.

Response

This endpoint returns an object.
morePagesboolean
nextPageKeystring
nextPageURLstring
datalist of maps from strings to any