Best practices
Follow these best practices when you integrate the Send Candidates API.
legal notice
By using this API and its documentation and building an integration, you agree to the Additional API Terms and Guidelines.
Implement application-level locking
#Use application-level locking so that only one operation runs on an application at a time. This makes sure that the last version you submit is the version that Indeed publishes.
Sync historical data
#When you integrate the Send Candidates API, follow these practices to sync historical application data:
| Best practice | Description |
|---|---|
| Time-based batching | Sync historical applications in batches by time period, such as one month at a time. |
| Prioritization strategy | Start with recent applications, such as the last 30–90 days, and work backward before you sync older data. |
| Rate management |
|
| Tracking progress |
|
Implement sync patterns
#After you sync historical data, use these patterns to keep it up to date:
| Best practice | Description |
|---|---|
| Real-time updates | Send application and status changes as they happen in your system. Include all application data in every update. |
| Periodic polling | Every 15–30 minutes, check your system for new or updated applications. |
| Webhook-driven | If your system supports webhooks, call the API when an application event occurs. |
| Sync state management |
|
Manage applications and workflow
#- Version control: Track application versions so that you can audit them.
- Application data: Send all application data with every update.
- Complete within timeout: Upload attachments and submit the application within 5 minutes of initializing it.
- Sequential processing: Don't run more than one operation on the same application at a time. See Implement application-level locking.
Handle files and file uploads
#- Pre-calculate MD5: Calculate each file's MD5 checksum before you initialize the application.
- Validate file size: Before you initialize the application, check that no file exceeds the limit. Each file must be 6 MB (6,291,456 bytes) or less, and all attachments together 15 MB (15,728,640 bytes) or less.
- Resume handling: Set the type to
RESUMEon only one attachment, so that Indeed can parse it. - Parallel uploads: Upload multiple attachments at the same time, within your rate limits.
Handle errors
#- Exponential backoff: Retry temporary failures with increasing delays and random jitter.
- Circuit breakers: When a service is down, stop sending requests to it right away, so that one failure doesn't cause others.
- Handle partial failures: Plan for cases where some operations succeed and others fail.
- Robust error handling: Check every response for both HTTP errors and GraphQL errors.
- Set reasonable timeouts: Set appropriate connection and read timeouts.
Optimize performance
#- Batch operations: Use filter parameters to query multiple application versions in one request.
- Caching: Cache employer registration IDs and job IDs so that you don't look them up repeatedly.
Implement security and protect data
#- Data validation: Validate all input before you call the API.
- PII handling: Encrypt and protect candidates' personal information.
- Audit logging: Log every application operation with a correlation ID, to help with troubleshooting.
Test and monitor
#- Edge cases: Test maximum file sizes, special characters in names, and different file types.
- Error scenarios: Test timeouts, network failures, and invalid data.
- Monitor and alert: Track error rates, response times, and circuit breaker states, and set up alerts.
See also
#