Recruiters on Yeti Jobs are users assigned to a company as employees. Once linked to a company (via the admin assign-user flow), a recruiter gains access to a dedicated set of endpoints for managing the full hiring lifecycle — from posting a new role to reviewing applicants and issuing final hiring decisions. All recruiter actions are scoped to the company the recruiter belongs to, enforced at the middleware level via theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/tech-dipesh/yeti-Jobs/llms.txt
Use this file to discover all available pages before exploring further.
isCompanyEmployee guard.
Creating a Job Listing
Post a new job opening on behalf of your company. Thecompany_id is automatically read from your JWT token, so the job is always attributed to your employer. Skills can be passed as either a comma-separated string or a JSON array.
The
job_type field must be one of exactly three values: Remote, Onsite, or Hybrid. Any other value will be rejected by the Zod validation layer before the database is touched.The job title, e.g.
"Senior Backend Engineer".Full job description including responsibilities, requirements, and benefits.
Annual salary in your local currency unit (stored as
int8).Work arrangement. Must be
Remote, Onsite, or Hybrid.Required skills. Pass as a comma-separated string (
"Node.js,PostgreSQL,Docker") or a JSON array.Minimum years of experience required. Defaults to
0 if omitted.Job location, e.g.
"San Francisco, CA" or "Remote".Expiry date for the listing in
YYYY-MM-DD format. The nightly cron job closes listings past their expired_at date automatically.Example Request
uid, which you can use for subsequent edit or delete operations.
Editing a Job Listing
Update an existing job’s details. Only the owner (the company whose recruiter created it) can edit a listing. TheisOwner middleware validates ownership before the controller runs.
jobs table.
Deleting a Job Listing
Permanently remove a job listing. This cascades to delete related applications and saved-job entries due toON DELETE CASCADE in the schema.
Reviewing Applicants
Fetch the list of all candidates who have applied to a specific job. The response includes full names, experience, phone numbers, resume URLs, skill arrays, application status, and applied-at timestamps.Changing Application Status
Move a candidate through the hiring pipeline by updating their application status. This is the primary tool for recruiters to communicate decisions — every status change is reflected immediately when the applicant views their application list.The new application status. Must be one of:
applied, shortlisted, hired, rejected.The UUID of the applicant whose status you are updating.
BEGIN / COMMIT) and validates that the applicant has indeed applied to the job before updating.
Company Dashboard Stats
Get a high-level overview of your company’s hiring activity. All counts are scoped to the authenticated recruiter’scompany_id.
total_jobs
Count of all job listings ever created by your company.
total_applications
Count of all applications received across all your company’s jobs.
total_employees
Number of users currently assigned to your company.
total_followers
Number of users following your company profile.
Company Followers
Retrieve the list of users who follow your company. Returns full user records joined viauser_companies_follows.
Listing Company Employees
Fetch all users currently assigned to a company. Useful for auditing team membership and seeing who has recruiter access.full_name, email, experience, education, role, resume_url, and profile_pic_url.
Company-Wide Applications
Retrieve all applications submitted across every job listing belonging to your company. The response joins theapplications, users, and jobs tables to return applicant details alongside job context.