Understanding Job Criteria and Candidate Matching: When you upload resumes to a job or add candidates, TapTalent’s AI automatically evaluates each candidate against the job’s
criterionDetails (job requirements). The AI generates a profile match score and detailed matching information based on how well candidates meet your “Must Have”, “Nice to Have”, and “Bonus” criteria. See the Job Criteria section in the Jobs API documentation for details on how to set up effective job criteria.Bulk Fetch Job Candidates
Fetch multiple job candidates by their IDs in a single request. This returns candidates with their job-specific information including AI matching scores and evaluation status.POST /job-candidates/bulk-fetch
Authentication
Requires API key authentication viaAuthorization: Bearer YOUR_API_KEY header.
Request Body
Request Body Example
Example Request
Example Response
Response Fields
Job Candidate Object Fields
How Profile Match Scores Work
TheprofileMatchScore is calculated by evaluating the candidate’s resume against the job’s criterionDetails:
- “Must Have” criteria are weighted most heavily - candidates missing these will have significantly lower scores
- “Nice to Have” criteria contribute to the score but won’t disqualify candidates
- “Bonus” criteria add points for exceptional candidates but don’t penalize those without them
- A candidate meeting all “Must Have” criteria and most “Nice to Have” criteria might score 85-95
- A candidate missing a “Must Have” criterion might score 40-60, even if they meet other criteria
- A candidate meeting all criteria including “Bonus” items might score 95-100
Validation Rules
jobCandidateIdsmust be provided and cannot be emptyjobCandidateIdsmust be an array- Maximum 100 job candidate IDs per request
- Each job candidate ID must be a valid non-empty string or number
Error Responses
Missing jobCandidateIds:Rescore Job Candidates
Rescore existing job candidates against the job’s current criteria. Use this when you have updated a job’s requirements and want to refresh profile match scores for candidates who have already applied.- Maximum 250 candidates per request.
- The endpoint returns immediately. You receive a webhook when rescoring completes or fails (e.g. insufficient credits when the job runs).
POST /job-candidates/rescore
Authentication
Requires API key authentication viaAuthorization: Bearer YOUR_API_KEY header.
Request Body
Request Body Example
Request Body Example (by stage)
Request Body Example (specific candidates)
Example Request
Example Response (202 Accepted)
creditsAvailable.
Response Fields
Validation Rules
jobIdis required and must belong to your company.jobCandidateIdsmust not exceed 250 items.- Request fails with
402if you have no scoring credits.
Error: Insufficient credits (402)
Webhook: job.candidates.rescored
When rescoring completes or fails, a webhook is sent to your configured URL with eventjob.candidates.rescored. If there are no credits at that time, the rescore is marked failed and you receive a webhook with status: "failed" and an error reason (e.g. “Insufficient scoring credits”).
Payload:
After receiving the webhook
Scores are stored on each job candidate. See the API reference for endpoints to fetch candidates byrescoreId or by job/list; use the webhook payload to know when rescoring finished and which IDs were included.
Example webhook payload (success):
Get candidates by rescoreId
Return candidates from a rescore with their updated scores. Use therescoreId from the API response or webhook.
GET /job-candidates/rescore/:rescoreId/candidates
Authentication
Requires API key authentication viaAuthorization: Bearer YOUR_API_KEY header.
Path Parameters
Example Request
Example Response
Same structure as Bulk Fetch Job Candidates:{ "status": "success", "data": [ ... ] } with updated scores. Max 250 per rescore.
Error Responses
Rescore not found (404):Get rescore status by rescoreId
Fetch status and summary for a rescore using itsrescoreId.
GET /job-candidates/rescore/:rescoreId
Authentication
Requires API key authentication viaAuthorization: Bearer YOUR_API_KEY header.
Path Parameters
Example Request
Example Response
The response includes only partner-facing fields (no internal IDs or timestamps).Response Fields
Error Responses
Rescore not found (404):Bulk Upload Resumes to Job
Upload multiple resumes for parsing and associate them with a specific job.POST /job-candidates/bulk/resume
Authentication
Requires API key authentication viaAuthorization: Bearer YOUR_API_KEY header.
Request Body
Request Body Example
Example Request
Example Response
Response Fields
Validation Rules
jobIdmust be provided and must be a valid integerresumeURLsmust be provided and cannot be emptyresumeURLsmust be an array- Each URL must be a non-empty string (whitespace-only strings are invalid)
- URLs must be publicly accessible
- Maximum 5,000 resume URLs per request
- The job must exist and belong to your company
Webhook Events
When you upload resumes to a job, webhook events are triggered:-
resume.bulk_upload_parse.started: Sent when batch processing starts -
resume.bulk_upload_parse.completed: Sent when batch processing completes -
resume.bulk_upload_parse.failed: Sent if batch processing fails
Error Responses
Missing jobId:Get Candidates for a Job
Retrieve all candidates associated with a specific job with pagination, filtering, and sorting options.GET /job-candidates/job/:jobId/candidates
Authentication
Requires API key authentication viaAuthorization: Bearer YOUR_API_KEY header.
Path Parameters
Query Parameters
Example Request
Example Response
Response Fields
Candidate Object Fields
Filtering Examples
Get candidates with high match scores:Error Responses
Job not found:Get Candidates by Stage Type
Retrieve all candidates in pipeline stages matching a specific stage type with pagination, filtering by job ID and date range. This endpoint finds all stages of the given type in your company’s pipelines and returns candidates from those stages.GET /job-candidates/stage
Authentication
Requires API key authentication viaAuthorization: Bearer YOUR_API_KEY header.
Query Parameters
Example Request
Example Response
Each candidate in the response hascandidate_details (the candidate’s profile), jobCandidateDetails (application data for the job), and onboardingFormDetails (onboarding form submissions, each with the jobId the flow is attached to).
Response Fields
Candidate Object Fields
Thecandidate_details object contains the candidate’s profile (from the candidate_details table):
Job Candidate Details
ThejobCandidateDetails object contains everything specific to the candidate’s application to the job:
Onboarding Form Details
Each item inonboardingFormDetails (at the candidate level) represents one onboarding form submission:
Filtering Examples
Get all candidates in “APPLIED” stages:Error Responses
Missing stage type:Valid Stage Types
The following stage types are valid for filtering candidates:
Notes:
- Stage types are case-insensitive and will be converted to uppercase automatically
Notes
- Stage Type Matching: The endpoint finds all pipeline stages in your company that match the specified type (case-insensitive). Candidates from all matching stages are returned.
- Multiple Stages: If you have multiple pipelines with stages of the same type, candidates from all those stages will be included in the results.
- Date Filtering: The
startDateandendDatefilters apply to the candidate’s creation date (createdAtfield in job_candidate_details). IfhiredAtis provided, it takes precedence overstartDate. - Maximum perPage: The maximum number of candidates returned per request is 100.
- Response Structure: Each candidate has
candidate_details(profile),jobCandidateDetails(application data), andonboardingFormDetails(onboarding form submissions withjobIdper item). - Stage Ownership: Only stages from pipelines in your company are considered.
Get Candidates by Stage ID
Retrieve all candidates in a specific pipeline stage with pagination, filtering by job ID and date range. This endpoint returns complete candidate details from both the candidate_details and job_candidate_details tables.GET /job-candidates/stage/:stageId/candidates
Authentication
Requires API key authentication viaAuthorization: Bearer YOUR_API_KEY header.
Path Parameters
Query Parameters
Example Request
Example Response
The response structure is identical to Get Candidates by Stage Type, with candidates from the specific stage:Response Fields
The response structure matches Get Candidates by Stage Type. See that section for detailed field descriptions.Filtering Examples
Get candidates in a stage for a specific job:Error Responses
Missing stage ID:Custom Fields in Response
The response includes acustomFields object when custom field values exist for the candidate. The format is:
- The key is the
customFieldId(as a string) - Each value object contains:
label: The display name of the custom fieldvalue: The actual value (type depends on field type: string, number, date, boolean, or array)parentSection: The section where the field appears in the UI
Notes
- Maximum perPage: The maximum number of candidates returned per request is 100
- Date Range Filtering: The
startDateandendDatefilters apply to the candidate’s creation date (createdAtfield in job_candidate_details) - Response structure: Each candidate has
candidate_details(profile),jobCandidateDetails(application data: stage, status, AI scores, CTC, hiring dates, etc.), andonboardingFormDetails(onboarding form submissions withjobIdper item) - Stage Ownership: You can only access candidates in stages that belong to pipelines in your company
- Job Filtering: When
jobIdis provided, only candidates associated with that specific job are returned - Custom Fields Format: Custom fields are fetched from the normalized
customFieldValuestable and include field labels and parent sections for better usability
Update Job Candidate
Update application-specific fields for a job candidate (e.g. evaluation status, notice period, CTC). Use a partial body: send only the fields you want to change. To move the candidate to another stage, use Move Candidate to Stage instead.PATCH /job-candidates/:jobCandidateId
Authentication
Requires API key authentication viaAuthorization: Bearer YOUR_API_KEY header.
Path Parameters
Request Body (all optional; at least one required)
Example Request
Example Response
Error Responses
Invalid jobCandidateId:Delete Job Candidate
Remove a candidate from a job. This deletes the job-candidate relationship; the candidate profile remains in your company and can still be associated with other jobs.DELETE /job-candidates/:jobCandidateId
Authentication
Requires API key authentication viaAuthorization: Bearer YOUR_API_KEY header.
Path Parameters
Example Request
Example Response
Webhook
Acandidate.removed_from_job webhook event is sent when a job candidate is deleted:
Error Responses
Invalid jobCandidateId:Notes
- Only the job-candidate link is deleted; the candidate record in your company is not deleted.
- The candidate can still appear in other jobs they are associated with.
Move Candidate to Stage
Move a candidate to a different pipeline stage within a job. This updates the candidate’s current stage in the hiring pipeline.PUT /job-candidates/:jobCandidateId/stage
Authentication
Requires API key authentication viaAuthorization: Bearer YOUR_API_KEY header.
Path Parameters
Request Body
Request Body Example
Example Request
Example Response
Response Fields
Error Responses
Missing stageId:Notes
- The candidate’s status will be automatically set to “IN_PROGRESS” when moved to a new stage
- You can only move candidates to stages that belong to pipelines in your company
Use Cases
Fetching Job Candidates
Retrieve job candidates with their AI matching scores and evaluation status:- Display candidates for a specific job ranked by match score
- Filter candidates by match score (e.g., show only candidates with 70+ match)
- Review how well candidates meet your job criteria
- Track evaluation status and hiring progress
- Access AI-generated summaries explaining candidate fit
- Filter by pipeline stage to see candidates at different hiring stages
- Exclude rejected candidates to focus on active prospects
Uploading Resumes to Jobs
Upload resumes directly to jobs for parsing and candidate creation:- Associate resumes with specific job postings
- Automatically create job candidates with AI evaluation
- Receive AI matching scores based on job criteria
- See which candidates best match your “Must Have” requirements
- Track candidate progress through the hiring pipeline
Next Steps
- Set up Webhooks to receive batch status updates
- Review Integration Notes for best practices
- Explore other API endpoints
.png?fit=max&auto=format&n=lKy84_BssSCy2hcz&q=85&s=ac7c949427cc2893306f6036415f087e)