Skip to content

Billing & limits

Guides

Billing and spending limits

Prepaid credit by card, auto top-up, daily, weekly and monthly spending caps, e-mail alerts, and usage and cost tracking.

Tokentide is prepaid. You add credit to a balance in US dollars, by card, and each request is paid from that balance when it runs. There is no subscription and no bill at the end of the month. This page covers the balance, adding credit by hand or automatically, spending limits, e-mail alerts and tracking what you spend.

  • Priced when you use it. A top-up adds credit at face value. The Tide Pricing multiplier is applied only when a request runs, so the moment you top up never changes the price.
  • Never below zero. A request your balance cannot cover is refused with 402 insufficient_balance, before anything is charged.
  • Guardrails you choose. Auto top-up, hard spending caps and e-mail alerts are optional, and they work together.

How billing works

Each request costs the Venice API list price of what it used, times the multiplier locked when the request was admitted. A request worth $0.0100 at the Venice API list price, admitted at a multiplier of 0.65, costs you $0.0065. Every payment method funds the same balance at the same prices: none of them buys a better multiplier. The formula, the rounding and the minimum charge are in How a charge is computed.

Your balance

PartField in GET /v1/accountWhat it is
Paid creditbalance.available_usdCredit you paid for, by card. It never expires, and unused paid credit can be refunded (see Refunds)
Promotional creditbalance.promo_usdTrial credit and goodwill credit. It is not refundable and expires 12 months after it is granted
Leasedbalance.leased_usdCredit lent to the API so it can admit requests without a round trip to the ledger. It is still yours: whatever the API does not use flows back by itself
Spendablebalance.spendable_usdWhat new requests can use right now (see Checking your balance)

Credit belongs to your account. It cannot be transferred to another account or exchanged for cash.

Reservations and insufficient balance

Your balance never goes negative. Before forwarding a request, Tokentide reserves its worst-case cost: the locked multiplier times the Venice list price of the most the request could use. For a chat request, that is its input plus max_completion_tokens (or the model’s maximum output when you do not set it). When the request ends, the reservation is replaced by the actual charge and the rest is released at once.

If your spendable balance cannot cover the reservation, the request is refused with 402 insufficient_balance and nothing is charged. Top up, turn on auto top-up, or lower max_completion_tokens so the reservation is smaller.

Adding credit

Top up in the dashboard under Billing, by card, or let a saved card do it for you with auto top-up.

Card
WhereBilling, on Stripe’s secure checkout page
Amount per top-up$10 to $1,000, $5,000 or $10,000, depending on your trust tier
Seller and taxStripe as merchant of record, or Tokentide: the checkout page shows which. Either way, the tax for where you live is added
Receipt and invoiceStripe e-mails your receipt and tax invoice
AutomaticYes, with auto top-up, always sold by Tokentide

Card top-ups

Choose an amount (packs of $10, $25, $50, $100 and $250, or a custom amount) and pay on Stripe Checkout, Stripe’s hosted payment page. It accepts cards, Link, Apple Pay and Google Pay, and runs 3-D Secure when your bank asks for it (Stripe requests it on your first card top-up). Card details go to Stripe only; Tokentide never sees them. The credit appears in your balance within seconds of the payment.

A one-off card top-up is sold in one of two ways, depending on how Tokentide sells card payments at the time. The checkout page, your receipt and your invoice show who the seller is, and each payment keeps the treatment it was sold under:

SellerTaxReceipt and invoice
Stripe, as merchant of record (Stripe Managed Payments)Stripe calculates, collects and remits itStripe e-mails your receipt and tax invoice
TokentideStripe Tax calculates it for where you liveStripe e-mails your receipt and a tax invoice issued on Tokentide’s behalf

When Tokentide is the seller, consumers in countries where Tokentide is not registered for VAT (for example, the United Kingdom) may not be able to pay by card. As merchant of record, Stripe may also refund a purchase it sold within 60 days (see Refunds). Automatic top-ups are always sold by Tokentide.

  • Buying for a business? Add your tax ID at checkout, and the reverse charge is applied where the law provides for it. When Tokentide is the seller, checkout asks for it only once your VAT ID is validated in your tax profile (Billing): a tax ID counts only once we have validated it.
  • Limits by trust tier. At least $10 per top-up, and at most $1,000 (new), $5,000 (verified) or $10,000 (trusted). See Rate limits for how tiers work.
  • New accounts (trust tier new or verified) can add at most $50 by card in any 24 hours and $1,000 per top-up, from at most 2 different cards, and cannot save a card or use auto top-up. These limits apply until the account is at least 7 days old and has added $100 by card.
  • Your consent at checkout. You ask for the credit to be available immediately. If you are a consumer in the EU, you keep the 14-day right of withdrawal for the credit you have not used yet (see Refunds).

