AppSheet API Integration Guide: Connecting with External Systems [2025 Complete Tutorial]
AppSheet API Integration Guide: Connecting with External Systems [2025 Complete Tutorial]
AppSheet isn't just a standalone App—it can connect with your other systems.
Through API, AppSheet can integrate with ERP, CRM, e-commerce platforms, and custom systems.
This tutorial will teach you how to use AppSheet API, from getting an API Key to actual integration.
Want to learn AppSheet basics first? See AppSheet Complete Guide.
What is AppSheet API?
First, let's clarify what API can do.
REST API Overview
AppSheet provides standard REST API.
REST (Representational State Transfer) is a web API design style that almost all programming languages can call.
AppSheet API Features:
- Standard HTTP methods (GET, POST, PUT, DELETE)
- JSON format data transfer
- Authentication based on Application ID and Access Key
- Supports full CRUD operations
What Can You Do?
Through API, you can:
| Operation | Description | Example Use Case |
|---|---|---|
| Read data | Get data from AppSheet | Display inventory on website |
| Add data | Write to AppSheet from external system | Auto-import e-commerce orders |
| Update data | Modify data in AppSheet | ERP sync status updates |
| Delete data | Remove data from AppSheet | Auto-cleanup expired data |
Usage Limits
Important: API requires Core plan or above.
| Plan | API Support |
|---|---|
| Free | Not supported |
| Starter | Not supported |
| Core | Supported |
| Enterprise | Supported (higher limits) |
For detailed plan comparison, see AppSheet Pricing Complete Guide.
Other Limits:
- Requests per minute limit (Core: 10 req/min)
- Maximum 500 records per response
- API Key must be kept secure

API Access Setup
Before using API, you need to set up access permissions.
Step 1: Enable API Feature
Step 1: Enter Settings
After logging into AppSheet, open your App
Click "Settings" → "Integrations"
Step 2: Enable API
Find the "IN: from cloud services to your app" section
Set "Enable" to on
Step 3: Get Authentication Info
Note these two values:
- App ID: Your Application ID
- Access Key: Click "Create Application Access Key" to generate
Step 2: Set Table Permissions
Not all Tables can be accessed via API—each needs individual configuration.
Setup Method:
- Go to "Data" → "Tables"
- Select the Table to open for API
- Click "Are updates allowed?"
- Confirm "All changes" or "Adds and updates only"
Permission Explanations:
| Setting | API Operations Available |
|---|---|
| All changes | Add, Update, Delete |
| Adds and updates only | Add, Update (no delete) |
| Adds only | Add only |
| Read-Only | Read only |
Step 3: Security Considerations
API Key leakage has serious consequences—be very careful.
Security Recommendations:
-
Don't put API Key in frontend code
- Keys in JavaScript are visible to anyone
- Keep them on backend servers
-
Use HTTPS
- AppSheet API enforces HTTPS
- Ensures encrypted data transfer
-
Rotate Keys Regularly
- Recommend every 3-6 months
- Change immediately if possible leakage detected
-
IP Whitelist (Enterprise)
- Enterprise plan can set specific IP allowlist
API Operation Tutorial
Actual API call methods.
API Endpoint Format
AppSheet API base endpoint:
https://api.appsheet.com/api/v2/apps/{appId}/tables/{tableName}/Action
Parameter explanations:
{appId}: Your Application ID{tableName}: Table name
Read Data (Find)
Get data from a table.
Request Example:
curl -X POST \
'https://api.appsheet.com/api/v2/apps/YOUR_APP_ID/tables/Orders/Action' \
-H 'ApplicationAccessKey: YOUR_ACCESS_KEY' \
-H 'Content-Type: application/json' \
-d '{
"Action": "Find",
"Properties": {
"Locale": "en-US",
"Selector": "Filter(Orders, [Status] = \"Pending\")"
}
}'
Parameter Explanations:
| Parameter | Description |
|---|---|
| Action | "Find" means read |
| Locale | Locale setting |
| Selector | Filter condition (uses AppSheet formula syntax) |
Response Format:
{
"Rows": [
{
"OrderID": "ORD-001",
"Customer": "John Smith",
"Amount": 1500,
"Status": "Pending"
},
{
"OrderID": "ORD-002",
"Customer": "Jane Doe",
"Amount": 2300,
"Status": "Pending"
}
]
}
Add Data (Add)
Add a new record to Table.
Request Example:
curl -X POST \
'https://api.appsheet.com/api/v2/apps/YOUR_APP_ID/tables/Orders/Action' \
-H 'ApplicationAccessKey: YOUR_ACCESS_KEY' \
-H 'Content-Type: application/json' \
-d '{
"Action": "Add",
"Properties": {
"Locale": "en-US"
},
"Rows": [
{
"OrderID": "ORD-003",
"Customer": "Bob Wilson",
"Amount": 980,
"Status": "Pending",
"CreatedAt": "2025-12-15"
}
]
}'
Important Notes:
- Required fields cannot be missing
- Key field values cannot be duplicated
- Date format must be correct
Update Data (Edit)
Modify existing data.
Request Example:
curl -X POST \
'https://api.appsheet.com/api/v2/apps/YOUR_APP_ID/tables/Orders/Action' \
-H 'ApplicationAccessKey: YOUR_ACCESS_KEY' \
-H 'Content-Type: application/json' \
-d '{
"Action": "Edit",
"Properties": {
"Locale": "en-US"
},
"Rows": [
{
"OrderID": "ORD-001",
"Status": "Shipped"
}
]
}'
Note: Must include Key field (OrderID in this example) so system knows which record to update.
Delete Data (Delete)
Delete specified data.
Request Example:
curl -X POST \
'https://api.appsheet.com/api/v2/apps/YOUR_APP_ID/tables/Orders/Action' \
-H 'ApplicationAccessKey: YOUR_ACCESS_KEY' \
-H 'Content-Type: application/json' \
-d '{
"Action": "Delete",
"Properties": {
"Locale": "en-US"
},
"Rows": [
{
"OrderID": "ORD-003"
}
]
}'
Note: Only need to provide Key field.

