The Jobs API powers every part of the job-listing experience in Yeti Jobs. Recruiters who belong to a company can create, edit, and delete listings; job seekers can browse, filter, full-text search, and bookmark roles they are interested in. Browsing the public listing feeds (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.
GET /api/v1/jobs and GET /api/v1/jobs/jobs) does not require authentication, but all other operations require a valid token cookie. Full-text search is backed by a PostgreSQL tsvector GIN index on the search_title column, which supports fast prefix and relevance queries.
GET /api/v1/jobs
Lists all jobs with basic pagination. Jobs are joined with their parent company so thecompany_name field is always populated. No authentication is required.
Page number (default:
1).Number of results per page (default:
10).Column to sort by. Validated against the allowed list:
uid, title, description, salary, job_type, is_job_open, created_by, created_at (default), skills, views. Results are sorted descending.Minimum salary filter (not applied when omitted).
Maximum salary filter (not applied when omitted).
Minimum years of experience filter (not applied when omitted).
Maximum years of experience filter (not applied when omitted).
Filter by work arrangement:
Remote, Onsite, or Hybrid.GET /api/v1/jobs/jobs
Lists jobs with rich filtering. Multiple filters can be combined in a single request. Results are paginated and include a total count for building pagination UI. Note the double/jobs segment in the path — this is the filtered listing endpoint, distinct from the basic GET /api/v1/jobs.
Filter by work arrangement:
Remote, Onsite, or Hybrid.Case-insensitive partial match on the job’s
location field.Minimum salary (inclusive).
Maximum salary (inclusive).
Minimum years of experience required.
Maximum years of experience required.
Comma-separated skill names. Jobs must have all specified skills (
@> array containment).open or closed to filter by is_job_open.Recency filter:
24h, 7d, or 30d.created_at (default), salary, or total_job_views. Results are sorted ascending.Page number (default:
1).Results per page (default:
10).GET /api/v1/jobs/search
Performs a full-text search against job titles using a PostgreSQLtsvector GIN index. The query string is normalised to a prefix tsquery so partial words match.
Requires authentication (
token cookie).The search term (e.g.
"react developer"). Maps to the search_title tsvector column.created_at (default) or salary.POST /api/v1/jobs/new
Creates a new job listing under the authenticated user’s company. Thecompany_id is derived from the JWT — the caller must be a company employee.
Requires authentication and the company-employee middleware (
company_id must be set on the user record).Job title. 2–25 characters.
Job description. 25–500 characters.
Annual salary in the local currency. 2,500–2,500,000.
One of
Remote, Onsite, or Hybrid.Array of required skill strings, e.g.
["React", "Node.js"]. A comma-separated string is also accepted.Minimum years of experience (0–50, default:
0).Job location. Minimum 3 characters. Required by schema validation.
GET /api/v1/jobs/:id
Returns a single job with full details including company info, and context flags (is_owner, is_saved, is_applied) derived from the authenticated caller. Also increments the total_job_views counter.
Requires authentication.
UUID of the job.
PUT /api/v1/jobs/:id/edit
Replaces a job listing’s content. The caller must be an authenticated company employee who owns the listing (i.e. the job’scompany_id matches the caller’s company_id).
Requires authentication and job ownership.
UUID of the job to update.
Job title. 2–25 characters.
Job description. 25–500 characters.
Annual salary. 2,500–2,500,000.
Remote, Onsite, or Hybrid.Array of skill strings.
Minimum years of experience (0–50).
Job location (minimum 3 characters).
DELETE /api/v1/jobs/:id/delete
Permanently deletes a job listing and all its associated data. Returns204 No Content on success.
Requires authentication and job ownership.
UUID of the job to delete.
GET /api/v1/jobs/saved_jobs/list
Returns all jobs the authenticated job seeker has bookmarked, sorted by most recently saved.Requires authentication and the
guest (job seeker) role.POST /api/v1/jobs/:id/bookmark_job
Saves a job to the authenticated user’s bookmark list.Requires authentication and the job-seeker role.
UUID of the job to bookmark.
DELETE /api/v1/jobs/:id/remove_from_bookmark
Removes a previously bookmarked job from the user’s saved list.Requires authentication, the job-seeker role, and bookmark ownership.
UUID of the job to un-bookmark.
GET /api/v1/jobs/:id/verify-owner
Checks whether the authenticated user’s company owns the specified job. Useful for conditionally rendering edit/delete controls on the frontend without an extra profile fetch.Requires authentication.
UUID of the job to verify ownership of.