Paid credit never expires, however you add it.

Checking your balance

Overview and Billing in the dashboard show your balance. From code, call GET /v1/account with an API key:

curl https://api.tokentide.app/v1/account \
  -H "Authorization: Bearer $TOKENTIDE_API_KEY"
200 OK
{
  "object": "account",
  "id": "3f6c1d2e-8b7a-4c1e-9d2f-5a6b7c8d9e0f",
  "principal": "key",
  "tier": "verified",
  "balance": {
    "available_usd": "42.5",
    "promo_usd": "0.5",
    "leased_usd": "2",
    "spendable_usd": "42.75"
  },
  "spend_today": { "charged_usd": "3.276", "list_usd": "5.0018", "savings_usd": "1.7258" },
  "limits": {
    "requests_per_minute_per_key": 600,
    "concurrency": 32,
    "image_requests_per_minute": 6,
    "daily_cap_usd": "20",
    "weekly_cap_usd": null,
    "monthly_cap_usd": "200",
    "account_daily_cap_usd": null,
    "account_weekly_cap_usd": "500",
    "account_monthly_cap_usd": "1500"
  },
  "lowtide": { "allowance_usd": "4.2", "used_usd": "0.35", "cap_per_hour_usd": "2", "open": true }
}
FieldMeaning
tierYour trust tier: new, verified, trusted or custom
balance.available_usd, balance.promo_usd, balance.leased_usdPaid credit, promotional credit and leased credit (see Your balance)
balance.spendable_usdWhat new requests can use now
spend_todayThe account’s spend since 00:00 UTC: charged_usd (what you paid), list_usd (the same requests at the Venice API list price) and savings_usd (the difference)
limits.daily_cap_usd, limits.weekly_cap_usd, limits.monthly_cap_usdSpend caps of the API key making the call; null means no cap and "0" blocks all spend
limits.account_daily_cap_usd, limits.account_weekly_cap_usd, limits.account_monthly_cap_usdAccount-wide caps, for all keys together; null means no cap and "0" blocks all spend
limits.requests_per_minute_per_key, limits.concurrency, limits.image_requests_per_minute, lowtideRate limits and your Low Tide allowance (see Rate limits)

Amounts are decimal strings in US dollars, exact to a millionth of a dollar. Parse them as decimals, not as floating-point numbers, when you add them up.

spendable_usd is your paid and promotional credit, minus the part of the leased credit that requests in flight have reserved. Requests still in flight keep their reservation until they end.

Auto top-up

Auto top-up charges your saved card whenever your spendable balance drops below a threshold you choose, so batch jobs and production traffic do not stop on 402 insufficient_balance. It is off until you turn it on, and you can turn it off at any time. Automatic top-ups are always sold by Tokentide (see Receipts and invoices).

By saving a card and turning on auto top-up, you authorize Tokentide to charge that card for the automatic top-ups you set up (the amount plus the tax that applies, the threshold and the optional monthly maximum) until you turn auto top-up off or remove the card.

Requirements

Saving a card and turning on auto top-up have the same requirements, and the dashboard tells you what is missing. You need:

  • An active account with an e-mail address.
  • A passkey or two-factor authentication on your account.
  • An account past the new-account period: an account in trust tier new or verified must be at least 7 days old and have added $100 by card.
  • A recent confirmation: your passkey, an authenticator-app code or a backup code within the last 15 minutes. The dashboard asks for it when needed: to save a card, to open Stripe’s billing portal, and to turn on, change or resume auto top-up.
  • No new sign-in method in the last 24 hours. For 24 hours after a passkey is added, two-factor authentication is turned on or new backup codes are generated, you cannot save a card or turn on or change auto top-up. Opening Stripe’s billing portal is not affected.
  • A valid card: not expired, and not blocked for fraud (blocked cards cannot be saved).
  • Automatic charges where you are. Automatic top-ups are always sold by Tokentide, so they are not yet offered to consumers in countries where Tokentide is not registered for VAT, for example the United Kingdom; business accounts with a validated VAT ID are not affected. Use one-off top-ups instead, where they are available to you.

