Skip to content
SayGMDocs
Dashboard

Billing and pricing

SayGM uses prepaid credit. There is no subscription: add credit to the account, then inference usage is deducted as requests complete.

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.

  1. Choose TAO or Alpha and enter the amount you want to add.
  2. Select Connect wallet → Browser wallet and choose your wallet.
  3. Follow the prompts and approve the payment in your wallet.
  4. Your balance updates after confirmation.
  1. Choose TAO or Alpha, then Connect wallet → CLI wallet.
  2. 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.
  3. Back in SayGM, select your wallet and click Show payment instructions.
  4. 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.

  • 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.

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.

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.

The SayGM credits endpoint returns an authoritative, uncached balance for the supplied API key:

Terminal window
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.

The public model catalog is the machine-readable source for current prices:

Terminal window
curl -fsSL https://api.saygm.com/v1/models

Every 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.

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 tokens

pricing.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.

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.

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.

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.

  • Do not copy a pricing table into application code.
  • Refresh /v1/models periodically 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.