{"openapi":"3.1.0","info":{"title":"PrepPilot API","version":"0.1.0","description":"Public AI-powered career tools API. No OAuth token is required; production requests must originate from allowed site origins."},"servers":[{"url":"https://usepreppilot.com"}],"paths":{"/api/generate-questions":{"post":{"summary":"Generate interview questions from a job description","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/generate-gap-questions":{"post":{"summary":"Generate gap-focused interview questions from fit analysis","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/regenerate-question":{"post":{"summary":"Replace one practice question","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/get-feedback":{"post":{"summary":"Score and critique an interview answer","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/compare-resume":{"post":{"summary":"Compare a resume against a job description","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/roast-resume":{"post":{"summary":"Generate a detailed resume roast","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/parse-resume":{"post":{"summary":"Extract text from a resume upload","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/product-feedback":{"post":{"summary":"Submit optional product feedback","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/utility-tools/cover-letter-generator":{"post":{"summary":"Run the cover letter generator utility tool","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/utility-tools/linkedin-profile":{"post":{"summary":"Run the linkedin profile utility tool","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/utility-tools/thank-you-email":{"post":{"summary":"Run the thank you email utility tool","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/utility-tools/salary-negotiation":{"post":{"summary":"Run the salary negotiation utility tool","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/utility-tools/application-checklist":{"post":{"summary":"Run the application checklist utility tool","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/utility-tools/resume-bullet-rewriter":{"post":{"summary":"Run the resume bullet rewriter utility tool","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/utility-tools/introduce-yourself":{"post":{"summary":"Run the introduce yourself utility tool","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/utility-tools/cold-outreach":{"post":{"summary":"Run the cold outreach utility tool","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/utility-tools/jd-decoder":{"post":{"summary":"Run the jd decoder utility tool","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/utility-tools/star-stories":{"post":{"summary":"Run the star stories utility tool","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/utility-tools/interview-question-predictor":{"post":{"summary":"Run the interview question predictor utility tool","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}},"/api/utility-tools/resignation-letter-generator":{"post":{"summary":"Run the resignation letter generator utility tool","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Server error"}}}}}}