Getting started with the ScalePad API
Authentication
Authenticate ScalePad API calls using the header x-api-key
.
Example API request
Request
GET https://api.scalepad.com/core/v1/clients HTTP/1.1
accept: application/json
x-api-key: <API_KEY>
API_KEY
is the API key that was generated in the ScalePad application.
The API key has the format c4d67eca-3b32ed26-b2412e47-2f634617-7e91a0f4-5c8d2b67-e3a19f0b-46d7c582
Creating a personal API key
User considerations
A ScalePad user must be active and have the ScalePad account Administrator permission in order to view the API tab and to use their API keys.
Please note that a user's API keys will cease to function if the user is no longer active or has the Administrator permission.
API key generation
After signing into your ScalePad account, navigate to your personal API keys

Select New API key to create a new API key for your member, and choose a name and expiration date for the API key. By default, the expiration date of your API key will be 2 years.

After selecting Generate, you will be given an opportunity to copy your secret API key. This is the API key you will use in your API calls to the ScalePad API

You can manage your personal API keys and delete them if you wish.

Rate limiting
The default rate limit for all ScalePad API endpoints is 50 requests per 5 seconds.
If you exceed the rate limit, the API will return a 429 error response:
HTTP/1.1 429 Too Many Requests
Retry-After: 23
Too Many Requests
The header Retry-After
indicates how long the user agent should wait in seconds before making a follow-up request.
HTTP response codes
ScalePad API uses standard HTTP response codes.
Code | Meaning |
---|---|
200 | Success -- Your request was successfully processed; the result is included in the response body. For GET/POST requests. |
204 | No Content -- You request was successfully processed; call a GET to retrieve the updated results. For PATCH/DELETE requests. |
400 | Bad Request -- Your request is invalid. |
401 | Unauthorized -- Your API credentials are invalid. |
403 | Forbidden -- You do not have permission to access the requested resource. |
404 | Not Found -- The specified resource could not be found. |
422 | Unprocessable Entity -- The request format is incorrect. See error content for details. |
429 | Too Many Requests -- You've reached your rate limit. Try again later. |
500 | Internal Server Error -- We had a problem with our server. Try again later or contact support. |
Pagination
ScalePad API endpoints that use pagination use either cursor or offset based pagination. One endpoint will support at most one method, and will specify which method it supports in its own documentation. The maximum page size in either case is 200 records.
Cursor based pagination
Request
{
"page_size": 100,
"cursor": "WyI1Y2IyNGI2ZS0wNz"
}
Where:
page_size
refers to how many records to return in a pagecursor
refers to the pointer used to fetch a certain page of records
Response
{
"data": [],
"total_count": 1,
"next_cursor": "kLTRkMDItODI0NC01ZDI4"
}
Where:
data
refers to the data returned by the query, as an arraytotal_count
refers to the total count of all recordsnext_cursor
refers to the pointer used to fetch the next page of records, if more records are available
Example
https://api.scalepad.com/core/v1/clients?page_size=200&cursor=WyIwMDVlNTg0OTk
Offset based pagination
Request
{
"page_size": 100,
"page": 2
}
Where:
page_size
refers to how many records to return in a pagepage
refers to which page of records to fetch.page
starts at 1.
Response
{
"data": [],
"total_count": 1,
"has_more": false
}
Where:
data
refers to the data returned by the query, as an arraytotal_count
refers to the total count of all recordshas_more
refers to whether or not more records are available
Example
https://api.scalepad.com/quoter/v1/items?limit=100&page=2
Filtering
ScalePad API endpoints may offer filtering based on the values of fields. The fields that are filterable will be documented in the endpoint documentation.
Filter keyword filtering
Filtering is done using the filter keyword, indexed by the field name you wish to filter by. This is then followed by the filter clause, which may contain the operator(s) and value(s) you wish to filter.
Operators
These are all the operators we support. Some endpoints will only support a subset of these:
Operator | Data type(s) | Function | Example usage |
---|---|---|---|
eq | string, numeric, boolean | Filters for an exact, case sensitive match | filter[type]=eq: WORKSTATION |
in | string | Filters for fields that contain one of the values provided in a comma separated array | filter[type]=in: SERVER,WORKSTATION |
lt | numeric, date | Filters for fields containing a value less than the value provided | filter[num_hardware_assets]=lt: 400 |
lte | numeric, date | Filters for fields containing a value less than or equal to the value provided | filter[num_hardware_assets]=lte: 400 |
gt | numeric, date | Filters for fields containing a value greater than the value provided | filter[num_hardware_assets]=gt: 400 |
gte | numeric, date | Filters for fields containing a value greater than or equal to the value provided | filter[num_hardware_assets]=gte: 400 |
If the operator is omitted, it will be evaluated as an eq
.
For example:
filter[type]=eq: WORKSTATION
and filter[type]=WORKSTATION
are equivalent.
Filter combinations
We support combinations of filters across all the filter parameters. These are evaluated in any order as an AND.
For example:
filter[type]=eq: WORKSTATION&filter[client_id]=eq: 2220324
Date formats
Date fields should match the format of the field that’s being filtered. Date time fields can often be filtered as a date as well.
filter[record_updated_at]=lte: "2020-03-04T00:00:00.000"
filter[record_updated_at]=gt: "2022-05-07"
Special tokens
Please note that any strings containing special tokens should be wrapped in double quotes to ensure your query is evaluated correctly. These include:
,
:
OR
AND
For example:
filter[name]=eq:"Space Sprockets, Inc."
Nested filters
We support filters that utilize nested properties within objects. For example, filtering by an attribute within another attribute. These are indexed using .
. You may generate queries such as:
filter[configuration.ram_bytes]=lte:8000000000
filter[software.antivirus_info.status]=eq: RUNNING
Sorting
ScalePad API endpoints offer sorting based on ascending or descending properties of certain fields. The fields that are sortable will be documented in the endpoint documentation.
The parameter to sort is sort
or sort_by
depending on the endpoint.
Operators
These are the operators we support:
Operator | Data type(s) | Function | Example usage |
---|---|---|---|
+ | any | Sorts in ascending order | sort=+num_hardware_assets |
- | any | Sorts in descending order | sort=-num_hardware_assets |
If no operator is specified, ascending order is used by default.
Combinations
Multiple fields can be sorted by delimiting the fields using a comma.
For example:
sort=num_hardware_assets,-num_contacts
Errors
ScalePad API endpoints return a standardized error structure (except 429 Too Many Requests
) that adheres to the following format:
{
"errors": [
{
"code": "UNAUTHORIZED",
"title": "No API credentials",
"detail": "No API credentials were provided. Please check your API credentials are sent in the header 'x-api-key' or review the API documentation."
}
]
}
Within this structure:
errors
is an array of error objectscode
is a string indicating what type of error it istitle
is a short description of what the error isdescription
is a more detailed description of what the error is and possible steps to resolve it
Endpoint documentation
You can find the full documentation for all the available ScalePad API endpoints available under the API Reference tab.
Updated 5 days ago