Plans and Subscriptions
Plan terms are managed at runtime and can change. Do not rely on fixed plan names, prices, quotas, or request limits copied from an old example. The public catalogue is the source of truth for currently published plans.
The cards below load the public plan catalog when this page opens. Prices, quotas, request limits, wallet credits per cycle, and localized descriptions come from the backend; no plan terms are embedded in this documentation build. If the catalog cannot be validated, the page shows an error instead of substituting sample values.
Loading the current catalog…
Live Plan Catalog​
Endpoint: GET /subscription/catalog
This public endpoint returns the published plan catalog used by customer
surfaces. Its response is the standard Yodi envelope; data.plans contains
the localized display copy, current price and currency, quotas, rate limit,
wallet credits per cycle, and the supported purchase action. The optional
stale flag identifies a backend-served cached catalog.
curl --fail-with-body "https://api.yodi.tg/v1/subscription/catalog"
interface PublicPlanCatalog {
plans: Array<{
slug: string;
price: string | null;
currency: string;
quota_limit: number | null;
rate_limit: number | null;
walletCreditsPerCycle: number | null;
action: "signup" | "checkout" | "contact";
featured: boolean;
title: { fr: string; en: string };
subtitle: { fr: string; en: string };
highlights: { fr: string[]; en: string[] };
}>;
generated_at: string;
stale: boolean;
}
Prices are decimal strings to preserve currency precision. Nullable values
remain nullable; a null quota_limit means unlimited, while a null price means
no published price. Do not infer a price, quota, or purchase flow from a plan name.
The public API may change these terms after an administrator publishes an
update, so retrieve them at runtime rather than copying them into a client.
Read Operation Unit Prices​
Endpoint: GET /billing/pricing
Use this public catalogue to read the active credit price and unit for each billable operation. A successful request, generated audio second, transcription, or channel delivery can have a different unit and price. The catalogue does not expose account balances or provider/model choices.
curl --fail-with-body "https://api.yodi.tg/v1/billing/pricing"
See Operation unit pricing for the response contract and the meaning of each billable unit.
Understand Your Funding Balance​
Endpoint: GET /credits/me/funding
Use an authenticated Yodi Console session. The API identifies the account from
that session; clients must not submit another user's identifier. The response's
fundingModel identifies the active contract for that environment. Use the
shared-wallet response as the account-wide spendable balance when it is active;
legacy service-bucket reporting is not evidence that funds are spendable across
services.
See Shared wallet and funding models for both explicit response variants and migration behavior. Never add legacy service counters to the shared-wallet balance.
Start or Manage a Subscription​
Subscription purchase and management use the authenticated checkout and account flows in Yodi Console. Do not call guessed subscription-creation, provider checkout, or cancellation routes: those are not part of this public integration contract. A payment or promotion changes an account's entitlement only after the backend confirms the corresponding transaction outcome.
See Payments and transactions for the payment state contract.