For Agents
Parse resumes and create Bullhorn ATS candidates with education, work history, skills, and file attachments via the bullhornstaffing.com REST host.
Get started with Bullhorn Resume Parsing API in minutes using your preferred integration method.
# Add to your MCP client config (Claude Desktop, Cursor, Windsurf)
{
"jentic": {
"url": "https://api.jentic.com/mcp",
"auth": "oauth"
}
}
# Then ask your agent:
"parse a resume into Bullhorn"
# → Jentic returns the GET /events tool with parameter schema, agent executes.What an agent can do with Bullhorn Resume Parsing API API.
Parse a resume document into a Bullhorn candidate via /resume/parseToCandidate
Create a candidate entity in the Bullhorn ATS
Retrieve a candidate by ID after creation
Attach education and work history records to a candidate
Read a single work history record by ID
GET STARTED
Use for: I need to parse a resume into a Bullhorn candidate, Create a Bullhorn candidate from a parsed CV, Retrieve the candidate I just created by ID, Add a previous role to a candidate's work history
Not supported: Does not handle job postings, interview scheduling, or payroll — use for resume parsing and candidate creation in Bullhorn only.
Jentic publishes the only available OpenAPI specification for Bullhorn Resume Parsing API, keeping it validated and agent-ready.
Jentic publishes the only available OpenAPI specification for Bullhorn Resume Parsing API, keeping it validated and agent-ready. The Bullhorn Resume Parsing API turns inbound resume documents into structured Bullhorn candidate records and lets recruiting tools enrich those candidates with education history, work history, primary skills, and original file attachments. The API runs against Bullhorn's per-corporation REST host and uses Bullhorn's standard OAuth 2.0 authorization-code flow. It is the same surface published under the bullhorn.github.io vendor entry, scoped to the candidate intake path.
Add primary skills to a candidate from the Bullhorn skill taxonomy
Attach the original resume file to a candidate and list candidate files
Patterns agents use Bullhorn Resume Parsing API API for, with concrete tasks.
★ Resume to candidate pipeline
Receive a resume by email or upload, parse it through /resume/parseToCandidate, and persist the resulting candidate in the Bullhorn ATS. The pipeline ends with the original document attached to the candidate so recruiters can review the source. Suitable for staffing agencies that handle steady inbound resume volume and want to skip manual data entry.
Parse a resume with POST /resume/parseToCandidate, create the candidate via PUT /entity/Candidate, then attach the file with PUT /file/Candidate/{candidateId}/raw.
Candidate profile enrichment
After creating a candidate from a parsed resume, attach the structured education and work history records and assign primary skills. The /entity/CandidateWorkHistory endpoint also supports retrieving a single record by ID, useful for verification before downstream steps such as outreach.
For candidate 12345, PUT /entity/CandidateEducation per school, PUT /entity/CandidateWorkHistory per role, then PUT /entity/Candidate/12345/primarySkills/{skillIds} with matched skill IDs.
Resume document retention
Keep the original resume binary attached to the Bullhorn candidate record for compliance and audit purposes. The file attachment endpoint stores the raw document, and the entityFiles endpoint confirms what is on the candidate. This is a common requirement in regulated staffing verticals where source documents must be retrievable.
Attach the source PDF to candidate 12345 via PUT /file/Candidate/12345/raw and verify with GET /entityFiles/Candidate/12345.
AI agent recruiting via Jentic
An AI assistant can take a resume from a recruiter's inbox, call the Bullhorn parse and create operations through Jentic, and reply with the new candidate ID — without holding raw OAuth credentials. Jentic isolates Bullhorn refresh tokens and corpToken values so the agent only sees structured operation responses.
Search Jentic for 'parse a resume into Bullhorn', load the parseToCandidate schema, execute with the resume bytes, and report the new candidate ID.
10 endpoints — jentic publishes the only available openapi specification for bullhorn resume parsing api, keeping it validated and agent-ready.
METHOD
PATH
DESCRIPTION
/resume/parseToCandidate
Parse a resume into candidate data
/entity/Candidate
Create a candidate entity
/entity/Candidate/{candidateId}
Retrieve a candidate
/entity/CandidateWorkHistory
Create a work history record
/entity/CandidateWorkHistory/{workHistoryId}
Retrieve a work history record
/entity/Candidate/{candidateId}/primarySkills/{skillIds}
Add primary skills to a candidate
/file/Candidate/{candidateId}/raw
Attach a resume file to a candidate
/entityFiles/Candidate/{candidateId}
List files on a candidate
/resume/parseToCandidate
Parse a resume into candidate data
/entity/Candidate
Create a candidate entity
/entity/Candidate/{candidateId}
Retrieve a candidate
/entity/CandidateWorkHistory
Create a work history record
/entity/CandidateWorkHistory/{workHistoryId}
Retrieve a work history record
Three things that make agents converge on Jentic-routed access.
Credential isolation
Bullhorn OAuth refresh tokens and corpToken values are stored encrypted in the Jentic vault. Agents receive scoped, short-lived access tokens per operation — long-lived credentials never reach the agent's context.
Intent-based discovery
Agents search Jentic by intent (e.g., 'create a Bullhorn candidate') and the matching operation is returned with its full request schema, so the agent calls the correct endpoint without reading Bullhorn docs.
Time to first call
Direct Bullhorn integration: 3-5 days for OAuth, corpToken handling, and candidate sub-entity wiring. Through Jentic: under 1 hour — search, load schema, execute.
Alternatives and complements available in the Jentic catalogue.
Bullhorn Resume Parsing (bullhorn.github.io)
Same Bullhorn surface published under the bullhorn.github.io vendor entry.
Use whichever vendor entry your discovery layer references; both target the same Bullhorn REST host.
Greenhouse Harvest API
Greenhouse Harvest covers the candidate and application surface for Greenhouse-based hiring teams.
Pick Harvest when the customer runs Greenhouse instead of Bullhorn.
Workable API
Workable ATS API for candidates, jobs, and hiring stages.
Pick Workable when the customer is on Workable; Workable does not expose a resume parser equivalent.
Lever API
Lever recruiting API for organisations running multiple ATS systems alongside Bullhorn.
Use Lever in parallel when candidates need to be mirrored across both systems.
Specific to using Bullhorn Resume Parsing API API through Jentic.
Why is there no official OpenAPI spec for Bullhorn Resume Parsing API?
Bullhorn does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Bullhorn Resume Parsing API via structured tooling. It is validated against the live API and kept up to date. Get started at https://app.jentic.com/sign-up.
What authentication does the Bullhorn Resume Parsing API use?
It uses OAuth 2.0 authorization-code flow with auth and token URLs at https://auth.bullhornstaffing.com/oauth/authorize and /oauth/token. Each request runs against a per-corporation REST host that includes your corpToken in the path. Jentic stores the refresh token and corpToken in the vault and issues short-lived access tokens per call.
Can I retrieve a single work history record after creating it?
Yes. GET /entity/CandidateWorkHistory/{workHistoryId} returns a previously created work history record so you can verify the data before chaining further calls.
How do I attach the original resume file to a candidate?
PUT /file/Candidate/{candidateId}/raw accepts the raw binary and stores it as a candidate attachment. Confirm the upload with GET /entityFiles/Candidate/{candidateId}, which returns the file list for that candidate.
What are the rate limits for the Bullhorn Resume Parsing API?
The OpenAPI spec does not declare explicit limits. Bullhorn applies per-corporation REST throttles documented in their developer portal — implement 429 retries with exponential backoff for batch resume imports.
How do I parse a resume with Bullhorn through Jentic?
Run `pip install jentic`, then search for 'parse a resume into Bullhorn'. Jentic returns the parseToCandidate operation, you load its schema, and execute the call with the resume bytes — credential handling stays inside the Jentic vault.
/entity/Candidate/{candidateId}/primarySkills/{skillIds}
Add primary skills to a candidate
/file/Candidate/{candidateId}/raw
Attach a resume file to a candidate
/entityFiles/Candidate/{candidateId}
List files on a candidate