Adalo API and Collection Relationships

Hello, I cannot comment on previous threads about this inquiry due to them being now closed, but I’m wondering if there’s an update to being able to use Adalo’s API - Put/Post with the internal collection relationships. I have hired a database engineer for this project and wanted to make sure this is achievable before we fully cook the connection.

More info on my situation- My data is entirely in Airtable, but I’m wanting to fully sync it over to Adalo’s internal collections (via API) so I can bypass the 5 calls/second limit with Airtable… making sure my app doesn’t lock up with 100+ users on it at the same time. @anon78309838 might be of great insight on this! :pray:

hi @anon28807528 ,

Yes, Adalo’s API works great with relationship fields now (as arrays of record ids).

Here are a couple of caveats you should be aware of before deciding. These are based on my usage of the API for a couple of months now, and talking to Support and hearing back from Adalo devs through them:

  1. There’s a low rate limit (about 3 calls per second). So if you want to update a single record, thats fine, but if you want to update more than 3 records at once, you will have to slow down your code or the Adalo server will return a 503 error. Personally, I await confirmation of the update of each record before updating the next. This is not workable for large batches of updates.

  2. I haven’t found a practical way to get a subset of records from a collection. You can either list all the records in the collection, or get single records - but getting more than 3 per second triggers a 503 response. Also, depending on how complex each of your records is, even listing all the records in a collection can sometimes trigger a 503 error, even with pagination per 100 records. Sometimes, using a lower pagination limit like 10-20 can help you avoid a 503 error when the standard limit of 100 fails.

If you’re ok with these limitations, it works well. By the way, if someone has found a solution to either of the issues above, please share!! :slightly_smiling_face:

3 Likes

@mephix coming in clutch!

I have one collection that is ~3,800, so definitely need to map out how to play with the low rate limit. Your insight is wonderful.

1 Like

You can try this https://nocodeapi.com/pricing

this is being used by a few I know to help in 2 ways:

  1. Bypass the 5 calls/second limit on Airtable
  2. Cache the data to make your api calls faster

Basically you’ll connect Airtable to nocodeapi & call the nocodeapi from Adalo instead of calling the Airtable.

2 Likes

This is a great solution! I picked up a lifetime membership with them a while back just thinking I’d need to use their services eventually.

Hi Bhanu

Excuse my ignorance :-), but how does using NoCodeAPI help in mitigating 503 and 429 errors in Adalo please?

Thanks

Claire

@claireconza

Airtable has limitations on number of calls per minute which leads to 429 errors when too many requests are sent in short span.

Nocodeapi does cache your data from airtable and eliminates the limits which Airtable has.

503 happens when service is unavailable & again nocodeapi gives you access to the cached data from airtable here, although you’ll not be able to perform add/update actions.

Hope that helps!

Thanks Bhanu - when you say Airtable do you mean Adalo?

Thanks

Claire

@claireconza apologies, the topic was about using Airtable as an external collection and its limitations. This suggestion is applicable when you’re using Airtable as you external collection in Adalo.

For Adalo’s own collections, nocodeapi is not available at the moment & it wouldn’t be relevant to use when you’re within adalo.

Hi @mephix - yo mention that the Adalo API works with relationships as an array or record IDs. I have a situation where i’m trying to do a PUT on an item in the Users collection and i’m getting a 200 response back however the update isn’t actually appearing in the dataset in Adalo. I’ve read conflicting information about the support for relationships in collections, some saying it’s not supported. Have you done this yourself?

1 Like