Table of Contents

How to Create, Update, Retrieve and Delete records in Airtable (POST, PATCH, GET & DELETE)

Pau Sanchez Updated by Pau Sanchez

Airtable offers a great functionality, here we will build a little CRM where in the same bot we will, do the main four actions of Create a Record, Update a Record, Retrieve a Record and Delete a Record

0. Data you will need before start working with Airtable API:

1. API key

First, get to the API docs for your base, by pressing in HELP and selecting API Documentation

Then click in "show API key"

Then below the place where you located the APP ID you will see the API KEY, after "Authorization:"

Please copy from "Bearer" to the end of the text.

2. Base id and Table Name - URL (Endpoint)

In the same section where you see the the API key you will see the URL that you will need to use.

Note that depending the table that you are using you will need to change the url

Copy this part of the URL from the API docs.

Your APP ID is the long string immediately after “airtable.com/” and before “/api/” in the url of this page.

1. Create a Record (POST)

Data that you need:

  • Name of the fields you want to add data
    In this case we want to "open" a record, so we will upload the minimum data. In that case will be the uer chat @id, and the @name, in the fields id and name

  • Type of the fields you want to add data

In this case, both are "Single line text", so we can use simple String variables in Landbot to send our data to Airtable

Data that you need to store:

  • id of the record
    As we are planning to interact with the user, and update de the record we want to create, as a response to our Request, Airtable is going to return some data, among it, will be the id of the record. That will be handy to use it later.

Set up of the Webhook block:

  1. Set the URL and the method (POST)

That is the same url you find in the API documentation where you get the API Key:

  1. Set the Header Section:

This is the data we captured earlier from the API section:

  1. Set the Body Section:

In this example we are creating a record with two values. For the field "id" where a sending the variable @id, and for the field "name" we are sending the variable @name.

{"fields":
{
"id":"@id",
"name":"@name"
}
}

  1. Set Test Variables section:

In this section we will give a value to test that everything is configured correctly when using variables. To do so we need to build a "body" to give a value to the variable @id and @name:

As you can see we are going to test the webhook by giving the @id variable the value "123" and the @name variable "John".

{
"id":"123",
"name":"John"
}

  1. Now we can press the button that says TEST

  1. Check the Test Response and Airtable

As soon as we press the request will be processed with the test values, and we can check first in the webhook, a bit below the response:

As you can see, it returns a STATUS 200 and the response look like has created correctly a new record. And if we check Airtable we can see that the record has been created with the data as we expected:

  1. Save the record id value
    Now that we have the test response, we can set up the Save Response section to capture the values from the response for later use. In this case we will save the id in the variable @record_id:

  1. Press SAVE and the Webhook will be ready

2. Update a Record (PATCH)

Here we will add more information to the record we already created, with the email and the phone number. To so, first we need to add those 2 fields in Airtable:

Data that you need:

  • id of the record you just create
  • Name of the fields you want to update
  • Type of the fields you want to update
  • Variables where email and phone will be locate

Set up of the Webhook block:

  1. Set the URL and the method (PATCH)

That is the same url you find in the API documentation where you get the API Key:

  1. Set the Header Section:

This is the data we captured earlier from the API section:

  1. Set the Body Section:

Here we need to adapt the body to the needs of Airtable API. In this case we are going to use the following:

In this example we are updating a specific record, the is why we are using the "id": "@record_id". Also, we just add the fields that we are going to change. (email and phone) with the variables we are going to use (@email and @number). Also we add "typecast":true to avoid issues with the format of the variables

{
"records": [
{
"id": "@record_id",
"fields": {
"email": "@email",
"phone": "@number"
}
}
],
"typecast":true
}

  1. Set Test Variables section:

In this section we will give a value to test that everything is configured correctly when using variables. To do so we need to build a "body" to give a value to the variables @record_id, @email, and @number:

As you can see we are going to test the webhook by giving the @record_id variable the value "rec6M5NSbFMsnCcXS", the @email variable the value "an@email.is", and the @number variable 1213123.

{
"record_id":"rec6M5NSbFMsnCcXS",
"email":"an@email.is",
"number":1213123
}

  1. Now we can press the button that says TEST

  1. Check the Test Response and Airtable

As soon as we press the request will be processed with the test values, and we can check first in the webhook, a bit below the response:

As you can see, it returns a STATUS 200 and the response look like has created correctly a new record. And if we check Airtable we can see that the record has been created with the data as we expected:

3. Retrieve a Record (GET)

There are two main ways to Retrieve information/records from Airtable:

1. By record id

2 By filtering (searching) with filterByFormula

Here is an article of how to do find a record or many a very flexible way: 14 different ways to GET and filter data from Airtable

In this case, we will set up the process of retrieving a record by record id:

Data that you need:

id of the record

Set up of the Webhook block:

  1. Set the URL and the method (GET)

In this case we are going to add the record id in the URL, to specify the Record we want:

