Jobs
List and retrieve the job postings owned by your organisation. Only published posts are returned — drafts and deleted posts are never exposed through the public API.
All endpoints require a valid API key. See Authentication.
List jobs
GET /api/v1/jobs
Returns every published job owned by the authenticated organisation.
curl https://ojobs.site/api/v1/jobs \
-H "Authorization: Bearer ojobs_prod_xxxxxxxxxxxx"{
"success": true,
"jobs": [
{
"id": "b3e1f2a0-...",
"body": "We're looking for a frontend engineer...",
"badgeType": "REMOTE",
"locationLabel": "Lagos, Nigeria",
"rateAmount": "150000.00",
"rateLabel": "per month",
"headerImageUrl": "https://...",
"applicantCount": 12,
"createdAt": "2026-06-01T10:32:00.000Z",
"text1": null,
"text2": null,
"text3": null,
"text4": null
}
]
}With the SDK
import { OJobsClient } from "@ojobs/sdk";
const ojobs = new OJobsClient({ apiKey: process.env.OJOBS_API_KEY! });
const jobs = await ojobs.jobs.list();Get a single job
GET /api/v1/jobs/:id
Returns one job by ID, scoped to your organisation. If the job doesn't exist, or belongs to a different organisation, this returns 404.
curl https://ojobs.site/api/v1/jobs/b3e1f2a0-... \
-H "Authorization: Bearer ojobs_prod_xxxxxxxxxxxx"{
"success": true,
"job": {
"id": "b3e1f2a0-...",
"body": "We're looking for a frontend engineer...",
"badgeType": "REMOTE",
"locationLabel": "Lagos, Nigeria",
"rateAmount": "150000.00",
"rateLabel": "per month",
"headerImageUrl": "https://...",
"applicantCount": 12,
"createdAt": "2026-06-01T10:32:00.000Z",
"text1": null,
"text2": null,
"text3": null,
"text4": null
}
}With the SDK
const job = await ojobs.jobs.get("b3e1f2a0-...");Job object
| Prop | Type | Default |
|---|---|---|
id | string | - |
body | string | - |
badgeType | "REMOTE" | "ONSITE" | "HYBRID" | "INTERNSHIP" | - |
locationLabel | string | null | - |
rateAmount | string | number | null | - |
rateLabel | string | null | - |
headerImageUrl | string | null | - |
applicantCount | number | - |
createdAt | string (ISO 8601) | - |
text1–text4 | string | null | - |
Errors
| Prop | Type | Default |
|---|---|---|
401 | Unauthorized | - |
403 | Forbidden | - |
404 | Not Found | - |
500 | Internal Server Error | - |