Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
RobHess05
Helper I
Helper I

Need help consuming API data with a dynamic path

I can read data from a REST API with this URL:  finance/agreements/

The resulting set returns an ID for each agreement.  I can then use that ID to find additions specific to that agreement.  This example shows only additions for ID 21finance/agreements/21/additions

 

Is there a way to consume all of the additions using a single Power Query?  I'm assuming that I will need to loop thru all of the agreements, capture the ID's, then download the additions as separate API calls. 

Thank you for reading.   

1 ACCEPTED SOLUTION
mahoneypat
Microsoft Employee
Microsoft Employee

Yes.  You can make your first web call, expand that if needed to get an [ID] column, make it type text if needed, and then add a custom column with another Web.Contents( ) with most of the url hardcoded, but dynamically use the [ID] column.

 

=Web.Contents("... finance/agreements/" & [ID] & "/additions")

 

You can then expand the resulting column of Tables to combine all the data.

Pat

 





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


View solution in original post

2 REPLIES 2
RobHess05
Helper I
Helper I

Thank you for the feedback @mahoneypat .  I took your paging example on another ticket, and used it to solve this issue.  My code is below.  You rock!

        source = Json.Document(Web.Contents(url & "/finance/agreements/count", [ Headers = DefaultRequestHeaders ])),
        count = (source[count]),
        pages = List.Numbers(0,count/PageSize, PageSize),
        #"Converted to Table" = Table.FromList(pages, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
        #"Changed Type" = Table.TransformColumnTypes(#"Converted to Table",{{"Column1", type text}}),
        #"Added Custom" = Table.AddColumn( #"Changed Type", "Custom", each Json.Document(Web.Contents(url & "/finance/agreements?fields=id&pageSize=" & Number.ToText(PageSize) & "&page="&[Column1], [ Headers = DefaultRequestHeaders ]))),
        #"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
        #"Expanded ID"  = Table.ExpandRecordColumn(#"Expanded Custom", "Custom", {"id"}, {"id"}),
        #"Added Custom2" = Table.AddColumn( #"Expanded ID" , "Custom2", each Json.Document(Web.Contents(url & "/finance/agreements/"&Number.ToText([id])&"/additions?pageSize=" & Number.ToText(PageSize), [ Headers = DefaultRequestHeaders ]))),
        #"Expanded Custom2" = Table.ExpandListColumn(#"Added Custom2", "Custom2"),
mahoneypat
Microsoft Employee
Microsoft Employee

Yes.  You can make your first web call, expand that if needed to get an [ID] column, make it type text if needed, and then add a custom column with another Web.Contents( ) with most of the url hardcoded, but dynamically use the [ID] column.

 

=Web.Contents("... finance/agreements/" & [ID] & "/additions")

 

You can then expand the resulting column of Tables to combine all the data.

Pat

 





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

November Power BI Update Carousel

Power BI Monthly Update - November 2025

Check out the November 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.