Set it up

  1. Save a card

    In Billing, under Card and auto top-up, select Add a card and confirm with your passkey, an authenticator-app code or a backup code if asked. You enter the card on Stripe’s secure page (your bank may ask for 3-D Secure) and come back to Billing with the card saved. You can keep one card: saving another one later, with Replace card, replaces it, and the previous card is removed from Stripe.

  2. Choose when and how much

    Set the threshold (When my balance drops below) and the amount to add each time (Add). Optionally, set a Monthly maximum: Tokentide never charges your card more than that per calendar month (UTC), tax included.

  3. Authorize the charges and turn it on

    Tick I authorize automatic charges and select Turn on auto top-up. If your last confirmation is more than 15 minutes old, the dashboard asks for your passkey, an authenticator-app code or a backup code again. An e-mail confirms that auto top-up is on, with its threshold and amount.

How it works

RuleValue
CheckEvery minute, against your spendable balance
Threshold$1 to $1,000
Amount$10 to $1,000 of credit, and at least the threshold, so one top-up always brings you back above it
Monthly maximumOptional. It caps what your card is charged in the calendar month (UTC), tax included; at least the amount, plus room for its tax
Top-ups per dayAt most 10 automatic top-ups per UTC day
SpacingAt least 10 minutes between two automatic charges
SellerTokentide, for every automatic top-up
What you payThe amount you chose, as credit, plus the tax for where you live, calculated by Stripe Tax

Reaching 10 automatic top-ups in a UTC day pauses auto top-up until 00:00 UTC. When the next charge, with its tax, would go over your monthly maximum, it is not made (its invoice is cancelled before payment) and auto top-up pauses until the 1st of the next month at 00:00 UTC. Either way you get one e-mail. Auto top-up resumes by itself when the limit resets, or as soon as you raise your monthly maximum.

Declines, pauses and 3-D Secure

  • After a declined charge, auto top-up waits 30 minutes before it tries again.
  • It pauses after 3 failed charges in a row, or at once on a decline that cannot succeed on a retry: an expired, lost or stolen card, a card that is no longer supported, a revoked authorization. Billing shows the reason. To resume, replace the card with Replace card in Billing, or save your auto top-up settings again.
  • A refund or withdrawal pauses it. When you ask for a refund of any top-up or withdraw from one, or when support, our checks, a fraud warning from your bank or Stripe refunds a payment, auto top-up pauses until you review and save its settings again, so that a refund is not followed by a new automatic charge.
  • A charge refunded by our checks pauses it. Every automatic charge gets the checks of a card top-up: a blocked card, the new-account card limits and, since Tokentide sells it, the country of a consumer. A charge they refund is not credited and gets no receipt, and auto top-up pauses; Billing shows why.
  • It pauses if your saved card changes outside Tokentide, until you confirm your settings again in Billing.
  • It pauses if your Stripe billing details carry a tax ID that Stripe has not verified, or while your VAT ID is not validated in your tax profile, because Stripe would invoice the charge without VAT. Save your settings again once Stripe has verified the tax ID and your VAT ID is validated, or once you removed the tax ID in Stripe’s billing portal.
  • If Stripe's answer to a charge is lost (a connection problem), auto top-up does not treat it as declined and starts no other charge: it waits for Stripe to confirm the outcome. A problem on Stripe’s side before your card is charged is not counted as a failure and not e-mailed; auto top-up tries again 30 minutes later.
  • It turns off if the card is removed, in Billing or in Stripe.
  • Every declined or failed charge is e-mailed to you, saying whether auto top-up is now paused.
  • Resuming needs a recent confirmation, like turning it on.
  • 3-D Secure. Some banks ask you to confirm an automatic charge. You then get an e-mail with a link to Stripe’s secure payment page, and you have 24 hours to confirm. If the payment fails or you do not confirm it in time, the invoice is cancelled so that it can no longer be paid. The charge counts as a failure, and the next attempt follows the usual schedule.

Receipts and invoices

Automatic top-ups are always sold by Tokentide, whoever sells one-off card top-ups at the time, because Stripe Managed Payments cannot charge saved cards. Each automatic top-up is a Stripe invoice paid with your saved card, with the tax for where you live calculated by Stripe Tax. The e-mail we send after each charge links to its receipt and invoice, and you can also download the invoices from Stripe’s billing portal: Billing → Card and auto top-up → Invoices and billing details.

The portal is where you manage your invoices, billing address and tax IDs. Cards cannot be added or changed there: to change the card, use Replace card in Billing; to stop automatic charges, select Remove or turn auto top-up off. A tax ID you add there is used for automatic top-ups (with the reverse charge where the law provides for it) only once Stripe has verified it and your VAT ID is validated in your tax profile (Billing); until then auto top-up pauses. Invoices for automatic top-ups can only be paid with your saved card.

