Job Posting API

Submit job postings and retrieve plans programmatically via the Board API or the TypeScript SDK.

Job 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

  1. 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

  1. 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 live
  • pending_approval — job is queued for moderation
  • checkout — redirect the employer to .checkoutUrl to complete payment
  • invoice_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.