# 🆕 Call API: call any API securely and return data back to your app instantly

**URL:** <https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938>\
**Category:** General\
**Created:** [August 11, 2023, 7:13pm UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938 "2023-08-11T19:13:41Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![erwblo](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/erwblo/32/75_2.png) [@erwblo](https://community.glideapps.com/u/erwblo)\
**Post date:** [August 14, 2023, 7:58am UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/21 "2023-08-14T07:58:21Z")

</div>

thank you!

[![](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/c/d/cd620b3ee42e1e29ed0c3c71a0585345bfb6b82d.jpeg "Connect Glide to Any Platform Using Glide's New Call API Column and Call API Action") ](https://www.youtube.com/watch?v=8XWtNcOLTGA)

---

<div class="post-metadata">

**Author:** ![Adam\_Crossley](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/adam_crossley/32/24083_2.png) [@Adam\_Crossley](https://community.glideapps.com/u/Adam_Crossley)\
**Post date:** [August 16, 2023, 9:26pm UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/22 "2023-08-16T21:26:00Z")

</div>

This is awesome!

When you say results are cached is that referring to the computed column version?

If so, how long until the cache is refreshed to get new data?

My use case example:

1. Action to POST a customer record.
2. Action to DELETE a customer record.
3. Handle JSON returns for various in-app purposes.
4. Computed column GET all customer records.

Step 4 isn’t GETting the latest records.

What is really cool, and for some reason I didn’t expect it, is that I can create a Glide table with only 1 row and a bunch of user-specific columns, and return API calls to the user-specific columns! This is great!

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [August 16, 2023, 11:24pm UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/23 "2023-08-16T23:24:15Z")

</div>

> [@Adam\_Crossley](#):
>
> Step 4 isn’t GETting the latest records.

You can force a cache update by adding a dummy parameter to your URL with a value that changes at the interval you need the response updated. Every time the value changes, Glide will update the cached result.

---

<div class="post-metadata">

**Author:** ![alleneelizabeth](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/alleneelizabeth/32/62880_2.png) [@alleneelizabeth](https://community.glideapps.com/u/alleneelizabeth)\
**Post date:** [August 18, 2023, 8:42am UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/24 "2023-08-18T08:42:12Z")

</div>

This is very useful query for the users. They can easily backup their data by calling the API’s.

---

<div class="post-metadata">

**Author:** ![Petko\_Delchev](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/petko_delchev/32/62913_2.png) [@Petko\_Delchev](https://community.glideapps.com/u/Petko_Delchev)\
**Post date:** [August 18, 2023, 10:03am UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/25 "2023-08-18T10:03:39Z")

</div>

Hi,

I have a PRO plan and don’t have this option?

Tried with other columns as well. Enxperimental code is no where to be found.

 ![CleanShot 2023-08-18 at 13.02.01@2x](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/d/e/de1db5da2d5ab3faedc443958ad3bb3dfffece70.jpeg)

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [August 18, 2023, 10:07am UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/26 "2023-08-18T10:07:09Z")

</div>

It’s a pre-release feature. You can enable it from your Glide Dashboard in the Previews section at the top right.

---

<div class="post-metadata">

**Author:** ![Kiwi](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kiwi/32/60332_2.png) [@Kiwi](https://community.glideapps.com/u/Kiwi)\
**Post date:** [August 20, 2023, 10:31pm UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/27 "2023-08-20T22:31:51Z")

</div>

This is epic @Robert_Petitto ! I’ve been trying to use the URL Construct + API Call to get a record from Airtable. I can get all the records, but cannot use the parameter function to filter the records. Nothing shows up. Any advice on airtable API in this instance? The API docs suggest filterByFormula but Glide isn’t resulting in an answer… I don’t have the airtable record id, I just want to search all records to find if a column has a specific barcode number.

Thank you for providing such detailed and easy to follow tutorials!

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [August 20, 2023, 11:35pm UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/28 "2023-08-20T23:35:49Z")

</div>

I’m not terribly familiar with the AirTable API, but a quick search says you first need to encode the the formula. Not sure what type of encoding it needs.

 ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/1/6/16528f4296e59e756833a7193c23e31c5e341522.jpeg)

---

<div class="post-metadata">

**Author:** ![Kiwi](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kiwi/32/60332_2.png) [@Kiwi](https://community.glideapps.com/u/Kiwi)\
**Post date:** [August 21, 2023, 12:26am UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/29 "2023-08-21T00:26:51Z")

</div>

Thanks for your reply! I was trying to use the Glide column ‘Construct URL’ and for some reason the parameter wasn’t being read by Airtable in the ‘Call API’ Glide column.

But I got around it! Instead of using ‘Construct URL’ as in your example, I:

1. Made the API URL I needed using the Airtable tool (link [https://codepen.io/airtable/full/MeXqOg](https://codepen.io/airtable/full/MeXqOg))
2. Used a Glide ‘Template’ Column and pasted my airtable API URL, then replaced a dynamic element I needed with template values from Glide
3. Used the ‘Template’ Column result as my “endpoint” value in ‘Call API’ Glide column.

And TADA! It worked, hooray  
So all in all… Use a template column instead of the construct URL column when calling airtable API 🙂

btw this is incredibly epic for saving sync time from airtable to Glide, I was previously using an airtable automation and waiting for Glide to re-sync the airtable data. That was taking around 30 seconds.

Instant result, very happy - looking forward to applying this further

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [August 21, 2023, 1:07am UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/30 "2023-08-21T01:07:59Z")

</div>

Great to hear. The caveat of Construct URL is it will always encode your URL the correct way. However, some sites do have special formats for their URLs, so you’ll have to work around it to be able to get to the final result.

---

<div class="post-metadata">

**Author:** ![Kiwi](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kiwi/32/60332_2.png) [@Kiwi](https://community.glideapps.com/u/Kiwi)\
**Post date:** [August 21, 2023, 1:20am UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/31 "2023-08-21T01:20:26Z")

</div>

If anyone else is doing this and getting issues… My query was fetching “old” (cached?) data from airtable, even when a field had been changed. So I added a date onto the end using the ‘Format date’ Glide column from a date I had captured as part of my form. I just used this column + [Glide • Format Date column](https://www.glideapps.com/plugins/format-date) + X from the reference: [luxon - Immutable date wrapper](https://moment.github.io/luxon/?utm_source=hs_email#/formatting?id=table-of-tokens)

Some explanation is provided here… [API GET call not retrieving updated table field da... - Airtable Community](https://community.airtable.com/t5/development-apis/api-get-call-not-retrieving-updated-table-field-data/td-p/69002)

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [August 21, 2023, 2:28am UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/32 "2023-08-21T02:28:56Z")

</div>

What format are you sending your date in?  
You just need to be aware that every time it changes, Glide will update its cached result, and that will count as an update. If you’re using something like `YYYYMMDD` that’s fine, as it will only change once a day. But if you’re using a full timestamp including seconds, then it will update every 10 seconds.

---

<div class="post-metadata">

**Author:** ![Robert\_Petitto](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/robert_petitto/32/25193_2.png) [@Robert\_Petitto](https://community.glideapps.com/u/Robert_Petitto)\
**Post date:** [August 21, 2023, 2:51am UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/33 "2023-08-21T02:51:15Z")

</div>

> [@Darren\_Murphy](#):
>
> But if you’re using a full timestamp including seconds, then it will update every 10 seconds.

Ya— need to make sure I’m diligent about mentioning this in future API tutorials.

---

<div class="post-metadata">

**Author:** ![Hobe](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/hobe/32/55866_2.png) [@Hobe](https://community.glideapps.com/u/Hobe)\
**Post date:** [August 21, 2023, 3:13pm UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/34 "2023-08-21T15:13:42Z")

</div>

speaking of date formatting, a problem is occurring. I’m using the glide api with the glide call api to add multiple rows from one glide table to another glide table, within the same application. Almost everything goes well, just a small detail, the payment date column is in the dd/mm/yyyy format, but when going through the call and being added to the other table, it is being recorded as mm/dd/yyyy.

My use case is an application that generates a monthly payroll, where I need to confirm who has actually been paid, usually everyone on the payroll is paid, but if someone hasn’t been, then I delete the line before starting the payment action. inform payment that I just configured, with two api calls in the same action, the first one takes all my rows from the “payroll” table and writes it to the “made payments” table, the second deletes all my rows from the “payroll” table payment", getting ready for the next month.

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [August 21, 2023, 3:34pm UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/35 "2023-08-21T15:34:14Z")

</div>

Always send your dates in ISO8601 format. YYYY-MM-DD

---

<div class="post-metadata">

**Author:** ![BLA\_68](https://avatars.discourse-cdn.com/v4/letter/b/977dab/32.png) [@BLA\_68](https://community.glideapps.com/u/BLA_68)\
**Post date:** [August 21, 2023, 8:36pm UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/36 "2023-08-21T20:36:16Z")

</div>

> [@Darren\_Murphy](#):
>
> What format are you sending your date in?  
> You just need to be aware that every time it changes, Glide will update its cached result, and that will count as an update. If you’re using something like `YYYYMMDD` that’s fine, as it will only change once a day. But if you’re using a full timestamp including seconds, then it will update every 10 seconds.

Can someone clarify what counts as or triggers an update when using the call API column? I seem to be racking up a lot of updates from that feature  
 ![Screenshot 2023-08-21 at 1.30.49 PM](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/0/c/0c97e773d884608e29bbe5e11be7a97df81ccaed.png)

I wonder if I’m using it in a way that is contributing to this. For example, I am appending a query to the URL that adds the unique item number of the row to the URL as a query to just return the json values for the item matching that item number. So If I have 300 rows each with a different query being called by the column, is that 300 updates each time it loads?

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [August 22, 2023, 1:18am UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/37 "2023-08-22T01:18:18Z")

</div>

> [@BLA\_68](#):
>
> So If I have 300 rows each with a different query being called by the column, is that 300 updates each time it loads?

It would be at least 300 updates, and then the results would be cached. I don’t know how often the cache is refreshed.

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [August 22, 2023, 1:52am UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/38 "2023-08-22T01:52:28Z")

</div>

> [@BLA\_68](#):
>
> So If I have 300 rows each with a different query being called by the column, is that 300 updates each time it loads?

And more on this, every user that first load the app would trigger 300 updates, before it’s cached.

Edit: Further tests just now show that Darren’s suggestion that it is calculated server-side would be correct.

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [August 22, 2023, 1:55am UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/39 "2023-08-22T01:55:35Z")

</div>

> [@ThinhDinh](#):
>
> And more on this, every user that first load the app would trigger 300 updates, before it’s cached.

Is that actually true?  
I was under the impression that these calls are made server side (which is how keys are kept secure), which should mean that results are (or at least could be) cached for all users 🤔

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [August 22, 2023, 2:10am UTC](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938/40 "2023-08-22T02:10:21Z")

</div>

🤔 You might be right. I was testing just now with 2 different devices on a table with 3 API calls and I don’t see the billing section increases my “Call API” count. I was wondering why Bob had such a great API call count in Slack like 2 weeks ago, I guess it was just a cache bust technique that refreshes too much, opposed to multiple users subjecting to different loads.

[Previous page](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938.md?page=1)

[Next page](https://community.glideapps.com/t/call-api-call-any-api-securely-and-return-data-back-to-your-app-instantly/64938.md?page=3)
