---
title: Airtable API Integration on Truto
slug: airtable
category: Ticketing
canonical: "https://truto.one/integrations/detail/airtable/"
---

# Airtable API Integration on Truto



**Category:** Ticketing  
**Status:** Beta

## Unified APIs

### Unified User Directory API

- **Activities** — Activities are the actions performed by users in the source application.
- **Groups** — Groups are a collection of users in the source application. In some applications, they might also be called Teams.
- **Users** — The User object represents a User.

### Unified Ticketing API

- **Collections** — Tickets and contacts can be grouped into Collections. Collection resource usually maps to the various grouping systems used in the underlying product. Some examples are lists, projects, epics, etc. You can differentiate between these grouping systems using the type attribute of a Collection.
- **Comments** — Comments represent the communication happening on a Ticket, both between a User and a Contact and the internal things like notes, private comments, etc. A Ticket can have one or more Comments.
- **Tickets** — Core resource which represents some work that needs to be carried out. Tickets are usually mapped to issues, tasks, work items, etc. depending on the underlying product.
- **Workspaces** — Workspaces represent the top-level subdivision in a ticketing system. They usually have their own set of settings, tickets, statuses, priorities and users. Some of the usual terminologies used by the products for the top-level subdivision are projects, bases, spaces, workspace, etc. A Workspace could belong to an Organization.

### Unified Search API

- **Search** — Search endpoint for all the apps.

## MCP-ready AI tools

Truto exposes 56 tools for Airtable that AI agents can call directly.