Integration Examples
Actual integration application scenarios.
Zapier Integration
Zapier is the most commonly used automation integration platform.
Method 1: AppSheet → Zapier (Using Webhook)
When AppSheet has an event, trigger Zapier.
Setup Steps:
- Create new Zap in Zapier
- Trigger: Select "Webhooks by Zapier" → "Catch Hook"
- Copy Webhook URL
- In AppSheet Automation, set up Call Webhook
- Paste Zapier URL
- Configure data to send
Method 2: Zapier → AppSheet (Using API)
Write data to AppSheet from Zapier.
Setup Steps:
- Create new Zap in Zapier
- Set Trigger (e.g., new Google Form response)
- Action: Select "Webhooks by Zapier" → "Custom Request"
- Method: POST
- URL: AppSheet API endpoint
- Headers: Add ApplicationAccessKey
- Body: JSON format data
Make (Integromat) Integration
Make is another powerful automation platform, more flexible than Zapier.
Make Advantages:
- Visual flow design
- Complex logic handling
- Lower cost
Setup Steps:
- Create new Scenario
- Add "HTTP" → "Make a request" module
- URL: AppSheet API endpoint
- Method: POST
- Headers:
- ApplicationAccessKey: YOUR_KEY
- Content-Type: application/json
- Body: JSON format
Example: E-commerce Order Sync
{
"Action": "Add",
"Properties": {"Locale": "en-US"},
"Rows": [{
"OrderID": "{{1.order_id}}",
"Customer": "{{1.customer_name}}",
"Amount": "{{1.total_amount}}",
"Status": "Pending"
}]
}
{{1.xxx}} is Make's variable syntax, auto-populating data from previous module.
Custom System Integration
If you have your own system, you can call the API directly with code.
Python Example:
import requests
import json
# API Configuration
APP_ID = "your-app-id"
ACCESS_KEY = "your-access-key"
TABLE_NAME = "Orders"
# API Endpoint
url = f"https://api.appsheet.com/api/v2/apps/{APP_ID}/tables/{TABLE_NAME}/Action"
# Headers
headers = {
"ApplicationAccessKey": ACCESS_KEY,
"Content-Type": "application/json"
}
# Add Order
def add_order(order_data):
payload = {
"Action": "Add",
"Properties": {"Locale": "en-US"},
"Rows": [order_data]
}
response = requests.post(url, headers=headers, json=payload)
return response.json()
# Usage Example
new_order = {
"OrderID": "ORD-100",
"Customer": "David Chen",
"Amount": 5000,
"Status": "Pending"
}
result = add_order(new_order)
print(result)
Node.js Example:
const axios = require('axios');
const APP_ID = 'your-app-id';
const ACCESS_KEY = 'your-access-key';
const TABLE_NAME = 'Orders';
const url = `https://api.appsheet.com/api/v2/apps/${APP_ID}/tables/${TABLE_NAME}/Action`;
async function addOrder(orderData) {
const payload = {
Action: 'Add',
Properties: { Locale: 'en-US' },
Rows: [orderData]
};
const response = await axios.post(url, payload, {
headers: {
'ApplicationAccessKey': ACCESS_KEY,
'Content-Type': 'application/json'
}
});
return response.data;
}
// Usage Example
const newOrder = {
OrderID: 'ORD-101',
Customer: 'Sarah Lin',
Amount: 3200,
Status: 'Pending'
};
addOrder(newOrder).then(result => console.log(result));
API integration too complex? External system integration requires consideration of error handling, security, and performance.
Schedule architecture consultation and let us help design a stable integration solution.
Advanced Applications
More complex API usage techniques.
Webhook Reception
Besides calling external APIs, AppSheet can also receive notifications from external systems.
Use Cases:
- E-commerce platform order status updates
- Payment system payment notifications
- External system triggering AppSheet actions
Setup Method:
- Create an Action in AppSheet
- Action type: Select "Data: execute an action on a set of rows"
- Configure action to execute
- In Settings → Integrations, find this Action's URL
- Provide URL to external system to call
For detailed Webhook setup, see AppSheet Automation Tutorial.
Batch Operations
Process multiple records at once for efficiency.
Add Multiple Records:
{
"Action": "Add",
"Properties": {"Locale": "en-US"},
"Rows": [
{"OrderID": "ORD-201", "Customer": "Customer A", "Amount": 1000},
{"OrderID": "ORD-202", "Customer": "Customer B", "Amount": 2000},
{"OrderID": "ORD-203", "Customer": "Customer C", "Amount": 3000}
]
}
Notes:
- Maximum 500 records at once
- Split into batches if exceeding
- Errors cause entire batch to fail—no partial success
Error Handling
API calls can fail—implement proper error handling.
Common Error Codes:
| Error Code | Cause | Solution |
|---|---|---|
| 400 | Request format error | Check JSON format, required fields |
| 401 | Authentication failed | Verify Access Key is correct |
| 403 | Insufficient permissions | Confirm Table has API enabled |
| 404 | Resource not found | Verify App ID, Table name |
| 429 | Rate limit exceeded | Reduce request frequency |
| 500 | Server error | Retry later |
Error Handling Example (Python):
import requests
import time
def api_call_with_retry(url, headers, payload, max_retries=3):
for attempt in range(max_retries):
try:
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
return response.json()
elif response.status_code == 429:
# Rate limited, wait and retry
time.sleep(60)
continue
else:
# Other errors
print(f"Error {response.status_code}: {response.text}")
return None
except Exception as e:
print(f"Connection error: {e}")
time.sleep(5)
continue
return None

