Help

Welcome to the Airtable Community! If you're new here, check out our Getting Started area to get the most out of your community experience.

How to create new record in Link-to column with value (instead of record-ID)

Topic Labels: API
4547 10
cancel
Showing results for 
Search instead for 
Did you mean: 

I am trying to create new records via airtable.js,

when I try to create a new record in Link-to column with row-value (i.e. name - string not Record ID),
it does not work and reply

Class {error: “INVALID_RECORD_ID”, message: “Value “VALUE” is not a valid record ID.”, statusCode: 422}

Is there any way to avoid this condition?

or there is not “typecast” command in airtable.js ? if yes, please let me know some example,

var dataCompt = {
    "field1": "value1(text)",
    "field2(Link-to column)": "value2(text)" 
};

function createATData(){

base(tableName).create(dataCompt, function(err, record) {
    if (err) { console.log(err); return; }
    //loadArtists();
});

}

10 Replies 10

Lacking this feature renders AirTable automation useless for our business. Can anyone from AirTable comment on a workaround that doesn’t require API calls? We will bump up against the rate limit otherwise.

I’ve found similar requests for this dating back to 2016. I’m shocked that this is still a problem nearly 2 years later.

I can’t seem to (easily) get a list of the record Ids to associate with values. This prevents me from even hard-coding a lookup table to work around this problem. I don’t want to make multiple API requests because we run the risk of getting rate limited and, even if I used AirTable’s JS library automatic retry on 429 responses, I have to pay Amazon for the wait time (I’m using AWS Lambda + API Gateway to catch Shopify web hooks and transform them for insertion into AirTable).

Maybe I’m missing something obvious (I really hope that I am), but this is a deal breaker for us. I’m evaluating other platforms where this isn’t an issue because the original poster hasn’t had a response in 2 months and it’s not on AirTable’s API roadmap which is still at the initial v0.1 release.

EDIT: Adding a new column with a RECORD_ID() formula exposes enough information that I can create a hard-coded lookup table, but it’s still a hackey workaround.

Any progress on this?

We need to link our free trial sign ups to existing accounts. When they sign up they enter their Organization name. If we could link based on a passed in value then we could simply enter the name they supply to the linked record table and all our other tables would be linked in via that initial link.

Currently this would need to be done manually and will probably prevent us from adopting AirTable as our CRM.

If your using the API to insert from your lead capture form you can insert into the link field using the name. If it’s an exact match it will link it. If not it will create a new record in the linked table. This would also work using a service like zapier.

If it’s something you wanted to hire out we could help.

Thanks @openside, I am using Zapier but I need to upgrade to the paid account for multi step zaps. First we need to do a search if records already exists and then create or update records. The search formula seems to be pretty powerful. I wonder if there is a way to allow inexact matchs.

Any new thoughts or updates on this topic? I’ve run up against this limitation as well.

Curious if there are any updates on this?

I’ve used Zapier to send form data from a webflow form directly into airtable fields that are linked to other tables. This allows a calculation to be run, and the method has worked perfectly for years.

But I’m now build an app on Bubble and trying to do the same thing with form data being passed to Parabola, and sent to Airtable via API Export. It is returning the dreaded 422 Error

{
“error”: {
“message”: “Value “xyz data” is not a valid record ID.”,
“type”: “INVALID_RECORD_ID”
}
}

My suspicion is you have to have the actual record ID (i.e. the rec8116cdd76088af type vs the human readable version “form field input value”). But, that’s somewhat confusing because passing the human readable value directly from form inputs to Airtable works perfectly well when done via Zapier. If anyone else has any wisdom on why the direct API approach doesn’t seem to work this way, I’d appreciate it. In my use case, there are approximately 50 different linked tables with other data on them, so doing a bunch of joins would be a large undertaking.

Hi @Trevor_Goss did you find a way to add a record toa linked table via the API? I’m facing the exact same problem.

Same here. Works great with Zapier but not Parabola. Any idea’s

Hi all,

You should be able to create/update records by sending a value rather than record ID, as long as the typecast parameter set to true.

In the API docs, you should see this message under “Create records”:

The Airtable API will perform best-effort automatic data conversion from string values if the typecast parameter is passed in (click to show example). Automatic conversion is disabled by default to ensure data integrity, but it may be helpful for integrating with 3rd party data sources.

If you click on the link in the message in your API docs, you’ll see examples of how this param is added to a curl request or Javascript code.

I hope this helps!