Skip to main content

Power BI

Connect Microsoft Power BI to Matidor with your API key and build live reports on projects, work, budgets and costs.

Written by Victor Raziel Aguilar Garcia

Who can do this: Workspace Manager (an API key is required).

You can connect Microsoft Power BI Desktop to Matidor and build live reports on your projects, work, budgets and costs.

Before you start, create an API key.

Connect Power BI

  1. Open Power BI Desktop.

  2. Go to File → Get Data and select Web.

  3. In the dialog, select Advanced.

  4. In URL parts, enter one of the Matidor URLs below.

  5. In HTTP request header parameters, enter Authorization in the first field and Bearer followed by a space and your API key in the second.

  6. Click OK. It may take several minutes to retrieve the data, depending on its size.

  7. If a second dialog asks about the permission scope, click Connect.

Get Data → Web in Power BI Desktop.

The Advanced dialog with the URL and the Authorization header.

Matidor BI URLs

Header to use:

Authorization
Bearer <YOUR_API_KEY>

Note: Replace <YOUR_API_KEY> with your own key, and keep the word Bearer and the space before it.

Once connected, you can build live Matidor reports in Power BI.

Retrieve all records with pagination

The v2 URLs for all projects, all work, all budgets and all costs return results in pages. If you already have a Power BI report connected to one of these URLs, make two changes so it retrieves every record.

Change 1: Update the Source step

  1. In Power BI Desktop, select Transform Data.

  2. Select your Matidor query and click Advanced Editor.

  3. Replace the existing Source step with the paginated version below. Replace YOUR_TOKEN_HERE with your API key.

  4. In the FirstPage line, use the v2 URL for the data this query retrieves. The sample uses the all-work URL, so change it if your query retrieves projects, budgets or costs. If your query used a v1 URL, change v1 to v2.

Source =
let
Token = "YOUR_TOKEN_HERE",
GetPage = (Url as text) =>
Json.Document(Web.Contents(Url, [Headers = [Authorization = "Bearer " & Token]])),
FirstPage = GetPage("https://core.matidor.com/api/public/v2/bi/all-projects/work"),
Pages = List.Generate(
() => FirstPage,
each _ <> null,
each if Record.HasFields(_, "@odata.nextLink") then GetPage(Record.Field(_, "@odata.nextLink")) else null
),
Combined = [value = List.Combine(List.Transform(Pages, each [value]))]
in
Combined,

Use the FirstPage line that matches your query:

Data

FirstPage line

All projects

FirstPage = GetPage("https://core.matidor.com/api/public/v2/bi/all-projects/projects"),

All work

FirstPage = GetPage("https://core.matidor.com/api/public/v2/bi/all-projects/work"),

All budgets

FirstPage = GetPage("https://core.matidor.com/api/public/v2/bi/all-projects/budgets"),

All costs

FirstPage = GetPage("https://core.matidor.com/api/public/v2/bi/all-projects/costs"),

Note: Each query retrieves one type of data. If your report uses more than one of these URLs, update the Source step in each query.

Change 2: Remove the @odata.nextLink column type

After pagination is set up, @odata.nextLink is only used to fetch the next page and isn't in the final dataset. If your query still changes its type, Power BI shows this error:

Expression.Error: The column '@odata.nextLink' of the table wasn't found.

To fix it, find the Changed Type step and remove this line from the column type definitions. No other changes are needed:

, {"@odata.nextLink", type text}

Last verified: September 2026 release

Did this answer your question?