Simple REST client for the Bullhorn API, including automated OAuth2 login

v0.3.3 2018-11-19 19:16 UTC


Currently in beta status.

Provides a simple client for the Bullhorn REST API.


$ composer require jonathanraftery/bullhorn-rest-client


use jonathanraftery\Bullhorn\Rest\Client as BullhornClient;

$client = new BullhornClient(

Raw Requests

Simple requests as documented in the Bullhorn API documentation can be run as:

$response = $client->request(

PUT/POST Requests

The client uses GuzzleHTTP for requests, and the parameters to the request method match those to create a request object in Guzzle. The third parameter is the request options, as described in the Guzzle documentation.

To set the body of a PUT/POST request, set the "body" option of the request to the JSON content of the request body such as:

$response = $client->request(
        'body' => json_encode(['firstName' => 'Alanzo', 'lastName' => 'Smith', 'status' => 'Registered'])

Entity Requests

More complex requests can be used for specific entities. The following will retrieve all job orders matching isDeleted:false.

If there are more job orders than Bullhorn will return in one request, the client will automatically make multiple requests and return the concatenated array of all job orders.

$luceneConditions = 'isDeleted:false';
$fields = ['id','name','dateAdded']; // ['*'] = all fields, default is ['id']
$jobOrders = $client->JobOrders->search($luceneConditions, $fields);

Currently, only job order entities are supported. The Resources/JobOrders class can be used as a reference of how to create others.

Session Timeoutes

Session will automatically refresh if expiration detected, or can be refreshed manually (shown with optional parameters)

$client->refreshSession(['ttl' => 60]);