Re: How to create a new table in an existing base through the API?

3606 0
Showing results for 
Search instead for 
Did you mean: 
6 - Interface Innovator
6 - Interface Innovator

I have searched the API docs, and I see no way to do this.

With the AirTable API, how do I create a new tab (new table) in an existing base? and then populate it?

I do not see this feature of inserting or creating an new tab into an existing base, only the ability to insert rows into an existing table that was created by a human that opens a web browser and clicks.

We have needs to automate the creation of new tables in an existing base (and down the line, creating new bases programatically).

17 Replies 17
6 - Interface Innovator
6 - Interface Innovator

:wave: Developer on Airtable’s API team here.

The Airtable API currently has no way to do this—you can only create new tables from the UI.

Great, thank you. Is there any way with the AirTable API, or any 3rd party product to insert a CSV direct into an existing base?

I have a CSV on a file system, and I want to programatically send a CSV to a base and have it inserted into a new tab.

I can’t be the first to request this, it would be helpful, if at all possible. It does not look possible with Zapier. Thank You.

6 - Interface Innovator
6 - Interface Innovator

There’s no way to import a CSV directly with the API, but you can convert CSV to JSON, which our API accepts.

So rather than CSV → Airtable, you’d do CSV → JSON → Airtable.

Does that make sense?

Yes, so where can I find documentation on that? When I goto my Base’s API page, I don’t see anything there, will look again.

And so sending a JSON direct, would this create a new tab in the base? and also do I have control over the naming of that tab? (or positioning?)

thank you,

We don’t document that because it’s a bit out of scope, and depends on what exactly you’re trying to do. A quick search shows a few online tools that do this conversion, and you can also look to see how to do it in your favorite programming language (like Python).

There’s a new tab for each table in the base. Again, you can’t create a new table from the API.

So the solution is that I have to create a new table manually, always, with the headers I want, and once the table exists, with a header for each field I want to insert, I can then I can make API calls to insert data.

I can send up to ten records at a time, per API call, and I can make up to five of these calls per second, meaning a max of fifty records inserted per second into an existing table.

If I got any of that wrong, please let me know, this is what I am reading in the documentation.

I understand how to take my data and convert to JSON.

I was just hoping that I could create a JSON file of 1K records (rows), and make one call and insert all 1K into a base, creating a new table at the same time and setting the tab name.

Thank you,

All of that understanding sounds correct.

We may add support for these features in the API in the future, but they aren’t currently available.

Um, yeah - me too. This is a common process for anything automated. It tends to rule out a number of use cases.

Here’s a Python script to import a CSV (turning into a JSON object before posting to AT):


6 - Interface Innovator
6 - Interface Innovator

RE: API Limitations…

Can someone speak to the 10 records per second API limitation? Is this limitation per account or per base? I.e. can we write 10 records to multiple bases at the same time?

Hi @Nathan_Beckstead - the API documentation says:

The API is limited to 5 requests per second per base. If you exceed this rate, you will receive a 429 status code and will need to wait 30 seconds before subsequent requests will succeed.

The [official JavaScript client]( has built-in retry logic.

If you anticipate a higher read volume, we recommend using a caching proxy. This rate limit is the same for all plans and increased limits are not currently available. 

The “10 records” thing is that the API allows the creation of records one by one or in batch of up to 10 (with a single request), so at 5 requests per second you could potentially create 50 records per second.

It also notes “per base”, rather than per account or per API key.


Got it.

Mr. Bowen, you are a AT Community gem! Just caught your podcast on BuiltOnAir as well. Thank you for all you do for the community!


Is this still true? Has it been updated?

4 - Data Explorer
4 - Data Explorer

I tried the blocks API, it is possible to create a table using an app. I was able to create a table with proper schema, although there is no destroy table in blocks

5 - Automation Enthusiast
5 - Automation Enthusiast

Any updates on this? Is this feature in your backlog?

4 - Data Explorer
4 - Data Explorer

This feature is a huge bottleneck especially in the use case where you have a different table per person – would be awesome if this could be supported!

5 - Automation Enthusiast
5 - Automation Enthusiast

Can we please get an answer please - I have just upgraded to the PRO plan to find out that the “Run a script” function after a trigger does not contain all of the functions contained in the Blocks SDK.

I purchased the plan to specifically to attempt to do this - so will not be renewing the subscription unless we get an answer.