Schematic
Schematic is a feature and entitlement management platform for SaaS companies, providing pricing, packaging, and metering capabilities. It enables engineering and product teams to manage feature flags, define subscription plans, track feature usage, and control customer entitlements without code changes. Schematic raised $6.5M in April 2026 and launched an official Stripe App for entitlement management as a first-class billing primitive. Customers include Plotly, Automox, Florence, Blackcloak, Sema4.ai, and Pagos.
1 APIs
0 Features
BillingEntitlementsFeature FlagsFeature ManagementFinOpsMeteringPricingSaaS
APIs
Schematic API
The Schematic REST API enables programmatic management of features, flags, plans, companies, users, entitlements, billing credits, and webhooks. Authentication uses API keys sen...
Collections
Schematic API
OPENPricing Plans
Rate Limits
FinOps
Schematic Finops
FINOPSSemantic Vocabularies
API Governance Rules
JSON Structure
Example Payloads
Resources
🔗
Website
Website
🔗
Documentation
Documentation
🔗
APIReference
APIReference
📰
Blog
Blog
👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
💰
Pricing
Pricing
📄
ChangeLog
ChangeLog
🔗
Vocabulary
Vocabulary
💻
Examples
Examples
🔗
MCPServer
MCPServer
🔗
LlmsText
LlmsText
Sources
opencollection: 1.0.0
info:
name: Schematic API
version: '0.1'
request:
auth:
type: apikey
key: X-Schematic-Api-Key
value: '{{X-Schematic-Api-Key}}'
placement: header
items:
- info:
name: accounts
type: folder
items:
- info:
name: List account members
type: http
http:
method: GET
url: https://api.schematichq.com/account-members
params:
- name: ids
value: ''
type: query
- name: q
value: ''
type: query
description: Search filter
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List account members
- info:
name: Get account member
type: http
http:
method: GET
url: https://api.schematichq.com/account-members/:account_member_id
params:
- name: account_member_id
value: ''
type: path
description: account_member_id
docs: Get account member
- info:
name: List api keys
type: http
http:
method: GET
url: https://api.schematichq.com/api-keys
params:
- name: environment_id
value: ''
type: query
- name: require_environment
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List api keys
- info:
name: Create api key
type: http
http:
method: POST
url: https://api.schematichq.com/api-keys
body:
type: json
data: '{}'
docs: Create api key
- info:
name: Get api key
type: http
http:
method: GET
url: https://api.schematichq.com/api-keys/:api_key_id
params:
- name: api_key_id
value: ''
type: path
description: api_key_id
docs: Get api key
- info:
name: Update api key
type: http
http:
method: PUT
url: https://api.schematichq.com/api-keys/:api_key_id
params:
- name: api_key_id
value: ''
type: path
description: api_key_id
body:
type: json
data: '{}'
docs: Update api key
- info:
name: Delete api key
type: http
http:
method: DELETE
url: https://api.schematichq.com/api-keys/:api_key_id
params:
- name: api_key_id
value: ''
type: path
description: api_key_id
docs: Delete api key
- info:
name: Count api keys
type: http
http:
method: GET
url: https://api.schematichq.com/api-keys/count
params:
- name: environment_id
value: ''
type: query
- name: require_environment
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: Count api keys
- info:
name: List audit logs
type: http
http:
method: GET
url: https://api.schematichq.com/audit-log
params:
- name: actor_type
value: ''
type: query
- name: end_time
value: ''
type: query
- name: environment_id
value: ''
type: query
- name: q
value: ''
type: query
- name: start_time
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List audit logs
- info:
name: Get audit log
type: http
http:
method: GET
url: https://api.schematichq.com/audit-log/:audit_log_id
params:
- name: audit_log_id
value: ''
type: path
description: audit_log_id
docs: Get audit log
- info:
name: Count audit logs
type: http
http:
method: GET
url: https://api.schematichq.com/audit-log/count
params:
- name: actor_type
value: ''
type: query
- name: end_time
value: ''
type: query
- name: environment_id
value: ''
type: query
- name: q
value: ''
type: query
- name: start_time
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: Count audit logs
- info:
name: List environments
type: http
http:
method: GET
url: https://api.schematichq.com/environments
params:
- name: ids
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List environments
- info:
name: Create environment
type: http
http:
method: POST
url: https://api.schematichq.com/environments
body:
type: json
data: '{}'
docs: Create environment
- info:
name: Get environment
type: http
http:
method: GET
url: https://api.schematichq.com/environments/:environment_id
params:
- name: environment_id
value: ''
type: path
description: environment_id
docs: Get environment
- info:
name: Update environment
type: http
http:
method: PUT
url: https://api.schematichq.com/environments/:environment_id
params:
- name: environment_id
value: ''
type: path
description: environment_id
body:
type: json
data: '{}'
docs: Update environment
- info:
name: Delete environment
type: http
http:
method: DELETE
url: https://api.schematichq.com/environments/:environment_id
params:
- name: environment_id
value: ''
type: path
description: environment_id
docs: Delete environment
- info:
name: Quickstart
type: http
http:
method: POST
url: https://api.schematichq.com/quickstart
docs: Quickstart
- info:
name: Get who am I
type: http
http:
method: GET
url: https://api.schematichq.com/whoami
docs: Get who am I
- info:
name: billing
type: folder
items:
- info:
name: List coupons
type: http
http:
method: GET
url: https://api.schematichq.com/billing/coupons
params:
- name: is_active
value: ''
type: query
- name: q
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List coupons
- info:
name: Upsert billing coupon
type: http
http:
method: POST
url: https://api.schematichq.com/billing/coupons
body:
type: json
data: '{}'
docs: Upsert billing coupon
- info:
name: Upsert billing customer
type: http
http:
method: POST
url: https://api.schematichq.com/billing/customer/upsert
body:
type: json
data: '{}'
docs: Upsert billing customer
- info:
name: List customers with subscriptions
type: http
http:
method: GET
url: https://api.schematichq.com/billing/customers
params:
- name: company_ids
value: ''
type: query
- name: name
value: ''
type: query
- name: provider_type
value: ''
type: query
- name: q
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List customers with subscriptions
- info:
name: Count customers
type: http
http:
method: GET
url: https://api.schematichq.com/billing/customers/count
params:
- name: company_ids
value: ''
type: query
- name: name
value: ''
type: query
- name: provider_type
value: ''
type: query
- name: q
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: Count customers
- info:
name: List invoices
type: http
http:
method: GET
url: https://api.schematichq.com/billing/invoices
params:
- name: company_id
value: ''
type: query
- name: customer_external_id
value: ''
type: query
- name: subscription_external_id
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List invoices
- info:
name: Upsert invoice
type: http
http:
method: POST
url: https://api.schematichq.com/billing/invoices
body:
type: json
data: '{}'
docs: Upsert invoice
- info:
name: List meters
type: http
http:
method: GET
url: https://api.schematichq.com/billing/meter
params:
- name: display_name
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List meters
- info:
name: Upsert billing meter
type: http
http:
method: POST
url: https://api.schematichq.com/billing/meter/upsert
body:
type: json
data: '{}'
docs: Upsert billing meter
- info:
name: List payment methods
type: http
http:
method: GET
url: https://api.schematichq.com/billing/payment-methods
params:
- name: company_id
value: ''
type: query
- name: customer_external_id
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List payment methods
- info:
name: Upsert payment method
type: http
http:
method: POST
url: https://api.schematichq.com/billing/payment-methods
body:
type: json
data: '{}'
docs: Upsert payment method
- info:
name: List billing prices
type: http
http:
method: GET
url: https://api.schematichq.com/billing/price
params:
- name: currency
value: ''
type: query
description: Filter for prices in a specific currency (e.g. usd, eur)
- name: for_initial_plan
value: ''
type: query
description: Filter for prices valid for initial plans (free prices only)
- name: for_trial_expiry_plan
value: ''
type: query
description: Filter for prices valid for trial expiry plans (free prices only)
- name: ids
value: ''
type: query
- name: interval
value: ''
type: query
- name: is_active
value: ''
type: query
description: Filter for active prices on active products (defaults to true if not specified)
- name: price
value: ''
type: query
- name: product_id
value: ''
type: query
- name: product_ids
value: ''
type: query
- name: provider_type
value: ''
type: query
- name: q
value: ''
type: query
- name: tiers_mode
value: ''
type: query
- name: usage_type
value: ''
type: query
- name: with_meter
value: ''
type: query
description: Filter for prices with a meter
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List billing prices
- info:
name: Upsert billing price
type: http
http:
method: POST
url: https://api.schematichq.com/billing/price/upsert
body:
type: json
data: '{}'
docs: Upsert billing price
- info:
name: Delete billing product
type: http
http:
method: DELETE
url: https://api.schematichq.com/billing/product/:billing_id
params:
- name: billing_id
value: ''
type: path
description: billing_id
docs: Delete billing product
- info:
name: List billing product prices
type: http
http:
method: GET
url: https://api.schematichq.com/billing/product/prices
params:
- name: currency
value: ''
type: query
description: Filter for prices in a specific currency (e.g. usd, eur)
- name: for_initial_plan
value: ''
type: query
description: Filter for prices valid for initial plans (free prices only)
- name: for_trial_expiry_plan
value: ''
type: query
description: Filter for prices valid for trial expiry plans (free prices only)
- name: ids
value: ''
type: query
- name: interval
value: ''
type: query
- name: is_active
value: ''
type: query
description: Filter for active prices on active products (defaults to true if not specified)
- name: price
value: ''
type: query
- name: product_id
value: ''
type: query
- name: product_ids
value: ''
type: query
- name: provider_type
value: ''
type: query
- name: q
value: ''
type: query
- name: tiers_mode
value: ''
type: query
- name: usage_type
value: ''
type: query
- name: with_meter
value: ''
type: query
description: Filter for prices with a meter
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List billing product prices
- info:
name: Delete product price
type: http
http:
method: DELETE
url: https://api.schematichq.com/billing/product/prices/:billing_id
params:
- name: billing_id
value: ''
type: path
description: billing_id
docs: Delete product price
- info:
name: Upsert billing product
type: http
http:
method: POST
url: https://api.schematichq.com/billing/product/upsert
body:
type: json
data: '{}'
docs: Upsert billing product
- info:
name: List billing products
type: http
http:
method: GET
url: https://api.schematichq.com/billing/products
params:
- name: ids
value: ''
type: query
- name: is_active
value: ''
type: query
description: Filter products that are active. Defaults to true if not specified
- name: name
value: ''
type: query
- name: price_usage_type
value: ''
type: query
- name: provider_type
value: ''
type: query
- name: q
value: ''
type: query
- name: recurring_charges_only
value: ''
type: query
description: Filter to products that have at least one recurring price
- name: with_one_time_charges
value: ''
type: query
description: Filter products that are one time charges
- name: with_prices_only
value: ''
type: query
description: Filter products that have prices
- name: with_zero_price
value: ''
type: query
description: Filter products that have zero price for free subscription type
- name: without_linked_to_plan
value: ''
type: query
description: Filter products that are not linked to any plan
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List billing products
- info:
name: Count billing products
type: http
http:
method: GET
url: https://api.schematichq.com/billing/products/count
params:
- name: ids
value: ''
type: query
- name: is_active
value: ''
type: query
description: Filter products that are active. Defaults to true if not specified
- name: name
value: ''
type: query
- name: price_usage_type
value: ''
type: query
- name: provider_type
value: ''
type: query
- name: q
value: ''
type: query
- name: recurring_charges_only
value: ''
type: query
description: Filter to products that have at least one recurring price
- name: with_one_time_charges
value: ''
type: query
description: Filter products that are one time charges
- name: with_prices_only
value: ''
type: query
description: Filter products that have prices
- name: with_zero_price
value: ''
type: query
description: Filter products that have zero price for free subscription type
- name: without_linked_to_plan
value: ''
type: query
description: Filter products that are not linked to any plan
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: Count billing products
- info:
name: Upsert billing subscription
type: http
http:
method: POST
url: https://api.schematichq.com/billing/subscription/upsert
body:
type: json
data: '{}'
docs: Upsert billing subscription
- info:
name: credits
type: folder
items:
- info:
name: List billing credits
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits
params:
- name: ids
value: ''
type: query
- name: name
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List billing credits
- info:
name: Create billing credit
type: http
http:
method: POST
url: https://api.schematichq.com/billing/credits
body:
type: json
data: '{}'
docs: Create billing credit
- info:
name: Get single billing credit
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits/:credit_id
params:
- name: credit_id
value: ''
type: path
description: credit_id
docs: Get single billing credit
- info:
name: Update billing credit
type: http
http:
method: PUT
url: https://api.schematichq.com/billing/credits/:credit_id
params:
- name: credit_id
value: ''
type: path
description: credit_id
body:
type: json
data: '{}'
docs: Update billing credit
- info:
name: Soft delete billing credit
type: http
http:
method: DELETE
url: https://api.schematichq.com/billing/credits/:credit_id
params:
- name: credit_id
value: ''
type: path
description: credit_id
docs: Soft delete billing credit
- info:
name: List company credit balances
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits/balance
params:
- name: company_id
value: ''
type: query
docs: List company credit balances
- info:
name: List credit bundles
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits/bundles
params:
- name: ids
value: ''
type: query
- name: credit_id
value: ''
type: query
- name: status
value: ''
type: query
- name: bundle_type
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List credit bundles
- info:
name: Create credit bundle
type: http
http:
method: POST
url: https://api.schematichq.com/billing/credits/bundles
body:
type: json
data: '{}'
docs: Create credit bundle
- info:
name: Get credit bundle
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits/bundles/:bundle_id
params:
- name: bundle_id
value: ''
type: path
description: bundle_id
docs: Get credit bundle
- info:
name: Update credit bundle details
type: http
http:
method: PUT
url: https://api.schematichq.com/billing/credits/bundles/:bundle_id
params:
- name: bundle_id
value: ''
type: path
description: bundle_id
body:
type: json
data: '{}'
docs: Update credit bundle details
- info:
name: Delete credit bundle
type: http
http:
method: DELETE
url: https://api.schematichq.com/billing/credits/bundles/:bundle_id
params:
- name: bundle_id
value: ''
type: path
description: bundle_id
docs: Delete credit bundle
- info:
name: Count credit bundles
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits/bundles/count
params:
- name: ids
value: ''
type: query
- name: credit_id
value: ''
type: query
- name: status
value: ''
type: query
- name: bundle_type
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: Count credit bundles
- info:
name: Count billing credits
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits/count
params:
- name: ids
value: ''
type: query
- name: name
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: Count billing credits
- info:
name: Zero out grant
type: http
http:
method: PUT
url: https://api.schematichq.com/billing/credits/grants/:grant_id/zero-out
params:
- name: grant_id
value: ''
type: path
description: grant_id
body:
type: json
data: '{}'
docs: Zero out grant
- info:
name: Grant billing credits to company
type: http
http:
method: POST
url: https://api.schematichq.com/billing/credits/grants/company
body:
type: json
data: '{}'
docs: Grant billing credits to company
- info:
name: Count company grants
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits/grants/company/count
params:
- name: company_id
value: ''
type: query
- name: order
value: ''
type: query
- name: dir
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: Count company grants
- info:
name: List company grants
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits/grants/company/list
params:
- name: company_id
value: ''
type: query
- name: order
value: ''
type: query
- name: dir
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List company grants
- info:
name: Count billing credits grants
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits/grants/count
params:
- name: credit_id
value: ''
type: query
- name: ids
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: Count billing credits grants
- info:
name: List grants for credit
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits/grants/list
params:
- name: credit_id
value: ''
type: query
- name: ids
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List grants for credit
- info:
name: Get enriched credit ledger
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits/ledger
params:
- name: company_id
value: ''
type: query
- name: billing_credit_id
value: ''
type: query
- name: feature_id
value: ''
type: query
- name: period
value: ''
type: query
- name: start_time
value: ''
type: query
- name: end_time
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: Get enriched credit ledger
- info:
name: Count credit ledger
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits/ledger/count
params:
- name: company_id
value: ''
type: query
- name: billing_credit_id
value: ''
type: query
- name: feature_id
value: ''
type: query
- name: period
value: ''
type: query
- name: start_time
value: ''
type: query
- name: end_time
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: Count credit ledger
- info:
name: List billing plan credit grants
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits/plan-grants
params:
- name: credit_id
value: ''
type: query
- name: ids
value: ''
type: query
- name: plan_id
value: ''
type: query
- name: plan_ids
value: ''
type: query
- name: plan_version_id
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List billing plan credit grants
- info:
name: Create billing plan credit grant
type: http
http:
method: POST
url: https://api.schematichq.com/billing/credits/plan-grants
body:
type: json
data: '{}'
docs: Create billing plan credit grant
- info:
name: Get single billing plan credit grant
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits/plan-grants/:plan_grant_id
params:
- name: plan_grant_id
value: ''
type: path
description: plan_grant_id
docs: Get single billing plan credit grant
- info:
name: Update billing plan credit grant
type: http
http:
method: PUT
url: https://api.schematichq.com/billing/credits/plan-grants/:plan_grant_id
params:
- name: plan_grant_id
value: ''
type: path
description: plan_grant_id
body:
type: json
data: '{}'
docs: Update billing plan credit grant
- info:
name: Delete billing plan credit grant
type: http
http:
method: DELETE
url: https://api.schematichq.com/billing/credits/plan-grants/:plan_grant_id
params:
- name: plan_grant_id
value: ''
type: path
description: plan_grant_id
- name: apply_to_existing
value: ''
type: query
docs: Delete billing plan credit grant
- info:
name: Count billing plan credit grants
type: http
http:
method: GET
url: https://api.schematichq.com/billing/credits/plan-grants/count
params:
- name: credit_id
value: ''
type: query
- name: ids
value: ''
type: query
- name: plan_id
value: ''
type: query
- name: plan_ids
value: ''
type: query
- name: plan_version_id
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: Count billing plan credit grants
- info:
name: List credit event ledger
type: http
http:
method: GET
url: https://api.schematichq.com/v2/billing/credits/ledger
params:
- name: billing_credit_id
value: ''
type: query
- name: company_id
value: ''
type: query
- name: end_time
value: ''
type: query
- name: event_type
value: ''
type: query
- name: feature_id
value: ''
type: query
- name: start_time
value: ''
type: query
- name: limit
value: ''
type: query
description: Page limit (default 100)
- name: offset
value: ''
type: query
description: Page offset (default 0)
docs: List credit event ledger
- info:
name: Count credit event ledger
type: http
http:
method: GET
url: https://api.schematichq.com/v2/billing/credits/ledger/count
params:
- name: billing_credit_id
value: ''
type: query
- name: company_id
value: ''
type: query
- name: end_time
value: ''
type: query
- name: event_type
value: ''
type: query
- name:
# --- truncated at 32 KB (103 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/schematic/refs/heads/main/apis.yml