Log in

Jobs

Retrieve your organisation's job listings.

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

PropTypeDefault
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

PropTypeDefault
401
Unauthorized
-
403
Forbidden
-
404
Not Found
-
500
Internal Server Error
-