The situation you describe above DOES NOT make multiple API calls.
It is analogous to the situation where you have an API call configured as “Data” and then do “Make Changes to a thing” where all fields that you are changing are diffferent fields of the return value from the same API call.
Let’s say your make changes step changes two fields, Foo and Bar on some thing.
Field Foo gets its update from “myApiCall’s ReturnedFoo”.
Field Bar gets its update from “myApiCall’s ReturnedBar”.
Further, the make changes step has an “Only when…” of “myApiCall’s Error is empty”.
Does Bubble execute THREE API calls to accomplish this? (That is, must it ping the API thrice to get the values of Error, returnedFoo, and ReturnedBar?)
No (as long as the parameters passed to all calls are the same), it does not.
If all “three” calls are identical, Bubble will execute the call just once. In this example, the API call would be forced to happen by the “Only when…”. Bubble must make the call to determine if Error is null.
However, it understands that, if the parameters there are the same as the parameters used in the data assignment part of the make changes dialog, I must be talking about the SAME CALL.
So, if Error comes back empty, it grabs ReturnedFoo and ReturnedBar from the “cached” results of the call forced by our “Only if…” condition.
I have verified this by observing console data for APIs that I’ve written to be used with Bubble. In cases like this, the API is queried only once.
As for API WF on a List versus Scheduled Workflow, the interface to the former IS superior for the reasons you note.
But you can easily use API WF on a List on a single item. For the list, just send it the thing you want to operate on appended with the :make list
operator. That takes your individual object
and turns it into a list of object
type with just one list item.
(Said “list” is a copy of the object, represented as a single-item list. It does not mutate the original thing of course.)