Skip to content

Jobs

Base URL: /v1


GET /v1/jobs

Returns a cursor-paginated list of job postings in descending order (newest first).

Authentication: None (public)

ParameterTypeRequiredDefaultDescription
typestringNoFilter by job type (e.g., full-time, contract).
statusstringNoFilter by job status (e.g., open, closed).
cursorstringNoCursor token for pagination. Obtained from next_cursor.
limitnumberNo20Number of results per page. Min 1, max 50.
{
"jobs": [
{
"id": "job_abc123",
"title": "Senior Frontend Engineer",
"description": "We are looking for an experienced frontend engineer...",
"type": "full-time",
"status": "open",
"location": "Remote",
"salary_min": 120000,
"salary_max": 160000,
"company": "Acme Corp",
"user_id": "usr_poster01",
"created_at": "2026-03-28T14:00:00Z",
"poster": {
"id": "usr_poster01",
"username": "acme_hr",
"first_name": "Morgan",
"last_name": "Taylor",
"avatar_url": "https://cdn.example.com/avatars/acme_hr.jpg"
}
}
],
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wMy0yOFQxNDowMDowMFoifQ=="
}
FieldTypeDescription
jobsarrayArray of job objects.
jobs[].idstringUnique job identifier.
jobs[].titlestringJob title.
jobs[].descriptionstringFull job description.
jobs[].typestringJob type (e.g., full-time, part-time, contract).
jobs[].statusstringJob status (e.g., open, closed).
jobs[].locationstringJob location or "Remote".
jobs[].salary_minnumber | nullMinimum salary. null if not specified.
jobs[].salary_maxnumber | nullMaximum salary. null if not specified.
jobs[].companystringCompany name.
jobs[].user_idstringID of the user who posted the job.
jobs[].created_atstringISO 8601 creation timestamp.
jobs[].posterobjectEmbedded poster profile.
next_cursorstring | nullCursor for the next page. null if no more results.

POST /v1/jobs

Creates a new job posting.

Authentication: Required

FieldTypeRequiredDescription
titlestringYesJob title.
descriptionstringYesFull job description.
typestringNoJob type (e.g., full-time, part-time, contract).
locationstringNoJob location.
salary_minnumberNoMinimum salary.
salary_maxnumberNoMaximum salary.
companystringNoCompany name.
{
"title": "Senior Frontend Engineer",
"description": "We are looking for an experienced frontend engineer to join our team...",
"type": "full-time",
"location": "Remote",
"salary_min": 120000,
"salary_max": 160000,
"company": "Acme Corp"
}
{
"job": {
"id": "job_abc123",
"title": "Senior Frontend Engineer",
"description": "We are looking for an experienced frontend engineer to join our team...",
"type": "full-time",
"status": "open",
"location": "Remote",
"salary_min": 120000,
"salary_max": 160000,
"company": "Acme Corp",
"user_id": "usr_poster01",
"created_at": "2026-03-28T14:00:00Z"
}
}
StatusDescription
401Unauthorized. Token missing or invalid.
422Validation error. Missing title or description.

GET /v1/jobs/{id}

Returns full details for a single job posting, including the poster profile.

Authentication: None (public)

ParameterTypeRequiredDescription
idstringYesThe job ID.
{
"job": {
"id": "job_abc123",
"title": "Senior Frontend Engineer",
"description": "We are looking for an experienced frontend engineer to join our team...",
"type": "full-time",
"status": "open",
"location": "Remote",
"salary_min": 120000,
"salary_max": 160000,
"company": "Acme Corp",
"user_id": "usr_poster01",
"created_at": "2026-03-28T14:00:00Z",
"poster": {
"id": "usr_poster01",
"username": "acme_hr",
"first_name": "Morgan",
"last_name": "Taylor",
"avatar_url": "https://cdn.example.com/avatars/acme_hr.jpg"
}
}
}
StatusDescription
404Job not found.

PATCH /v1/jobs/{id}

Updates an existing job posting. Only the job owner can update it. All fields are optional — only provided fields are updated.

Authentication: Required (owner only)

ParameterTypeRequiredDescription
idstringYesThe job ID.
FieldTypeRequiredDescription
titlestringNoUpdated job title.
descriptionstringNoUpdated job description.
typestringNoUpdated job type.
locationstringNoUpdated location.
salary_minnumberNoUpdated minimum salary.
salary_maxnumberNoUpdated maximum salary.
companystringNoUpdated company name.
statusstringNoUpdated status (e.g., open, closed).
{
"salary_max": 180000,
"status": "closed"
}
{
"job": {
"id": "job_abc123",
"title": "Senior Frontend Engineer",
"description": "We are looking for an experienced frontend engineer to join our team...",
"type": "full-time",
"status": "closed",
"location": "Remote",
"salary_min": 120000,
"salary_max": 180000,
"company": "Acme Corp",
"user_id": "usr_poster01",
"created_at": "2026-03-28T14:00:00Z"
}
}
StatusDescription
401Unauthorized. Token missing or invalid.
403Forbidden. Caller is not the job owner.
404Job not found.

DELETE /v1/jobs/{id}

Permanently deletes a job posting. Only the job owner can delete it.

Authentication: Required (owner only)

ParameterTypeRequiredDescription
idstringYesThe job ID.
{
"message": "Job deleted successfully."
}
StatusDescription
401Unauthorized. Token missing or invalid.
403Forbidden. Caller is not the job owner.
404Job not found.

POST /v1/jobs/{id}/apply

Submits an application for a job posting.

Authentication: Required

ParameterTypeRequiredDescription
idstringYesThe job ID.
FieldTypeRequiredDescription
cover_letterstringNoCover letter text.
resume_urlstringNoURL to the applicant’s resume file.
{
"cover_letter": "I am excited to apply for this position. With 5 years of frontend experience...",
"resume_url": "https://cdn.example.com/resumes/taylor-brooks-resume.pdf"
}
{
"application": {
"id": "app_xyz789",
"job_id": "job_abc123",
"user_id": "usr_applicant01",
"cover_letter": "I am excited to apply for this position. With 5 years of frontend experience...",
"resume_url": "https://cdn.example.com/resumes/taylor-brooks-resume.pdf",
"created_at": "2026-03-30T09:00:00Z"
}
}
FieldTypeDescription
application.idstringUnique application identifier.
application.job_idstringThe job this application is for.
application.user_idstringThe applicant’s user ID.
application.cover_letterstringSubmitted cover letter text.
application.resume_urlstringURL to the submitted resume.
application.created_atstringISO 8601 creation timestamp.
StatusDescription
401Unauthorized. Token missing or invalid.
404Job not found.