Welcome to the OpenAPI reference documentation for Resource Management by Smartsheet!
Welcome to the OpenAPI reference documentation for Resource Management by Smartsheet!
Resource Management by Smartsheet API Tokens are used to authenticate requests to Resource Management by Smartsheet APIs.
Note: Organizations can manage up to 20 API tokens. Contact us via our Support Page if API Token Management is not enabled for your organization. The first generated token for an organization has a set “primary” title.
In Resource Management by Smartsheet, certain record types are considered “approvable.” Currently, these record types are time entries and expense items. Approvals are created when time entries or expense items are “submitted for approval.”
An assignable in Resource Management by Smartsheet is an object to which an assignment can be made. For example, you can assign a person or placeholder to this object. The following assignable types are accessible from the assignables endpoints:
Note: Although Phases are projects and are assignable, they are inaccessible from the assignables endpoints. Instead, you must access Phases the Projects endpoints or Phases endpoints.
It is useful to understand the Assignables API entity because the Assignments endpoints return an assignable_id
to indicate the object to which the assignment is made. Without knowing the object's type
, however, it is unclear which endpoint to use to get more details about the object. The assignables endpoints allow you to query directly using the assignable_id
from an assignment.
The endpoints supports two actions: index and show.
Note: You can't create a generic assignable or delete one; use the Projects/LeaveTypes endpoints for those actions.
The format of the data objects returned by these endpoints depends on each object's type
. If a project, the return value looks exactly like what is returned by the Projects endpoint, and if a LeaveType, the return value looks exactly like what is returned by the Leave types endpoints. In both cases, the return value has a type
property, which will be either Project
or LeaveType
, respectively (phases also have the type Project
).
curl -i -X GET \
'https://api.rm.smartsheet.com/api/v1/assignments?from=2019-08-24&page=2&per_page=100&to=2019-08-24&with_phases=false' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'auth: YOUR_API_KEY_HERE'
The accessible assignments.
The maximum number of items to show per response page.
If you're on the first page, this value is null
; otherwise the value is the path and query parameters to get the previous page of items.
The path and query parameters to get the current page of items.
If there are more items, this value is the path and query parameters to get the next page of items; otherwise, it's null
.
An assignment set to a percentage of the resource's time.
This indicates that a percentage of the resource's time is allocated to the corresponding assignment.
The percentage of time the resource is allocated to the corresponding assignment.
Note: This property is only present when allocation_mode
is "percent"
.
The ID of the project, phase, or leave type to which the the assignment applies.
A unique identifier for a series of repeating assignments. If the assignment is part of a repeating series, this is the parent assignment's unique ID. Otherwise, it's null.
Note: This ID is the same for all assignments within the same repeating series.
The time of the last update.
The ID of the status option associated with the assignment.
{ "paging": { "per_page": 100, "page": 1, "previous": "/api/v1/users?per_page=1000&page=1", "self": "/api/v1/users?per_page=1000&page=2", "next": "/api/v1/users?per_page=1000&page=3", "count": 0 }, "data": [ { … } ] }
Creates an assignment.
Typical parameters:
user_id
assignable_id
starts_at
ends_at
allocation_mode
(percent
, hours_per_day
, fixed
) and a value for the respective mode-named property (that is, a property named percent
, hours_per_day
, or fixed_hours
)Note: You can create subtasks within the assignment by including them in a
subtasks
array property, like the one in the request body object below.For subtask-specific operations, see Subtasks.
{ "user_id": null, "assignable_id": 123, "ends_at": "2018-06-27", "starts_at": "2018-06-21", "status_option_id": 1, "description": "Build wireframes", "note": null, "subtasks": [ { "description": "New Task", "completed": false } ] }
The property values to apply to a new assignment.
An assignment set to a percentage of the resource's time.
This indicates that a percentage of the resource's time is allocated to the corresponding assignment.
The percentage of time the resource is allocated to the corresponding assignment.
Note: This property is only present when allocation_mode
is "percent"
.
The ID of the project, phase, or leave type to which the the assignment applies.
A unique identifier for a series of repeating assignments. If the assignment is part of a repeating series, this is the parent assignment's unique ID. Otherwise, it's null.
Note: This ID is the same for all assignments within the same repeating series.
The ID of the status option associated with the assignment.
curl -i -X POST \
https://api.rm.smartsheet.com/api/v1/assignments \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'auth: YOUR_API_KEY_HERE' \
-d '{
"allocation_mode": "percent",
"percent": 0.2,
"starts_at": "2025-09-17",
"ends_at": "2025-12-17",
"user_id": 5612,
"assignable_id": 1234
}'
The new assignment.
An assignment set to a percentage of the resource's time.
This indicates that a percentage of the resource's time is allocated to the corresponding assignment.
The percentage of time the resource is allocated to the corresponding assignment.
Note: This property is only present when allocation_mode
is "percent"
.
The ID of the project, phase, or leave type to which the the assignment applies.
A unique identifier for a series of repeating assignments. If the assignment is part of a repeating series, this is the parent assignment's unique ID. Otherwise, it's null.
Note: This ID is the same for all assignments within the same repeating series.
The ID of the status option associated with the assignment.
{ "allocation_mode": "percent", "percent": 0.2, "id": 889, "user_id": 5612, "assignable_id": 1234, "starts_at": "2025-09-17", "ends_at": "2025-12-17", "repetition_id": 886, "created_at": "2025-08-27T12:00:00Z", "updated_at": "2025-08-27T12:00:00Z", "all_day_assignment": true, "resource_request_id": null, "bill_rate": 100, "bill_rate_id": 58776516, "status": null, "status_option_id": 1234567890, "description": "", "note": null, "subtasks": { "paging": { … }, "data": [ … ] } }
curl -i -X GET \
https://api.rm.smartsheet.com/api/v1/assignments/889 \
-H 'Content-Type: application/json' \
-H 'auth: YOUR_API_KEY_HERE'
Successful response
An assignment set to a percentage of the resource's time.
This indicates that a percentage of the resource's time is allocated to the corresponding assignment.
The percentage of time the resource is allocated to the corresponding assignment.
Note: This property is only present when allocation_mode
is "percent"
.
The ID of the project, phase, or leave type to which the the assignment applies.
A unique identifier for a series of repeating assignments. If the assignment is part of a repeating series, this is the parent assignment's unique ID. Otherwise, it's null.
Note: This ID is the same for all assignments within the same repeating series.
The ID of the status option associated with the assignment.
{ "allocation_mode": "percent", "percent": 0.2, "id": 889, "user_id": 5612, "assignable_id": 1234, "starts_at": "2025-09-17", "ends_at": "2025-12-17", "repetition_id": 886, "created_at": "2025-08-27T12:00:00Z", "updated_at": "2025-08-27T12:00:00Z", "all_day_assignment": true, "resource_request_id": null, "bill_rate": 100, "bill_rate_id": 58776516, "status": null, "status_option_id": 1234567890, "description": "", "note": null }
The property values to apply to the assignment.
An assignment set to a percentage of the resource's time.
This indicates that a percentage of the resource's time is allocated to the corresponding assignment.
The percentage of time the resource is allocated to the corresponding assignment.
Note: This property is only present when allocation_mode
is "percent"
.
The ID of the project, phase, or leave type to which the the assignment applies.
A unique identifier for a series of repeating assignments. If the assignment is part of a repeating series, this is the parent assignment's unique ID. Otherwise, it's null.
Note: This ID is the same for all assignments within the same repeating series.
The ID of the status option associated with the assignment.
curl -i -X PUT \
https://api.rm.smartsheet.com/api/v1/assignments/889 \
-H 'Content-Type: application/json' \
-H 'auth: YOUR_API_KEY_HERE' \
-d '{
"allocation_mode": "percent",
"percent": 0.2,
"starts_at": "2025-09-17",
"ends_at": "2025-12-17"
}'
The updated assignment.
An assignment set to a percentage of the resource's time.
This indicates that a percentage of the resource's time is allocated to the corresponding assignment.
The percentage of time the resource is allocated to the corresponding assignment.
Note: This property is only present when allocation_mode
is "percent"
.
The ID of the project, phase, or leave type to which the the assignment applies.
A unique identifier for a series of repeating assignments. If the assignment is part of a repeating series, this is the parent assignment's unique ID. Otherwise, it's null.
Note: This ID is the same for all assignments within the same repeating series.
The ID of the status option associated with the assignment.
{ "allocation_mode": "percent", "percent": 0.2, "id": 889, "user_id": 5612, "assignable_id": 1234, "starts_at": "2025-09-17", "ends_at": "2025-12-17", "repetition_id": 886, "created_at": "2025-08-27T12:00:00Z", "updated_at": "2025-08-27T12:00:00Z", "all_day_assignment": true, "resource_request_id": null, "bill_rate": 100, "bill_rate_id": 58776516, "status": null, "status_option_id": 1234567890, "description": "", "note": null }
In Resource Management by Smartsheet, we have the concept of a work week. It defines the days of the week that are to be considered work days and the number of work hours for those days. Given this work week, you can determine the number of work hours per day in any given date range. The work week is configurable by an account administrator via the account settings pages.
User availabilities are a mechanism by which you can further customize the work days for individuals in your team. When an individual has a work schedule that deviates from the normal work week observed by your team, say, because they're working part-time during some time period, an administrator can specify that by adding one or more availability time blocks to that user’s profile.
When a user specifies one or more availability time blocks, Resource Management by Smartsheet always considers those in addition to the company's normal work week information.
Bill rates are maintained at both the account level (defaults) and project level. When a new project is created, the account-level bill rates are used as a template for setting up initial bill rates for the project. Adding a user to the project (for example, by making an assignment) causes additional user-specific rates to be created in the project. These user-specific bill rates are determined by looking up the existing role-specific and discipline-specific rates and matching them up with the user's role and discipline to find the best match.
A phase may have its own bill rate or refer to the parent project. You can add and edit phase-specific bill rates through the user interface of the application. When setting up a phase to have its own bill rate, the parent project bill rates are used as a template, much like the way account default bill rates are used as a template when setting up project bill rates. If a phase is set up to have its own bill rate, adding users to the phase results in user-specific rates being created for the phase, just like it does for projects.
The API allows you to manipulate bill rates directly for projects and phases. However, changing account default bill rates is restricted to Administrators.
Budget item categories are lookup value sets for project-specific budgets.
Each category belongs to to one of the following budget types:
You can use these categories to classify time entry or expense entry budget line items.
Use custom fields to add properties that provide helpful insights for scheduling, planning, and reporting.
You can use custom fields for people or projects.
People: Add properties, including skills, certifications, managers, and organization structure.
Projects: Add business-specific criteria to specify properties such as Portfolio Editor, project priority, the likelihood of closing, business unit, project IDs, and location.
You can add multiple custom fields to projects and people and use them as filters on the schedule page, project portfolio page, or reports.
These operations support creating, reading, updating, and deleting custom field values with respect to projects.
Note: In addition to getting custom field values directly, you can also include custom field values as a nested collection when getting projects by specifying
custom_field_values
in thefields
parameter.For example,
GET /api/v1/projects/<project_id>?fields=custom_field_values
These operations support creating, reading, updating, and deleting custom field values with respect to users.
Note: In addition to getting custom field values directly, you can also include custom field values as a nested collection when getting projects by specifying
custom_field_values
in thefields
parameter.For example,
GET /api/v1/users/<user_id>?fields=custom_field_values
Expense items are reported by a user on a project or leave type.
Note: When creating expense items, at least date and amount need to be specified. Project/Leave Type can be specified by one of
project_id
,leave_type_id
, or anassignable_id
. These three parameters refer to the same and are interchangeable. You should only specify one project/leave type parameter per expense item call.
LeaveType is a subclass of Assignables. You can see the id
referring to a project as assignable_id
in other models. LeaveType is an assignable that you can assign time to, not being part of a project, such as Vacation.
Find operations for managing and retrieving different types of leave.
Phases are a flexible way to break a project into different work stages.
The Phase class is a subclass of Project, which is a subclass of Assignable.
Note: Every phase has a parent project; therefore, the
parent_id
for a phase is nevernull
. A project'sparent_id
is alwaysnull
.
Placeholder resources serve temporary roles on projects where the final resources remain unknown. Placeholders behave similarly to users, with a few differences discussed below.
Bill rates
If you assign a role or discipline to a placeholder, they inherit the account's default bill rates for that role or discipline. You can also create specific bill rates for placeholders using the bill rates API. Specify a placeholder_resource_id
as the user_id
parameter; no additional parameters are required.
Custom fields
You can create custom fields for placeholders through the application UI.
Time entries
Time tracking for placeholders is not available, meaning it's not possible to create or edit time entries for a placeholder. However, system-generated suggested entries are available for placeholders. When a placeholder is assigned to a project, the system generates scheduled hours based on the type of assignment and updates budget projections, allowing placeholders to be used for forecasting or projection.
Nevertheless, placeholders don't record time, and you can't make explicit time entry modifications for them. You can view system-generated time entries for placeholders through the time entries API by passing the placeholder_resource_ID
as the user_id
parameter, similar to assignments.
Note: Expense items aren't available for placeholders. Tags for placeholders are also not supported. Use custom fields instead.
Projects are the foundation for managing and planning your team's workload.
In the API, each project is a Project object, which is a subclass of Assignable. Sub-projects share the same data model and are called phases.
Note: Every phase has a parent project; therefore, the
parent_id
for a phase is nevernull
. A project'sparent_id
is alwaysnull
.
Note: Other models, such as users, assigned to a project reference that project's
id
value in via theirassignable_id
property.
Note: You can use the
timeentry_lockout
parameter to control whether a project accepts new time entries. For details, see thetimeentry_lockout
parameter in Create project or Update project.
The reports API allows you to generate custom reports (rows or totals) by defining parameters in the JSON request body.
Incurred time calculation The calc_incurred_using
parameter affects how past scheduled time is calculated. When set to confirmed
, the report is calculated as if all suggestions were cleared from timesheets. If confirmed-unconfirmed
is used (default), filtering out unconfirmed time manually is necessary for accurate incurred calculations.
Note: To include or exclude null values in your filter, specify the string
[none]
as an element in your filter’svalues
array.
Subtasks belong to assignments. They correspond to the checklist of items called a task list, located under work items/assignments in the worklist in the Resource Management application. Subtasks (tasks) can be added to any work item/assignment.
Note: For assignment subtask counts, see the List project assignments operation.
Time entries are a collection of hours tracked per project and user. There are two types of time entries: suggested and confirmed.
Suggested (unconfirmed) time entries
Suggested time entries (also known as unconfirmed time entries) are created by Resource Management by Smartsheet as a result of resources being assigned to a project. These are identifiable by the is_suggestion: true
attribute on the time entry objects. Suggested time entries are read-only and are kept up to date by Resource Management by Smartsheet as the corresponding assignments are updated. They are not returned by the API by default and must be requested using the with_suggestions=true
parameter on the GET API call to fetch time entries.
Confirmed time entries
Confirmed time entries are what a user (or the API) has explicitly created to indicate that they have spent some time working on a project. Note that just like in the application UI, you cannot create new confirmed time entries for managed resources via the API. You can read suggested time entries for all users via the API.
Bill rates
Time entries have an associated bill rate attached to them. When a new time entry is created, Resource Management by Smartsheet will determine the appropriate bill rate for it (based on your account and project settings) and assign a values. When reading time entries, you can see this assigned bill rate.
The User status endpoints provide a comprehensive way to manage and track the current status of team members. This set of endpoints allows you to retrieve a paginated list of all statuses for a specific user, as well as create and update their current status. This helps administrators and team members maintain visibility into who is working, on vacation, or out of the office.
Valid statuses are:
The Users per project endpoint allows you to retrieve and manage the users who are associated with a specific project. This functionality is essential for project management, as it provides visibility into team composition and allows you to view detailed information about each user's status and assignments within a given project. The API supports a comprehensive set of optional query parameters that enable you to filter and sort the user list to meet your specific needs.
Webhooks allow you to register, via the API, a webhook that you can use to receive notifications about key events in your account.
Note: For more information on configuring and using webhooks, including details on webhook payloads and update triggers, refer to our detailed Webhooks guide.