Skip to main content

Documentation 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.

Yeti Jobs gives job seekers a complete toolkit for navigating the hiring process. From discovering open roles with full-text search to tracking every application you’ve submitted, the platform is designed to keep you in control at every step. You can save jobs for later, follow companies you’re interested in, upload your resume for instant AI-powered ATS feedback, and monitor the status of your active applications — all through a clean REST API backed by PostgreSQL.

Browsing Jobs

Every visitor can fetch the full list of active job postings without authentication. Results are paginated and sortable.
GET /api/v1/jobs
ParameterTypeDefaultDescription
pageinteger1Page number
limitinteger10Results per page
sortbystringcreated_atSort column (created_at, salary, total_job_views)
curl https://yeti-jobs.onrender.com/api/v1/jobs?page=1&limit=10

Filtered Job Listings

For fine-grained discovery, use the filtered listing endpoint. It supports salary range, experience level, work arrangement, location, skills, job status, and recency filters.
GET /api/v1/jobs/jobs
ParameterTypeDefaultDescription
pageinteger1Page number
limitinteger10Results per page
sortbystringcreated_atSort column (created_at, salary, total_job_views)
job_typestringFilter by Remote, Onsite, or Hybrid
min_salaryintegerMinimum salary filter
max_salaryintegerMaximum salary filter
min_expintegerMinimum years of experience
max_expintegerMaximum years of experience
locationstringPartial location match (case-insensitive)
skillsstringComma-separated skills to match against the job’s skills array
statusstringopen or closed to filter by listing status
postedstringRecency filter: 24h, 7d, or 30d
curl "https://yeti-jobs.onrender.com/api/v1/jobs/jobs?job_type=Remote&min_salary=80000&skills=Node.js,PostgreSQL&page=1&limit=10"

Searching Jobs by Title

For keyword-based discovery, use the full-text search endpoint. It queries a PostgreSQL GIN-indexed tsvector column (search_title) for fast, relevance-ranked results. Authentication is required.
GET /api/v1/jobs/search?title=
The title query parameter drives full-text job search. Searches are backed by a PostgreSQL plainto_tsquery call against the search_title tsvector column.
curl "https://yeti-jobs.onrender.com/api/v1/jobs/search?title=backend+engineer" \
  -H 'Cookie: token=<your_jwt_token>'

Applying to a Job

1

Find a job you want to apply for

Browse the job listings or use full-text search to locate the role. Note the job’s uid — you’ll use it as the :id path parameter when applying.
2

Prepare your application payload

Gather your cover letter, availability notice period (in days), expected salary, and a short statement explaining why you should be hired. All four fields are validated server-side before the application is saved.
3

Submit the application

Send a POST request to the apply endpoint. A duplicate-check prevents you from applying to the same job twice.
curl -X POST https://yeti-jobs.onrender.com/api/v1/applications/{job_id}/apply \
  -H 'Content-Type: application/json' \
  -H 'Cookie: token=<your_jwt_token>' \
  -d '{
    "cover_letter": "I am excited to apply for this role because...",
    "notice_period": 30,
    "expected_salary": 90000,
    "why_hire": "I bring 4 years of full-stack experience with Node.js and React."
  }'
4

Track your application

After applying, your submission appears in your application list. The status field begins as applied and can be updated by the recruiter to shortlisted, hired, or rejected.

Apply Endpoint Reference

POST /api/v1/applications/:id/apply
cover_letter
string
required
Your cover letter text addressed to the hiring team.
notice_period
integer
required
Number of days before you can start (your notice period at your current role).
expected_salary
integer
required
Your expected annual salary in the local currency unit.
why_hire
string
required
A concise statement explaining why you are the right candidate for this role.

Withdrawing an Application

If you change your mind, you can withdraw a pending application at any time. This permanently removes the application record.
curl -X DELETE https://yeti-jobs.onrender.com/api/v1/applications/{job_id}/withdraw \
  -H 'Cookie: token=<your_jwt_token>'
DELETE /api/v1/applications/:id/withdraw

Viewing Your Applications

Retrieve a full list of every job you have applied for, including the current status, cover letter, and company details.
curl https://yeti-jobs.onrender.com/api/v1/applications/applylist \
  -H 'Cookie: token=<your_jwt_token>'
GET /api/v1/applications/applylist
The response includes joined data from the jobs and companies tables: job title, company name, job type, your applied-at timestamp, cover letter, notice period, expected salary, why-hire statement, and the current application status.

Bookmarking Jobs

Save interesting jobs to review later. Bookmarks are stored in the saved_jobs table and linked to both your user account and the relevant company.

Bookmark a Job

POST /api/v1/jobs/:id/bookmark_job
Adds the job to your saved list.

Remove a Bookmark

DELETE /api/v1/jobs/:id/remove_from_bookmark
Removes the job from your saved list.

View Saved Jobs

GET /api/v1/jobs/saved_jobs/list
Returns all bookmarked jobs.
# Bookmark a job
curl -X POST https://yeti-jobs.onrender.com/api/v1/jobs/{job_id}/bookmark_job \
  -H 'Cookie: token=<your_jwt_token>'

# View all bookmarks
curl https://yeti-jobs.onrender.com/api/v1/jobs/saved_jobs/list \
  -H 'Cookie: token=<your_jwt_token>'

Uploading a Resume

Upload a PDF resume to your profile. The backend extracts text using pdf-parse, runs it through an AI model via the Groq API, and stores both the file URL and your ATS score. See the ATS Scoring page for the full analysis flow.
POST /api/v1/users/resume
curl -X POST https://yeti-jobs.onrender.com/api/v1/users/resume \
  -H 'Cookie: token=<your_jwt_token>' \
  -F 'resume=@/path/to/your-resume.pdf'
To retrieve your current resume URL and latest ATS score:
GET /api/v1/users/resume

Viewing Your Profile

Fetch a user’s full profile including their education, skills, experience, and resume URL. The response joins data from the users and user_educations tables.
GET /api/v1/users/:id
curl https://yeti-jobs.onrender.com/api/v1/users/{user_uid} \
  -H 'Cookie: token=<your_jwt_token>'
Fields returned include: uid, fname, lname, email, education, experience, skills, resume_url, profile_pic_url, phone_number, is_employee, and degree (from user_educations).

Following Companies

Follow companies to stay updated on their job postings and activity. A unique constraint ensures each user can only follow a company once.
POST /api/v1/companies/:id/follow
curl -X POST https://yeti-jobs.onrender.com/api/v1/companies/{company_uid}/follow \
  -H 'Cookie: token=<your_jwt_token>'
To unfollow a company you are currently following:
DELETE /api/v1/companies/:id/follow
curl -X DELETE https://yeti-jobs.onrender.com/api/v1/companies/{company_uid}/follow \
  -H 'Cookie: token=<your_jwt_token>'
To see all companies you currently follow:
GET /api/v1/users/following
This returns the full company record for each followed company, joined from companies via the user_companies_follows relationship table.

Build docs developers (and LLMs) love