Job Posting API
Submit job postings and retrieve plans programmatically via the Board API or the TypeScript SDK.
A
JJob posting endpoints are part of the Board API (/v1/boards/:identifier/job-postings/*) and require no authentication. The :identifier is your board slug, board ID (boards_…), or a publishable key (pk_…).
List plans
GET /v1/boards/:identifier/job-postings/plans— list the board's public job-posting plans
The response is a paginated list of JobPostingPlan objects. Pass ?purpose=job_posting (default) or ?purpose=talent_access to filter by plan type. Use the plan id as selectedPlan when submitting a job.
Submit a job posting
POST /v1/boards/:identifier/job-postings— submit a job through the board's public funnel
The server selects the billing flow based on the employer's entitlements and the chosen plan: free, bundle credit, subscription credit, Stripe Checkout, or invoice. The response is a status-discriminated job_posting_result object — branch on .status:
published— job is livepending_approval— job is queued for moderationcheckout— redirect the employer to.checkoutUrlto complete paymentinvoice_sent— an invoice has been emailed; no redirect needed
Use the TypeScript SDK
Import createBoardClient from @cavuno/board:
The client exposes plans and create on board.jobPosting. A rejected submission throws a BoardApiError.
Next steps
Test every returned status in your integration before opening it to employers—especially checkout and invoice_sent, which require different navigation. For the complete endpoint and schema reference, see the Board API documentation; for the no-code employer experience, see Posting a job.