- **list_all_airtable_bases** — List bases accessible by the token in Airtable. Returns base id, name, and permissionLevel fields for each base. Supports pagination with optional offset parameter.
- **create_a_airtable_base** — Create a new base in Airtable with name, workspaceId, and tables. Returns base id and tables array representing the schema of the created base. Requires at least one table and field with unique names.
- **create_a_airtable_table** — Create a new table in Airtable base using base_id. Requires name and fields. Returns the schema of the created table including id, name, description, and fields.
- **update_a_airtable_table_by_id** — Update a table's name, description, or date dependency settings in Airtable. Requires base_id and id. Returns updated table with id, name, description, primaryFieldId, fields, and views.
- **list_all_airtable_tables** — Get schema of tables for base with id in Airtable. Returns an array of table models including table structure and metadata.
- **list_all_airtable_records** — List records in a table in Airtable using base_id and table_id_or_name. Returns records array with id, createdTime, fields (cell values keyed by field name or ID), and optional commentCount if requested. Pagination supported via offset.
- **get_single_airtable_record_by_id** — Get a single record by base_id, table_id_or_name, and id in Airtable. Returns record id, createdTime timestamp, and fields with cell values keyed by field name or field id.
- **create_a_airtable_record** — Create multiple records in Airtable with base_id and table_id_or_name. Returns an array of records with id, createdTime, and fields containing cell values keyed by field name or field ID.
- **update_a_airtable_record_by_id** — Update a single record by id in Airtable using base_id and table_id_or_name. Returns updated record id, createdTime timestamp, and fields with cell values keyed by field name or id.
- **delete_a_airtable_record_by_id** — Delete a single record by base_id, table_id_or_name, and id in Airtable. Returns the record id and a deleted flag indicating successful deletion.
- **update_a_airtable_field_by_id** — Update a field's name and/or description in Airtable using base_id, table_id, and id. Returns id, name, type, description, and options of the updated field. At least one of name or description must be specified.
- **create_a_airtable_field** — Create a new field in Airtable for base_id and table_id. Returns the created field's id, name, type, description, and options.
- **list_all_airtable_comments** — Get a list of comments for a record in Airtable using base_id, table_id_or_name, and record_id. Returns comment id, createdTime, lastUpdatedTime, text, parentCommentId, author info, mentioned users, and reactions.
- **get_single_airtable_comment_by_id** — Retrieves detailed information about a specific comment on a record in Airtable using the comment’s ID.
- **create_a_airtable_comment** — Create a comment on a record in Airtable with base_id, table_id_or_name, and record_id. Returns id, createdTime, lastUpdatedTime, text, author info, optional parentCommentId, mentioned users, and reactions.
- **delete_a_airtable_comment_by_id** — Delete a comment by id from a record identified by base_id, table_id_or_name, and record_id in Airtable. Returns id and deleted status indicating if the comment was deleted.
- **update_a_airtable_comment_by_id** — Update a comment on a record in Airtable using base_id, table_id_or_name, record_id, and id. Returns the updated comment's id, createdTime, lastUpdatedTime, text, parentCommentId, mentioned users, reactions, and author details.
- **list_all_airtable_audit_logs** — Get audit log events for an enterprise in Airtable using enterprise_account_id. Returns events array with id, timestamp, action, actor, modelId, modelType, payload, payloadVersion, context, and origin details. Events are newest to oldest.
- **get_single_airtable_user_by_id** — Get user information by id in Airtable. Requires enterprise_account_id and id. Returns basic information relevant to both internal and external users including user role and billing plan details.
- **delete_a_airtable_user_by_id** — Delete user by id in Airtable for the specified enterprise_account_id and id. Returns an empty response on success. Note: Cannot delete sole owner if other collaborators exist, cannot delete external or non-managed users, and cannot perform action on self.
- **update_a_airtable_user_by_id** — Update a managed user in Airtable by enterprise_account_id and id. Returns empty response on success. Can change state, email, firstName, and lastName with restrictions on state changes and email domains.
- **get_single_airtable_user_group_by_id** — Get basic information about a specific user group in Airtable by id. Returns fields id, createdTime, enterpriseAccountId, updatedTime, name, members (userId, email, firstName, lastName, role), and optionally collaborations if requested and authorized.
- **get_single_airtable_enterprise_account_by_id** — Get basic information about an enterprise account in Airtable using id. Returns fields including aggregated and descendants if specified in the include query parameter.
- **list_all_airtable_webhooks** — List all webhooks registered for a base in Airtable using base_id. Returns webhook id, enabled status, notification settings, last notification time, notification URL, expiration time, last notification result, and specification.
- **create_a_airtable_webhook** — Create a webhook in Airtable for the base specified by base_id. Returns id (webhook identifier), macSecretBase64 (MAC secret for authentication), and expirationTime (ISO format expiration time or null if no expiration).
- **delete_a_airtable_webhook_by_id** — Delete a webhook by base_id and id in Airtable. Returns an empty response on success. Requires creator level permissions and webhook:manage scope.
- **airtable_webhooks_refresh** — Refresh a webhook with base_id and id to extend its expiration time by 7 days in Airtable. Returns the new expirationTime in ISO format.
- **list_all_airtable_webhook_payloads** — List webhook payloads for base_id and id in Airtable. Returns payloads array with webhook update messages, cursor indicating next payload transaction number, and mightHaveMore flag for additional payloads. Calling extends webhook life by 7 days.
- **airtable_webhook_notifications_enable_disable** — Enable or disable webhook notifications in Airtable. Requires base_id and id. The request body must include the boolean field 'enable'. Returns an empty response on success.
- **list_all_airtable_views** — List views for a base in Airtable using base_id. Returns id, type, name, personalForUserId if personal, and visibleFieldIds for grid views when requested.
- **get_single_airtable_view_by_id** — Get metadata for a specific view in Airtable by base_id and id. Returns id, type, name, personalForUserId if personal, and visibleFieldIds for grid views when requested.
- **delete_a_airtable_view_by_id** — Delete a view by base_id and id in Airtable. Returns an empty response on success.
- **list_all_airtable_shares** — List basic information of base shares in Airtable. Requires base_id. Returns fields including shareId (unique identifier), state (enabled or disabled), createdByUserId (user who created the share), createdTime (ISO timestamp), type (base, view, or blockInstallation), isPasswordProtected, and email domain restrictions.
- **delete_a_airtable_share_by_id** — Delete a share by base_id and id in Airtable. Hard deleted share is not recoverable. Returns an empty response on success.
- **update_a_airtable_share_by_id** — Manage share state for a specific share in Airtable by base_id and id. The response is empty on success. When enabling a share, sharing restrictions apply.
- **list_all_airtable_base_collaborators** — Get base collaborators for base with id in Airtable. Returns active collaborators and outstanding invites. Response includes collaborator id, email, name, and role fields.
- **create_a_airtable_base_collaborator** — Add a new base collaborator to a base in Airtable using baseId. Returns an empty response on success. Only one collaborator can be added at a time.
- **delete_a_airtable_base_collaborator_by_id** — Delete a base collaborator by base_id and id in Airtable. Returns an empty response on success.
- **get_single_airtable_workspace_collaborator_by_id** — Get workspace collaborators for workspace_id in Airtable. Returns individual collaborators explicitly added to the workspace. Response includes id, createdTime, name, workspaceRestrictions, individualCollaborators, and groupCollaborators.
- **create_a_airtable_workspace_collaborator** — Add a new workspace collaborator in Airtable by workspace_id. Supports adding one collaborator at a time. Returns empty response on success. Key limitations: only one collaborator per request, user must be verified, groups cannot be owners.
- **delete_a_airtable_workspace_collaborator_by_id** — Delete a workspace collaborator by workspace_id and id in Airtable. Returns an empty response on success. Note: Cannot remove the sole owner of a workspace.
- **update_a_airtable_workspace_collaborator_by_id** — Update workspace collaborator permission level in Airtable. Requires workspace_id and id. Returns empty response on success. Errors include invalid permissions for groups, non-collaborators, and sole owner restrictions.
- **get_single_airtable_interface_collaborator_by_id** — Get general information about a specific interface in Airtable using base_id and id. Returns id, baseId, createdTime, name, permissionLevel, groupCollaborators, individualCollaborators, and inviteLinks.
- **create_a_airtable_interface_collaborator** — Add a collaborator to an interface in Airtable using base_id and page_bundle_id. Supports adding one collaborator at a time. Returns an empty response on success.
- **update_a_airtable_interface_collaborator_by_id** — Update permissions for an interface collaborator in Airtable using base_id, page_bundle_id, and id. The response is empty on success.
- **delete_a_airtable_interface_collaborator_by_id** — Delete an interface collaborator by base_id, page_bundle_id, and id in Airtable. Returns an empty response on success.
- **delete_a_airtable_base_invite_by_id** — Delete a base invite in Airtable using base id and invite_id. The invite must be outstanding. Returns an empty response on success.
- **delete_a_airtable_interface_invite_by_id** — Delete an outstanding interface invite in Airtable by base_id, page_bundle_id, and id. Returns an empty response on success. The invite must be outstanding.
- **delete_a_airtable_workspace_invite_by_id** — Delete a workspace invite by workspace_id and id in Airtable. Returns an empty response on success. The invite must be outstanding to be deleted.
- **list_all_airtable_ediscovery_exports** — List eDiscovery exports for enterprise_account_id in Airtable. Returns exports sorted newest to oldest with fields id, state, createdTime, user (id, email, name), request (baseId, includeCsvFormat, shouldSendEmailOnCompletion), error message if any, and data with download URLs and expirationTime.
- **get_single_airtable_ediscovery_export_by_id** — Get status and result of an eDiscovery export in Airtable. Requires enterprise_account_id and id. Returns fields: state (pending, processing, error, done), error message if any, createdTime, user info (id, email, name), and export data including expirationTime, jsonDownloadUrl, and optional csvZipDownloadUrl.
- **create_a_airtable_ediscovery_export** — Create an eDiscovery export for enterprise_account_id with baseId in Airtable. Returns id, state, createdTime, user info, and download URLs for JSON and optional CSV exports.
- **list_all_airtable_block_installations** — List block installations for a base in Airtable using base_id. Returns id, state (enabled or disabled), createdByUserId, createdTime, blockId, and optional blockSlug for each installation.
- **delete_a_airtable_block_installation_by_id** — Delete a block installation by base_id and id in Airtable. The deleted block installation is recoverable.
- **update_a_airtable_block_installation_by_id** — Update the state of a block installation in Airtable by base_id and id. The state can be set to 'enabled' or 'disabled'. Returns an empty response on success.
- **list_all_airtable_change_events** — Get change events for enterprise bases in Airtable using enterprise_account_id. Returns fields id, type, actor, eventTimestamp, objectId, objectType, timestamp, context, origin, and payload. Events available for 14 days and require change events enabled.

