API Endpoints
ATS Screener exposes a single REST endpoint for all scoring operations.
POST /api/analyze
Section titled “POST /api/analyze”Score a resume against all 6 ATS platforms, or extract requirements from a job description.
Request
Section titled “Request”curl -X POST http://localhost:5173/api/analyze \ -H "Content-Type: application/json" \ -d '{ "mode": "full-score", "resumeText": "John Doe\nSoftware Engineer\n5 years React, TypeScript..." }'Request Body
Section titled “Request Body”| Field | Type | Required | Description |
|---|---|---|---|
mode | string | Yes | "full-score" or "analyze-jd" |
resumeText | string | For full-score | Raw text extracted from resume (max 50,000 chars) |
jobDescription | string | For analyze-jd | Full job description text (max 20,000 chars) |
Validation rules:
Content-Typeheader must beapplication/jsonresumeTextcannot be empty or whitespace-onlyresumeTextmaximum length: 50,000 charactersjobDescriptionmaximum length: 20,000 charactersmodemust be exactly"full-score"or"analyze-jd"
full-score
Section titled “full-score”Score a resume against all 6 ATS platforms. Optionally include a jobDescription for targeted scoring.
{ "mode": "full-score", "resumeText": "John Doe\nSoftware Engineer...", "jobDescription": "We are looking for a Senior Frontend Engineer..."}analyze-jd
Section titled “analyze-jd”Extract structured requirements from a job description without scoring a resume.
{ "mode": "analyze-jd", "jobDescription": "We are looking for a Senior Frontend Engineer..."}Response (full-score)
Section titled “Response (full-score)”{ "results": [ { "system": "Workday", "vendor": "Workday Inc.", "overallScore": 75, "passesFilter": true, "breakdown": { "formatting": { "score": 80, "issues": ["Header content may be skipped"], "details": ["Single-column layout detected"] }, "keywordMatch": { "score": 70, "matched": ["React", "TypeScript", "Node.js"], "missing": ["AWS", "CI/CD"], "synonymMatched": ["JavaScript frameworks"] }, "sections": { "score": 85, "present": ["Experience", "Education", "Skills"], "missing": ["Certifications"] }, "experience": { "score": 75, "quantifiedBullets": 8, "totalBullets": 12, "actionVerbCount": 10, "highlights": ["Strong quantification"] }, "education": { "score": 90, "notes": ["BS Computer Science detected"] } }, "suggestions": ["Add AWS and CI/CD keywords to match Workday's exact matching"] } ], "_provider": "gemini", "_fallback": false}Response Fields
Section titled “Response Fields”| Field | Type | Description |
|---|---|---|
results | array | Array of 6 platform scoring objects |
results[].system | string | Platform name |
results[].overallScore | number | 0-100 weighted composite score |
results[].passesFilter | boolean | Whether resume passes initial screening |
results[].breakdown | object | Per-dimension scores and details |
results[].suggestions | string[] | Platform-specific improvement tips |
_provider | string | Which LLM provider handled the request |
_fallback | boolean | Whether a fallback provider was used |