Rate tables provide structured lookup pricing - a grid of rates indexed by one or more dimensions. Use rate tables for complex pricing that depends on multiple variables like geography, volume tier, customer segment, or contract term.
Example: A shipping rate table with dimensions for weight range, origin country, and destination country.
List rate tables
Lists all rate tables that belong to the caller's organization.
query Parameters
limitPage size. Values above the server-side cap are clamped (standard default 50, cap 200; a few document-heavy lists use larger windows). Invalid values fall back to the default.
cursorOpaque continuation token from the previous response's pagination.cursor. Omit for the first page. Cursors are stateless and do not expire, but are only valid for the list and filters that produced them.
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
List rate tables › Responses
OK
Create a rate table
Creates a new rate-table container scoped to the caller's organization. Versions and entries are added through the version sub-routes.
Headers
Idempotency-KeyUnique key that makes this POST safe to retry: repeats with the same key replay the first response instead of re-executing. Replays are scoped to the retrying principal (same API key / user) and kept for 24 hours. Required on every POST.
Client-generated idempotency key (e.g. a UUID).
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Create a rate table › Request Body
currencyISO 4217 currency for the entry values; defaults to the org's preferred currency when omitted.
default_valueDecimal value returned on a miss; required when on_missing_key=default_value.
descriptionOptional description of the table's purpose.
nameDisplay name for the table.
on_missing_keyBehaviour when no entry matches: 'error', 'zero', or 'default_value'.
requires_continuous_coverageWhen true, published versions may not leave a gap in the effective-date timeline.
slugURL-safe unique identifier formulas reference this table by.
table_typeMatching mode: 'lookup' (exact key match) or 'bracket' (numeric range match).
Create a rate table › Responses
Created
Get a rate table
Returns the rate table's root row (slug, type, missing-key policy, currency, lifecycle status, head version pointer). Version content — the rows and entries — is served by the /rate-tables/{id}/versions endpoints.
path Parameters
idRate table ID
Rate table ID
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Get a rate table › Responses
OK
Delete a rate table (draft only)
Hard-deletes a rate table that has never had a published version. Once a version is published, use Archive instead.
path Parameters
idRate table ID
Rate table ID
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Delete a rate table (draft only) › Responses
No Content
Update a rate table
Updates editable fields on a rate table (name, description, etc.). With effective_at set, takes the table's latest draft version live — immediately or scheduled — and returns the affected version instead of the table.
path Parameters
idRate table ID
Rate table ID
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Update a rate table › Request Body
default_valueNew default value; omit to leave unchanged.
descriptionNew description; omit to leave unchanged.
effective_atPublish timestamp for this edit; mutually exclusive with save_as_draft.
nameNew display name; omit to leave unchanged.
on_missing_keyNew missing-key behaviour ('error', 'zero', or 'default_value'); omit to leave unchanged.
requires_continuous_coverageNew continuous-coverage requirement; omit to leave unchanged.
save_as_draftWhen true, parks the edit in a draft version instead of publishing it; mutually exclusive with effective_at.
Update a rate table › Responses
OK
Outcome-dependent: with effective_at the PATCH publishes the latest draft and returns the RateTableVersion; a plain display-field update returns the RateTable root row.
Archive a rate table (terminal)
Terminal transition: soft-deletes the table and archives all of its versions, returning 200 with the archived rate table. Use this once the table has at least one published version (Delete is reserved for never-published drafts).
path Parameters
idRate table ID
Rate table ID
Headers
Idempotency-KeyUnique key that makes this POST safe to retry: repeats with the same key replay the first response instead of re-executing. Replays are scoped to the retrying principal (same API key / user) and kept for 24 hours. Required on every POST.
Client-generated idempotency key (e.g. a UUID).
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Archive a rate table (terminal) › Responses
OK
List rate-table versions (with lifecycle filter)
Returns version rows for the entity, keyset-paginated (default 100, max 200 per page). The status filter accepts draft, scheduled, published, archived; the default excludes draft (ADR-0007). Supports ?include=usage_count and ?archived_reason=.
path Parameters
idEntity UUID
Entity UUID
query Parameters
statusLifecycle status filter (repeatable / comma-separated): draft, scheduled, published, archived. Default excludes draft.
Lifecycle status filter (repeatable / comma-separated): draft, scheduled, published, archived. Default excludes draft.
archived_reasonNarrow archived rows by reason (repeatable / comma-separated): canceled, discarded, errored, superseded
Narrow archived rows by reason (repeatable / comma-separated): canceled, discarded, errored, superseded
includeComma-separated includes. Currently supports usage_count.
Comma-separated includes. Currently supports usage_count.
limitPage size. Values above the server-side cap are clamped (standard default 50, cap 200; a few document-heavy lists use larger windows). Invalid values fall back to the default.
cursorOpaque continuation token from the previous response's pagination.cursor. Omit for the first page. Cursors are stateless and do not expire, but are only valid for the list and filters that produced them.
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
List rate-table versions (with lifecycle filter) › Responses
OK
Create a draft rate-table version
Creates a new draft version under the given rate table. Entries must be added separately via the import endpoint before the version can be published. Returns 409 while another draft is open - a table has at most ONE open draft, because publish-with-effective_at always takes the latest one.
path Parameters
idRate table ID
Rate table ID
Headers
Idempotency-KeyUnique key that makes this POST safe to retry: repeats with the same key replay the first response instead of re-executing. Replays are scoped to the retrying principal (same API key / user) and kept for 24 hours. Required on every POST.
Client-generated idempotency key (e.g. a UUID).
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Create a draft rate-table version › Request Body
Bracket entries to create for the version.
clone_from_version_idOptional existing version to seed the new version's entries from.
effective_fromWhen the new version starts being effective on the billing timeline.
effective_toOptional timestamp at which the new version stops being effective.
Raw entry rows (lookup or bracket) for the version.
Lookup entries to create for the version.
noteOptional note describing the version.
Create a draft rate-table version › Responses
Created
Get the currently active rate-table version
Returns the rate-table version that is active at the current wall-clock time.
path Parameters
idRate table ID
Rate table ID
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Get the currently active rate-table version › Responses
OK
Get a rate-table version snapshot
Maps the version number to its version row and returns the full snapshot, including the version's rows and entries.
path Parameters
idEntity UUID
Entity UUID
versionVersion number
Version number
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Get a rate-table version snapshot › Responses
OK
Delete a draft rate-table version
Hard-deletes a rate-table version, addressed by its version number (the same key GET /rate-tables/{id}/versions/{version} returns). Only allowed on draft versions; active or archived versions are immutable - archive them instead.
path Parameters
idRate table ID
Rate table ID
versionVersion number
Version number
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Delete a draft rate-table version › Responses
No Content
Archive a rate-table version
Terminal transition - archived versions cannot be edited or re-activated, addressed by version number (the same key GET /rate-tables/{id}/versions/{version} returns). Use the copy endpoint to spin a new draft from an archived one.
path Parameters
idRate table ID
Rate table ID
versionVersion number
Version number
Headers
Idempotency-KeyUnique key that makes this POST safe to retry: repeats with the same key replay the first response instead of re-executing. Replays are scoped to the retrying principal (same API key / user) and kept for 24 hours. Required on every POST.
Client-generated idempotency key (e.g. a UUID).
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Archive a rate-table version › Responses
No Content
Copy a rate-table version into a new draft
Creates a new draft version cloned from the named source (any status), addressed by version number (the same key GET /rate-tables/{id}/versions/{version} returns). Entries are duplicated. Used to revive archived versions or to branch a new edit from an already-active version. Returns 409 while another draft is open - discard or publish it first.
path Parameters
idRate table ID
Rate table ID
versionSource version number
Source version number
Headers
Idempotency-KeyUnique key that makes this POST safe to retry: repeats with the same key replay the first response instead of re-executing. Replays are scoped to the retrying principal (same API key / user) and kept for 24 hours. Required on every POST.
Client-generated idempotency key (e.g. a UUID).
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Copy a rate-table version into a new draft › Request Body
effective_fromEffective-from timestamp for the new draft version.
effective_toOptional effective-to timestamp for the new draft version.
noteOptional note for the new draft version.
Copy a rate-table version into a new draft › Responses
Created
Export rate-table version entries as CSV
Streams the version's entries as CSV with columns lookup_key, range_min, range_max, value, addressed by version number (the same key GET /rate-tables/{id}/versions/{version} returns). Suitable for round-tripping back through the import endpoint.
path Parameters
idRate table ID
Rate table ID
versionVersion number
Version number
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Export rate-table version entries as CSV › Responses
CSV body
Import entries into a draft rate-table version
Replaces the draft version's entries with the supplied list (full replace, not merge), addressed by version number (the same key GET /rate-tables/{id}/versions/{version} returns). After importing, the version can be published or scheduled.
path Parameters
idRate table ID
Rate table ID
versionVersion number
Version number
Headers
Idempotency-KeyUnique key that makes this POST safe to retry: repeats with the same key replay the first response instead of re-executing. Replays are scoped to the retrying principal (same API key / user) and kept for 24 hours. Required on every POST.
Client-generated idempotency key (e.g. a UUID).
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Import entries into a draft rate-table version › Responses
OK
List rate-table version referrers
Offset-paginated drill-down of the referrers of one type for one version of the entity.
path Parameters
idEntity UUID
Entity UUID
versionVersion number (positive integer)
Version number (positive integer)
query Parameters
typeReferrer type to list (required)
Referrer type to list (required)
limitPage size. Values above the server-side cap are clamped (standard default 50, cap 200; a few document-heavy lists use larger windows). Invalid values fall back to the default.
offsetRow offset (default 0)
Row offset (default 0)
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
List rate-table version referrers › Responses
OK
Get rate-table version usage summary
Referrer counts for one version of the entity, grouped by referrer type. Powers the version-switcher hover card.
path Parameters
idEntity UUID
Entity UUID
versionVersion number (positive integer)
Version number (positive integer)
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Get rate-table version usage summary › Responses
OK