Lightweight Airtable API client powered by fetch.
@ensembleblock/airtable is a minimalistic and efficient client library designed to interact with Airtable's API using modern JavaScript standards. It leverages the fetch API for making HTTP requests, ensuring zero runtime dependencies and offering a clean, ergonomic API with ORM-style methods for common operations like findFirst, upsertRecord, and more.
- Zero runtime dependencies: Pure JavaScript implementation.
- Modern API: Built on the
fetchAPI. - Input validation: Provides clear and meaningful error messages for invalid inputs.
- Ergonomic methods: Includes ORM-style methods such as
findFirstandupsertRecordfor intuitive data manipulation. - Customizable: Options like
modifiedSinceHoursallow for fine-grained control over data retrieval.
Install the package via npm:
npm install @ensembleblock/airtableCreate an instance of AirtableClient with your Airtable API key and base ID:
import { AirtableClient } from '@ensembleblock/airtable';
const client = new AirtableClient({
apiKey: 'your_airtable_api_key',
baseId: 'your_airtable_base_id',
});const response = await client.createRecord({
tableIdOrName: 'Table Name',
fields: {
Name: 'John Doe',
Age: 30,
},
});
console.log(response.data);const record = await client.findFirst({
tableIdOrName: 'Table Name',
where: { Name: 'John Doe' },
fields: ['Name', 'Age'],
});
console.log(record);const result = await client.upsertRecord({
tableIdOrName: 'Table Name',
where: { Email: '[email protected]' },
$set: { Age: 31 },
});
console.log(result);Creates a new instance of the AirtableClient.
options.apiKey(string): Your Airtable API key (required).options.baseId(string): The ID of your Airtable base (required).options.baseUrl(string): The base URL for Airtable API (optional, defaults tohttps://api.airtable.com/v0).
Creates a new record in the specified table.
findFirst(options: FindFirstOpts): Promise<FieldsObj | (FieldsObj & { _airtableId: string }) | null>
Finds the first record that matches the given filter criteria.
upsertRecord(options: UpsertRecordOpts): Promise<{ _airtableId: string; upsertResult: UpsertResult }>
Upserts a record: updates it if it exists, or creates it if it doesn't.
AirtableClientOptsFieldsObjAirtableRecordAirtableResponseCreateRecordOptsFindFirstOptsFindManyOptsGetRecordOptsUpdateRecordOptsUpsertRecordOptsUpsertResult
Contributions are welcome! Please feel free to open issues or submit pull requests on the GitHub repository.
This project is licensed under the MIT License.