Skip to content
OneATS

Developers

Build with OneATS

Show your open jobs on your website, read them from the public jobs API, or hand job boards an XML feed.

Your company key

Every snippet on this page needs your company key. Company admins can find ready-made snippets, with the key already filled in, under Settings → Website Integration in the portal.

The key identifies your company’s public job listings only. It cannot read candidates or change anything. Still, treat it as you would any identifier you don’t want misused, and contact [email protected] if you need it rotated.

JavaScript widget Recommended

The widget renders your open jobs inside your page, with tabs for jobs and internships, filters and pagination. It follows your page’s layout and uses your brand colour.

HTML
<!-- 1. Add a container where jobs should appear -->
<div id="oneats-career-widget" data-key="YOUR_COMPANY_KEY" data-theme="#2563EB"></div>

<!-- 2. Include the widget script before </body> -->
<script src="https://candidate.oneats.co/widget/oneats-embed.js" async></script>
  • data-key — your company key (required).
  • data-theme — a hex brand colour for buttons and highlights (optional).
  • The container can also be any element with a data-oneats-widget attribute.

iframe embed

If your website builder doesn’t allow scripts, embed the hosted job list in an iframe instead.

HTML
<iframe src="https://candidate.oneats.co/job-list/YOUR_COMPANY_KEY" width="100%" height="800"
  frameborder="0" style="border:none;border-radius:12px;overflow:hidden;"></iframe>

Public jobs API

Read your open jobs as JSON to build a fully custom careers page. No authentication is needed; only active, public jobs are returned.

GET /api/v1/candidate/jobrole/list-jobs/{key}

  • page — page number, starting at 1 (default 1).
  • limit — jobs per page (default 9).
  • department — filter by department title.
  • position — filter by job title.
cURL
curl "https://api.oneats.co/api/v1/candidate/jobrole/list-jobs/YOUR_COMPANY_KEY?page=1&limit=9"
JavaScript
const res = await fetch(
  "https://api.oneats.co/api/v1/candidate/jobrole/list-jobs/YOUR_COMPANY_KEY?page=1&limit=9"
);
const { data } = await res.json();

for (const job of data.allRole) {
  console.log(job.title, job.locations, `https://candidate.oneats.co/jobs/${job.slug}`);
}

Response (abridged):

JSON
{
  "success": true,
  "data": {
    "company": { "companyName": "…", "slug": "…", "logoUrl": "…", "colorCode": "#0d51c9", … },
    "allRole": [ { "title": "…", "slug": "…", "locations": […], "empType": "…",
                   "isRemote": false, "department": { "title": "…" }, … } ],
    "jobRole": [ … ],          // jobs only
    "internshipRole": [ … ],   // internships only
    "allRoleOpening": 32, "jobRoleOpening": 17, "internshipOpening": 15,
    "departments": [ … ], "positions": [ … ], "locations": [ … ],
    "page": 1, "limit": 9, "totalPages": 4
  }
}

Link each job to https://candidate.oneats.co/jobs/{slug} so candidates apply through OneATS and the application is recorded against your company.

XML job feeds

OneATS publishes a feed of your open jobs in the formats Indeed and LinkedIn read. Feeds refresh every 15 minutes and include only open jobs. Find your feed URLs under Settings → Job Channels & XML Feeds.

Feed URLs
https://api.oneats.co/feeds/YOUR_FEED_TOKEN/indeed.xml
https://api.oneats.co/feeds/YOUR_FEED_TOKEN/linkedin.xml

Source tracking

Applications are tagged with where they came from. Jobs opened from the widget, your careers page or a distribution channel carry a src parameter, and standard utm_source, utm_medium and utm_campaign parameters are recorded too. If you link to OneATS job pages from your own campaigns, add UTM parameters and they’ll appear in your source reports.

Need something the API doesn’t cover?

Tell us what you’re building — request an integration.