Airtable技能使用说明
2026-03-27
新闻来源:网淘吧
围观:26
电脑广告
手机广告
Airtable
通过托管的OAuth身份验证访问Airtable API。通过完整的增删改查操作管理数据库、表格和记录。
快速开始
# List records from a table
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/airtable/v0/{baseId}/{tableIdOrName}?maxRecords=100')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
基础URL
https://gateway.maton.ai/airtable/{native-api-path}
将{native-api-path}替换为实际的Airtable API端点路径。网关会将请求代理到api.airtable.com并自动注入您的OAuth令牌。
身份验证
所有请求都需要在Authorization标头中包含Maton API密钥:
Authorization: Bearer $MATON_API_KEY
环境变量:将您的API密钥设置为MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"
获取您的API密钥
复制您的API密钥
在以下网址管理您的Airtable OAuth连接https://ctrl.maton.ai。
列出连接
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=airtable&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
创建连接
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'airtable'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
获取连接
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
响应:
{
"connection": {
"connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=...",
"app": "airtable",
"metadata": {}
}
}
在浏览器中打开返回的网址以完成OAuth授权。
删除连接
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
指定连接
如果您有多个Airtable连接,请使用Maton-Connection标头指定要使用的连接:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/airtable/v0/appXXXXX/TableName')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
如果省略,网关将使用默认(最早创建的)活动连接。
API参考
列出所有数据集
GET /airtable/v0/meta/bases
获取数据集结构
GET /airtable/v0/meta/bases/{baseId}/tables
列出记录
GET /airtable/v0/{baseId}/{tableIdOrName}?maxRecords=100
使用视图:
GET /airtable/v0/{baseId}/{tableIdOrName}?view=Grid%20view&maxRecords=100
使用筛选公式:
GET /airtable/v0/{baseId}/{tableIdOrName}?filterByFormula={Status}='Active'
使用字段选择:
GET /airtable/v0/{baseId}/{tableIdOrName}?fields[]=Name&fields[]=Status&fields[]=Email
使用排序:
GET /airtable/v0/{baseId}/{tableIdOrName}?sort[0][field]=Created&sort[0][direction]=desc
获取记录
GET /airtable/v0/{baseId}/{tableIdOrName}/{recordId}
创建记录
POST /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json
{
"records": [
{
"fields": {
"Name": "New Record",
"Status": "Active",
"Email": "test@example.com"
}
}
]
}
更新记录(PATCH - 部分更新)
PATCH /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json
{
"records": [
{
"id": "recXXXXXXXXXXXXXX",
"fields": {
"Status": "Completed"
}
}
]
}
更新记录(PUT - 完全替换)
PUT /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json
{
"records": [
{
"id": "recXXXXXXXXXXXXXX",
"fields": {
"Name": "Updated Name",
"Status": "Active"
}
}
]
}
删除记录
DELETE /airtable/v0/{baseId}/{tableIdOrName}?records[]=recXXXXX&records[]=recYYYYY
分页
使用pageSize和offset进行分页:
GET /airtable/v0/{baseId}/{tableIdOrName}?pageSize=50&offset=itrXXXXXXXXXXX
当存在更多记录时,响应包含offset:
{
"records": [...],
"offset": "itrXXXXXXXXXXX"
}
代码示例
JavaScript
const response = await fetch(
'https://gateway.maton.ai/airtable/v0/appXXXXX/TableName?maxRecords=10',
{
headers: {
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
}
}
);
Python
import os
import requests
response = requests.get(
'https://gateway.maton.ai/airtable/v0/appXXXXX/TableName',
headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
params={'maxRecords': 10}
)
注意事项
- Base ID 以
app - 开头
Table ID 以tbl - 开头(也可使用表名)
Record ID 以 - 每次创建/更新请求最多100条记录
- 每次删除请求最多10条记录
- 筛选公式使用Airtable公式语法
- 重要提示:使用curl命令时,若URL包含括号(
fields[]、sort[]、records[])请务必使用curl -g以禁用通配符解析 - 重要提示:当通过管道将curl输出传递给
jq或其他命令时,某些shell环境中$MATON_API_KEY这类环境变量可能无法正确展开。通过管道传递时可能出现"无效API密钥"错误
错误处理
| 状态码 | 含义 |
|---|---|
| 400 | 缺少Airtable连接 |
| 401 | 无效或缺少Maton API密钥 |
| 429 | 请求频率受限(每个账户每秒10次请求) |
| 4xx/5xx | 来自Airtable API的透传错误 |
故障排除:API密钥问题
- 请检查
MATON_API_KEY环境变量是否已设置:
echo $MATON_API_KEY
- 通过列出连接来验证API密钥是否有效:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
故障排除:无效的应用名称
- 请确保您的URL路径以
airtable开头。例如:
- 正确示例:
https://gateway.maton.ai/airtable/v0/{baseId}/{tableIdOrName} - 错误示例:
https://gateway.maton.ai/v0/{baseId}/{tableIdOrName}
资源
文章底部电脑广告
手机广告位-内容正文底部


微信扫一扫,打赏作者吧~