Resume Review API
Review-as-a-service
A stable JSON contract for the Grezlify review pipeline. Ship resume reviews inside your own product — job board, ATS, university placement office — with the same 15-section critique we render on grezlify.com.
Private beta — request access via the Enterprise form.
Endpoints
POST
/v1/reviews/skimRun a Skim review (fast, free tier when authenticated).
Body
{ text?, pdfBase64?, resumeId?, targetRole? }Returns
Skim report — overall score + 3 dimensions + 3 top fixes.POST
/v1/reviews/depthRun a Depth review. 15-section JSON v1.4 critique.
Body
{ text?, pdfBase64?, resumeId?, targetRole? }Returns
Depth report — scores across 8 dimensions, severity-tagged findings, keyword match, ranked fix list.GET
/v1/reviews/:idFetch a previously-run review.
Body
—Returns
Review row including the full JSON v1.4 report.POST
/v1/webhooks/testSend a sample on_review_complete event to your endpoint.
Body
{ url, secret? }Returns
202 — fired async, signed with HMAC-SHA256.Webhooks
Register a webhook URL — we POST on_review_complete with the review payload, signed HMAC-SHA256 on x-grezlify-signature. Retried with exponential backoff up to 24h on non-2xx responses.
Quickstart
curl -X POST https://api.grezlify.com/v1/reviews/depth \
-H "Authorization: Bearer grz_live_…" \
-H "Content-Type: application/json" \
-d '{
"resumeId": "res_8f2c1e9a",
"targetRole": { "title": "Product Analyst", "company": "Razorpay" }
}'Sample response (Depth, v1.4)
JSON v1.4 (excerpt)
{
"schema_version": "1.4",
"candidate": { "name": "Aarav Sharma", "location": "Bengaluru, IN", "experience_years": 3.2 },
"target_role": { "title": "Product Analyst", "company": "Razorpay" },
"scores": {
"overall": { "value": 72, "grade": "B-", "percentile": 62, "projected_after_fixes": 89 },
"dimensions": {
"ats_parseability": 94, "jd_match": 58, "content_quality": 61,
"experience_framing": 74, "narrative": 82, "structure": 71,
"language_tone": 88, "red_flags": 63
}
},
"severity_counts": { "critical": 3, "important": 9, "minor": 7, "polish": 3 },
"findings": [
{
"id": "f_001",
"category": "red_flags",
"severity": "critical",
"title": "PII over-disclosure: DOB, marital status, father's name",
"effort": "1-min", "score_lift": 4, "confidence": 0.97,
"geo_specific": "IN", "auto_fix_available": true
}
],
"keyword_match": {
"matched": 14, "partial": 6, "missing": 14,
"missing_keywords": ["A/B testing", "Mixpanel", "payments", "UPI"]
}
}