.png)
Bullhorn Integration Guide
Connect Bullhorn recruiting and staffing data with enterprise applications through its REST API, selected webhook notifications, batch operations, and file APIs.
Bullhorn integration options at a glance
Bullhorn’s primary integration surface is its REST API, which supports entity retrieval and updates, searches, associations, metadata, field selection, and related operations for Candidates, JobOrders, ClientContacts, Corporations, Placements, and JobSubmissions. Bullhorn also provides webhook-style notifications for selected events, batch-oriented operations for supported entities, and file and note APIs for supported records. OAuth 2.0 secures API access using access and refresh tokens together with corporation-specific context. Martini can consume these APIs, receive selected webhook notifications, schedule incremental synchronization workflows, map and transform data, route files, and expose normalized APIs for downstream applications.
Common Bullhorn integration patterns
Common Bullhorn data objects used in integrations
Authentication and security considerations
OAuth 2.0 and corporation context
Bullhorn REST API access generally uses OAuth 2.0 with a client ID, client secret, authorization code exchange, access token, refresh token, and corporation-specific REST context. The permissions of the Bullhorn user or API account govern the available entities and operations.
Protect credentials and personal information
- Store client secrets, access tokens, refresh tokens, and corporation-specific values in protected Martini environment configuration.
- Use least-privilege Bullhorn users or API accounts and confirm permissions for every required object and operation.
- Protect candidate information, resumes, placement documents, and other personal data in transit, at rest, and in workflow logs.
- Apply retention, access-control, audit, redaction, and regional data-processing requirements appropriate to the integration.
Operational considerations for Bullhorn integrations
Request volume and pagination
Use field selection, server-side searches, pagination, bounded windows, and incremental checkpoints. Confirm Bullhorn rate limits and add backoff for throttling and transient HTTP failures.
Consistency and idempotency
Use stable Bullhorn object IDs and event identifiers where available. Overlap synchronization windows to capture updates during a run, and make downstream create-or-update behavior explicit so retries do not create duplicates.
Webhooks and reconciliation
Treat webhook notifications as selected-event coverage rather than a complete event stream. Acknowledge promptly, process longer work asynchronously, and retain scheduled reconciliation for missed, delayed, or unsupported events.
Schema, associations, and testing
Bullhorn tenants can differ in custom fields, statuses, required values, and associations. Version mappings, inspect metadata where appropriate, test representative objects and files, and monitor changes that affect contracts.
Files and failures
Handle attachment permissions, content types, duplicate detection, and retention separately from ordinary object synchronization. Classify authentication, permission, validation, missing-object, rate-limit, network, partial-batch, and expired-webhook failures for targeted retry or review.
Why use Martini instead of scripts or point-to-point integrations?
Coordinate more than API calls
Scripts can call Bullhorn, but enterprise integrations also require authentication lifecycle management, pagination, association retrieval, mapping, business rules, idempotency, retries, file handling, and operational visibility. Martini provides a workflow-oriented place to coordinate these concerns.
Keep contracts maintainable
Martini can map Bullhorn’s tenant-specific model into canonical and target contracts, expose normalized APIs, and reuse authentication, transformation, validation, and error-handling assets across workflows.
Support multiple execution models
The same integration design can combine Bullhorn webhook notifications for selected events with scheduled incremental synchronization for reconciliation and unsupported changes. This reduces dependence on either a single event mechanism or a collection of isolated scripts.
Improve operational control
Centralized workflows provide explicit checkpoints, correlation identifiers, retry behavior, monitoring, and deployment configuration. Teams can evolve mappings and target integrations without embedding all logic in point-to-point code.