Card security

  • You enter cards on Stripe’s pages only, and Stripe stores them. Tokentide never sees or stores the card number: it keeps the brand, the last four digits and the expiry date for display, and the card fingerprint Stripe provides (an identifier of the card, never its number) to prevent fraud.
  • You can have one card on file. Saving a new card replaces the previous one, which is removed from Stripe.
  • Saving a card, opening Stripe’s billing portal, and turning on or changing auto top-up need a confirmation with your passkey, an authenticator-app code or a backup code within the last 15 minutes, so a stolen session alone cannot set up charges.
  • For 24 hours after a sign-in method is added to your account (a new passkey, two-factor authentication turned on or new backup codes generated), you cannot save a card or turn on or change auto top-up, and we e-mail the account owner about the new sign-in method. Opening Stripe’s billing portal is not affected.
  • After 5 wrong authenticator or backup codes in these confirmations, code checks are locked for 15 minutes.
  • We e-mail you whenever a card is saved, and whenever auto top-up is turned on, changed or turned off.
  • Turning auto top-up off and removing the card (Remove in Billing) never need a confirmation and take effect at once. Removing the card also turns auto top-up off.

Spending limits

Hard caps stop spending at an amount you choose. They are optional, and you can set one for each of three periods:

PeriodStartsResets
Day00:00 UTC00:00 UTC the next day
Week (ISO)Monday, 00:00 UTCThe next Monday, 00:00 UTC
MonthThe 1st, 00:00 UTCThe 1st of the next month, 00:00 UTC

You set them in two places:

  • For the whole account in Billing → Budgets and alerts. Account caps cover all your API keys together.
  • For one API key in API keys → Edit settings → Spending limits. Give each app or environment its own key, with its own caps.

A request must fit within every cap that applies to it: its key’s caps and the account’s.

A cap of 0 blocks all spend on the key or the account until you change it: use it to pause a key without revoking it. Leave the field empty for no cap.

How caps are enforced

  • Shorter periods cannot allow more than longer ones: daily ≤ weekly ≤ monthly, for the account and for each key.
  • Changes apply within seconds.
  • Checked before forwarding. Each request is counted at its worst-case price against every cap that applies, and the count is adjusted to the actual charge when the request ends. All spend is counted in one place, so requests running at the same time can never take you over a cap together.
  • Corrections count too. When a charge is corrected after the request ended (the nightly reconciliation with what Venice billed, or a credit for a request Venice did not bill), the caps whose day, week or month is still running count the corrected charge.
  • Refused requests are never charged.
  • Near a cap, large requests are refused first. A request whose worst case would cross the cap is refused, even if its actual cost would have fit. The error then says how much is left. Lowering max_completion_tokens lets smaller requests through until the cap is really used up.

The spend_limit_reached error

A request that would go over a cap gets 402 spend_limit_reached in the usual error envelope. When the cap is used up, the message names it (daily, weekly or monthly; on the API key or the account) and when it resets, and Retry-After gives the number of seconds until then:

402 Payment Required
HTTP/2 402
content-type: application/json; charset=utf-8
retry-after: 52380
x-request-id: req_01JDV6Q7Z8R2M3N4P5Q6R7S8T9
 
{
  "error": {
    "message": "The daily spend cap of $20 on this API key has been reached. It resets at 2026-11-01T00:00:00Z; raise or remove it in the dashboard.",
    "type": "tokentide_error",
    "code": "spend_limit_reached",
    "param": null,
    "request_id": "req_01JDV6Q7Z8R2M3N4P5Q6R7S8T9"
  }
}

Raise or remove the cap in the dashboard to resume at once.

Two other cases use the same code, each with its own message:

  • The request is too large for what is left. The cap still has room, but less than this request’s worst case. The message gives both amounts, and Retry-After is 60 seconds: room comes back as requests in flight finish, and smaller requests still go through. A request that could cost more than the whole cap gets no Retry-After: lower max_completion_tokens or raise the cap.
  • The cap is 0. It blocks all spend until you change it, so there is no Retry-After.

Handling 402 errors

Both balance errors use HTTP 402. Tell them apart by code:

CodeCauseWhat to do
insufficient_balanceYour spendable balance cannot cover the request’s worst-case costTop up, turn on auto top-up, or lower max_completion_tokens. Retrying the same request fails until the balance grows
spend_limit_reachedA daily, weekly or monthly cap on the key or the account would be exceededWait for Retry-After (the reset, or 60 seconds when only this request was too large) or raise the cap. Do not retry before

The OpenAI SDKs do not retry 402 responses, so handle them yourself. For example, pause a job queue until the cap resets:

import OpenAI from 'openai';
 
const client = new OpenAI({ baseURL: 'https://api.tokentide.app/v1', apiKey: process.env.TOKENTIDE_API_KEY });
 
