Skip to content
DoverDoverDover Docs
Menu

Bulk-add candidates

POST
/api/v1/external/bulk-add-candidates
curl --request POST \
--url https://app.dover.com/api/v1/external/bulk-add-candidates \
--header 'Authorization: <Authorization>' \
--header 'Content-Type: application/json' \
--data '{ "candidates": [ { "job_id": "uuid123", "hiring_pipeline_stage_id": "uuid123", "candidate_email": "[email protected]", "candidate_first_name": "John", "candidate_last_name": "Doe", "candidate_linkedin_url": "https://linkedin.com/in/johndoe", "resume_url": "https://example.com/resume.pdf", "additional_comments": "Experienced developer" }, { "job_id": "uuid123", "hiring_pipeline_stage_name": "Initial Screening", "candidate_email": "[email protected]", "candidate_first_name": "Jane", "candidate_last_name": "Smith", "candidate_linkedin_url": "https://linkedin.com/in/janesmith", "resume_url": "https://example.com/resume2.pdf", "additional_comments": "Great cultural fit" } ] }'

Bulk add candidates to job(s). channel is required (AGENCY, REFERRAL, SOURCED or APPLIED) and drives how the candidate is attributed in reporting; see the field descriptions for the accompanying source / sourcer_* / agency_name fields.

Media typeapplication/json

Request to bulk add candidates to the external API.

object
candidates
required

List of candidates to be added

Array<object>
object
job_id
required

ID of the job the candidate is applying for

string

Example

uuid123
hiring_pipeline_stage_id

ID of the hiring pipeline stage (mutually exclusive with hiring_pipeline_stage_name)

string

Example

uuid123
hiring_pipeline_stage_name

Name of the hiring pipeline stage (mutually exclusive with hiring_pipeline_stage_id)

string

Example

Initial Screening
candidate_email

Email address of the candidate

string
candidate_first_name
required

First name of the candidate

string

Example

John
candidate_last_name
required

Last name of the candidate

string

Example

Doe
candidate_linkedin_url

LinkedIn profile URL of the candidate

string

Example

https://linkedin.com/in/johndoe
resume_url

URL to the candidate’s resume (must be pdf, doc, docx, or txt)

string format: uri

Example

https://example.com/resume.pdf
additional_comments

Additional comments about the candidate

string

Example

Strong background in Python development

Example

{
"candidates": [
{
"job_id": "uuid123",
"hiring_pipeline_stage_id": "uuid123",
"candidate_email": "[email protected]",
"candidate_first_name": "John",
"candidate_last_name": "Doe",
"candidate_linkedin_url": "https://linkedin.com/in/johndoe",
"resume_url": "https://example.com/resume.pdf",
"additional_comments": "Experienced developer"
},
{
"job_id": "uuid123",
"hiring_pipeline_stage_name": "Initial Screening",
"candidate_email": "[email protected]",
"candidate_first_name": "Jane",
"candidate_last_name": "Smith",
"candidate_linkedin_url": "https://linkedin.com/in/janesmith",
"resume_url": "https://example.com/resume2.pdf",
"additional_comments": "Great cultural fit"
}
]
}
Media typeapplication/json

Response after bulk adding candidates.

object
success
required

Indicates if the bulk operation was successful overall.

boolean
results

Detailed results for each candidate in the bulk request

Array<object>
object
index

Index of the candidate in the original request

integer
success

Whether this specific candidate was added successfully

boolean
message

Details about the result for this candidate

string
candidate_id

ID of the created candidate if successful

string

Example

{
"success": true,
"results": [
{
"index": 0,
"success": true,
"message": "Candidate successfully added",
"candidate_id": "uuid123"
},
{
"index": 1,
"success": false,
"message": "Invalid hiring pipeline stage name"
}
]
}