Useful Tips
Some tips to improve efficiency.
API Testing Tools
Use tools to test API during development without writing code.
Recommended Tools:
-
Postman
- Most popular API testing tool
- Can save requests, environment variables
- Supports team collaboration
-
Insomnia
- Clean interface
- Open source and free
- Supports GraphQL
-
curl
- Command line tool
- Available on all systems
- Good for quick testing
Performance Optimization
Make API calls run faster.
Recommendations:
-
Use Selector to filter
- Don't get all data then filter in code
- Specify conditions in API
-
Only get needed fields
- Reduce data transfer size
-
Batch processing
- Send multiple records at once
- Reduce API call count
-
Caching mechanism
- Cache infrequently changing data
- Reduce repeated calls
Monitoring and Logging
Track API usage status.
Recommended Practices:
- Log each API call's time and result
- Monitor error rate
- Set up anomaly alerts
- Regularly review usage volume
FAQ
Is AppSheet API free?
No. Requires Core plan or above to use API.
For detailed pricing, see AppSheet Pricing Guide.
Are there request limits for API?
Yes. Core plan is 10 per minute, Enterprise is higher.
Exceeding limit returns 429 error—need to wait and retry.
Can I call AppSheet API directly from frontend?
Technically yes, but strongly not recommended.
API Key would be exposed in frontend code—anyone can see and abuse it.
Should call API from backend server.
Does AppSheet API support GraphQL?
No. AppSheet only provides REST API.
If you need GraphQL, you'd need to build a middleware layer to convert.
How to get data from multiple Tables?
Need to call each Table's API separately.
AppSheet API doesn't support JOIN or querying multiple Tables at once.
What's the difference between Webhook and API?
API (Active Call):
- You actively request data from AppSheet
- Good for: Getting data when needed
Webhook (Passive Receive):
- AppSheet notifies you when events happen
- Good for: Real-time reactions, event-driven
If you want to integrate Webhook with LINE, see AppSheet LINE Integration Tutorial.
Next Steps
After API integration setup is complete, your AppSheet can work with external systems.
Continue Learning
- AppSheet Complete Guide: Learn all features
- AppSheet Automation Tutorial: Set up automation to trigger Webhooks
- AppSheet LINE Integration: Use API to send LINE notifications
- AppSheet Pricing Guide: Confirm your plan supports API
Implementation Recommendations
- Test with Postman first: Confirm API works before writing code
- Implement error handling: Handle network instability, rate limiting
- Mind security: Don't put API Key in frontend, rotate regularly
- Monitor usage: Avoid exceeding limits and getting blocked
For more integration application examples, see AppSheet Examples Gallery.
Need Professional System Integration?
API integration involves professional considerations like security, performance, and error handling.
Common integration needs:
- E-commerce platform order sync
- ERP system data integration
- Automated workflow design
- Multi-system data synchronization
Schedule architecture consultation and let us help plan complete integration architecture.
References
- AppSheet Documentation - REST API Reference
- AppSheet API v2 Guide
- Google Cloud - AppSheet Integration Best Practices
Need Professional Cloud Advice?
Whether you're evaluating cloud platforms, optimizing existing architecture, or looking for cost-saving solutions, we can help
Book Free ConsultationRelated Articles
AppSheet LINE Integration Tutorial: Build a LINE Notification Bot [2025]
Complete AppSheet and LINE integration tutorial: Use LINE Notify to send notifications, 4-step Webhook setup, build order notifications, approval reminders, and alert bots.
AppSheetAppSheet Automation Complete Tutorial | 4 Practical Examples [2025]
AppSheet Automation complete tutorial: Event triggers, Process flows, Task configuration, with 4 practical examples to help you build automated workflows.
AppSheetAppSheet Interface Settings and Usage Tips | Complete Localization Tutorial [2025]
AppSheet localization complete tutorial, from interface language settings to App content localization, solving common issues like display problems and inaccurate search.