Disposition API Guide
Overview
The Disposition API allows job advertisers to communicate applicant disposition data back to Talroo. This includes status updates throughout the hiring process such as interviews, offers, rejections, and hires.
Why Send Disposition Data?
Sharing disposition data provides significant benefits:
- Improved Job Performance: Jobs with disposition data receive better visibility and more qualified candidates
- Enhanced Matching: Understanding hiring outcomes helps Talroo's candidate-job matching AI improve your candidate quality
- Campaign Optimization: Disposition data enables better budget allocation and bid optimization
- Recruitment Insights: Track hiring funnel performance and identify bottlenecks in your process
Data Flow
- Job Seeker Applies: Candidate applies through Talroo to your job posting
- Tracking Begins: Talroo provides a
tlr_sid, ortlr_application_idID value that is unique to the job click or application generated by the candidate - Status Updates: As candidates progress through your hiring process, send disposition events back to Talroo
- Optimization: Talroo uses this data to improve job visibility and candidate quality
Technical Details
Full Disposition API schema can be found here
API Endpoint
POST https://api.talroo.com/disposition/v1/events
Send one or more disposition events in a single API call.
Authentication
There is no authentication needed to use the disposition endpoint.
Request Format
The API accepts either a single event object or an array of event objects in the body of the POST request.
Example: Single Event
{
"tlr_sid": "9dc3d611-e014-4ddb-a87f-d36e3e10a813",
"event": "application_completed",
"raw_event": "new application",
"event_time": "2024-02-25T12:56:33Z"
}
Example: Multiple Events
[
{
"tlr_sid": "9dc3d611-e014-4ddb-a87f-d36e3e10a813",
"event": "application_completed",
"raw_event": "new application",
"event_time": "2024-02-25T12:56:33Z"
},
{
"tlr_application_id": "ba0fbcff-1488-11f0-9d88-121fb3094105",
"event": "rejected",
"reason": "uncertified",
"meta_data": {
"detail_reason": "Candidate did not have the required certification"
},
"event_time": "2024-03-21T19:23:00-05:00"
}
]
The Disposition API supports a maximum of 100 events in a single API call.
Required Fields
Identifier (one required):
tlr_sid: Click ID provided by Talrootlr_application_id: Application ID provided by Talroo
Event Details:
event: The disposition event type (see supported events below)event_time: ISO8601 timestamp when the event occurred
The event_time should be the time the event occurred, and NOT the time the events are to sent Talroo.
Optional Fields:
reason: Only supported for therejectedevents (see supported reasons below)raw_event: Your internal event name (max 128 characters)
Supported Event Types
Application Events:
registration- Candidate registered/created profilelead- Initial interest expressedapplication_started- Application process begunapplication_completed- Application submittedapplication_qualified- Application meets requirementsapplication_unqualified- Application doesn't meet requirementsapplication_withdrawn- Candidate withdrew application
Hiring Process Events:
contacted- Initial contact made with candidatescreening- Phone/initial screening completedassessment- Skills assessment completedinterview_scheduled- Interview scheduledinterviewed- Interview completedbackground_check- Background check initiated/completedoffered- Job offer extendedoffer_declined- Candidate declined offerhired- Candidate hiredrejected- Application rejectedonboarded- Employee onboarding completedother- Custom event type
Rejection Reasons
When using event: "rejected", include a reason field:
failed_checks- Failed background/reference checksunresponsive- Candidate didn't respond to communicationsuncertified- Lacks required certifications/qualificationsout_of_area- Location not suitablejob_closed- Position no longer availablehired_different_role- Hired for different positionother- Other reason
Example Request
curl --location 'https://api.talroo.com/disposition/v1/events' \
--header 'Content-Type: application/json' \
--data '[
{
"tlr_sid": "9e9ee8f1-6cb3-4195-93ff-78678cbde550",
"event": "screening",
"raw_event": "phone_screened",
"event_time": "2024-04-07T15:18:00-05:00"
},
{
"tlr_sid": "9e9ee8f1-6cb3-4195-93ff-78678cbde550",
"event": "interviewed",
"raw_event": "completed_interview",
"event_time": "2024-04-07T15:19:00-05:00"
},
{
"tlr_application_id": "15c4dce613e511f0837b0e09a3d063d115c4dce613e511f0837b0e09a3d063d1",
"event": "rejected",
"reason": "job_closed",
"event_time": "2024-04-07T15:20:00-05:00"
}
]'
API Responses
Success Responses
Single Event Success (200 OK):
{
"success": true
}
Multiple Events Success (200 OK):
{
"num_succeeded_events": 10
}
Error Responses
Single Event Validation Error (400 Bad Request):
{
"message": "Validation failed",
"tlr_sid": "9dc3d611-e014-4ddb-a87f-d36e3e10a813",
"errors": [
{
"message": "This value should not be null.",
"field": "event",
"value": null
}
]
}
Multiple Events Partial Failure (400 Bad Request):
{
"num_succeeded_events": 8,
"failed_events": [
{
"message": "Validation failed",
"tlr_sid": "9dc3d611-e014-4ddb-a87f-d36e3e10a813",
"errors": [
{
"message": "This value should not be null.",
"field": "event",
"value": null
}
]
}
]
}
Server Error (500 Internal Server Error):
{
"message": "Internal server error"
}
Best Practices
Timing
- Send disposition events as soon as they occur in your system
- For batch processing, send events as frequently as possible, and at the very least daily
- Include accurate
event_timetimestamps, not when the API call is made
Sending disposition events in as close to real time as possible will provide the best traffic optimization results.
Data Quality
- Always use the exact
tlr_sidortlr_application_idprovided by Talroo - Send events in chronological order when possible
Error Handling
- Implement retry logic for temporary failures (500 errors)
- Log failed events for manual review and reprocessing
- Monitor your success rates and investigate patterns in failed events
Integration Tips
- Test with single events first, then implement batch processing
- Use your ATS webhooks or scheduled jobs to trigger API calls