Need development and API help? Ask your questions here!
Recently active
I am trying to updated a linked record via Siri Shortcuts. I keep on getting error “value is not an array of record ids” The update is done vie Get content of URL. Request Boyd JSON. I figured out the id of the record that I am trying to link to. I tried setting the fields text to the record ID but I still get an error.
I saw what looks like support for type script in airtables online IDE but I couldn't find any documentation on it. I'd like to get rid of some of these type errors that are populating my code.
Is there a way to get the list-of-values that are available for a single- or multi-select column?
When I change a status in my record I want to check my data entry. If this check fail I want to stamp a warning in a popup message or similar because I want that the user knows this. Somebody can help me? It was more simple in vb but I didnt find nothing about. Thanks
There's an Airtable that's been shared with my account (A) from account (B). I have a personal access token from account A.- The Airtable's restricted to account A's domain- The Airtable is password protectedIs it possible to use the API to fetch the records of the Airtable?I've tried this approach:const Airtable = require("airtable");const PERSONAL_ACCESS_TOKEN = "...";const baseId = "...";const tableName = "...";const base = new Airtable({ apiKey: PERSONAL_ACCESS_TOKEN }).base(baseId);base(tableName).select({}).eachPage(function page(records, fetchNextPage) {records.forEach(function (record) {console.log("Retrieved", record);});fetchNextPage();},function done(err) {if (err) {console.error(err);return;}console.log("Finished fetching records");});```and this approach:```const fetchAirtableData = async (baseId, tableName, personalAccessToken) => {const url = `https://api.airtable.com/v0/${baseId}/${tableName}`;try {const response = await fetch(url, {headers: {Authorization: `Bearer $
Hello, I was wondering how I update my fetch code in observable to use the personal access tokens? Here is the notebook: https://observablehq.com/@datagrazing/fermentation-jar and the code in question: Airtable = (await import("https://cdn.skypack.dev/airtable@0.11.1?min")).defaultfull_data = { data = { const base = new Airtable({ apiKey: API_KEY }).base(BASE); const records = await base("ratios").select({ view: "Grid view" }).all(); return records.map((d) => d.fields); }
Hello I am developing a browser extension. It does Airtable OAuth and then lets the user fetch tables and quickly add records directly from the browser.Yesterday it all worked well for me and today the Airtable API does not send the appropriate CORS headers."Access to fetch at 'https://airtable.com/oauth2/v1/token' from origin 'chrome-extension://bnpbihfpfplcakeplbgbmopmppdkgcdn' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled."It is indeed true that the preflight request does not have these Access Control headers.I tried the same request from cURL and it passes there and I get back the tokens just fine so it's clear this is an issue with CORS.Since CORS worked for me yesterday and does not work today I wonder if Airtable API blocked me? But it
I’ve been working on a custom Extension (App) using the “Getting started” guide. The Extension has been working fine, running on my localhost at https://localhost:9000. Today, the Extension in the Airtable UI started showing the following message: { "error": "FORBIDDEN", "message": "blockId mismatch. Make sure you are entering development for the correct block." } The error message is very clear, but I haven’t changed the blockId in the remote.json file. I’ve also tried restarting my local and reloading the UI, but this error persists. Somehow it seems like the blockId must have changed, but I’m not clear on how/why or where I would get the new blockId from. Any thoughts on how to fix? I’m assuming I could just create a new Extension, but I’d rather get to the root of the problem. Thanks in advance!
Hi, I've been testing Airtable to create a visual database system for skilled professionals in Nepal. While fetching data from Airtable API to my APP, I hardly get all data. Few of my data are missing. I have tested it using postman.
I have developed an extension with specific business logic that I would like to release to multiple bases at once. I do not want to publish this extension to the marketplace as it would not be relevant to those not working at my company. Has anyone found a good way to release an extension to multiple bases at once? Or to release an extension to all bases owned by an organization? Ideally anyone at my company could release the latest version of the extension to a base without much hassle.My current process is to follow https://airtable.com/developers/extensions/guides/run-in-multiple-bases to create the remote configuration files. Then I have a script that iterates through all of those and releases the current extension to that base. I could further automate the process if I was able to get the blockId without having to go to navigate to the base and retrieve that ID (reference post: https://community.airtable.com/t5/development-apis/how-to-get-the-block-id-fro
I am trying to connect with other application that asks me for my client_id, client_secret, api_token, and refresh_token.So far I have set my api_token, client_id and client_secret, but still struggling with creating the refresh_token. Where should I find it?
Hi, I'm working with the Airtable API, and am noticing that the "list records" API endpoint is returning linked records in "cell format V1", while the Webhooks API returns values in "cell format V2". Cell format V1 is an array of strings representing record ID of the linked record(s).["recXXX", "recXXY"]Cell format V2 is an array of objects representing the record ID and 'name' of the linked record(s).[ { "id": "recXXX", "name": "Linked Record A" }, { "id": "recXXY", "name": "Linked Record B" } ] In my case, I really want to see the "v2" format in a 'list records' API call. Is there an API endpoint that will return this, or is there one planned for the future?
I need to search records in multiple databases and if the search result is not empty then set a variable for that particular organization. I will then compose an email using non empty variables. Scan Airtable A base, if the output is not empty, set the variable Clinic A to results. Scan Airtable B base, if the output is not empty, set the variable Clinic B to results. Compose email that includes non empty variables: Hi John Smith, Please submit the following items: Clinic A variable (has value - not empty) [Clinic B variable is not included as the variable in the previous scenario was empty due to no search results) Can’t figure this one out as Integromat requires everything to go in a flow as I am using filters to filter in or out empty search results. But if search results for variable A are not passed then the rest of the flow does not happen.
Hi There, It seems that there is no way to call directly an external API to a record on Airtable. My goal is to be able to shorten URLs (using Bit.ly API) in my database. I was wondering if there is a way that scripts might be able to help? Here is Bit.ly API reference : https://dev.bitly.com/api-reference I appreciate any help on this subject. Thanks
Hi, I'd like to know if it's possible to get the ID of an interface's table from its page ID, or if there's any other way to get the ID of an Interface's lined data for the api from within the interface itself? In the DOM or anywhere else?Our team built an integration for Airtable that lets users run their own features from within the Airtable page. For it to work with interfaces we need the record + table id from the interface view/page, is there anyway to get it through the url or the html on the page.Thanks!Ohad.
Hi,I already have a working api tested by apifoxand it produced this code for me var myHeaders = new Headers();myHeaders.append("User-Agent", "Apifox/1.0.0 (https://apifox.com)");myHeaders.append("Content-Type", "application/json");var raw = JSON.stringify({"name": "k1d","email": "1213@gmail.com"});var requestOptions = {method: 'POST',headers: myHeaders,body: raw,redirect: 'follow'};fetch("/global/i18n-user/register?sign={{sign}}&timestamp={{timestamp}}&appkey={{appkey}}&appuid={{appuid}}", requestOptions).then(response => response.text()).then(result => console.log(result)).catch(error => console.log('error', error)); now I don't know how to proceed**PS the sign={{sign}} part is a combination of timestamp={{timestamp}}&appkey={{appkey} encrypted with MD5 encryption, but I don't know how to make this encryption in Airtable Script, I'm fairly new to making an api myself as I generally just use make to handle this part but now I need to
Is there anyone who has a script to unzip an attachment field into another attachment field. In other words in Attachment field 1 is a zip file, have a script unzip and put all attachments as separate files in Attachment field 2. The zip file is coming in from Jotform through a zap in Zapier.
Would someone from the custom extension review team be willing to pop in here and answer a question for me? Would be greatly appreciated!I've been working on a single extension for 18 months and have a question about breaking one of the extension rules. I would like to provide some context and see if a workaround could be found. Thank you!
It is very frustrating to match up automations or API processes with data changes in a record's "activity" log with broad time information like "an hour ago" or "2 days ago." Please consider introducing fine-grained timestamps EVERYWHERE you log ANYTHING. As an Integrator née Software Developer, this is making me pull my hair out
Hello,I am new to Airtable. I am trying to do one automation which is as follows.I have a table named "(OMS) Invoices" having 2 newly added columns which I want to use for this automation.First Column name is "Generate Invoice" which is a button with following configurationSecond Column name is "Invoice PDF" which is an attachment.Manually when the button in "Generate Invoice" is clicked it loads an extension "Invoice" and performs the action as mention in button configuration "Open in Page Designer". This populates all necessary values in invoice PDF from airtable table "(OMS) Invoices".What I want to automate is, whenever "Status" is changed to "Order" in "(OMS) Invoices", it should programmatically click button inside "Generate Invoice" so that it loads up the extension with invoice pdf having values. Further to that this PDF will be saved in the "Invoice PDF" and then emailed to the customer associated with that Invoice.Is this possible by using ONLY AIRTABLE INHOUSE AUTOMATION? Ma
Although the Kanban view has many limitations it was working before the last released update...the bugs are really annoying...limiting staffs ability to work effectively in the Kanban view without refreshing the screen every 2-minutes...what is the plan Airtable? It would have been nice to have a heads up on the change or at least a "we're working on a solution" message.1- after expanding a record and closing it, the scroll option simply does not work...in order for the scroll feature to work the screen needs refreshed- major pain in the a$$2- when entering a new record from the new carrot at the top of the uncategorized category, the system is automatically assigning a category...the add task at the bottom still works but you have to scroll (or attempt to scroll and then refresh the screen) all the way to the bottom to add a task. Oh, where did the new uncategorized record go- good question...oh look- it was automatically assigned to the wrong group...fun times for all.3- when closing
Hi, Does someone else have problems getting webhook trigger from Hubspot ? Here is the response message that Airtable give to Hubspot:{"success": {"statusCode": 400},"fail": null} Wich apparently mean that things are not working properly.
I am using the Airtable js package for nodejs and it is my first time. I have dynamic data that I would like to store in a table. Is there a way to send the request once by passing an array into the create method? I don't want to iterate the array and call the create method on each iteration. I'm sure there is a way to do it once, I must be missing something.const base = new Airtable({ apiKey: `${process.env.AIRTABLE_ACCESS_TOKEN}`}).base(`${process.env.AIRTABLE_BASEID}`); const tempOrderParticipantData = [...params?.participantData as participantDataAttributes[]]; const tempRecord: unknown[] = []; tempOrderParticipantData?.forEach((item, index)=>{ tempRecord?.push({ "Full Name": `${item?.participantNameInfo?.participantFirstName} ${item?.participantNameInfo?.participantLastName}`, "First Name": `${item?.participantNameInfo?.participantFirstName}`, "Last Name":`${item?.participantNameInfo?.participantLastName}`, "Phone": `${
Hi! I'm building an app with Bubble.io. The problem I'm facing now is that I need to create new records in my Airtable Base, from my Bubble app's UI. I do not have any problem to create new records, except when I need to populate a linked field. The new entry is created as expected, but the Linked field remains empty. Do you know how to process? Thanks a lot!
Hi, i'm landing with airtable and so far loving it, but I'm not sure if scripts works like other environments...I have a table record with a lot of blank values at ID column because is an exportation from another ddbb and it exports fields with multiple values as a record for each value. Usually in other apps I make a script for this that get the variable when exists the ID value and replicate it at the next empty records ID until it finds a non-empty value and updates the variable, and so on.I made the script and don't seems to have any fail but when executing is not doing anything (also no error text):// Define the table and select all records let table = base.getTable("Dashboard"); let query = await table.selectRecordsAsync(); let records = query.records; // Initialize the lastref variable let lastref = null; for (let record of records) { let currentDefaultCode = record.getCellValue("default_code"); let currentDefaultCodeNexus1 = record.getCellValue("default_code_nexus1"); if (!c
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.