# Assets AI platforms may price their services in different ways. Some charge directly in fiat currencies; others rely on pre-funded credits and many introduce custom usage units (what we refer to as "Assets") like tokens, GPU hours, or video minutes, to align usage with product outcomes. info This guide talks about configuration of custom assets such as tokens.
If your pricing model is entirely fiat based, you may skip this section. In Credyt, Assets are custom usage units such as tokens, minutes or requests. Think of them like bespoke currencies that are aligned with your product outcomes. They are distinct from fiat currencies and enable platforms bill for usage in a way that is clear, flexible, and transparent for customers. Customers purchase assets with fiat at an exchange rate defined by the platform, enabling straightforward pricing and reporting. ## Defining and managing Assets[​](#defining-and-managing-assets "Direct link to Defining and managing Assets") [API Reference](https://docs.credyt.ai/api/assets-create.md) Platforms can create and manage any custom asset they wish to offer. Each asset can have exchange rates defined for each fiat funding currency, giving platforms full control over how much a customer pays per unit of asset. * Platforms can update exchange rates at any time * Changes can be scheduled to take effect at a specific future time, ensuring predictable pricing * The exchange rate can optionally be overridden for [platform-initiated top-ups](https://docs.credyt.ai/features/wallets-and-topups.md) Assets help to promote a transparent and user-friendly experience. Each asset has a unique code, a customer-facing name, a label for UI display, and an optional symbol. These elements exist to: * Ensure customers can clearly identify the asset they are purchasing * Provide consistent representation across the platform and Billing Portal ### Example[​](#example "Direct link to Example") Let's create a Glitch Video Credit for your AI platform. We'll price the Credit at $0.10 or inversely, $1.00 buys 10 Credits. When creating an asset, you can specify either the: * `rate` in the source currency - in this example `0.10 USD` * `inverse_rate` in your custom asset - in this case `10`, since each $1.00 buys 10 credits - REST API - TypeScript SDK - Python SDK POST https\://api.credyt.ai/assets ```json { "code": "VIDGENMIN", "name": "Video Generation Minutes", "precision": 2, "symbol": "⏰", "label": "MIN", "rates": [ { "source": "USD", "rate": 0.1 } ] } ``` **Response** ```json { "code": "VIDGENMIN", "created_at": "2026-02-06T10:01:29.686322Z" } ``` ```typescript await client.assets.create({ code: "VIDGENMIN", name: "Video Generation Minutes", precision: 2, symbol: "⏰", label: "MIN", rates: [ { source: "USD", rate: 0.1, }, ], }); ``` [View full sample on GitHub](https://github.com/credyt/sdk-ts/blob/main/samples/assetsCreateSample.ts#L31) **SDK response object** ```typescript const response = { code: "VIDGENMIN", createdAt: "2026-02-06T10:01:29.686322Z", }; ``` ```python response = client.assets.create( body={ "code": "VIDGENMIN", "name": "Video Generation Minutes", "precision": 2, "symbol": "⏰", "label": "MIN", "rates": [ { "source": "USD", "rate": 0.1, }, ], }, ) ``` [View full sample on GitHub](https://github.com/credyt/sdk-python/blob/main/samples/assets_create_video_generation_minutes.py#L20) **SDK response object** ```python response = { "code": "VIDGENMIN", "created_at": "2026-02-06T10:01:29.686322Z", } ``` We can view the details of this asset at any time via the [Assets API](https://docs.credyt.ai/api/assets-get.md): * REST API * TypeScript SDK * Python SDK GET https\://api.credyt.ai/assets/VIDGENMIN ```http ``` **Response** ```json { "code": "VIDGENMIN", "name": "Video Generation Minutes", "precision": 2, "label": "MIN", "symbol": "⏰", "rates": [ { "source": "USD", "schedule": [ { "valid_from": "2026-02-06T10:01:29.686322Z", "rate": 0.1, "inverse_rate": 10 } ] } ], "created_at": "2026-02-06T10:01:29.686322Z" } ``` ```typescript await client.assets.get("VIDGENMIN"); ``` [View full sample on GitHub](https://github.com/credyt/sdk-ts/blob/main/samples/assetsGetSample.ts#L11) **SDK response object** ```typescript const response = { code: "VIDGENMIN", name: "Video Generation Minutes", precision: 2, label: "MIN", symbol: "⏰", rates: [ { source: "USD", schedule: [ { validFrom: "2026-02-06T10:01:29.686322Z", rate: 0.1, inverseRate: 10, }, ], }, ], createdAt: "2026-02-06T10:01:29.686322Z", }; ``` ```python response = client.assets.get( asset_code="VIDGENMIN", ) ``` [View full sample on GitHub](https://github.com/credyt/sdk-python/blob/main/samples/assets_get_get_a_video_generation_minutes_asset.py#L20) **SDK response object** ```python response = { "code": "VIDGENMIN", "name": "Video Generation Minutes", "precision": 2, "label": "MIN", "symbol": "⏰", "rates": [ { "source": "USD", "schedule": [ { "valid_from": "2026-02-06T10:01:29.686322Z", "rate": 0.1, "inverse_rate": 10, }, ], }, ], "created_at": "2026-02-06T10:01:29.686322Z", } ``` ## Get a Quote[​](#get-a-quote "Direct link to Get a Quote") [API Reference](https://docs.credyt.ai/api/assets-quote.md) Once you've defined an asset you can use the quote capability to calculate and display how much of a custom asset a customer will receive when topping up (if they're topping up via the [Billing Portal](https://docs.credyt.ai/features/billing-portal.md), this will be done automatically). To obtain a quote specify the source fiat currency and the amount to convert, and optionally a point in time (`exchange_at`) to support historical or scheduled conversions. It returns the exchange rate applied and the resulting amount of the asset. ### Example[​](#example-1 "Direct link to Example") This quote calculates how many Glitch Video Credits a customer would receive for 10 USD. The `destination_rate` of 10 means each $1.00 USD buys 10 credits, resulting in a total of 100 credits. * REST API * TypeScript SDK * Python SDK POST https\://api.credyt.ai/assets/VIDGENMIN/quote ```json { "source": "USD", "amount": 10 } ``` **Response** ```json { "source": "USD", "source_amount": 10, "destination": "VIDGENMIN", "destination_amount": 100, "rate": 0.1, "inverse_rate": 10 } ``` ```typescript await client.assets.quote("VIDGENMIN", { source: "USD", amount: 10, }); ``` [View full sample on GitHub](https://github.com/credyt/sdk-ts/blob/main/samples/assetsQuoteSample.ts#L11) **SDK response object** ```typescript const response = { source: "USD", sourceAmount: 10, destination: "VIDGENMIN", destinationAmount: 100, rate: 0.1, inverseRate: 10, }; ``` ```python response = client.assets.quote( asset_code="VIDGENMIN", body={ "source": "USD", "amount": 10, }, ) ``` [View full sample on GitHub](https://github.com/credyt/sdk-python/blob/main/samples/assets_quote_quote_video_generation_minutes.py#L20) **SDK response object** ```python response = { "source": "USD", "source_amount": 10, "destination": "VIDGENMIN", "destination_amount": 100, "rate": 0.1, "inverse_rate": 10, } ``` ## Changing asset rates[​](#changing-asset-rates "Direct link to Changing asset rates") If the platform updates the exchange rate and schedules it to take effect the next day, all new purchases will automatically use the new rate, ensuring that billing remains consistent and predictable.