Setu Recipes: reusable workflows across every app.Browse templates
Setuसेतु

Integrations / Airtable

Airtable

Spreadsheet-database: bases, tables and records.

5 actions OAuth 2 3 read2 write Calls api.airtable.com

Connect

TypeScript
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "airtable" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();

Permissions requested

ScopeWhy it is requested
data.records:readRead records
data.records:writeCreate and update records
schema.bases:readSee your bases and tables

Actions

Create recordwriteairtable.create_recordCreate a record from a field map.

Needs scope: data.records:write

InputTypeDescription
base_idstringRequiredBase ID, e.g. appXXXX
tablestringRequiredTable ID or name
fieldsobjectRequired
TypeScript
await setu.execute({
  userId: "user_1",
  action: "airtable.create_record",
  input: {
    "base_id": "<base_id>",
    "table": "<table>",
    "fields": {}
  },
});
List basesreadairtable.list_basesList the bases the user granted access to.

Needs scope: schema.bases:read

No input.

TypeScript
await setu.execute({
  userId: "user_1",
  action: "airtable.list_bases",
  input: {},
});
List recordsreadairtable.list_recordsList records in a table, optionally filtered by a formula.

Needs scope: data.records:read

InputTypeDescription
base_idstringRequiredBase ID, e.g. appXXXX
tablestringRequiredTable ID or name
max_recordsintegerOptional
filter_by_formulastringOptional
TypeScript
await setu.execute({
  userId: "user_1",
  action: "airtable.list_records",
  input: {
    "base_id": "<base_id>",
    "table": "<table>"
  },
});
Search recordsreadairtable.search_recordsFind records whose formula evaluates true, e.g. {Name}='Ada'.

Needs scope: data.records:read

InputTypeDescription
base_idstringRequiredBase ID, e.g. appXXXX
tablestringRequiredTable ID or name
formulastringRequiredAirtable formula
max_recordsintegerOptional
TypeScript
await setu.execute({
  userId: "user_1",
  action: "airtable.search_records",
  input: {
    "base_id": "<base_id>",
    "table": "<table>",
    "formula": "<formula>"
  },
});
Update recordwriteairtable.update_recordUpdate fields of a record (fields not provided are left unchanged).

Needs scope: data.records:write

InputTypeDescription
base_idstringRequiredBase ID, e.g. appXXXX
tablestringRequiredTable ID or name
record_idstringRequired
fieldsobjectRequired
TypeScript
await setu.execute({
  userId: "user_1",
  action: "airtable.update_record",
  input: {
    "base_id": "<base_id>",
    "table": "<table>",
    "record_id": "<record_id>",
    "fields": {}
  },
});