Billing and pricing
SayGM uses prepaid credit. There is no subscription: add credit to the account, then inference usage is deducted as requests complete.
Add credit
Section titled “Add credit”Open Billing and choose Card, USDC, TAO, or Alpha.
For TAO and Alpha, choose Browser wallet to pay with a wallet extension, or CLI wallet to send directly from a linked wallet.
Pay with a browser wallet
Section titled “Pay with a browser wallet”- Choose TAO or Alpha and enter the amount you want to add.
- Select Connect wallet → Browser wallet and choose your wallet.
- Follow the prompts and approve the payment in your wallet.
- Your balance updates after confirmation.
Send directly from a linked wallet
Section titled “Send directly from a linked wallet”- Choose TAO or Alpha, then Connect wallet → CLI wallet.
- First payment from this wallet only: link it through Taostats Auth. Follow its CLI instructions to sign a message. This proves ownership; it does not send funds. Skip this step if the wallet is already linked.
- Back in SayGM, select your wallet and click Show payment instructions.
- Send to the address shown, from the wallet you selected. Expand Use btcli if you want a copyable command.
Never share your seed phrase or private key.
You only link each wallet once. Future deposits from it are credited to your account automatically. You can send using your usual wallet tool. Use Link another wallet to add another sending address.
A linked wallet can also sign in to your SayGM account. Wallet links are permanent.
Sending TAO or Alpha directly
Section titled “Sending TAO or Alpha directly”- TAO: send TAO on Bittensor mainnet (Finney).
- Alpha: transfer stake on subnet 28, keeping the same subnet and hotkey. The command in Billing has the correct settings.
Use the current receiving address in Billing, not one from an old screenshot. Send from your linked wallet, not an exchange.
Waiting for credit?
Section titled “Waiting for credit?”Your balance updates after the transfer is confirmed. Check Recent wallet deposits in Billing before sending again.
Deposits are converted to USD at the rate when the transfer is confirmed. If pricing is temporarily unavailable, credit may take longer. If payment instructions will not open, try again shortly; you do not need to relink your wallet.
The minimum direct-deposit credit is $0.01. For deposits over $100,000, contact us before sending.
Sent from another wallet?
Section titled “Sent from another wallet?”Use Link another wallet to link the wallet you actually sent from. Eligible unallocated deposits are then matched automatically. The wallet must belong to you and cannot already be linked to another SayGM account.
If you used the wrong receiving address or network, linking a wallet will not recover the transfer.
Check balance and current spend
Section titled “Check balance and current spend”The SayGM credits endpoint returns an authoritative, uncached balance for the supplied API key:
curl -fsS "https://api.saygm.com/v1/credits" \ -H "Authorization: Bearer $GM_API_KEY"The required balance block contains exact USD and nano-USD values. The
optional spent block is period-to-date consumption for this key in the
current billing period, not lifetime spend. It may be omitted in shared-balance
mode when consumption is not tracked per key; omitted is unknown, not zero.
The credits endpoint is not a history endpoint. For activity over a date range,
use Usage, from the dashboard or GET /v1/usage/self.
Current model prices
Section titled “Current model prices”The public model catalog is the machine-readable source for current prices:
curl -fsSL https://api.saygm.com/v1/modelsEvery direct model carries a pricing object. It is the cheapest routable
offer when one exists and published retail otherwise; its basis field says
which. price_range.ceiling is retail, the most any request is charged per
token. To have each request sent to the lowest-priced provider, add
X-GM-Routing: cheapest.
Read a rate
Section titled “Read a rate”pricing.unit is ndollars_per_mtok: nano-dollars per million tokens. The API
uses integers so a rate never depends on decimal rounding. Divide by
1,000,000,000 to get dollars per million tokens.
5000000000 ndollars / 1e9 = $5.00 per million input tokens 104000000 ndollars / 1e9 = $0.104 per million input tokenspricing.dimensions covers more than input and output. Cached reads, cache
writes at each retention window, cache storage per hour, audio tokens, and
long-context rates each have their own key. Optional dimensions that do not
apply are omitted rather than serialized as null; omission means the
dimension is not offered, not that it is free. pricing.surcharges holds charges that are not per-token, such
as a per_event provider-side web search or a per_hour code-execution
sandbox.
Choose a model lists every dimension key.
Watch the long-context threshold
Section titled “Watch the long-context threshold”When a model sets long_context_threshold_tokens, requests past that size are
priced from long_context_input_per_mtok_ndollars and
long_context_output_per_mtok_ndollars instead of the standard rates. The step
is not small: gpt-5.5 sets the threshold at 272,000 tokens, with a retail
long-context input rate of $10.00 against a standard $5.00, and $45.00 against a
standard $30.00 for output.
Read the threshold from the catalog if your application builds large prompts or accumulates long conversations, and treat settlement as authoritative for the exact charge.
Request settlement
Section titled “Request settlement”The gateway checks that the account can cover an estimate before sending a
request. After the response, it settles against actual billable usage. A request
that cannot be admitted because the account lacks credit returns HTTP 402.
Per-request cost
Section titled “Per-request cost”Every successful inference response also carries the amount it actually
settled for, inside the response’s own usage block: cost in USD (a JSON
number with exactly nine fractional digits) and cost_nano_usd as an integer
in nano-USD, matching GET /v1/credits. This is the settled charge — after
miner pricing, buyer markup, the retail clamp, and any realised surcharges —
not an estimate derived from /v1/models rates, so it stays correct when the
cheapest eligible offer moves, a request crosses a long-context threshold, or
a cache-write or audio dimension applies. A reseller can bill straight from
cost (times its own markup) instead of re-deriving the rate itself.
The field is always on; no request opts in. See placement and streaming behavior on OpenAI, Anthropic, Gemini, and Streaming.
Avoid stale pricing
Section titled “Avoid stale pricing”- Do not copy a pricing table into application code.
- Refresh
/v1/modelsperiodically if your application displays cost estimates. - Treat the gateway’s settlement as authoritative.
- Use separate API keys when you need usage attribution by application.
See Usage for account-level reporting.