API Reference
All endpoints are served at /api when running locally. The interactive Swagger UI is at /api/docs.
Core Resume Tools
Intelligence Hub Tools
Career Tools
Auth & Tracker
Core Resume Tools
/resume/uploadUpload a PDF or DOCX resume file. Returns a resume_id used in subsequent analysis calls.
Request Body
| Parameter | Type | Description |
|---|---|---|
file* | File (multipart) | The resume file (.pdf or .docx, max 10 MB). |
Response
| Field | Type | Description |
|---|---|---|
resume_id | string | Unique identifier for the uploaded resume. |
filename | string | Stored filename on the server. |
message | string | Confirmation message. |
Example
curl -X POST /api/resume/upload \ -F "file=@my_resume.pdf"
/analysis/runRun ATS scoring, JD matching, skills extraction, AI suggestions, and recruiter feedback on an uploaded resume.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_id* | integer | The resume_id (integer) returned by /resume/upload. |
target_role* | string | Job title to optimise the analysis for. |
job_description | string | Full job description text for JD match scoring. |
Response
| Field | Type | Description |
|---|---|---|
ats.total_score | number | ATS score out of 100. |
ats.breakdown | object | Per-category scores (skills, keywords, impact, etc.). |
jd_match.match_score | number | Job description match percentage (0–100). |
jd_match.missing_keywords | string[] | Keywords present in JD but missing from resume. |
ai_suggestions.suggestions | object[] | Prioritised improvement suggestions. |
recruiter_feedback.recruiter_verdict | string | AI recruiter narrative assessment. |
rewritten_content.rewritten_summary | string | AI-rewritten professional summary. |
final_score | number | Composite final score. |
Example
curl -X POST /api/analysis/run \
-H "Content-Type: application/json" \
-d '{
"resume_id": 1,
"target_role": "Software Engineer",
"job_description": "We are looking for..."
}'/templates/Returns all available resume templates with their IDs, names, and category metadata.
Response
| Field | Type | Description |
|---|---|---|
[].id | string | Template identifier used in /templates/render. |
[].name | string | Human-readable template name. |
[].category | string | Template category (professional, creative, etc.). |
[].supports_photo | boolean | Whether the template includes a photo section. |
Example
curl /api/templates/
/templates/renderRender a selected template with user data and return a download URL for the PDF/DOCX output.
Request Body
| Parameter | Type | Description |
|---|---|---|
template_id* | string | ID from /templates/ list. |
data* | object | Resume data (full_name, headline, email, skills[], experience[], etc.). |
Response
| Field | Type | Description |
|---|---|---|
download_url | string | Path to the generated resume file. Prepend the base URL to download. |
Example
curl -X POST /api/templates/render \
-H "Content-Type: application/json" \
-d '{
"template_id": "modern",
"data": {
"full_name": "Alex Johnson",
"headline": "Software Engineer",
"email": "alex@example.com",
"skills": ["Python", "React", "Docker"]
}
}'/career-tools/portfolioGenerate a standalone responsive HTML portfolio website from profile data. Returns a download URL.
Request Body
| Parameter | Type | Description |
|---|---|---|
full_name* | string | Candidate full name. |
headline | string | Professional headline / tagline. |
about | string | About section text. |
skills | string[] | List of skill strings. |
projects | object[] | Array of {name, description, technologies[]}. |
theme | string | Portfolio theme (default: "modern"). |
Response
| Field | Type | Description |
|---|---|---|
download_url | string | Path to the generated HTML file. |
Example
curl -X POST /api/career-tools/portfolio \
-H "Content-Type: application/json" \
-d '{
"full_name": "Alex Johnson",
"headline": "Full Stack Engineer",
"skills": ["React", "Node.js", "AWS"],
"projects": [{"name": "App", "description": "...", "technologies": ["React"]}]
}'/interview/generateGenerate personalised technical, HR, project, and behavioural interview questions based on resume text and target role.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw text content of the resume (up to 4000 chars used). |
target_role* | string | The role being interviewed for. |
job_description | string | Optional job description for more targeted questions. |
Response
| Field | Type | Description |
|---|---|---|
technical_questions | string[] | Role-specific technical questions. |
hr_questions | string[] | HR and fit questions. |
project_questions | string[] | Questions based on resume projects. |
behavioral_questions | string[] | STAR-method behavioural questions. |
preparation_topics | string[] | Topics to study before the interview. |
confidence_assessment | string | AI narrative on interview readiness. |
Example
curl -X POST /api/interview/generate \
-H "Content-Type: application/json" \
-d '{
"resume_text": "John Smith, Software Engineer...",
"target_role": "Senior Software Engineer",
"job_description": "We are looking for..."
}'/chat/textSend a message to the CVAgent AI assistant. Supports multi-turn conversation history and optional resume/JD context.
Request Body
| Parameter | Type | Description |
|---|---|---|
message* | string | The user message to send. |
resume_text | string | Resume text for personalised context. |
target_role | string | Target role context. |
job_description | string | Job description context. |
conversation_history | {role, content}[] | Prior messages for multi-turn context. |
Response
| Field | Type | Description |
|---|---|---|
reply | string | The AI assistant reply. |
Example
curl -X POST /api/chat/text \
-H "Content-Type: application/json" \
-d '{
"message": "How can I improve my ATS score?",
"resume_text": "...",
"conversation_history": [
{"role": "user", "content": "Hi"},
{"role": "assistant", "content": "Hello! How can I help?"}
]
}'Intelligence Hub Tools12 endpoints
/intelligence/salary-estimatorEstimate a salary range for a target role and location based on resume skills and experience level.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
target_role* | string | Role to estimate salary for. |
location | string | Location for market rate data (default: "India"). |
Response
| Field | Type | Description |
|---|---|---|
estimated_range | string | Salary range string (e.g. "₹18L – ₹26L"). |
median | string | Median salary for the role. |
currency | string | Currency code. |
negotiation_tips | string[] | Actionable negotiation advice. |
upskill_recommendations | string[] | Skills that would increase the range. |
Example
curl -X POST /api/intelligence/salary-estimator \
-H "Content-Type: application/json" \
-d '{
"resume_text": "5 years experience in React, Node.js…",
"target_role": "Senior Frontend Engineer",
"location": "Bangalore"
}'/intelligence/career-trajectoryMap the next 5-year career path with role options, milestone timelines, and skill priorities.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
target_role* | string | Desired role direction. |
Response
| Field | Type | Description |
|---|---|---|
next_roles | object[] | Array of {title, match_percentage, timeline, description}. |
milestones | object[] | Array of {year, title, action}. |
target_companies | string[] | Companies matching the trajectory. |
skills_to_prioritize | string[] | Skills to focus on for the target path. |
Example
curl -X POST /api/intelligence/career-trajectory \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "target_role": "Engineering Manager"}'/intelligence/recruiter-simulatorSimulate a recruiter's 6-second resume scan. Returns a hire/no-hire verdict with detailed reasoning.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
target_role* | string | Role being applied for. |
job_description | string | Job description for context. |
Response
| Field | Type | Description |
|---|---|---|
verdict | "hire" | "no-hire" | Recruiter decision. |
confidence | number | Confidence score (0–100). |
first_impression | string | First impression quote. |
brutal_feedback | string | Unfiltered critique. |
top_improvements | string[] | Top 3 actionable improvements. |
strengths | string[] | Resume strengths. |
weaknesses | string[] | Resume weaknesses. |
ats_red_flags | string[] | ATS formatting issues spotted. |
Example
curl -X POST /api/intelligence/recruiter-simulator \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "target_role": "Product Manager"}'/intelligence/linkedin-resumeTransform a resume into a LinkedIn-ready profile — headline, about section, skills, and SEO keywords.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text | string | Resume text (provide one of resume_text or linkedin_text). |
linkedin_text | string | Existing LinkedIn profile text. |
target_role* | string | Target role for optimisation. |
Response
| Field | Type | Description |
|---|---|---|
headline | string | Optimised LinkedIn headline (120 chars). |
about_section | string | Full About section text. |
skills | string[] | Recommended LinkedIn skills to add. |
seo_keywords | string[] | Keywords for LinkedIn search visibility. |
search_appearance_boost | string | Narrative on how the optimisation helps discoverability. |
profile_completeness_tips | string[] | Steps to reach All-Star status. |
Example
curl -X POST /api/intelligence/linkedin-resume \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "target_role": "Data Scientist"}'/intelligence/jd-match-v3Advanced semantic matching between a resume and job description. Returns match scores, matched/missing keywords, and skill gaps.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
job_description* | string | Full job description text. |
target_role* | string | Role title for context. |
Response
| Field | Type | Description |
|---|---|---|
overall_match | number | Overall match score (0–100). |
semantic_similarity | number | Semantic similarity score (0–100). |
keyword_density | number | Keyword coverage score (0–100). |
matched_keywords | string[] | Keywords present in both resume and JD. |
critical_missing | string[] | High-priority missing keywords. |
missing_keywords | string[] | All keywords from JD not in resume. |
missing_skills | string[] | Skill gaps identified. |
Example
curl -X POST /api/intelligence/jd-match-v3 \
-H "Content-Type: application/json" \
-d '{
"resume_text": "…",
"job_description": "We are looking for a Senior Engineer…",
"target_role": "Senior Software Engineer"
}'/intelligence/market-benchmarkCompare a resume profile against candidates who landed offers at top companies for the target role.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
target_role* | string | Target role to benchmark against. |
Response
| Field | Type | Description |
|---|---|---|
percentile | number | Estimated market percentile (0–100). |
verdict | string | Narrative percentile assessment. |
skills_vs_market | object[] | Array of {skill, your_level, market_level, trend}. |
top_10_percent_profile | string[] | What top 10% candidates in this role have. |
differentiators | string[] | Your current differentiators. |
improvement_priorities | object[] | Array of {area, action, percentile_gain}. |
Example
curl -X POST /api/intelligence/market-benchmark \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "target_role": "Backend Engineer"}'/intelligence/career-switcherGap analysis, transferable skills map, and step-by-step action plan for a career pivot.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
target_role* | string | Desired target role. |
target_field* | string | Target industry or domain. |
Response
| Field | Type | Description |
|---|---|---|
readiness_percentage | number | Career switch readiness score (0–100). |
switch_difficulty | string | "Easy" | "Moderate" | "Hard". |
estimated_timeline | string | Estimated time to transition (e.g. "6–12 months"). |
transferable_skills | string[] | Skills that transfer to the new field. |
critical_gaps | string[] | Must-have skills missing for the new field. |
nice_to_have_gaps | string[] | Helpful but optional missing skills. |
bridge_roles | object[] | Intermediate roles to help the transition. |
learning_path | object[] | Step-by-step actions with priority and timeline. |
rebrand_tips | string[] | Resume and LinkedIn rebrand suggestions. |
Example
curl -X POST /api/intelligence/career-switcher \
-H "Content-Type: application/json" \
-d '{
"resume_text": "…",
"target_role": "Machine Learning Engineer",
"target_field": "AI / Data Science"
}'/intelligence/tone-personaRewrite resume summary and bullet points in a selected tone — Startup, Corporate, Creative, or Academic.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
tone* | string | "Startup/Dynamic" | "Corporate/Formal" | "Creative/Bold" | "Academic/Research". |
Response
| Field | Type | Description |
|---|---|---|
persona_applied | string | The tone that was applied. |
rewritten_summary | string | Rewritten professional summary in the selected tone. |
bullets | object[] | Array of {original, rewritten, change_note}. |
keywords_to_add | string[] | Tone-specific keywords to add. |
tone_tips | string[] | General tone guidance tips. |
Example
curl -X POST /api/intelligence/tone-persona \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "tone": "Startup/Dynamic"}'/career-tools/rejection-analyzerDiagnose why a resume is being rejected at each hiring funnel stage — ATS, recruiter screen, and hiring manager.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
job_description | string | Job description for context. |
target_role | string | Target role title. |
Response
| Field | Type | Description |
|---|---|---|
rejection_probability | number | Overall rejection risk (0–100). |
stages | object[] | Array of {stage, probability, label, description}. |
reasons | object[] | Array of {reason, severity, fix}. |
quick_wins | string[] | Fast-impact improvements. |
red_flags | string[] | Critical issues to fix immediately. |
Example
curl -X POST /api/career-tools/rejection-analyzer \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "target_role": "Software Engineer"}'/career-tools/skill-gapCompare skills in a resume against a job description and generate a 7-day sprint and 30-day mastery plan.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
job_description* | string | Target job description. |
target_role* | string | Role title. |
Response
| Field | Type | Description |
|---|---|---|
matched_skills | string[] | Skills present in both resume and JD. |
missing_skills | string[] | Skills in JD not found in resume. |
priority_skills | string[] | Must-learn skills for the role. |
seven_day_sprint | object[] | Day-by-day 7-day action plan. |
thirty_day_mastery | object[] | Week-by-week 30-day mastery plan. |
Example
curl -X POST /api/career-tools/skill-gap \
-H "Content-Type: application/json" \
-d '{
"resume_text": "…",
"job_description": "Must have experience in Kubernetes, Terraform…",
"target_role": "DevOps Engineer"
}'/career-tools/project-qualityScore a portfolio project across 5 dimensions and get a grade, better title/description, and improvement roadmap.
Request Body
| Parameter | Type | Description |
|---|---|---|
project_name* | string | Project name. |
description* | string | Project description text. |
technologies | string[] | Technologies used. |
target_role* | string | Role this project is being presented for. |
Response
| Field | Type | Description |
|---|---|---|
project_name | string | Echoed project name. |
scores | object | {technical_depth, business_value, clarity, uniqueness, recruiter_appeal} — each 0–100. |
overall_score | number | Weighted overall score (0–100). |
grade | string | Letter grade (A+, A, B+, B, C, D, F). |
better_title | string | Suggested improved project title. |
better_description | string | Rewritten project description. |
stronger_achievements | string[] | Improved achievement bullet points. |
tech_stack_improvements | string[] | Recommendations for the tech stack. |
missing_elements | string[] | Project elements to add. |
recruiter_verdict | string | Recruiter narrative assessment. |
Example
curl -X POST /api/career-tools/project-quality \
-H "Content-Type: application/json" \
-d '{
"project_name": "AI Resume Parser",
"description": "Built a tool that parses resumes using NLP",
"technologies": ["Python", "spaCy", "FastAPI"],
"target_role": "Machine Learning Engineer"
}'/career-tools/application-packGenerate a complete application kit: cover letter, interview answers, and HR responses tailored to a specific role and company.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
job_description* | string | Job description text. |
company_name* | string | Target company name. |
role_name* | string | Role being applied for. |
Response
| Field | Type | Description |
|---|---|---|
cover_letter | string | Full personalised cover letter. |
tell_me_about_yourself | string | Scripted 2-minute opening answer. |
why_this_role | string | Tailored "why this role" answer. |
why_should_we_hire_you | string | Value proposition answer. |
hr_answers.strengths | string | Strengths answer. |
hr_answers.career_goal | string | Career goals answer. |
hr_answers.availability | string | Availability/notice period answer. |
Example
curl -X POST /api/career-tools/application-pack \
-H "Content-Type: application/json" \
-d '{
"resume_text": "…",
"job_description": "…",
"company_name": "Google",
"role_name": "Senior Software Engineer"
}'Career Tools38 endpoints
/career-tools/bullet-rewriterRewrite weak resume bullet points using the XYZ formula (Accomplished X, as measured by Y, by doing Z). Returns rewritten bullets with impact scores.
Request Body
| Parameter | Type | Description |
|---|---|---|
bullets* | string[] | Array of existing resume bullet point strings. |
target_role* | string | Role being targeted to tune impact language. |
resume_text | string | Full resume text for additional context. |
Response
| Field | Type | Description |
|---|---|---|
rewritten | object[] | Array of {original, rewritten, impact_score, improvement_notes}. |
overall_improvement | string | Summary of the improvements made. |
Example
curl -X POST /api/career-tools/bullet-rewriter \
-H "Content-Type: application/json" \
-d '{
"bullets": ["Worked on backend services", "Helped with customer support"],
"target_role": "Senior Software Engineer"
}'/career-tools/resume-summaryGenerate a compelling 3–4 sentence professional summary optimised for ATS and the target role.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
target_role* | string | Role being applied for. |
years_experience | number | Years of total experience. |
Response
| Field | Type | Description |
|---|---|---|
summary | string | Generated professional summary. |
keywords_used | string[] | ATS keywords embedded in the summary. |
alternatives | string[] | Two alternative summary variations. |
Example
curl -X POST /api/career-tools/resume-summary \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "target_role": "Product Manager"}'/career-tools/interview-answersGenerate STAR-format answers to common and role-specific interview questions based on resume context.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
target_role* | string | Role being interviewed for. |
questions | string[] | Specific questions to answer. Defaults to common HR questions. |
Response
| Field | Type | Description |
|---|---|---|
answers | object[] | Array of {question, answer, tips}. |
star_breakdown | object[] | STAR components for each answer. |
Example
curl -X POST /api/career-tools/interview-answers \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "target_role": "Data Engineer"}'/career-tools/jd-analyzerDeconstruct a job description into must-have skills, nice-to-haves, hidden requirements, and culture signals.
Request Body
| Parameter | Type | Description |
|---|---|---|
job_description* | string | Full job description text. |
target_role | string | Role title for additional context. |
Response
| Field | Type | Description |
|---|---|---|
must_have_skills | string[] | Non-negotiable hard skills from the JD. |
nice_to_have_skills | string[] | Preferred but optional skills. |
hidden_requirements | string[] | Implied requirements not explicitly stated. |
culture_signals | string[] | Company culture indicators. |
red_flags | string[] | Potential concerns in the JD. |
ats_keywords | string[] | High-priority ATS keywords to include. |
Example
curl -X POST /api/career-tools/jd-analyzer \
-H "Content-Type: application/json" \
-d '{"job_description": "We are looking for a Senior React Developer…"}'/career-tools/salary-negotiationGenerate word-for-word negotiation scripts for the initial ask, counter-offer, and closing — tailored to role and market data.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
target_role* | string | Role title. |
offered_salary | string | Current offer (e.g. "₹18L"). |
target_salary | string | Desired salary (e.g. "₹24L"). |
location | string | Location for market context. |
Response
| Field | Type | Description |
|---|---|---|
initial_ask_script | string | Script for making the first ask. |
counter_script | string | Script for countering a low offer. |
email_template | string | Negotiation email template. |
talking_points | string[] | Key leverage points to mention. |
market_range | string | Estimated market range for the role. |
Example
curl -X POST /api/career-tools/salary-negotiation \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "target_role": "DevOps Engineer", "offered_salary": "₹20L"}'/career-tools/resume-formatterAnalyse resume formatting and structure for ATS compliance. Returns a score, issues list, and a cleaned plain-text version.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
target_role | string | Role for ATS context. |
Response
| Field | Type | Description |
|---|---|---|
format_score | number | Formatting quality score (0–100). |
issues | object[] | Array of {issue, severity, fix}. |
cleaned_text | string | ATS-friendly plain-text version. |
section_order | string[] | Recommended section ordering. |
Example
curl -X POST /api/career-tools/resume-formatter \
-H "Content-Type: application/json" \
-d '{"resume_text": "…"}'/career-tools/resume-tailorRewrite and tailor an existing resume for a specific job description, injecting missing keywords and aligning bullet points.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
job_description* | string | Target job description. |
target_role* | string | Role title. |
Response
| Field | Type | Description |
|---|---|---|
tailored_summary | string | Rewritten summary for this JD. |
tailored_bullets | object[] | Array of {original, tailored} bullet rewrites. |
keywords_added | string[] | New keywords woven in. |
match_improvement | string | Estimated match score improvement. |
Example
curl -X POST /api/career-tools/resume-tailor \
-H "Content-Type: application/json" \
-d '{
"resume_text": "…",
"job_description": "Looking for a Python backend engineer…",
"target_role": "Backend Engineer"
}'/career-tools/experience-writerWrite polished experience section entries with strong action verbs, quantified impact, and ATS-friendly language.
Request Body
| Parameter | Type | Description |
|---|---|---|
role_title* | string | Job title. |
company* | string | Company name. |
responsibilities* | string | Raw list of responsibilities and achievements. |
target_role* | string | Role being applied for. |
Response
| Field | Type | Description |
|---|---|---|
bullets | string[] | Polished achievement-led bullet points. |
metrics_opportunities | string[] | Places where metrics could be added. |
Example
curl -X POST /api/career-tools/experience-writer \
-H "Content-Type: application/json" \
-d '{
"role_title": "Software Engineer",
"company": "Startup Inc",
"responsibilities": "Built APIs, helped deploy services, led a small team",
"target_role": "Senior Software Engineer"
}'/career-tools/career-breakGenerate professional narratives and resume entries for career gaps — sabbatical, caregiving, health, self-study, etc.
Request Body
| Parameter | Type | Description |
|---|---|---|
break_reason* | string | Reason for the career break. |
duration* | string | Length of break (e.g. "18 months"). |
activities | string | What you did during the break (courses, projects, caregiving, etc.). |
target_role* | string | Role now being applied for. |
Response
| Field | Type | Description |
|---|---|---|
resume_entry | string | Professional resume entry for the break period. |
cover_letter_paragraph | string | Cover letter paragraph addressing the gap. |
interview_answer | string | Script for answering 'explain your career gap'. |
reframe_tips | string[] | Tips for positioning the break positively. |
Example
curl -X POST /api/career-tools/career-break \
-H "Content-Type: application/json" \
-d '{
"break_reason": "Primary caregiver for parent",
"duration": "14 months",
"activities": "Completed AWS Solutions Architect certification online",
"target_role": "Cloud Engineer"
}'/career-tools/personal-brandCraft a cohesive personal brand statement, tagline, and LinkedIn/bio copy aligned to your target role and values.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
target_role* | string | Target role. |
values | string[] | Personal values to reflect in the brand. |
Response
| Field | Type | Description |
|---|---|---|
brand_statement | string | 2–3 sentence personal brand statement. |
tagline | string | Short memorable tagline (≤15 words). |
linkedin_headline | string | Branded LinkedIn headline. |
bio_short | string | Short bio for portfolio/Twitter (≤160 chars). |
bio_long | string | Full bio for website or conference profile. |
brand_keywords | string[] | Keywords that embody your brand. |
Example
curl -X POST /api/career-tools/personal-brand \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "target_role": "Engineering Manager", "values": ["leadership", "impact", "innovation"]}'/career-tools/interview-feedbackSubmit a mock interview answer and receive detailed feedback on structure, content, delivery, and STAR alignment.
Request Body
| Parameter | Type | Description |
|---|---|---|
question* | string | The interview question asked. |
answer* | string | Candidate answer text. |
target_role* | string | Role being interviewed for. |
Response
| Field | Type | Description |
|---|---|---|
score | number | Answer quality score (0–100). |
star_breakdown | object | {situation, task, action, result} scores each 0–100. |
strengths | string[] | What the answer did well. |
improvements | string[] | Areas to improve. |
model_answer | string | An improved version of the answer. |
Example
curl -X POST /api/career-tools/interview-feedback \
-H "Content-Type: application/json" \
-d '{
"question": "Tell me about a time you led a team through a difficult project.",
"answer": "I once led a team of 3 engineers…",
"target_role": "Engineering Manager"
}'/career-tools/resignation-letterGenerate a professional, bridge-burning-free resignation letter for any role and notice period.
Request Body
| Parameter | Type | Description |
|---|---|---|
your_name* | string | Your full name. |
role_title* | string | Your current job title. |
company_name* | string | Current employer name. |
notice_period* | string | Notice period (e.g. "2 weeks", "30 days"). |
reason | string | Brief reason (optional, kept professional). |
tone | string | "formal" | "warm" (default: "formal"). |
Response
| Field | Type | Description |
|---|---|---|
resignation_letter | string | Full resignation letter text. |
subject_line | string | Email subject line. |
tips | string[] | Tips for a smooth handover. |
Example
curl -X POST /api/career-tools/resignation-letter \
-H "Content-Type: application/json" \
-d '{
"your_name": "Alex Johnson",
"role_title": "Software Engineer",
"company_name": "Tech Corp",
"notice_period": "2 weeks"
}'/career-tools/cold-emailWrite a personalized cold outreach email to a recruiter or hiring manager — with strong subject lines and a clear CTA.
Request Body
| Parameter | Type | Description |
|---|---|---|
your_name* | string | Sender full name. |
target_role* | string | Role being targeted. |
company_name* | string | Target company name. |
resume_text | string | Resume text for personalisation. |
connection_point | string | Shared connection, mutual interest, or referral. |
Response
| Field | Type | Description |
|---|---|---|
subject_lines | string[] | 3 subject line options. |
email_body | string | Full cold email body text. |
follow_up | string | One-week follow-up email. |
Example
curl -X POST /api/career-tools/cold-email \
-H "Content-Type: application/json" \
-d '{"your_name": "Alex J.", "target_role": "ML Engineer", "company_name": "DeepMind"}'/career-tools/tech-prepGenerate a role-specific technical prep plan: topics, sample questions, coding challenges, and a study schedule.
Request Body
| Parameter | Type | Description |
|---|---|---|
target_role* | string | Role being prepared for. |
resume_text | string | Resume text to identify current knowledge gaps. |
interview_date | string | Interview date for scheduling the prep plan (ISO 8601). |
Response
| Field | Type | Description |
|---|---|---|
core_topics | string[] | Must-know topics for the role. |
sample_questions | object[] | Array of {question, difficulty, category}. |
coding_challenges | string[] | Recommended LeetCode/HackerRank problem types. |
study_schedule | object[] | Day-by-day study plan. |
resources | object[] | Array of {title, url, type}. |
Example
curl -X POST /api/career-tools/tech-prep \
-H "Content-Type: application/json" \
-d '{"target_role": "Senior React Engineer"}'/career-tools/reference-requestGenerate a polite, professional reference request email to a former manager or colleague.
Request Body
| Parameter | Type | Description |
|---|---|---|
your_name* | string | Your full name. |
reference_name* | string | Reference's name. |
relationship* | string | Your relationship (e.g. "former manager at Acme"). |
target_role* | string | Role being applied for. |
company_name | string | Target company name. |
Response
| Field | Type | Description |
|---|---|---|
subject_line | string | Email subject line. |
email_body | string | Full reference request email. |
talking_points | string[] | Achievements to highlight to the reference. |
Example
curl -X POST /api/career-tools/reference-request \
-H "Content-Type: application/json" \
-d '{
"your_name": "Alex J.",
"reference_name": "Sarah Chen",
"relationship": "former manager at Acme Corp",
"target_role": "Engineering Manager"
}'/career-tools/mock-interviewGenerate a full mock interview session with questions, expected answer frameworks, and an evaluation rubric.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
target_role* | string | Role being applied for. |
job_description | string | Job description for tailored questions. |
interview_type | string | "behavioral" | "technical" | "mixed" (default: "mixed"). |
Response
| Field | Type | Description |
|---|---|---|
questions | object[] | Array of {question, type, expected_framework, time_limit}. |
evaluation_rubric | object[] | Scoring criteria for each question category. |
preparation_tips | string[] | Role-specific interview tips. |
Example
curl -X POST /api/career-tools/mock-interview \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "target_role": "Product Manager", "interview_type": "behavioral"}'/career-tools/keywordsExtract, score, and categorise ATS keywords from a job description. Returns a prioritised list for resume injection.
Request Body
| Parameter | Type | Description |
|---|---|---|
job_description* | string | Job description text. |
resume_text | string | Resume text to identify which keywords are already present. |
Response
| Field | Type | Description |
|---|---|---|
critical_keywords | object[] | Array of {keyword, frequency, category, in_resume}. |
soft_skills | string[] | Soft skill keywords from the JD. |
technical_skills | string[] | Technical keyword list. |
missing_keywords | string[] | Keywords not yet in the resume. |
Example
curl -X POST /api/career-tools/keywords \
-H "Content-Type: application/json" \
-d '{
"job_description": "Looking for a DevOps engineer with Kubernetes, Terraform, CI/CD…",
"resume_text": "…"
}'/career-tools/achievement-writerTransform a list of responsibilities into quantified achievement statements with STAR alignment and impact metrics.
Request Body
| Parameter | Type | Description |
|---|---|---|
responsibilities* | string[] | List of raw responsibility strings. |
role_title* | string | Role title for context. |
industry | string | Industry for metric benchmarking. |
Response
| Field | Type | Description |
|---|---|---|
achievements | object[] | Array of {original, achievement, metric_suggestions}. |
metric_templates | string[] | Templates for adding quantification. |
Example
curl -X POST /api/career-tools/achievement-writer \
-H "Content-Type: application/json" \
-d '{
"responsibilities": ["Managed a team", "Improved system performance"],
"role_title": "Engineering Lead"
}'/career-tools/linkedin-postGenerate high-engagement LinkedIn posts for job announcements, career wins, thought leadership, or open-to-work updates.
Request Body
| Parameter | Type | Description |
|---|---|---|
post_type* | string | "new_job" | "open_to_work" | "achievement" | "thought_leadership" | "milestone". |
context* | string | Brief context about what to announce or share. |
tone | string | "professional" | "casual" | "inspirational" (default: "professional"). |
Response
| Field | Type | Description |
|---|---|---|
post | string | Full LinkedIn post text with formatting. |
hashtags | string[] | Recommended hashtags. |
hook_variations | string[] | 3 alternative opening lines. |
Example
curl -X POST /api/career-tools/linkedin-post \
-H "Content-Type: application/json" \
-d '{"post_type": "new_job", "context": "Just joined Stripe as Senior Engineer after 4 years at Amazon"}'/career-tools/job-searchGenerate a personalised job search action plan with target companies, job boards, outreach tactics, and a weekly schedule.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
target_role* | string | Desired role title. |
location | string | Target location or "remote". |
urgency | string | "asap" | "1-3 months" | "3-6 months" (default: "1-3 months"). |
Response
| Field | Type | Description |
|---|---|---|
target_companies | string[] | Recommended companies to target. |
job_boards | object[] | Array of {name, url, best_for}. |
weekly_schedule | object[] | Day-by-day weekly job search action plan. |
networking_targets | string[] | Types of people to reach out to. |
quick_wins | string[] | Actions to take in the first 24 hours. |
Example
curl -X POST /api/career-tools/job-search \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "target_role": "ML Engineer", "location": "remote"}'/career-tools/cover-letterWrite a compelling, tailored cover letter for a specific role and company. Outputs a ready-to-send 3-paragraph letter.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
job_description* | string | Target job description. |
company_name* | string | Target company name. |
role_name* | string | Role title. |
tone | string | "formal" | "conversational" (default: "formal"). |
Response
| Field | Type | Description |
|---|---|---|
cover_letter | string | Full cover letter text. |
subject_line | string | Email subject line. |
key_points | string[] | Key selling points emphasised in the letter. |
Example
curl -X POST /api/career-tools/cover-letter \
-H "Content-Type: application/json" \
-d '{
"resume_text": "…",
"job_description": "…",
"company_name": "Stripe",
"role_name": "Senior Backend Engineer"
}'/career-tools/cover-letter-checkerAnalyse an existing cover letter for structure, personalisation, keyword alignment, and compelling narrative.
Request Body
| Parameter | Type | Description |
|---|---|---|
cover_letter* | string | Cover letter text. |
job_description | string | Job description for alignment check. |
Response
| Field | Type | Description |
|---|---|---|
score | number | Overall cover letter quality score (0–100). |
issues | object[] | Array of {issue, severity, suggestion}. |
strengths | string[] | What the letter does well. |
missing_elements | string[] | Elements that should be added. |
improved_intro | string | Rewritten opening paragraph. |
Example
curl -X POST /api/career-tools/cover-letter-checker \
-H "Content-Type: application/json" \
-d '{"cover_letter": "Dear Hiring Manager, I am writing to apply…"}'/career-tools/first-90-daysGenerate a structured 30-60-90 day onboarding and impact plan for a new role at a target company.
Request Body
| Parameter | Type | Description |
|---|---|---|
role_title* | string | New role title. |
company_name* | string | Company name. |
resume_text | string | Resume text for personalisation. |
job_description | string | Job description for goal alignment. |
Response
| Field | Type | Description |
|---|---|---|
day_30 | object[] | Goals and actions for the first 30 days. |
day_60 | object[] | Goals and actions for days 31–60. |
day_90 | object[] | Goals and actions for days 61–90. |
success_metrics | string[] | How to measure impact in the first 90 days. |
quick_wins | string[] | High-visibility actions in the first week. |
Example
curl -X POST /api/career-tools/first-90-days \
-H "Content-Type: application/json" \
-d '{"role_title": "Engineering Manager", "company_name": "Stripe"}'/career-tools/linkedin-headlineGenerate 5 high-visibility LinkedIn headline options optimised for search discoverability and recruiter appeal.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
target_role* | string | Target role or type of roles. |
open_to_work | boolean | Include "Open to Work" signal in headlines. |
Response
| Field | Type | Description |
|---|---|---|
headlines | object[] | Array of {headline, style, keyword_count, recruiter_appeal}. |
top_pick | string | Recommended best headline. |
seo_keywords | string[] | Keywords to boost LinkedIn search ranking. |
Example
curl -X POST /api/career-tools/linkedin-headline \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "target_role": "Product Manager", "open_to_work": true}'/career-tools/thank-you-emailGenerate a personalised post-interview thank-you email that reinforces your candidacy within 24 hours.
Request Body
| Parameter | Type | Description |
|---|---|---|
your_name* | string | Your full name. |
interviewer_name* | string | Interviewer name. |
role_title* | string | Role interviewed for. |
company_name* | string | Company name. |
key_topics | string | Memorable topics discussed in the interview. |
Response
| Field | Type | Description |
|---|---|---|
subject_line | string | Email subject line. |
email_body | string | Full thank-you email text. |
follow_up_timeline | string | Advice on when to follow up if no response. |
Example
curl -X POST /api/career-tools/thank-you-email \
-H "Content-Type: application/json" \
-d '{
"your_name": "Alex J.",
"interviewer_name": "Sarah Chen",
"role_title": "Senior Engineer",
"company_name": "Stripe",
"key_topics": "distributed systems, on-call culture, scaling challenges"
}'/career-tools/offer-analyzerAnalyse a job offer holistically — compensation, benefits, growth potential, culture fit, and hidden costs.
Request Body
| Parameter | Type | Description |
|---|---|---|
offer_details* | string | Full offer letter or offer summary text. |
resume_text | string | Resume text for experience-level context. |
target_role | string | Role title. |
location | string | Location for cost-of-living context. |
Response
| Field | Type | Description |
|---|---|---|
overall_score | number | Offer attractiveness score (0–100). |
compensation_analysis | object | {verdict, market_comparison, negotiation_room}. |
green_flags | string[] | Positive aspects of the offer. |
red_flags | string[] | Concerns or missing elements. |
missing_benefits | string[] | Common benefits not mentioned. |
negotiation_levers | string[] | What to try to negotiate. |
verdict | string | Accept / Negotiate / Decline recommendation with reasoning. |
Example
curl -X POST /api/career-tools/offer-analyzer \
-H "Content-Type: application/json" \
-d '{"offer_details": "Base: ₹22L, Equity: 0.05%, no remote work…", "target_role": "Senior Engineer"}'/career-tools/skills-matrixBuild a visual skills matrix grouped by category, proficiency, and market demand from a resume.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
target_role* | string | Target role for demand weighting. |
Response
| Field | Type | Description |
|---|---|---|
skills | object[] | Array of {skill, category, proficiency, market_demand, years_experience}. |
top_skills | string[] | Strongest skills to lead with on the resume. |
emerging_skills | string[] | In-demand skills to learn next. |
skill_gaps | string[] | Skills expected for the target role that are missing. |
Example
curl -X POST /api/career-tools/skills-matrix \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "target_role": "Data Scientist"}'/career-tools/portfolio-bioWrite an About/Bio section for a developer or designer portfolio website — in first or third person.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
target_role* | string | Role type (e.g. "Full Stack Developer"). |
person | string | "first" | "third" (default: "first"). |
tone | string | "professional" | "casual" | "creative" (default: "professional"). |
Response
| Field | Type | Description |
|---|---|---|
bio_short | string | Short bio (≤100 words) for portfolio header. |
bio_long | string | Long bio (200–300 words) for About page. |
key_differentiators | string[] | Unique points to highlight. |
Example
curl -X POST /api/career-tools/portfolio-bio \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "target_role": "Full Stack Developer", "tone": "casual"}'/career-tools/career-goalsAlign short- and long-term career goals with resume strengths, market realities, and a step-by-step action roadmap.
Request Body
| Parameter | Type | Description |
|---|---|---|
resume_text* | string | Raw resume text. |
short_term_goal* | string | Goal for the next 1–2 years. |
long_term_goal | string | Goal for the next 5+ years. |
Response
| Field | Type | Description |
|---|---|---|
goal_alignment_score | number | How well goals align with current profile (0–100). |
milestones | object[] | Array of {milestone, timeline, actions}. |
skill_priorities | string[] | Skills to prioritise for the goals. |
alternative_paths | string[] | Other career paths to consider. |
blockers | string[] | Potential obstacles and how to address them. |
Example
curl -X POST /api/career-tools/career-goals \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "short_term_goal": "Become a senior engineer at a FAANG company"}'/career-tools/followup-emailGenerate a polite, professional follow-up email after a job application, interview, or recruiter conversation.
Request Body
| Parameter | Type | Description |
|---|---|---|
your_name* | string | Your full name. |
recipient_name* | string | Recipient's name. |
follow_up_type* | string | "application" | "interview" | "recruiter" | "offer". |
role_title* | string | Role being applied for. |
company_name* | string | Company name. |
days_since | number | Days since the last contact. |
Response
| Field | Type | Description |
|---|---|---|
subject_line | string | Email subject line. |
email_body | string | Full follow-up email text. |
Example
curl -X POST /api/career-tools/followup-email \
-H "Content-Type: application/json" \
-d '{
"your_name": "Alex J.",
"recipient_name": "Sarah Chen",
"follow_up_type": "interview",
"role_title": "Senior Engineer",
"company_name": "Stripe",
"days_since": 5
}'/career-tools/jd-red-flagsIdentify toxic, misleading, or unrealistic requirements in a job description before you apply.
Request Body
| Parameter | Type | Description |
|---|---|---|
job_description* | string | Job description text. |
Response
| Field | Type | Description |
|---|---|---|
red_flag_score | number | Red flag severity score (0–100, lower is better). |
red_flags | object[] | Array of {flag, quote_from_jd, explanation, severity}. |
green_flags | string[] | Positive signals from the JD. |
verdict | string | Overall assessment: "Proceed" | "Proceed with caution" | "Avoid". |
Example
curl -X POST /api/career-tools/jd-red-flags \
-H "Content-Type: application/json" \
-d '{"job_description": "Fast-paced startup, must wear many hats, unlimited PTO…"}'/career-tools/offer-deadlineGet scripts for asking for a deadline extension, a decision framework, and talking points when pressed to decide.
Request Body
| Parameter | Type | Description |
|---|---|---|
offer_details* | string | Job offer summary or text. |
deadline* | string | Offer expiry date (ISO 8601 or natural language). |
competing_offers | boolean | Whether competing offers exist. |
Response
| Field | Type | Description |
|---|---|---|
extension_email | string | Email to request a deadline extension. |
extension_phone_script | string | Phone script for requesting more time. |
decision_framework | object[] | Decision criteria checklist. |
pressure_response | string | Script for when the employer pushes back on extension. |
Example
curl -X POST /api/career-tools/offer-deadline \
-H "Content-Type: application/json" \
-d '{"offer_details": "Offer from Stripe, ₹30L base", "deadline": "2026-05-30", "competing_offers": true}'/career-tools/counter-offerGenerate a data-backed counter-offer response when your current employer matches a new job offer.
Request Body
| Parameter | Type | Description |
|---|---|---|
current_offer* | string | Current employer retention offer details. |
new_offer* | string | New company offer details. |
target_role* | string | Role being applied for. |
resume_text | string | Resume for experience context. |
Response
| Field | Type | Description |
|---|---|---|
counter_letter | string | Counter-offer response letter. |
negotiation_leverage | string[] | Your strongest leverage points. |
stay_vs_leave_analysis | object | Pros/cons breakdown for each option. |
minimum_acceptable | string | Advice on minimum acceptable counter terms. |
Example
curl -X POST /api/career-tools/counter-offer \
-H "Content-Type: application/json" \
-d '{
"current_offer": "Employer matches with ₹28L + 5% raise",
"new_offer": "Stripe: ₹32L + equity + remote",
"target_role": "Senior Engineer"
}'/career-tools/recruiter-messageGenerate a personalised reply to a recruiter outreach message — whether interested, not interested, or wanting more info.
Request Body
| Parameter | Type | Description |
|---|---|---|
recruiter_message* | string | The recruiter message text. |
response_type* | string | "interested" | "not_interested" | "more_info". |
your_name | string | Your full name. |
target_role | string | Role you are looking for (for mismatch responses). |
Response
| Field | Type | Description |
|---|---|---|
reply | string | Full recruiter reply message. |
questions_to_ask | string[] | Questions to ask the recruiter if interested. |
subject_line | string | Email subject line if responding via email. |
Example
curl -X POST /api/career-tools/recruiter-message \
-H "Content-Type: application/json" \
-d '{
"recruiter_message": "Hi, we have a Senior Dev role at our fintech startup…",
"response_type": "interested"
}'/career-tools/company-modeGenerate a deep-dive research brief on a target company — culture, interview style, glassdoor signals, and application tips.
Request Body
| Parameter | Type | Description |
|---|---|---|
company_name* | string | Target company name. |
target_role* | string | Role being applied for. |
resume_text | string | Resume for tailored tips. |
Response
| Field | Type | Description |
|---|---|---|
company_overview | string | AI-generated company summary. |
culture_signals | string[] | Culture and values indicators. |
interview_style | string | Typical interview process description. |
interview_tips | string[] | Specific tips for this company. |
questions_to_ask | string[] | Smart questions to ask the interviewer. |
resume_tailoring_tips | string[] | How to tailor your resume for this company. |
Example
curl -X POST /api/career-tools/company-mode \
-H "Content-Type: application/json" \
-d '{"company_name": "Stripe", "target_role": "Senior Backend Engineer"}'/career-tools/networkingGenerate personalised LinkedIn connection requests, informational interview asks, and referral request messages.
Request Body
| Parameter | Type | Description |
|---|---|---|
message_type* | string | "connection_request" | "informational_interview" | "referral" | "reconnect". |
your_context* | string | Brief context about you and your goal. |
recipient_context* | string | What you know about the recipient (role, company, mutual connections). |
target_role | string | Role you are targeting. |
Response
| Field | Type | Description |
|---|---|---|
message | string | Full networking message text. |
subject_line | string | Email subject line (if applicable). |
follow_up | string | Follow-up message to send if no response. |
Example
curl -X POST /api/career-tools/networking \
-H "Content-Type: application/json" \
-d '{
"message_type": "informational_interview",
"your_context": "Senior SWE at a startup, interested in moving to fintech",
"recipient_context": "Engineering Manager at Stripe, former Google engineer",
"target_role": "Engineering Manager"
}'/career-tools/githubOptimise a GitHub profile README and repository descriptions for recruiter visibility and technical credibility.
Request Body
| Parameter | Type | Description |
|---|---|---|
github_username | string | GitHub username (for context). |
resume_text* | string | Raw resume text. |
target_role* | string | Target role. |
top_projects | string[] | Names of key GitHub repositories. |
Response
| Field | Type | Description |
|---|---|---|
readme_content | string | Full GitHub profile README in Markdown. |
pinned_repo_descriptions | object[] | Array of {repo, description, topics[]}. |
recruiter_search_tips | string[] | Tips to improve GitHub search visibility. |
Example
curl -X POST /api/career-tools/github \
-H "Content-Type: application/json" \
-d '{"resume_text": "…", "target_role": "Full Stack Engineer", "top_projects": ["portfolio-app", "ml-pipeline"]}'/career-tools/offer-compareSide-by-side comparison of multiple job offers across compensation, growth, culture, and total value.
Request Body
| Parameter | Type | Description |
|---|---|---|
offers* | object[] | Array of {company, role, base, equity, benefits, location, remote} objects. |
priorities | string[] | Your decision priorities (e.g. ["salary", "growth", "remote"]). |
Response
| Field | Type | Description |
|---|---|---|
comparison_table | object[] | Structured comparison rows for each offer. |
winner | string | Recommended offer based on priorities. |
scores | object[] | Array of {company, total_score, breakdown}. |
factors_to_negotiate | object[] | What to try to improve on each offer. |
Example
curl -X POST /api/career-tools/offer-compare \
-H "Content-Type: application/json" \
-d '{
"offers": [
{"company": "Stripe", "role": "Senior SWE", "base": "₹32L", "remote": true},
{"company": "Razorpay", "role": "Staff SWE", "base": "₹28L", "remote": false}
],
"priorities": ["salary", "remote", "growth"]
}'Auth & Tracker6 endpoints
/auth/signupRegister a new user account. Returns an access token on success.
Request Body
| Parameter | Type | Description |
|---|---|---|
email* | string | User email address. |
password* | string | Password (min 8 characters). |
name | string | Full display name. |
Response
| Field | Type | Description |
|---|---|---|
access_token | string | JWT access token. |
token_type | string | "bearer". |
user.id | string | New user ID. |
user.email | string | Registered email. |
Example
curl -X POST /api/auth/signup \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "securePass123", "name": "Alex J."}'/auth/signinAuthenticate an existing user. Returns an access token.
Request Body
| Parameter | Type | Description |
|---|---|---|
email* | string | Registered email address. |
password* | string | Account password. |
Response
| Field | Type | Description |
|---|---|---|
access_token | string | JWT access token. |
token_type | string | "bearer". |
Example
curl -X POST /api/auth/signin \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "securePass123"}'/auth/meReturn the authenticated user profile. Requires a Bearer token.
Response
| Field | Type | Description |
|---|---|---|
id | string | User ID. |
email | string | Email address. |
name | string | Display name. |
created_at | string | Account creation timestamp (ISO 8601). |
Example
curl /api/auth/me \ -H "Authorization: Bearer <token>"
/tracker/listReturn all job applications tracked for the authenticated user.
Response
| Field | Type | Description |
|---|---|---|
[].id | string | Application ID. |
[].company | string | Company name. |
[].role | string | Role title. |
[].status | string | "applied" | "screening" | "interview" | "offer" | "rejected". |
[].applied_at | string | Application date (ISO 8601). |
Example
curl /api/tracker/list \ -H "Authorization: Bearer <token>"
/tracker/addAdd a new job application to the tracker.
Request Body
| Parameter | Type | Description |
|---|---|---|
company* | string | Company name. |
role* | string | Role title. |
status | string | Initial status (default: "applied"). |
job_url | string | Link to the job posting. |
notes | string | Application notes. |
Response
| Field | Type | Description |
|---|---|---|
id | string | Created application ID. |
message | string | Confirmation message. |
Example
curl -X POST /api/tracker/add \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"company": "Stripe", "role": "Senior Backend Engineer", "status": "applied"}'/tracker/update/{id}Update the status or notes of a tracked job application.
Request Body
| Parameter | Type | Description |
|---|---|---|
status | string | "applied" | "screening" | "interview" | "offer" | "rejected". |
notes | string | Updated notes. |
next_step | string | Next action item. |
Response
| Field | Type | Description |
|---|---|---|
id | string | Application ID. |
status | string | Updated status. |
message | string | Confirmation message. |
Example
curl -X POST /api/tracker/update/abc123 \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"status": "interview", "next_step": "Technical round on May 30"}'Need help integrating?
The interactive Swagger UI is available at /api/docs when the backend is running.