/** Runs one job. Returns how long to wait (ms) before the next one, or throws. */
async function runJob(prompt: string): Promise<number> {
  try {
    await client.chat.completions.create({
      model: 'deepseek-v4-1-flash',
      max_completion_tokens: 1000,
      messages: [{ role: 'user', content: prompt }],
    });
    return 0;
  } catch (e) {
    if (!(e instanceof OpenAI.APIError) || e.status !== 402) throw e;
    if (e.code === 'spend_limit_reached') {
      // A cap you set: wait for Retry-After (the reset, or 60 s when only this request was too large for
      // what is left); don't retry in a loop. No Retry-After: the cap is 0 or smaller than the request.
      const seconds = Number(e.headers?.get('retry-after')) || 3600;
      return seconds * 1000;
    }
    // insufficient_balance: not enough credit for this request's worst case. Top up, turn on
    // auto top-up or lower max_completion_tokens; retrying the same request won't help.
    throw new Error(`Tokentide balance too low (request ${e.headers?.get('x-request-id')})`, { cause: e });
  }
}

Per-request limits

Caps bound a period. Two request headers bound a single request, and they work well together with caps:

HeaderEffectWhen it applies
X-Tokentide-Max-Cost-USDRefuses a request whose worst-case charge could exceed this amount409 cost_above_limit, nothing charged. Lower max_completion_tokens or raise the limit
X-Tokentide-Max-MultiplierNever pays more than this fraction of the Venice list price. The API key's own maximum multiplier, if it has one, still applies: the lower of the two wins (the header can lower the key's cap, never raise it)409 price_above_limit, with a Retry-After until the price is back under your limit
curl https://api.tokentide.app/v1/chat/completions \
  -H "Authorization: Bearer $TOKENTIDE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Tokentide-Max-Cost-USD: 0.05" \
  -H "X-Tokentide-Max-Multiplier: 0.70" \
  -d '{
    "model": "deepseek-v4-1-flash",
    "max_completion_tokens": 2000,
    "messages": [{ "role": "user", "content": "Summarize this contract…" }]
  }'

Every request header is described in Lanes and Tide Pricing.

Choosing limits

  • One key per app and environment, each with its own caps. A leaked key or a runaway loop then stops at that key’s cap while everything else keeps running.
  • An account-wide monthly cap as your budget, plus a daily cap that catches a runaway the same day rather than at the end of the month.
  • Leave some headroom. Requests count at their worst case until they end, so a cap set exactly at your expected spend can refuse the last requests of the period.
  • Pair caps with alerts. A cap warning at 80% (the default) gives you time to react before requests are refused.
  • Pair auto top-up with a monthly cap. The cap bounds what you can spend; the auto top-up monthly maximum bounds what is charged to your card.
  • Make batch jobs wait, not fail. On spend_limit_reached, pause until Retry-After instead of retrying in a loop.

Budget alerts and notifications

E-mail alerts keep you informed about your money. None of them blocks a request: only hard caps and your balance do.

E-mailWhenHow oftenWhere to set it
Budget alertYour spend reaches an amount you set for the day, week or month. A soft limit: nothing is blockedOnce per periodBilling → Budgets and alerts
Cap warningSpend reaches the share of a hard cap you choose: 50, 75, 80 (the default) or 90%, or off. For account and key capsOnce per period and capBilling → Budgets and alerts
Cap reachedA hard cap of the account or of a key is reached: requests are refused until it resetsOnce per period and capSent whenever you have caps
Low balanceYour spendable balance falls below your threshold ($5 by default)At most once per UTC daySettings → Notifications
Auto top-up succeededAn automatic charge went through. The e-mail links to its receipt and invoiceEvery chargeFollows your Billing e-mail preference
Auto top-up failedA charge failed. The e-mail says whether auto top-up is now pausedEvery failureAlways sent
Confirmation neededYour bank wants you to confirm a charge (3-D Secure)Every timeAlways sent
Auto top-up limit reachedThe 10 automatic top-ups of the day, or your monthly maximum, are used upOnce per day or monthAlways sent
Security noticesA card is saved; auto top-up is turned on, changed or turned off; a sign-in method is added to your accountEvery changeAlways sent
Weekly reportLast ISO week: requests, what you paid, the Venice API list price of the same requests, your savings, top models and your balanceMondays from 06:00 UTC, after a week with usageSettings → Notifications (opt-in)
Price alertThe Standard multiplier is at or below a level you chooseAt most once per UTC daySettings → Notifications (opt-in)

The low-balance alert is checked every 5 minutes. It goes only to accounts that have added credit and used the API in the last 7 days, and never while auto top-up is on and working. If auto top-up is on but cannot charge your card (it is paused for everyone for a while, or a charge is waiting for you to confirm it with your bank), you get the alert, and it says why.

