v1 to v2 Migration
Migrating from v1 to v2 of the CEIPAL ATS API is straightforward. This guide walks you through every change so your integration keeps working smoothly with improved performance, stronger security, and more predictable responses.
Important: To use the CEIPAL V2 APIs, please ensure you follow all the steps outlined in this guide. Each step is required to ensure your integration works correctly with the new version.
1. URL Structure
Update your base URL from /v1/ to /v2/. A trailing slash is now required on all endpoints — requests without it will not be accepted.
Version | URL |
V1 |
|
V2 |
|
2. Request Parameter Naming
All request parameters have been renamed from snake_case to camelCase. Update the parameters you send in your API requests.
V1 (snake_case) | V2 (camelCase) |
|
|
|
|
|
|
|
|
3. Resume Token — Secure Document Download
In V1, resume download links never expired. In V2, a resumeToken is returned that expires after 30 minutes, keeping candidate documents secure.
How to download a resume in V2:
Step 1 — Call the List or Detail API. The response will include a resumeToken.
Step 2 — Send a POST request to /v2/documentDownload/ with the token within 30 minutes.
POST /v2/documentDownload/ Body: { "resumeToken": "eyJ...{encrypted}" }
Note: If the token has expired, the API returns HTTP 410 Gone. Call the API again to get a fresh token.
4. Enhanced Encryption
V2 uses AES-256-CBC — an industry-standard encryption algorithm. This replaces the simpler encryption used in V1 and ensures your data exchange meets modern security standards.
5. Consistent Error Handling
V1 sometimes returned HTTP 200 OK even when errors occurred. V2 now returns proper HTTP status codes, making error handling simpler and more reliable.
Scenario | V1 | V2 |
Bad request | 200 OK (error in body) | 400 Bad Request |
Unauthorized | Inconsistent | 401 Unauthorized |
Not found | Inconsistent | 404 Not Found |
Expired token | Not applicable | 410 Gone |
6. POST Endpoint Responses
All POST endpoints now return a structured JSON response including a status code, encrypted record ID, status, timestamp, and a confirmation message.
{ "statusCode": 201, "jobId": "WmFsNWNhTkd...", "status": "created", "createdAt": "2026-04-01 10:00:00", "message": "Job created successfully." }
Using returned IDs with Detail APIs:
The encrypted IDs returned in List API responses can be passed directly in the URL path to the corresponding Detail API — no query parameters needed.
Detail API | V1 | V2 |
Job Details |
|
|
Applicant Details |
|
|
Client Details |
|
|
Lead Details |
|
|
Submission Details |
|
|
Migration Checklist
Before going live with v2, make sure you have completed the following:
- [ ] Updated all endpoint URLs from
/v1/to/v2/with trailing slash - [ ] Renamed all request parameters from
snake_casetocamelCase - [ ] Updated resume download logic to use the two-step
resumeTokenflow - [ ] Updated error handling to use standard HTTP status codes
- [ ] Updated POST response parsing to read
statusCode,createdAt, and encrypted ID fields
What made this section helpful for you?
What made this section unhelpful for you?
On this page
- v1 to v2 Migration