Plans

Create an employer plan

Changed on

Creates plan metadata only. Set the price with PUT /v1/plans/:id/price after the Board payment connection is ready.

post/plans

Request

  • Base URL: https://api.cavuno.com/v1
  • URL: https://api.cavuno.com/v1/plans
  • Auth: HTTP bearer

Request body

namestring required

Display name for the plan.

descriptionstring

Optional plan description.

kind'free' | 'one_time' | 'bundle' | 'subscription' required

Plan billing kind.

billingInterval'day' | 'week' | 'month' | 'year'

Subscription billing interval. Required for kind=subscription. Pair with billingIntervalCount for non-1 counts (quarterly = month × 3).

billingIntervalCountinteger
purpose'job_posting' | 'talent_access' | 'membership' | 'job_seeker' | 'employer_service' | 'job_seeker_service'

What the plan entitles: job-posting, talent-access, membership (employer membership), job-seeker (candidate paywall), or contact-led employer_service / job_seeker_service catalogue rows.

isPublicboolean

Whether the plan is publicly listed. Defaults to false.

isRecommendedboolean
displayOrderinteger
pricingMode'priced' | 'contact'

How the plan is sold. priced takes a price and syncs it to Stripe; contact renders a contact CTA and creates no Stripe objects — setting a price on a contact plan is rejected. Omitted on create means priced.

priceTextstring

Display price text for a contact plan, e.g. "Contact us".

ctaTextstring

CTA label for a contact plan, e.g. "Talk to sales".

ctaDestinationstring

CTA target for a contact plan. Must be an https, mailto:, or tel: URL.

Response

Plan created.

idstring required

Unique identifier for the plan.

object'plan' required
namestring required
descriptionstring nullable required
kindstring required
billingInterval'day' | 'week' | 'month' | 'year' nullable required

Subscription billing interval. Required for kind=subscription. Pair with billingIntervalCount for non-1 counts (quarterly = month × 3).

billingIntervalCountinteger nullable required

Stripe recurring.interval_count. Null/omitted means 1. Quarterly is month × 3.

purpose'job_posting' | 'talent_access' | 'membership' | 'job_seeker' | 'employer_service' | 'job_seeker_service' required

What the plan entitles: job-posting, talent-access, membership (employer membership), job-seeker (candidate paywall), or contact-led employer_service / job_seeker_service catalogue rows.

isPublicboolean required
isRecommendedboolean required
isArchivedboolean required
displayOrdernumber nullable required
pricingMode'priced' | 'contact' required

How the plan is sold. Plans created before this field existed report priced.

priceTextstring nullable required

Operator-authored display price text for a contact plan, e.g. "From $2,000". Null when unset.

ctaTextstring nullable required

Operator-authored CTA label for a contact plan.

ctaDestinationstring nullable required

The CTA target: an https, mailto:, or tel: URL. Null when unset, in which case no CTA is rendered.

Changes