About these e-mails

  • They go to your account’s verified e-mail address, in your dashboard language (English or Spanish).
  • They contain account metadata only (amounts, key names, dates), never prompts or outputs.
  • They are sent through Mailjet, an EU provider, with open and click tracking turned off: no tracking pixels and no rewritten links.
  • Each alert is sent at most once per period, however often its condition is checked. If our e-mail provider refuses a message, it is tried again, up to 3 times within a day; one that may have reached you is never sent twice.
  • A cap of 0 sends no cap warning and no cap-reached e-mail: you set it to block spending.

Usage and cost tracking

The Usage dashboard

Usage shows what you spent and what you saved:

  • Ranges: 24 hours, 7 days, 30 days, 90 days, 12 months and all time. Usage older than 90 days comes from hourly totals.
  • Breakdowns by model, API key, endpoint and lane: requests, tokens in and out, error rate, what you paid, the Venice API list price of the same requests, what you saved and each row’s share of your spend. The top 50 rows are listed; the rest are grouped under Other.
  • Tokentide vs. Venice API: what you paid next to the Venice API list price of the same requests, all time and month by month over the last 12 months.
  • Request Inspector: look up any request of the last 90 days by its X-Request-Id (see Troubleshooting without content).

Overview adds this month’s spend with a projection to the end of the month (at your month-to-date pace, from the second day of the month), your savings this month and all time, and meters for your account caps.

All periods are UTC. Figures can take up to a minute to reflect your latest requests.

How savings are calculated

  • Venice API list price: what the same requests would have cost at Venice’s public API prices, from the cost Venice reports or from the usage times Venice’s price list.
  • You paid: that list price times the multiplier locked for each request.
  • You saved: the difference, also shown as a percentage of the list price.
  • Requests Venice did not bill: credited back in full, they count neither what you paid nor a list price, so they add no savings. They still count as requests, with their tokens.

Tokentide is an independent service, not affiliated with or endorsed by Venice.ai. The comparison uses Venice’s published API prices.

Exports

ExportWhereContents
Requests (CSV or JSON)Usage → Requests CSV or Requests JSON, at the top of the pageOne row per request in the selected range, up to the last 90 days
Breakdown (CSV)Usage → Breakdown → Download CSVOne row per model, key, endpoint or lane, in the selected range (up to all time)

You can download at most 10 exports per minute. Exports contain metadata only, never content.

Columns of the breakdown CSV:

ColumnMeaning
groupmodel, key, endpoint or lane
id, nameThe row’s id and display name (for keys, the key name)
requests, errors, error_rate_pctRequests, failed requests and the error rate in percent
tokens_in, tokens_outInput and output tokens
paid_usdWhat you paid
venice_list_price_usdThe same requests at the Venice API list price
saved_usd, saved_pctThe difference, in USD and as a percentage of the list price
share_of_spend_pctThe row’s share of your spend in the range
paid_micros, venice_list_price_micros, saved_microsThe same amounts in whole micro-dollars (1 USD = 1,000,000), for exact sums
tokentide-usage-by-model-30d-2026-10-31.csv
group,id,name,requests,errors,error_rate_pct,tokens_in,tokens_out,paid_usd,venice_list_price_usd,saved_usd,saved_pct,share_of_spend_pct,paid_micros,venice_list_price_micros,saved_micros
model,deepseek-v4-1-flash,deepseek-v4-1-flash,18240,12,0.07,40211500,9120400,31.204512,47.633100,16.428588,34.48,71.38,31204512,47633100,16428588
model,zai-org-glm-5-2,zai-org-glm-5-2,2310,3,0.13,6022000,1450300,12.512090,19.100800,6.588710,34.49,28.62,12512090,19100800,6588710

The request export has the columns request_id, received_at, completed_at, endpoint, model_id, model_privacy, lane, status_code, error_class, stream, cross_epoch, epoch_id, prompt_tokens, completion_tokens, cached_tokens, reasoning_tokens, list_cost_micros, multiplier_ppm, charge_micros, api_key_id and upstream_request_id.

Usage API

GET /v1/account/usage returns the same request metadata to your code, newest first:

ParameterDefaultMeaning
limit100Rows per page, from 1 to 1,000
before—Cursor: only rows older than this request id. Pass the next_before of the previous page
from, to—UTC timestamps such as 2026-10-01T00:00:00Z, compared with received_at (from inclusive, to exclusive)
model—Only this model, for example deepseek-v4-1-flash
endpoint—Only this endpoint, for example chat_completions or audio_transcriptions
request_id—Only this request (its X-Request-Id)
formatjsonjson, or csv for the same columns as a CSV file

