Quickstart

Authentication

The BrightMove API uses OAuth 2.0’s client_credentials grant. Create a client under User > API Keys in the app (or have an admin create one for you under the company admin panel) to get a client_id/client_secret pair, then exchange it for a short-lived access token and send that token as a Bearer credential on every request. All requests require authentication and will return 401 Unauthorized otherwise.

1. Get an access token

curl --request POST \
--url https://app.brightmove.com/ATS/oauth2/token \
--user 'YOUR_CLIENT_ID:YOUR_CLIENT_SECRET' \
--data grant_type=client_credentials

This returns a JSON response with a short-lived access_token (one hour by default):

{
"access_token": "eyJhbGciOiJSUzI1NiIs...",
"token_type": "Bearer",
"expires_in": 3599
}

2. Call the API with the access token

curl --request GET \
--url https://app.brightmove.com/ATS/app/req/{guid} \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'

There is no refresh token for this grant type — the client_id/client_secret pair is itself the long-lived credential. When your access token expires, just request a new one the same way; there’s no session or refresh flow to manage.

Parameters

Many API methods take optional parameters. For GET requests, all parameters should be specified as a segment of the endpoint URL:

curl --request GET \
--url https://app.brightmove.com/ATS/app/req/{guid}

In this case, the guid for the Requirement to be retrieved is passed as a segment of the URL.

For POST and DELETE requests, parameters not included in the URL should be encoded as JSON with an Accept and Content-Type of ‘application/json’:

curl --request POST \
--url https://app.brightmove.com/ATS/app/req/find \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{"queryString":"is_submittable: true"}'

Pagination

An API method that performs query operations will typically be paginated to 50 items by default. You can specify further pages with the pageNumber parameter and adjust the page size with the pageSize parameter. These should be specified in the JSON encoded parameter:

curl --request POST \
--url https://app.brightmove.com/ATS/app/req/find \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{"queryString":"is_submittable: true", "pageNumber":1, "pageSize":"PAGE_SIZE_100"}'

General Considerations

  • All API access is over HTTPS, and accessed from https://app.brightmove.com.
  • All data is sent and received as JSON (unless otherwise noted).
  • All timestamps return in Unix time format with millisecond precision: 1597953763000