ToolHound API Call
ToolHound provides a comprehensive RESTful API for programmatic access to your tool management system. You can find the complete API documentation by appending /api-docs to your ToolHound URL. For example:
- On-Premise: https://www.myserver.com/api-docs
- Cloud: https://www.mytoolhound.com/api-docs
The base URL for making API calls is:
- On-Premise: https://www.myserver.com/api
- Cloud: https://www.mytoolhound.com/api
All API calls require authentication via a web token, which you can obtain by calling your application URL followed by /connect/token. This token is database-specific and must be included as a bearer token in all subsequent requests. Best practice is to obtain a new token for each session rather than storing it long-term - get a token, perform your required operations, then discard it.
Authentication: Getting a Token
To make any API calls, you must first obtain an authentication token using the following request:
POST /connect/token
Host: https://www.myserver.com
Content-Type: application/x-www-form-urlencoded
grant_type=password&username=admin&password=12345678&company=th1&timezoneoffset=420&timezone=America/New_York&source=X
Required parameters:
grant_type: must always be "password"
username: a valid ToolHound username
password: the password for the given username
company: company alias corresponding to the database name
timezoneoffset: integer value indicating minutes offset from GMT for the local time zone
timezone: IANA time zone identifier (e.g., America/New_York) Required for versions 6.2022.10.27 and higher
source: character value indicating the application accessing the system (displayed as the source on many records)
Example response:
{
"token_type": "Bearer",
"access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IlhORzBWTVBYWURDTjEzTlBUMVRJSzBPRktDUEpZVlJOMEJSRklYVDciLCJ0eXAiOiJKV1QifQ.eyJzdWIiOiI3MGI0Yzk3MC0xYmZhLTQ4YWEtYmI1Ni01OWU3ODRlNjU4ZmYiLCJjb21wYW55IjoidGgxIiwidGltZXpvbmVvZmZzZXQiOiI0MjAiLCJ1c2VyaWQiOiIxMDAwMDAiLCJsb2NhbGVpZCI6IkVOLVVTIiwibG9jYXRpb25pZCI6IjAiLCJlbnRpdHlpZCI6IjAiLCJzb3VyY2UiOiJYIiwidG9rZW5fdXNhZ2UiOiJhY2Nlc3NfdG9rZW4iLCJqdGkiOiI5MTQzOGYwOS0zYzAyLTRlZDQtOTVhZi02N2QwMGNlZWFjYTkiLCJhdWQiOiJodHRwczovL2xvY2FsaG9zdDo0NDM3MC8iLCJuYmYiOjE1ODMyNTEwODksImV4cCI6MTU4MzQyMzg4OSwiaWF0IjoxNTgzMjUxMDg5LCJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo0NDM3MC8ifQ.fFQ2tXiOvQNYRYurSLIVWxnF0yKw6MBk4znXlljBj_DmiwzHmaf_OrfTG_GqXe1_r2zL2HXBgmrNKq9x33YlBPjZV3wKLDJIWC4ks61MksoymGIDTJCUzBuK5CyKhoMJf-8CPb1fFzMpGhPU8uL2oSm8d_THJmb8FHmIkpCXlLMxL7op_zMJp_Ak2B-BKh6iKO9VqHj_f61OU3UsuR8neyLa4DNhgKrp6bnYK3kuW1OyboEwhnYNDi12jF_DVimsj_-e1kKnsVIDqzlCFL311cVYOy39YMbWoEutSqmW8fT2T1KrV4t4z1p9Z6PjRREeKoNw_wdZFFFRaz70qHvbAQ",
"expires_in": 172800
}
The access_token value must be included in the Authorization header of all subsequent API calls. The token expires after the time specified in expires_in (in seconds, currently set to 48 hours).
API Example: Employer Import
Below is an example of using the EmployerImport API to add a new Employer record or update an existing one:
POST /api/EmployerImport/ImportRow
Host: https://www.myserver.com
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IlhORzBWTVBYWURDTjEzTlBUMVRJSzBPRktDUEpZVlJOMEJSRklYVDciLCJ0eXAiOiJKV1QifQ.eyJzdWIiOiI3MGI0Yzk3MC0xYmZhLTQ4YWEtYmI1Ni01OWU3ODRlNjU4ZmYiLCJjb21wYW55IjoidGgxIiwidGltZXpvbmVvZmZzZXQiOiI0MjAiLCJ1c2VyaWQiOiIxMDAwMDAiLCJsb2NhbGVpZCI6IkVOLVVTIiwibG9jYXRpb25pZCI6IjAiLCJlbnRpdHlpZCI6IjAiLCJzb3VyY2UiOiJYIiwidG9rZW5fdXNhZ2UiOiJhY2Nlc3NfdG9rZW4iLCJqdGkiOiI5MTQzOGYwOS0zYzAyLTRlZDQtOTVhZi02N2QwMGNlZWFjYTkiLCJhdWQiOiJodHRwczovL2xvY2FsaG9zdDo0NDM3MC8iLCJuYmYiOjE1ODMyNTEwODksImV4cCI6MTU4MzQyMzg4OSwiaWF0IjoxNTgzMjUxMDg5LCJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo0NDM3MC8ifQ.fFQ2tXiOvQNYRYurSLIVWxnF0yKw6MBk4znXlljBj_DmiwzHmaf_OrfTG_GqXe1_r2zL2HXBgmrNKq9x33YlBPjZV3wKLDJIWC4ks61MksoymGIDTJCUzBuK5CyKhoMJf-8CPb1fFzMpGhPU8uL2oSm8d_THJmb8FHmIkpCXlLMxL7op_zMJp_Ak2B-BKh6iKO9VqHj_f61OU3UsuR8neyLa4DNhgKrp6bnYK3kuW1OyboEwhnYNDi12jF_DVimsj_-e1kKnsVIDqzlCFL311cVYOy39YMbWoEutSqmW8fT2T1KrV4t4z1p9Z6PjRREeKoNw_wdZFFFRaz70qHvbAQ
Content-Type: application/json
{
"EmployerID": "2282",
"OrganizationName": "Edmonton LRT",
"Visibility": "95462",
"Address": "",
"City": "Edmonton",
"CountryCode": "",
"StateProv": "Alberta",
"PostCode": "",
"Contact": "Bob Jones",
"ContactTitle": "EQ Mgr",
"Telephone": "",
"MobilePhone": "",
"HomePhone": "",
"Fax": "",
"Email": "toolhound@toolhound.com",
"Active": "Y",
"UserField1": "Yes",
"UserField2": "Prj CA LRT",
"UserField3": "Tool Hound"
}
Copyright © 2020-2025 ToolHound Inc. All Rights Reserved.