https://api.airtable.com/v0/apputEo0HOV0zzAmG/crm_lite/@record_id

That is the same url you find in the API documentation where you get the API Key:

  1. Set the Header Section:

This is the data we captured earlier from the API section:

  1. We don't need to set the Body Section, as we are passing the information in the url

  1. Set Test Variables section:

In this section we will give a value to test that everything is configured correctly when using variables. To do so we need to build a "body" to give a value to the variable @record_id that we used in the URL:

As you can see we are going to test the webhook by giving the @record_id variable the value "recqH2PMiI3lBv94O"

{
"record_id":"recqH2PMiI3lBv94O"
}

  1. Now we can press the button that says TEST

  1. Check the Test Response and Airtable

As soon as we press the request will be processed with the test values, and we can check first in the webhook, a bit below the response:

As you can see, it returns a STATUS 200 and the response look like has retrieved correctly the record according to the record_id.

  1. Now we can set the Save Response section to save the different values obtained. Just press in the "Select data from the response", select the variables you need and the Landbot variables where you are going to store the values from the Response:

  1. Then, now you would be able to display the data with a Send Message block:

4. Update a Record (DELETE)

Here we will delete the record we just created. As in other methods we need the record id to only delete that specific record.

Data that you need:

  • id of the record (@record_id)

Set up of the Webhook block:

  1. Set the URL and the method (DELETE)

In this case we are going to specify the record id in the url, by adding the variable like this:

https://api.airtable.com/v0/apputEo0HOV0zzAmG/crm_lite/@record_id

That is the same url you find in the API documentation where you get the API Key:

  1. Set the Header Section:

This is the data we captured earlier from the API section:

  1. We do not need to use the Body Section:

  1. Set Test Variables section:

In this section we will give a value to test that everything is configured correctly when using variables. To do so we need to build a "body" to give a value to the variable @record_id that is in the URL:

As you can see we are going to test the webhook by giving the @record_id variable the value "rec6M5NSbFMsnCcXS"

{
"record_id":"rec6M5NSbFMsnCcXS"
}

  1. Now we can press the button that says TEST

  1. Check the Test Response and Airtable

As soon as we press the request will be processed with the test values, and we can check first in the webhook, a bit below the response:

As you can see, it returns a STATUS 200 and the response look like has deleted correctly the specified record. And if we check Airtable we can see that the record is not there anymore:

Brick example (Airtable Lite CRM v0.1)

There is a Brick ready to be imported where you can see an example of how to use Airtable a CRM with Landbot where the above processes had been used.

You must set up your Airtable and adapt the URL and API Keys to yours:

And also the Airtable, we recommend to use the same name for the table, fields and fiel types:

Troubleshooting, Response Errors and FAQs:

Even if Airtable has a large amount of documentation and is one of the most accessible API's it might response some errors, here is a list of of possible cases:

The Webhook Test is ok, but is not working, why?

The reason why could be for many different reasons but the best way would be to find out the Response given, where the error/s will be given. To find out the response here is how:

  1. First go to the Save Response section of the Webhook, and switch it on:

  1. Create a new variable, string type, where we are going to store the response:

  1. Now we will add the variable we just created in Send Message block, right after the Webhook:
  2. Now we can "run" the bot and check what is happening right in that step and which is the response:

Error Parsing

This error is generated when the JSON used in the Body or Test section of the Webhooks is not set up correctly.

An online service that helps find out those error is this: https://jsonformatter.curiousconcept.com/

Just paste the JSON you are using:

Once you press ¨Process" it will tell where the errors are:

Enter a valid URL

This is a common error. Normally is due to a "space", probably at the end of the url by a wrong copy. Please to make sure about it, copy and paste the url in the browser to spot easily the error

How can I find out the record id (without the API):

There is a simple way to find out the record id of a specific record, with no need of the API:

  1. Go to the Airtable Table:

  1. Select the desired record:

  1. Press right click and a menu will be displayed:

  1. Select "Copy record URL" and paste it in your browser:

  1. Select the last past part of the url that starts with "rec"
  2. That is the record id: recz5ftbS5w2E77ha

"type": "AUTHENTICATION_REQUIRED", "message": "Authentication required"

That is a common error. The reason why is the Authentication is not correctly set up in the HEADERS section:

Please make sure is correctly typed. It cannot be in bold or other formatting.

"type": "MODEL_ID_NOT_FOUND", "message": "Record not found"

If you are testing the Delete method, once you delete the record, and test again, as it has been deleted it won't be able to find it, that is the reason of this error.

'type': 'INVALID_RECORDS', 'message': '"records" must be an array of up to 10 record IDs.'

This error is common in Update (Patch) method, normally is due to the fact that is not specified correctly in the body the records (even if is just one) that will be in the body of the Request, check how the body starts with "records":

How did we do?

How to add/update different field types in Airtable (POST, PATCH & PUT)

Get more than 100 items from Airtable

Contact