Public Jobs API no key required

GET /functions/v1/hr-careers

A public, key-less job-board feed for the roles you publish from HR → Recruitment. It's a plain GET you can curl, drop into your own website, or hand to a job aggregator or no-code tool to poll — modelled on the boards you already integrate with (Greenhouse, Lever, Ashby). Two endpoints: list the open roles, and fetch one role with its full description.

No authentication. These are public GETs — no API key, no token, no CORS gymnastics. Responses are briefly cached so aggregators and CDNs can poll them politely.

Base URL

https://bgbavxtjlbvgplozizxu.supabase.co/functions/v1/hr-careers

Endpoints

RequestReturns
GET ?slug=<company>{ company, count, jobs: [ … ] } — every currently-open role.
GET ?slug=<company>&job=<job-slug>{ company, job: { … } } — one role, plus its description and requirements.

slug is your workspace's slug (the same one in your careers-page URL) and is required.

Example

Call
curl "https://bgbavxtjlbvgplozizxu.supabase.co/functions/v1/hr-careers?slug=acme"
curl "https://bgbavxtjlbvgplozizxu.supabase.co/functions/v1/hr-careers?slug=acme&job=senior-installer"

Response fields

company

FieldWhat it is
name, slugYour company name and board slug.
websiteYour website, if set.
logo_urlYour logo, if set — handy for rendering the board.

Each job

FieldWhat it is
id, slug, titleIdentity of the posting (slug is what you pass back as &job=).
departmentThe department name (flattened to a plain string).
location, location_type, remoteWhere the role is based and whether it's remote.
employment_type, levele.g. full-time / part-time, and seniority.
salary_min, salary_max, currencySalary range where published.
compensation, compensation_noteFree-form compensation detail.
published_at, closes_at, statusPublication window and state.
absolute_urlA direct link to the posting on the careers page — link straight to it from your site or the aggregator.
updated_atLast change — use it to poll incrementally instead of re-reading everything.
description, requirementsSingle-job response only — the full body copy.

What's published (and what isn't)

Errors

StatusWhen
400 slug is requiredYou didn't pass ?slug=.
404 not foundNo company matches that slug.
404 This position is no longer open.The requested job has closed or isn't published.

Typical use: render your open roles on your own marketing site by fetching the list endpoint at build time (or client-side), and link each card to its absolute_url. Aggregators can poll the same URL and use updated_at to pick up changes. Create and manage the postings themselves in HR → Recruitment.