## How it works

1. **Link your customer's Airtable account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Airtable.** The Proxy API is a 1-to-1 mapping of the Airtable API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Sync escalated support tickets into Airtable-based ops workflows** — Helpdesk and support SaaS platforms can let their users push escalated tickets directly into their operations team's Airtable bases, then register webhooks to detect status changes in Airtable and automatically close or update tickets upstream — keeping both systems in sync without manual copy-paste.
- **Push product feedback and feature requests into custom roadmap bases** — Product feedback tools can create records in a customer's Airtable roadmap table when feature requests hit a threshold, and continuously update fields like upvote count or priority, giving product managers a live view in the tool they already use daily.
- **Append automated context and logs to Airtable ticket threads** — Error tracking, testing, and monitoring SaaS products can post structured comments on existing Airtable records — such as stack traces, test results, or customer replies — keeping all context threaded on the ticket without creating duplicates.
- **Read Airtable records to power external-facing views in your SaaS** — Customer portal, status page, or project visibility tools can pull records from their users' Airtable bases and render them natively in their own UI, turning Airtable into a flexible backend that non-technical teams already know how to manage.
- **Automate user and collaborator provisioning across Airtable workspaces** — Identity management and onboarding SaaS platforms can programmatically add or remove collaborators from Airtable bases and workspaces as part of employee lifecycle workflows, ensuring access stays in sync with HR systems.

