Smartsheet uses a REST API. Here are the key points about Smartsheet's API:
Smartsheet has a RESTful API. The API is designed to be simple and intuitive, based on widely accepted standards and conventions including REST, JSON, and HTTP.
https://api.smartsheet.com/2.0/
The Smartsheet API allows developers to:
Smartsheet provides official SDKs for several programming languages to make working with the API easier:
Some best practices for using the Smartsheet API include:
Yes, the official Smartsheet API does support webhooks. Here are the key points about Smartsheet webhooks:
Smartsheet offers webhook functionality as part of their API.
Webhooks allow you to subscribe to event notifications (callbacks) for specific Smartsheet objects.
You can subscribe to the following types of events:
Currently, "." is the only supported value for the events attribute. This indicates a subscription to all objects in the scope, and all events for those objects.
Some examples of events that can trigger webhooks include:
To set up a webhook, you need to specify:
Webhooks are created and managed through the Smartsheet API.
The webhook callback payload is a "skinny" payload - it indicates which objects changed and the event types, but does not contain the actual changed data.
Your application will need to make additional API calls to retrieve the full details of what changed.
In summary, Smartsheet webhooks provide a way to get notified about changes to sheets and other objects, allowing you to build integrations that can react to events in near real-time. The current implementation is fairly broad in terms of event types, but gives you flexibility to subscribe to all changes on a given sheet.
Here are the key points about the API rate limits for the Smartsheet API:
The current rate limit is 300 requests per minute per access token.
Certain resource-intensive operations, such as attaching a file or getting cell history, count as 10 requests toward the rate limit.
If you exceed the rate limit, subsequent API requests within a one-minute period will return a 429 HTTP status code, along with a JSON response body containing an error message.
The error response looks like this:
{ "errorCode": 4003, "message": "Rate limit exceeded." }
It's recommended to design your integration to handle this rate limit error gracefully. Some approaches include:
Avoid executing API requests in rapid-fire succession to update the same Smartsheet object repeatedly within a short period.
For maximum efficiency, consider batching changes and submitting them in a single request using "bulk"-enabled operations (e.g., Update Rows or Add Columns).
Execute requests serially (one at a time) when updating a specific Smartsheet object to avoid errors due to save collisions.
The SDKs provided by Smartsheet implement default backoff and retry mechanisms to handle rate limiting responses.
There are additional limitations on various operations, such as a maximum of 500 rows per add/update request, a 500,000 cell limit per sheet, and a 4,000 character limit per cell.
To handle rate limiting in your Python code, you may need to catch the exception thrown by the SDK when a rate limit is exceeded, rather than checking the status code directly. Consider implementing a retry mechanism with exponential backoff to handle these cases automatically.
The most recent version of the Smartsheet API is 2.0.
Key points to consider:
The current API version is 2.0, which should appear in every API path you use [4].
There is no planned sunset date for API version 2.0 at this time [4].
Smartsheet does not have a planned release date for a new API version (e.g., 3.0) in the foreseeable future [4].
For increased functionality to specific endpoints, Smartsheet uses a query parameter "level=" followed by an integer (e.g., 1 or 2). However, using "level=0" or omitting the level parameter provides base functionality [4].
The API documentation was last updated on July 12, 2024 [1].
Best practices:
Always use the most recent API version (2.0) in your implementations.
Keep an eye on the Smartsheet API documentation for any updates or changes.
When using specific endpoints, consider using the appropriate "level" parameter for additional functionality if needed.
Be aware that while the core API version remains stable, individual endpoints may have different levels of functionality available.
Check the API documentation regularly for any deprecation notices or new features.
To get a developer account for Smartsheet and create an API integration, you can follow these steps:
Here's a list of the main data models you can interact with using the Smartsheet API, along with what's possible for each:
This covers the main data models and operations available through the Smartsheet API. The API provides extensive capabilities for programmatically managing Smartsheet data and resources.