Operations 1
Documentation
Documentation
https://docs.togai.com/api-reference/getting-started
GettingStarted
https://docs.togai.com/docs/introduction
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/togai-price-experimentation-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
version: '1.0'
title: Togai Apis Accounts Price Experimentation API
contact:
email: engg@togai.com
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
description: APIs for Togai App
servers:
- description: Api endpoint
url: https://api.togai.com/
- description: Sandbox api endpoint
url: https://sandbox-api.togai.com/
security:
- bearerAuth: []
tags:
- name: Price Experimentation
description: Price Experimentation apis
paths:
/revenue_calculator:
post:
tags:
- Price Experimentation
summary: Calculate and Return the Revenue for a Existing or New Price Plan
description: Calculate and return the revenue for a existing or new price plan
operationId: calculateRevenue
requestBody:
$ref: '#/components/requestBodies/CalculateRevenueRequest'
responses:
'200':
$ref: '#/components/responses/CalculateRevenueResponse'
'400':
$ref: '#/components/responses/ErrorResponse'
'401':
$ref: '#/components/responses/ErrorResponse'
'403':
$ref: '#/components/responses/ErrorResponse'
'404':
$ref: '#/components/responses/ErrorResponse'
'429':
$ref: '#/components/responses/ErrorResponse'
default:
$ref: '#/components/responses/ErrorResponse'
components:
examples:
ThirdCalculateRevenueRequestExample:
value:
currencyConfig:
mode: ACCOUNT_INVOICE
accountId: ACC00001
pricePlanDetailsConfig:
mode: ACCOUNT
accountId: ACC00001
effectiveOn: '2020-01-01T00:00:00Z'
usageConfig:
mode: LOOKUP_CYCLE
lookupCycle:
accountId: ACC00001
cycleEffectiveOn: '2020-01-01T00:00:00Z'
licenseEntriesConfig:
mode: LOOKUP_CYCLE
lookupCycle:
accountId: ACC00001
cycleEffectiveOn: '2020-01-01T00:00:00Z'
description: 'Example request for calculate revenue API on a already associated price plan of the account with currency as the invoice currency of an existing account, and existing usage of a account over a certain pricing cycle
'
SecondCalculateRevenueRequestExample:
description: 'Example request for calculate revenue API on a custom price plan with currency as the invoice currency of a existing account, and existing usage of a account over a time period
'
value:
currencyConfig:
mode: ACCOUNT_INVOICE
accountId: ACC00001
pricePlanDetailsConfig:
mode: CUSTOM
pricingCycleOrdinal: 1
pricePlanDetails:
supportedCurrencies:
- USD
pricingCycleConfig:
interval: MONTHLY
startOffset:
dayOffset: '4'
monthOffset: '1'
gracePeriod: 3
anniversaryCycle: false
usageRateCards:
- displayName: Local Rides
usageMeterId: um.1zYnCiM9Bpg.1zYn
ratePlan:
pricingModel: TIERED
slabs:
- order: 1
startAfter: 0
priceType: FLAT
rateValues:
- currency: USD
slabRates:
- rate: 40
order: 1
usageConfig:
mode: LOOKUP_RANGE
lookupRange:
start: '2020-01-01T00:00:00Z'
end: '2020-01-31T00:00:00Z'
accountId: ACC00001
licenseEntriesConfig:
mode: LOOKUP_RANGE
lookupRange:
start: '2020-01-01T00:00:00Z'
end: '2020-01-31T00:00:00Z'
accountId: ACC00001
entitlementOverageConfig:
mode: LOOKUP_CYCLE
lookupCycle:
accountId: ACC0001
billingCycleEndDate: '2020-01-31T00:00:00Z'
CalculateRevenueResponse:
value:
currency: USD
pricePlanDetails:
supportedCurrencies:
- USD
activeCurrencies:
- USD
pricingCycleConfig:
interval: MONTHLY
startOffset:
dayOffset: '1'
monthOffset: NIL
gracePeriod: 1
anniversaryCycle: false
usageRateCards:
- displayName: AfterShip Shipments1
usageMeterId: um.1zcgWalbM2y.qaX5j
ratePlan:
pricingModel: TIERED
slabs:
- priceType: PER_UNIT
startAfter: 0
order: 1
- priceType: PACKAGE
startAfter: 2
order: 2
slabConfig:
packageSize: '10'
rateValues:
- currency: USD
slabRates:
- order: 1
rate: 10
slabRateConfig:
minimumRate: '1'
maximumRate: '10'
- order: 2
rate: 20
tag: '1'
type: BILLING
revenueInfo:
- usages:
um.fdjal.kdajf: 10
usageRateCard:
displayName: AfterShip Shipments1
usageMeterId: um.1zcgWalbM2y.qaX5j
ratePlan:
pricingModel: TIERED
slabs:
- priceType: PER_UNIT
startAfter: 0
order: 1
- priceType: PACKAGE
startAfter: 2
order: 2
slabConfig:
packageSize: '10'
rateValues:
- currency: USD
slabRates:
- order: 1
rate: 10
slabRateConfig:
minimumRate: 1
maximumRate: 10
- order: 2
rate: 20
slabRevenueSummaries:
- order: 1
usage: 10
revenue: 100
- order: 2
usage: 0
revenue: 0
FirstCalculateRevenueRequestExample:
description: 'Example request for calculate revenue API on a existing price plan with custom currency and usage.
'
value:
currencyConfig:
mode: CUSTOM
currency: USD
pricePlanDetailsConfig:
mode: PRICE_PLAN
pricePlanId: pp.fdhkf.djf
effectiveOn: '2020-01-01T00:00:00Z'
pricingCycleOrdinal: 1
usageConfig:
mode: CUSTOM
usageMap:
um.1zcgWalbM2y.qaX5j: 100
licenseEntriesConfig:
mode: CUSTOM
custom:
- licenseId: license.1zcgWalbM2y.qaX5j
quantity: 10
effectiveFrom: '2020-01-01T00:00:00Z'
entitlementOverageConfig:
mode: CUSTOM
custom:
- featureId: feature.1122.ahoiud
quantity: 5
- featureId: feature.3452.abcaf2
quantity: 28
schemas:
CreditRateDetails:
type: object
description: Amount to be credited
additionalProperties: false
required:
- pricingModel
- currencySlabRateDetails
properties:
pricingModel:
$ref: '#/components/schemas/PricingModel'
currencySlabRateDetails:
type: array
items:
$ref: '#/components/schemas/CurrencySlabRateDetail'
EntitlementOverageRateCard:
type: object
required:
- ratePlan
- rateValues
- featureId
properties:
featureId:
type: string
description: Unique Identifier of the attached Feature
maxLength: 50
displayName:
type: string
description: Name to be displayed during invoice
tag:
type: string
description: A tag string to group rate cards
maxQuantity:
type: number
description: Maximum quantity allowed for the feature, if not specified, unlimited quantity is allowed
ratePlan:
$ref: '#/components/schemas/RatePlan'
rateValues:
type: array
items:
$ref: '#/components/schemas/RateValue'
billingConfig:
$ref: '#/components/schemas/BillingConfig'
description: Represents the billing config of the entitlement overage rate card. If not specified interval:1 and startOffset:0 is taken as default value
FixedFeeType:
type: string
enum:
- ONE_TIME
- RECURRING
description: Fixed fee applies either for a one-time occurrence or for each cycle.
SlabDetail:
type: object
description: The details of a slab
additionalProperties: false
required:
- startAfter
- priceType
- rate
properties:
startAfter:
type: number
priceType:
$ref: '#/components/schemas/PriceType'
slabConfig:
type: object
additionalProperties:
type: string
rate:
type: number
slabRateConfig:
type: object
additionalProperties:
type: string
CreatePricePlanDetails:
type: object
additionalProperties: false
required:
- supportedCurrencies
properties:
pricingCycleConfig:
description: Configuration for pricing cycle
$ref: '#/components/schemas/PricingCycleConfig'
supportedCurrencies:
description: List of currencies supported by the price plan
type: array
uniqueItems: true
items:
type: string
usageRateCards:
description: List of usage rate cards
type: array
items:
$ref: '#/components/schemas/UsageRateCard'
fixedFeeRateCards:
type: array
items:
$ref: '#/components/schemas/FixedFeeRateCard'
licenseRateCards:
type: array
items:
$ref: '#/components/schemas/LicenseRateCard'
billingEntitlementRateCards:
type: array
items:
$ref: '#/components/schemas/BillingEntitlementRateCard'
minimumCommitment:
$ref: '#/components/schemas/MinimumCommitment'
creditGrantRateCards:
type: array
items:
$ref: '#/components/schemas/CreditGrantRateCard'
entitlementOverageRateCards:
type: array
items:
$ref: '#/components/schemas/EntitlementOverageRateCard'
deferredRevenue:
description: "This option can be enabled while creating a price plan to opt for deferred revenue finalization.\ni.e, Togai will assume that the price plan may change any time during the pricing cycle and \nthereby does not compute the revenue in near-real time. \nThis gives the flexibility of editing rate cards in price plan from beginning of the pricing cycle.\nEnabling this mode comes with the following limitations.\n1. Following rate cards are not supported under a `deferredRevenue` plan\n * creditGrantRateCards,\n * billingEntitlementRateCards,\n * entitlementOverageRateCards,\n * IN_ADVANCE fixedFeeRateCards,\n * IN_ADVANCE licenseRateCards\n2. Metrics API return revenue metrics only after the grace period of the account's pricing cycle \n(i.e, only once the invoice becomes DUE)\n"
type: boolean
PricePlanType:
type: string
description: Type of price plan
enum:
- BILLING
- PURCHASE
RecurrenceConfig:
type: object
properties:
interval:
description: Represents the number of pricing cycles after which the rate card will be charged
type: integer
format: int64
example: 3
offset:
description: Represents the offset for pricing cycles after which the rate card will be charged
type: integer
format: int64
example: 5
MaxQuantityBreachAction:
type: string
enum:
- DO_NOTHING
description: "Action to be taken when the license maxQuantity is breached: \n- `DO_NOTHING`: Refrain from granting any new licenses.\n"
SlabRevenueSummary:
type: object
additionalProperties: false
required:
- order
- usage
- revenue
properties:
order:
type: integer
usage:
type: number
revenue:
type: number
metadata:
title: SlabRevenueMetadata
type: object
additionalProperties: false
properties:
minimumRateApplied:
type: boolean
maximumRateApplied:
type: boolean
packageQuantity:
type: integer
GrantDetails:
description: Grant details of Credit Grant Rate Card
type: object
additionalProperties: false
required:
- priority
- expiryType
properties:
priority:
type: integer
minimum: 0
expiryType:
$ref: '#/components/schemas/ExpiryType'
expiryDuration:
type: string
format: duration
applicableEntityIds:
type: array
items:
type: string
CreditGrantRateCard:
description: Credit grant rate card
type: object
additionalProperties: false
required:
- id
- rateDetails
- grantDetails
properties:
id:
type: string
displayName:
type: string
tag:
type: string
description: A tag string to group creditGrantRateCard
grantDetails:
$ref: '#/components/schemas/GrantDetails'
rateDetails:
$ref: '#/components/schemas/CreditRateDetails'
invoiceTiming:
$ref: '#/components/schemas/InvoiceTiming'
type:
$ref: '#/components/schemas/CreditGrantType'
recurrenceConfig:
$ref: '#/components/schemas/RecurrenceConfig'
InvoiceTiming:
type: string
enum:
- IN_ADVANCE
- IN_ARREARS
- PREPAID
x-enum-varnames:
- IN_ADVANCE
- IN_ARREARS
- PREPAID
description: 'If IN_ADVANCE, the rate card will be invoiced in the previous billing cycle.
If IN_ARREARS, the rate card will be invoiced in the current billing cycle.
If PREPAID, credits/entitlements will be granted only after invoice is paid
'
UsageRateCard:
type: object
required:
- usageMeterId
- ratePlan
- rateValues
properties:
displayName:
type: string
description: Name your rate card, this will be displayed in the Togai App
tag:
type: string
description: A tag string to group usageRateCards
usageMeterId:
type: string
example: um.1zYnCiM9Bpg.1zYn
ratePlan:
$ref: '#/components/schemas/RatePlan'
rateValues:
type: array
items:
$ref: '#/components/schemas/RateValue'
ErrorResponse:
type: object
additionalProperties: false
required:
- message
properties:
message:
type: string
description: error description
maxLength: 500
LicenseRateCardConfig:
title: LicenseRateCardConfig
type: object
properties:
maxQuantity:
description: Max allowed quantity for a particular license in a price plan
type: integer
format: int64
example: 100
maxQuantityBreachAction:
$ref: '#/components/schemas/MaxQuantityBreachAction'
ExpiryType:
type: string
description: Expiry type of grant
enum:
- PRICING_CYCLE
- NO_EXPIRY
- CUSTOM
MinimumCommitment:
title: MinimumCommitment
type: object
required:
- displayName
- rateValues
properties:
displayName:
type: string
rateValues:
type: array
minItems: 1
items:
$ref: '#/components/schemas/CurrencyRateValue'
RateValue:
type: object
description: Represents a rate
required:
- currency
- slabRates
properties:
currency:
type: string
slabRates:
type: array
minItems: 1
items:
$ref: '#/components/schemas/SlabRate'
rateConfig:
type: object
additionalProperties:
type: string
CreditGrantType:
type: string
enum:
- ONE_TIME
- RECURRING
description: Credit grant applies either for a one-time occurrence or for each cycle.
PricePlanDetails:
type: object
required:
- supportedCurrencies
- activeCurrencies
properties:
supportedCurrencies:
type: array
uniqueItems: true
items:
type: string
activeCurrencies:
type: array
uniqueItems: true
readOnly: true
items:
type: string
pricingCycleConfig:
$ref: '#/components/schemas/PricingCycleConfig'
usageRateCards:
type: array
items:
$ref: '#/components/schemas/UsageRateCard'
fixedFeeRateCards:
type: array
items:
$ref: '#/components/schemas/FixedFeeRateCard'
licenseRateCards:
type: array
items:
$ref: '#/components/schemas/LicenseRateCard'
billingEntitlementRateCards:
type: array
items:
$ref: '#/components/schemas/BillingEntitlementRateCard'
entitlementOverageRateCards:
type: array
items:
$ref: '#/components/schemas/EntitlementOverageRateCard'
minimumCommitment:
$ref: '#/components/schemas/MinimumCommitment'
creditGrantRateCards:
type: array
items:
$ref: '#/components/schemas/CreditGrantRateCard'
type:
$ref: '#/components/schemas/PricePlanType'
deferredRevenue:
type: boolean
SlabRate:
type: object
description: Represents a rate for a slab
required:
- order
- rate
properties:
order:
type: integer
format: int32
rate:
type: number
slabRateConfig:
type: object
additionalProperties:
type: string
Slab:
type: object
description: Represents a pricing priceType (rates + slabs) for usage price plan
required:
- order
- startAfter
- priceType
properties:
order:
type: integer
format: int32
minimum: 1
maximum: 10
startAfter:
type: number
priceType:
$ref: '#/components/schemas/PriceType'
slabConfig:
type: object
additionalProperties:
type: string
FixedFeeRateCard:
title: FixedFeeRateCard
type: object
required:
- id
- rateValues
- enableProration
properties:
id:
description: Unique Identifier of the attached AddOn
type: string
maxLength: 50
displayName:
type: string
description: Name of the attached AddOn
tag:
type: string
description: A tag string to group fixedFeeRateCards
invoiceTiming:
$ref: '#/components/schemas/InvoiceTiming'
type:
$ref: '#/components/schemas/FixedFeeType'
rateValues:
type: array
items:
$ref: '#/components/schemas/CurrencyRateValue'
enableProration:
type: boolean
example: false
recurrenceConfig:
$ref: '#/components/schemas/RecurrenceConfig'
CurrencySlabRateDetail:
type: object
description: The association of a currency along with its slab detail
additionalProperties: false
required:
- currency
- creditAmount
- slabDetails
properties:
currency:
type: string
creditAmount:
type: number
description: The amount of credit that needs to be credited
minimum: 0
slabDetails:
type: array
items:
$ref: '#/components/schemas/SlabDetail'
rateConfig:
type: object
additionalProperties:
type: string
PricingModel:
type: string
description: "Togai supports two type of pricing model Tiered and Volume. Tiered pricing model applies respective slab and its rate to the usage value while volume pricing model applies the latest matching slab of the usage value and applies respective rate. \nFor more understanding read [Rate Cards](https://docs.togai.com/docs/priceplan#setting-up-multiple-rate-cards)\n"
enum:
- TIERED
- VOLUME
AddOnType:
type: string
enum:
- LICENSE
- FIXED_FEE
- CREDIT_GRANT
- NAMED_LICENSE
description: 'LICENSE: Addon can be used in license rate cards
FIXED_FEE: Addon can be used in fixed fee rate cards
CREDIT_GRANT: Addon can be used in credit grant rate cards
NAMED_LICENSE: Addon can be used in license rate cards
'
PriceType:
type: string
enum:
- FLAT
- PER_UNIT
- PACKAGE
CurrencyRateValue:
type: object
required:
- currency
- rate
properties:
currency:
type: string
rate:
type: number
CalculateRevenueRequest:
description: Request to get revenue details
type: object
additionalProperties: false
required:
- currencyConfig
- pricePlanDetailsConfig
- usageConfig
- licenseEntriesConfig
properties:
currencyConfig:
title: CurrencyConfig
description: Configuration for getting the currency
type: object
required:
- mode
properties:
mode:
type: string
enum:
- CUSTOM
- ACCOUNT_INVOICE
description: 'Mode to get the currency
- CUSTOM: Use the currency provided in the request
- ACCOUNT_INVOICE: Use the invoice currency of the given account
'
currency:
description: Currency to be used, this will be considered if mode is CUSTOM
type: string
minLength: 1
accountId:
description: Id of the account of which invoice currency will be used, this will be considered if mode is ACCOUNT_INVOICE
type: string
pricePlanDetailsConfig:
title: PricePlanDetailsConfig
description: Configuration for getting the usage rate card
type: object
required:
- mode
properties:
mode:
type: string
enum:
- CUSTOM
- PRICE_PLAN
- ACCOUNT
description: 'Mode to get the usage rate card
- CUSTOM: Use the price plan details provided in the request
- PRICE_PLAN: Use the usage rate cards of the given price plan
- ACCOUNT: Use the usage rate cards of a associated price plan of the given account
'
pricePlanDetails:
$ref: '#/components/schemas/CreatePricePlanDetails'
pricePlanId:
description: Id of the price plan, this will be considered if mode is PRICE_PLAN
type: string
minLength: 1
accountId:
description: Id of the account, this will be considered if mode is ACCOUNT
type: string
minLength: 1
effectiveOn:
description: Will be used for getting the usage rate card, only used if mode is ACCOUNT or PRICE_PLAN
type: string
format: date-time
pricingCycleOrdinal:
description: nth cycle, will be used to calculate revenue for the particular cycle, only used if mode is CUSTOM or PRICE_PLAN
type: integer
usageConfig:
title: UsageConfig
description: Configuration for getting the usage
type: object
required:
- mode
properties:
mode:
type: string
enum:
- CUSTOM
- LOOKUP_RANGE
- LOOKUP_CYCLE
description: 'Mode to get the usage for the usage meters
- CUSTOM: Use the usages provided in the request
- LOOKUP_RANGE: Use the usage of a given account for the specified range
- LOOKUP_CYCLE: Use the usage of a given account for the specified cycle
'
usageMap:
description: Map of usage meter id and usage, this will be considered if mode is CUSTOM
type: object
additionalProperties:
type: number
lookupRange:
description: Range of usage to be looked up, this will be considered if mode is LOOKUP_RANGE
type: object
required:
- start
- end
- accountId
properties:
start:
type: string
format: date-time
end:
type: string
format: date-time
accountId:
type: string
minLength: 1
lookupCycle:
description: Cycle of usage to be looked up, this will be considered if mode is LOOKUP_CYCLE
type: object
required:
- accountId
properties:
cycleEffectiveOn:
type: string
format: date-time
accountId:
type: string
minLength: 1
licenseEntriesConfig:
title: LicenseEntriesConfig
description: Configuration for getting the license entries
type: object
required:
- mode
properties:
mode:
type: string
enum:
- CUSTOM
- LOOKUP_RANGE
- LOOKUP_CYCLE
description: 'Mode to get the license entries for the license rate cards
- CUSTOM: Use the license entries provided in the request
- LOOKUP_RANGE: Use the license entries of a given account for the specified range
- LOOKUP_CYCLE: Use the license entries of a given account for the specified cycle
'
custom:
description: List of license entries, this will be considered if mode is CUSTOM
type: array
items:
type: object
title: LicenseEntry
required:
- licenseId
- quantity
- effectiveFrom
properties:
licenseId:
type: string
minLength: 1
quantity:
type: integer
effectiveFrom:
type: string
format: date-time
lookupRange:
description: Range of license entries to be looked up, this will be considered if mode is LOOKUP_RANGE
type: object
required:
- start
- end
- accountId
properties:
start:
type: string
format: date-time
end:
type: string
format: date-time
accountId:
type: string
minLength: 1
lookupCycle:
description: Cycle of license entries to be looked up, this will be considered if mode is LOOKUP_CYCLE
type: object
required:
- accountId
properties:
cycleEffectiveOn:
description: Effective date of the cycle, will be used to get the license entries of the cycle
type: string
format: date-time
accountId:
type: string
minLength: 1
namedLicenseEntriesConfig:
title: NamedLicenseEntriesConfig
description: Configuration for getting the named license entries
type: object
required:
- mode
properties:
mode:
type: string
enum:
- CUSTOM
- LOOKUP_RANGE
- LOOKUP_CYCLE
description: 'Mode to get the named license entries for the license rate cards
- CUSTOM: Use the named license entries provided in the request
- LOOKUP_RANGE: Use the named license entries of a given account for the specified range
- LOOKUP_CYCLE: Use the named license entries of a given account for the specified cycle
'
custom:
description: List of named license entries, this will be considered if mode is CUSTOM
type: array
items:
type: object
title: NamedLicenseEntry
required:
- licenseId
- name
- effectiveFrom
properties:
licenseId:
type: string
minLength: 1
name:
type: integer
effectiveFrom:
type: string
format: date-time
effectiveUntil:
type: string
format: date-time
lookupRange:
description: Range of named license entries to be looked up, this will be considered if mode is LOOKUP_RANGE
type: object
required:
- start
- end
- accountId
properties:
start:
type: string
format: date-time
end:
type: string
format: date-time
accountId:
type: string
minLength: 1
lookupCycle:
description: Cycle of named license entries to be looked up, this will be considered if mode is LOOKUP_CYCLE
type: object
required:
- accountId
properties:
cycleEffectiveOn:
description: Effective date of the cycle, will be used to get the named license entries of the cycle
type: string
format: date-time
accountId:
type: string
minLength: 1
prorationConfig:
title: ProrationConfig
description: Configuration for getting the proration, if not provided no proration will be applied
type: object
required:
- mode
properties:
mode:
type: string
enum:
- CUSTOM
- LOOKUP_CYCLE
description: 'Mode to get the proration
- CUSTOM: Use the proration provided in the request
- LOOKUP_CYCLE: Use the proration of a given account for the specified cycle
'
customConfig:
description: Custom proration config, this will be considered if mode is CUSTOM
type: object
required:
- cycleStartDate
- cycleEndDate
- currentDate
properties:
cycleStartDate:
type: string
format: date-time
cycleEndDate:
type: string
format: date-time
currentDate:
type: string
format: date-time
lookupCycleConfig:
description: Cycle of proration to be looked u
# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/togai/refs/heads/main/openapi/togai-price-experimentation-api-openapi.yml