Connect Airtable with ShedBoxAI
Pull data from Airtable bases and build automated processing pipelines.
Quick Start
data_sources:
records:
type: rest
url: "https://api.airtable.com/v0/${AIRTABLE_BASE_ID}/${TABLE_NAME}"
headers:
Authorization: "Bearer ${AIRTABLE_TOKEN}"
response_path: "records"
output:
type: file
path: "airtable_data.json"
format: json
Authentication
Get your Personal Access Token from airtable.com/account:
export AIRTABLE_TOKEN="pat..."
export AIRTABLE_BASE_ID="app..."
Common Pipelines
Table Export
data_sources:
projects:
type: rest
url: "https://api.airtable.com/v0/${AIRTABLE_BASE_ID}/Projects"
headers:
Authorization: "Bearer ${AIRTABLE_TOKEN}"
options:
params:
filterByFormula: "{Status} = 'Active'"
response_path: "records"
output:
type: file
path: "active_projects.json"
format: json
Multi-Table Processing
data_sources:
projects:
type: rest
url: "https://api.airtable.com/v0/${AIRTABLE_BASE_ID}/Projects"
headers:
Authorization: "Bearer ${AIRTABLE_TOKEN}"
response_path: "records"
tasks:
type: rest
url: "https://api.airtable.com/v0/${AIRTABLE_BASE_ID}/Tasks"
headers:
Authorization: "Bearer ${AIRTABLE_TOKEN}"
response_path: "records"
processing:
relationship_highlighting:
projects:
link_fields:
- source: "projects"
source_field: "id"
to: "tasks"
target_field: "project_id"
output:
type: file
path: "project_tasks.json"
format: json
Filter and Aggregate
data_sources:
tasks:
type: rest
url: "https://api.airtable.com/v0/${AIRTABLE_BASE_ID}/Tasks"
headers:
Authorization: "Bearer ${AIRTABLE_TOKEN}"
response_path: "records"
processing:
contextual_filtering:
tasks:
- field: "fields.Status"
condition: "Complete"
new_name: "completed_tasks"
advanced_operations:
tasks_by_project:
source: "completed_tasks"
group_by: "fields.Project"
aggregate:
task_count: "COUNT(*)"
sort: "-task_count"
output:
type: file
path: "task_summary.json"
format: json
AI-Powered Analysis
data_sources:
content:
type: rest
url: "https://api.airtable.com/v0/${AIRTABLE_BASE_ID}/Content"
headers:
Authorization: "Bearer ${AIRTABLE_TOKEN}"
response_path: "records"
ai_interface:
model:
type: rest
url: "https://api.anthropic.com/v1/messages"
method: POST
headers:
x-api-key: "${ANTHROPIC_API_KEY}"
Content-Type: "application/json"
options:
model: "claude-sonnet-4-20250514"
prompts:
analyze:
system: "You are a content analyst."
user_template: |
Analyze this Airtable content:
{% for record in content %}
- {{ record.fields.Name }}: {{ record.fields.Description }}
{% endfor %}
Identify patterns and suggest improvements.
output:
type: file
path: "content_analysis.md"
format: json