How can I prevent the "INVALID MULTIPLE CHOICE OPTIONS" error?

Hi

I’m trying to add data to a table using the API, one field of which is a ‘Multiple Choice’ field, so i’m passing data as an array.

However, it will only accept the POST if the table has predefined multiple choice options and you’re sending a POST with one or more those options, else it throws a ‘INVALID_MULTIPLE_CHOICE_OPTIONS’ error.

And, from what I see you cannot create multiple choice options by using the API either.

I assume this is expected behaviour, but… is there a way of programmatically adding new options to a multiple choice typed field, or even getting a list of acceptable values for that field, so i can check the data before calling the API?

Thanks!

mk

4 Likes

Not that I’m aware of. Everything metadata related is basically non-existent.

I’m also having this problem. How can I create a record that has a “multiple choice” column for values that are going to be an unknown set of “tags”? So far the only work-around I have found is to set the column type to be a “single line text” and upload my tags as a comma-delimited string, then when I am done with the API, going to the graphical interface and converting the column type to be a multi-select.

Having this problem as well. Unfortunately, the API gives you no way of creating the new options. I’m having to forego the nice pill formatting to just string delimit my values. Another option if you are just wanting the pill formatting would be to make a lookup table that you can write the new values to, then send an array of those value ids from the lookup table as an array to your original linked column; that’s more work than I want to do at the moment though.

One solution that worked for me is to convert the column to a single line text type. Import your data, and then switch back to single select and it will automatically use the existing values to initialize the set of options.

1 Like

It works when you use the {typecast: true} parameter
example:

base(‘Deal’).create({
“Quantity”: 720,
“PaymentMethod”: “Cash”,
}, {typecast: true}, function(err, record) {
if (err) {
console.error(err);
return;
}
console.log(record.getId());
});

1 Like

For some more context, this is what the Airtable API’s documentation says when you look at a “Single select” or “Multiple select” field:

When creating or updating records, if the choice string does not exactly match an existing option, the request will fail with an INVALID_MULTIPLE_CHOICE_OPTIONS error unless the typecast parameter is enabled. If typecast is enabled, a new choice will be created if one does not exactly match.

Here is an example of where to add the typecast

var Airtable = require('airtable');
var base = new Airtable({apiKey: 'YOUR_API_KEY'}).base('baseId');

base('Table 1').create([
  {
    "fields": {}
  },
  {
    "fields": {}
  }
], {typecast: true}, function(err, records) {
  if (err) {
    console.error(err);
    return;
  }
  records.forEach(function (record) {
    console.log(record.getId());
  });
});