An API key sees its own requests. Follow next_before until has_more is false:

curl -G https://api.tokentide.app/v1/account/usage \
  -H "Authorization: Bearer $TOKENTIDE_API_KEY" \
  --data-urlencode "from=2026-10-01T00:00:00Z" \
  --data-urlencode "to=2026-11-01T00:00:00Z" \
  -d limit=100
200 OK
{
  "object": "list",
  "data": [
    {
      "request_id": "req_01JDV6Q7Z8R2M3N4P5Q6R7S8T9",
      "received_at": "2026-10-31T09:14:03.512Z",
      "completed_at": "2026-10-31T09:14:05.087Z",
      "endpoint": "chat_completions",
      "model_id": "deepseek-v4-1-flash",
      "model_privacy": "private",
      "lane": "standard",
      "epoch_id": "2026-10-31T00:00:00.000Z",
      "cross_epoch": false,
      "stream": true,
      "e2ee": false,
      "status_code": 200,
      "error_class": null,
      "upstream_status": 200,
      "retries": 0,
      "prompt_tokens": 1250,
      "completion_tokens": 410,
      "cached_tokens": 0,
      "reasoning_tokens": 0,
      "bytes_in": "5120",
      "bytes_out": "2210",
      "list_cost_micros": "1520",
      "multiplier_ppm": 655078,
      "charge_micros": "996",
      "settlement": "final"
    }
  ],
  "has_more": true,
  "next_before": "req_01JDV6Q7Z8R2M3N4P5Q6R7S8T9"
}
  • charge_micros is what you paid and list_cost_micros the Venice API list price, both in micro-dollars (both 0 for a request credited back because Venice did not bill it); multiplier_ppm is the locked multiplier in millionths (655078 means 0.655078).
  • 64-bit integers (*_micros, bytes_in, bytes_out) arrive as strings. Convert them with BigInt or int.
  • epoch_id is the UTC day the request is attributed to, as a timestamp at 00:00 UTC.
  • settlement is final for almost every request. provisional means the charge is still being reconciled (for example after an interrupted stream) and may be corrected.

With format=csv, you get one page as a CSV file, without has_more or next_before. When a page has limit rows, request the next one with before set to its last request_id:

curl
curl -G https://api.tokentide.app/v1/account/usage \
  -H "Authorization: Bearer $TOKENTIDE_API_KEY" \
  -d format=csv -d limit=1000 \
  -o tokentide-usage.csv

The SDK helpers page through the results for you.

Retention

Request-level metadata is kept for 90 days, then rolled up into hourly totals that are kept for 6 years (they feed the 12-month and all-time views). Tokentide never stores prompts or outputs, so no export or report can contain them. See What we store.

Refunds, withdrawals and disputes

CaseWhat happens
Withdrawal (EU consumers)Within 14 days of a top-up, get back the part you have not used: select Withdraw next to the top-up in Billing
Voluntary refundWithin 30 days of a deposit, ask for its unused paid credit back, to the original payment method
Refund made by StripeFor a card top-up Stripe sold as merchant of record, Stripe may refund it within 60 days; Tokentide then removes the unused credit
Promotional creditNever refunded. The unused bonus of a top-up is cancelled if that top-up is withdrawn, refunded or charged back
Card disputesThe disputed credit is frozen while the dispute is open, and the dispute fee is deducted. Write to us first: it is faster
Failed requestsRequests Venice did not bill are never charged; one charged by mistake is credited back automatically

Card refunds go back through Stripe, to the card you paid with. For top-ups Tokentide sold, automatic top-ups included, Tokentide makes the refund and includes the tax charged on the refunded part. Asking for a refund of any top-up, or withdrawing from one, pauses auto top-up until you review and save its settings again. The binding rules are in the Refund and withdrawal policy.

Limits and defaults

