Skip to main content
POST
Create or schedule a pricing rule
Creates a new pricing version for a model. Pricing drives every cost-aware feature on the platform — usage attribution, spend reporting, and token budgets with a cost_limit.

Activate now or schedule for later

The effective_from field decides whether the change is immediate or scheduled:
  • Omit (or null) — the price activates immediately and replaces the current effective price for this rule.
  • Future timestamp — the price activates on that date, recorded as a scheduled change. Visible to admins via the history endpoint and the Scheduled affordance in the portal.
Past versions are immutable; to correct a mistake, create a new version with an immediate effective_from.

Sync mode

sync_mode controls whether Barndoor’s seeded defaults can move this row later:
  • pinned (default for manually-created rules) — never auto-sync.
  • tracking — show the user a prompt when defaults change.
  • auto — silently follow the default. Useful when you want to outsource pricing maintenance entirely to Barndoor.

Example

For wildcards, scheduling, and the four-tier resolution order, see Manage Model Pricing.

Authorizations

Authorization
string
header
required

JWT obtained through Barndoor's authentication flow. Pass the token verbatim in Authorization: Bearer <token>. Use the Barndoor SDK's loginInteractive() helper to obtain a token in scripts and notebooks.

Body

application/json
model_pattern
string
required
Example:

"gpt-4o-mini"

input_cost_per_million_tokens
number
required
output_cost_per_million_tokens
number
required
model_provider
string

Optional. Defaults to catalog_slug if both are unset.

effective_from
string<date-time> | null

When the price activates. Omit (or null) for "now". A future timestamp creates a scheduled change.

provider_id
string<uuid> | null
catalog_slug
string | null
sync_mode
enum<string>

How the row tracks Barndoor's managed defaults:

  • tracking — show the user a prompt when defaults change
  • pinned — never sync; this is your number
  • auto — silently follow updates to the managed defaults
Available options:
tracking,
pinned,
auto
change_reason
string
Example:

"Q1 negotiated pricing"

cache_read_cost_per_million_tokens
number | null
cache_write_cost_per_million_tokens
number | null

Response

The created or no-op'd pricing version

A single pricing rule version. Each "rule" (logical row) has a stack of versions; the latest version with effective_from <= now() is the one that bills.

id
string<uuid>
required
org_id
string<uuid>
required
model_pattern
string
required

Upstream model name (or * wildcard)

Example:

"gpt-4o-mini"

input_cost_per_million_tokens
number
required
Example:

0.15

output_cost_per_million_tokens
number
required
Example:

0.6

effective_from
string<date-time>
required

When this version takes effect. Past = active; future = scheduled

sync_mode
enum<string>
required

How the row tracks Barndoor's managed defaults:

  • tracking — show the user a prompt when defaults change
  • pinned — never sync; this is your number
  • auto — silently follow updates to the managed defaults
Available options:
tracking,
pinned,
auto
change_source
enum<string>
required

How this version of the pricing rule was produced

Available options:
admin_create,
admin_edit,
admin_schedule,
import,
sync_manual,
sync_auto,
admin_archive,
admin_restore
is_archived
boolean
required
model_provider
string | null
provider_id
string<uuid> | null

When set, the rule only applies to routes served by this provider

catalog_slug
string | null
cache_read_cost_per_million_tokens
number | null
cache_write_cost_per_million_tokens
number | null
change_reason
string | null
created_by_user_id
string<uuid> | null
created_by_email
string | null