## What you can build

- **Dynamic base and table field mapper** — Let your end users browse their Airtable bases and tables via list_all_airtable_bases and list_all_airtable_tables, then map your product's data fields to their custom Airtable columns — no hardcoded schemas required.
- **Two-way ticket status sync via webhooks** — Register webhooks on an Airtable base with create_a_airtable_webhook and consume payloads via list_all_airtable_webhook_payloads to detect record changes in real time, enabling bidirectional status synchronization between your app and Airtable.
- **Automated ticket creation with deduplication** — Use create_a_airtable_record to push new tickets into Airtable, and create_a_airtable_comment to append subsequent updates to existing records instead of creating duplicates, keeping your users' bases clean.
- **Contextual comment threading on Airtable records** — Push system-generated logs, customer replies, or error traces directly into an Airtable record's comment thread using create_a_airtable_comment and list_all_airtable_comments, so operations teams never lose context.
- **Collaborator lifecycle management** — Automate provisioning and de-provisioning of Airtable base and workspace collaborators using create_a_airtable_base_collaborator, delete_a_airtable_base_collaborator_by_id, and the workspace collaborator endpoints as part of onboarding or offboarding flows.
- **Unified ticket and user search across Airtable** — Leverage Truto's Unified Ticketing API to list tickets, comments, and collections, and the Unified User Directory API to query users and groups — abstracting away Airtable-specific record structures behind a consistent data model.

## FAQs

### How does Truto handle authentication for Airtable?

Truto manages OAuth 2.0 flows for Airtable on your behalf. Your end users authorize their Airtable accounts through Truto's hosted auth flow, and Truto handles token storage, refresh, and revocation — you never touch raw credentials.

### How do I handle Airtable's custom schemas when every base is different?

Use list_all_airtable_bases and list_all_airtable_tables to dynamically discover your end user's bases, tables, and fields at runtime. This lets you build a field mapping UI so users connect your product's data model to their specific Airtable columns without any hardcoding.

### Can I get real-time updates from Airtable instead of polling?

Yes. You can register webhooks on a specific base using create_a_airtable_webhook, then retrieve change payloads with list_all_airtable_webhook_payloads. Truto also supports airtable_webhooks_refresh to keep webhook subscriptions active and airtable_webhook_notifications_enable_disable to control notification delivery.

### What Unified APIs does Truto map Airtable to?

Airtable is mapped to Truto's Unified Ticketing API (Tickets, Comments, Collections, Workspaces), Unified User Directory API (Users, Groups, Activities), and Unified Search API. This means you can read and write Airtable data using the same endpoints you use for other ticketing and directory tools.

### Does Truto handle pagination and rate limits for Airtable?

Yes. Truto abstracts away Airtable's cursor-based pagination and manages rate limit retries automatically, so you can list all records or comments without implementing backoff logic or page cursors in your own code.

### Can I manage comments and record-level discussions through the API?

Absolutely. You can create, list, update, and delete comments on individual Airtable records using create_a_airtable_comment, list_all_airtable_comments, update_a_airtable_comment_by_id, and delete_a_airtable_comment_by_id — enabling contextual threading directly from your product.

## Related reading

- [Connect Airtable to ChatGPT: Manage Records & Automate Database Tasks via MCP](https://truto.one/blog/connect-airtable-to-chatgpt-manage-records-automate-database-tasks/) — Learn how to connect Airtable to ChatGPT using a managed Model Context Protocol (MCP) server. Automate record management, schema updates, and base administration.
- [Connect Airtable to Claude: Automate Database Workflows via MCP](https://truto.one/blog/connect-airtable-to-claude-sync-tables-streamline-collaborations/) — Learn how to connect Airtable to Claude using a managed MCP server. Give your AI agents secure access to query records, manage bases, and automate workflows.
- [Connect Airtable to AI Agents: Automate Workflows & Admin Operations](https://truto.one/blog/connect-airtable-to-ai-agents-automate-workflows-admin-operations/) — Learn how to connect Airtable to AI agents using Truto's /tools endpoint. Bind 50+ dynamically generated Airtable tools to LangChain, LangGraph, or CrewAI.