ItemValue
Card top-up$10 minimum; at most $1,000 (new), $5,000 (verified) or $10,000 (trusted) per top-up
New accounts, by cardAt most $50 in any 24 hours, from at most 2 cards, and no saved card or auto top-up, until the account is at least 7 days old and has added $100 by card
Paid creditNever expires
Promotional creditNot refundable; expires 12 months after it is granted
Withdrawal (EU consumers)14 days from the top-up, for unused credit
Voluntary refund30 days from the deposit, for unused paid credit
Saved cardsOne per account; a new card replaces the previous one
Auto top-up threshold$1 to $1,000
Auto top-up amount$10 to $1,000, and at least the threshold
Auto top-up monthly maximumOptional; at least one top-up
Automatic top-upsChecked every minute; at most 10 per UTC day, at least 10 minutes apart
After a declined automatic charge30 minutes before the next attempt; pause after 3 failures in a row or 1 hard decline
3-D Secure confirmation24 hours; after that, the invoice is cancelled
Recent confirmationPasskey, authenticator-app code or backup code within the last 15 minutes, to save a card, open Stripe’s billing portal, or turn on, change or resume auto top-up
After a new sign-in method24 hours before you can save a card or turn on or change auto top-up
Wrong confirmation codesAfter 5 wrong authenticator or backup codes, code checks are locked for 15 minutes
Spend cap periodsUTC day; ISO week from Monday 00:00 UTC; UTC calendar month
Cap warning50, 75, 80 (default) or 90% of a cap, or off
Low-balance alertBelow $5 by default; checked every 5 minutes; at most once per UTC day
Weekly reportMondays from 06:00 UTC
Price alertAt most once per UTC day
Request-level usage90 days
Hourly usage totals6 years
Dashboard exportsAt most 10 per minute; request exports cover up to 90 days
Account data export (Settings)At most 3 per minute and 20 per day
GET /v1/account/usage1 to 1,000 rows per page (default 100)

FAQ and troubleshooting

Why didn’t auto top-up run?

Billing → Card and auto top-up shows its state and the latest attempts. The usual reasons:

  • Your spendable balance is not below the threshold yet. It is checked every minute.
  • Auto top-up is paused after failed charges or a decline that cannot succeed on a retry, or the card has expired or was removed (removing it turns auto top-up off). Replace the card or save your settings again.
  • You asked for a refund or withdrew from a top-up, or your saved card changed outside Tokentide. Review and save your auto top-up settings to resume it.
  • It is waiting: 30 minutes after a decline, or 10 minutes after the previous charge.
  • The daily limit of 10 top-ups or your monthly maximum is reached. It resumes at 00:00 UTC or on the 1st of the month, or as soon as you raise the maximum.
  • A charge is waiting for your 3-D Secure confirmation. Look for our e-mail with Stripe’s link.
  • A charge is waiting for Stripe to confirm its outcome (its answer was lost), or Stripe had a problem in the last 30 minutes. It settles by itself.
  • Your Stripe billing details carry a tax ID that Stripe has not verified, or your VAT ID is not validated in your tax profile. See Declines, pauses and 3-D Secure.
  • Automatic charges are not available for consumers in your country (for example the United Kingdom). Use one-off top-ups, where they are available to you.

insufficient_balance or spend_limit_reached?

insufficient_balance means your balance cannot cover the request: add credit. spend_limit_reached means a cap you set has been reached: wait for the reset or raise the cap. Your balance plays no part in it. See Handling 402 errors.

Why was a request refused below my cap?

Caps are checked at the request’s worst-case price, and requests in flight count at their worst case until they end. With $0.50 left under a daily cap, a request that could cost up to $0.80 is refused, even if it would have cost $0.05. The error says how much is left, with a Retry-After of 60 seconds. Lower max_completion_tokens, wait for running requests to finish, or raise the cap.

Can I top up from my code?

No: top-ups happen in the dashboard. To have your card charged without any action from you, turn on auto top-up.

Where are my invoices?

  • One-off card top-ups: Stripe e-mails your receipt and tax invoice. Stripe issues them as the seller when it sold the top-up as merchant of record, or on Tokentide’s behalf when Tokentide sold it.
  • Automatic top-ups: the e-mail we send after each charge links to its receipt and invoice. They are also in Stripe’s billing portal (Billing → Card and auto top-up → Invoices and billing details).

How do I change my card or stop automatic charges?

  • Change the card: in Billing → Card and auto top-up, select Replace card. The new card replaces the old one, which is removed from Stripe, and if auto top-up was paused because charges to the old card failed, it resumes. Like saving any card, this needs a recent confirmation. Stripe’s billing portal cannot add or change cards.
  • Stop automatic charges: turn auto top-up off, or select Remove to delete the card, which also turns auto top-up off. Neither needs a confirmation, and both take effect at once.

Why is my spendable balance lower than my credit?

  • Leased credit. While you send requests, the API holds a slice of your credit, sized to about 5 minutes of your recent spend: from $0.50 to $50, or more if a single request needs it. It flows back automatically about 15 minutes after your last request.
  • Requests in flight. Each running request holds its worst-case cost until it ends.
  • Disputes. Credit from a disputed card payment is frozen until the dispute is resolved.

Do alerts block requests?

No. Budget alerts, cap warnings and low-balance e-mails only inform you. Requests are refused only by a hard cap (402 spend_limit_reached), by your balance (402 insufficient_balance), or by the per-request limits you send.