Cost and billing
What a request costs, how the balance behaves, and what happens at the edges — a failed call, a cancelled stream, an exhausted balance.
64 questions
Reducing an existing model bill
In context →- How can the same model cost less here than from the company that made it?
- Because the licence lets somebody else host it. Open-weight models can legally be served by a third party, so we buy inference capacity in bulk, run it at high utilisation and pass most of that discount through rather than keeping it as margin. There is no platform fee on top of the per-token rate. That mechanism only works on open weights, which is exactly why the catalogue contains nothing else, and it produces 36–42% off the rate card rather than an unbounded discount.
- Is this a promotional rate that goes up later?
- No. The rates on the pricing table are the standing rates and there is no introductory tier, no annual commitment and no plan to be on. Rates move when the underlying cost moves, in either direction, and the pricing page carries the date they were last reconciled so you can see whether the number you are reading is fresh.
- What is the smallest discount I could end up with?
- We guarantee at least 20% below the model publisher's own rate on every model we serve. The smallest discount in the catalogue today is 36%, so the guarantee has room in it by design.
- Do I have to move all of my traffic?
- No, and most people should not. The API is OpenAI-compatible, so running both paths side by side is a matter of instantiating a second client. Send a percentage of traffic, compare the outputs and the per-request cost, and move the rest only if the comparison holds on your own workload rather than on ours.
- My bill is mostly GPT or Claude. Does any of this apply?
- Only to the part you could move. We do not resell closed-weight models and never will, because no licence exists that would permit it. What the calculator can tell you is what the addressable portion is worth: if a share of your traffic is classification, extraction, summarisation or routine generation, those are the tasks where an open-weight model is most often adequate, and that share is the honest size of the opportunity.
- Which models can I actually call today?
- 7 of 24 catalogued models are served right now: Kimi K2.6, Kimi K3, GLM-5.2, DeepSeek V4 Pro, DeepSeek V4 Flash, Qwen-Image, Qwen3 Embedding 8B. The remainder are listed with published prices and marked as not yet served. We list them because the prices are real and the intent is real, and we mark them because selling something that returns an error at call time converts into a refund.
- What happens when my balance runs out mid-request?
- The request is refused with a distinct error code rather than being served and invoiced. Your prepaid balance is a hard ceiling enforced on every request, which is a stronger guarantee than a configurable cap because there is nothing to misconfigure. Automatic recharge is off by default and bounded when you switch it on.
- Are there fees that do not appear on the pricing table?
- No. No platform fee, no minimum spend, no card-processing surcharge at checkout and no charge for failed requests. It is worth checking this specifically when you compare providers, because a percentage added at the credit-purchase step does not appear on a per-model pricing table and is easy to miss.
- How do I verify the official rate you are comparing against?
- Every model page names the publisher and prints their list rate beside ours, so the comparison is one search away from being checked. We publish the date the rates were last reconciled for the same reason. A comparison you cannot verify is a claim, not evidence, and this audience checks.
- Does switching change the output I get?
- The model is the same model — same weights, same id. What can differ between any two hosts of the same weights is quantisation, context handling and sampling defaults, which is precisely why the recommendation above is to run both paths against a slice of real traffic rather than to trust a table. Run your evaluation set through both and compare.
- Is there a minimum spend or a contract?
- No. It is pay as you go from the first request, with no minimum and nothing to cancel. Accounts above $1,000 a month can ask for volume rates, and we reply within 24 hours, but that is an option rather than a threshold you have to clear.
- What do you do with my prompts?
- We do not train on prompts or completions, ever. Chat and completion traffic is relayed and not stored. Asynchronous jobs — video and image, which cannot return inline — hold their inputs and results for 30 days so you can fetch them, or are deleted immediately on request. Usage metadata is retained because your invoice and dashboard are built from it.
Migrating an existing integration
In context →- Does the official OpenAI SDK work unmodified?
- Yes. Set base_url in Python or baseURL in Node and everything else is unchanged: the same client methods, the same request body, the same response object, the same streaming iterator. The SDK does not need to know which host it is talking to.
- What about LangChain, LlamaIndex or the Vercel AI SDK?
- They are built on the OpenAI-compatible surface, so they work through the same configuration change — whichever base-URL option that framework exposes. Nothing framework-specific is required on our side, and no plugin has to be installed.
- Does streaming behave the same way?
- Yes. Responses stream as the same sequence of server-sent events, chunks carry the same delta structure, and the stream terminates with the same sentinel frame. Code that accumulates deltas or renders tokens as they arrive needs no changes.
- Do function and tool calls work?
- Yes. Tool definitions, tool_choice and the assistant message carrying tool calls all match the shape the SDK expects, which is what makes an existing agent loop run unmodified. This is the compatibility that matters most for agent workloads and it is tested as such.
- Is the usage block on the response?
- Yes, in the same place with the same field names, so any cost accounting you already do keeps working. Per-request cost is also recorded in the dashboard, which is usually the easier place to compare two providers during a shadow period.
- What do error responses look like?
- The same nested error envelope with a type and a machine-readable code. Rate limiting returns 429 with rate_limit_exceeded; an empty balance returns 429 with insufficient_credits. They are distinct on purpose, because the correct response to the first is to back off and the correct response to the second is to top up.
- How do I map my current model ids?
- Ids are namespaced by publisher, like z-ai/glm-5.2. The bare model name and the site's URL slug both resolve too, so a lookup that predates the namespacing keeps working. Matching is exact and case-sensitive — a lookup that quietly normalises eventually resolves two different models to the same row.
- What happens if I request a model you do not serve?
- The request fails with a specific error naming the model. We do not substitute. 7 of 24 catalogued models are callable today and every model page and pricing row states which is which, so the mapping can be checked before the code is written rather than after.
- Can I run both providers at once during the migration?
- Yes, and it is the recommended approach. Instantiate a second client with the new base URL, route a percentage of traffic to it, and compare outputs and cost per request before moving the rest. Both accounts are pay as you go, so running in parallel costs only the traffic you send.
- How do I roll back?
- Change the base URL back. There is no schema migration, no data to move and no contract to exit, which is what makes the switch worth attempting on a slice of traffic rather than planning as a project. Keep the previous provider's key valid for one billing cycle and the rollback stays a deploy.
- Are there rate limits I should design around?
- Rate limiting returns a standard 429 with a machine-readable code, so existing backoff logic applies unchanged. Your prepaid balance is the other ceiling and it is enforced on every request, which means a runaway loop stops at what you have already paid rather than at an invoice.
- Will the outputs be identical to what I get today?
- For the same model with the same weights, the answer should be very close, but quantisation, context handling and sampling defaults can differ between any two hosts of the same weights. That is the reason for a shadow period against your own evaluation set rather than a claim from us that nothing changes.
- How long does this actually take?
- The edit is one line. The honest estimate for the whole exercise is however long your evaluation set takes to run twice, plus the shadow period you are comfortable with. New accounts get $5 in credit and no card is required, so the first pass costs nothing.
Coding agents and tool-use loops
In context →- How does prompt caching actually work here?
- When you resend the same prefix — a system prompt, a fixed tool schema, a document you keep querying — it is served from the model's KV cache and billed at the cached-input rate, typically far below the standard input rate. It happens automatically, with no header to set, and a cache entry lives about five minutes after its last use. For agent loops it is usually the largest single line on the bill, which is why the cached rate has its own column on the pricing table rather than a footnote.
- Do I have to enable caching or pass a flag?
- No. There is nothing to switch on and no plan that gates it. If the prefix repeats, the repeated part bills at the cached rate. The only thing you control is whether your requests actually share a prefix, which is a matter of how you order the message array.
- Where does the 65–68% figure come from?
- From the same catalogue as every other number on this site, applied to a named workload: 400M input tokens a month with a 60% repeated prefix, and 8M output. The rate-card figure of 36–42% assumes every input token is billed fresh, which is true of a one-shot request and false of a loop. Both numbers are honest; they describe different shapes of work, and quoting either without naming the workload would not be.
- Is a 60% cache share realistic for a coding agent?
- It is conservative. A coding agent with a fixed system prompt, a stable tool schema and a file already in context repeats considerably more than that between turns. The figure was chosen low deliberately: quoting the conservative number and letting you find the larger one in the calculator is a stronger position than quoting the largest one and defending it.
- What invalidates the cache?
- Any change to the prefix, from the first differing byte onward. A timestamp injected into the system prompt, a tool list serialised in a different order, or a retrieved document reformatted between turns will all invalidate everything after the change. Keep the invariant material at the front and byte-identical.
- Which model should an agent loop use?
- Kimi K3 for the steps that need long-horizon reasoning across many tool calls — it carries the largest context window in the catalogue and holds together across long chains. DeepSeek V4 Flash for high-frequency, low-stakes steps. Using different models for different steps of one loop is normal and is usually the biggest saving available after caching.
- Do tool calls and structured output work?
- Yes. Tool definitions, tool_choice and the assistant message carrying tool calls all match the shape the OpenAI SDK expects, so an agent loop written against it runs unmodified. Frameworks built on that surface inherit the compatibility without knowing anything about us.
- What stops a runaway agent from spending everything?
- Your prepaid balance, enforced by the gateway on every request. It is a harder guarantee than a configurable cap because there is nothing to misconfigure — the loop stops at what you have already paid, not at an invoice. Automatic recharge is off by default; switched on, it is a fixed amount, capped at three recharges in any 24 hours, and disabled after three consecutive declines.
- What happens when a model is rate-limited mid-loop?
- The request returns 429 with rate_limit_exceeded and is not billed. That is deliberately a different code from the 429 with insufficient_credits you get on an empty balance, because the correct agent behaviour differs: back off in the first case, stop in the second.
- Will you fall back to another model if one is unavailable?
- No. Substituting a model changes the output, the price and the licence terms of what you receive, and inside an agent loop it produces a trajectory that looks plausible and is wrong. The request fails with the upstream status and a code your loop can branch on. Automatic cross-model fallback is not implemented and is not planned as a silent default.
- Can I see cost per request?
- Yes. The usage block comes back on the response in the same place the OpenAI SDK puts it, and per-request cost accounting is in the dashboard. For an agent this matters more than for chat, because the expensive requests are not the ones that produced interesting output.
- How large a context window do I get?
- Kimi K3 carries the largest in the catalogue, which is what makes whole-repository reasoning possible without a retrieval layer in front of it. Context sizes are published per model on the pricing table and on each model page rather than described in ranges.
- Are the weights the same ones the publisher released?
- Yes — same models, same ids, under their published open licences. What can differ between any two hosts of the same weights is quantisation, context handling and sampling defaults, so an evaluation set run against both paths is the right way to confirm behaviour rather than a claim from us.
- Can I start without a card?
- Yes. New accounts get $5 in credit with no card required, which is enough to run a loop end to end and read the cached-input line on your own traffic before deciding anything.
Licensing, procurement and legal review
In context →- What licence is each model served under?
- Each model's licence is named on its own page and in the licence reference — Kimi K3 under Modified MIT, GLM-5.2 under MIT, and so on for all 24 catalogued models. They are grouped by family so a reviewer can read the terms once and apply the conclusion to every model under it.
- Can we use the outputs commercially?
- That is determined by the licence of the model that produced them, which is why the licence is attached to the model rather than asserted site-wide. The licence reference sets out what each family permits. Where a family imposes conditions on commercial use, that is stated on the family page rather than buried in a general term.
- Why do you not offer GPT, Claude or Gemini?
- Because reselling closed-weight model access frequently violates the origin provider's terms, and that is a risk we will not take on or expose a customer to. It is the same reason the refusal list on this page exists. If your architecture requires those models, a router that carries them is the correct vendor and we say so on our comparison pages.
- Which models do you explicitly refuse to serve?
- Sora 2 (OpenAI), Veo 3.1 (Google DeepMind), Runway Gen-4 (Runway), Kling 2.5 (Kuaishou), Wan 2.5 / 2.6 (Alibaba). Most are closed-weight, so no resale licence exists. One is API-only — the weights were never released despite an open lineage in earlier versions — which is exactly the case a reviewer is most likely to miss.
- Do you train on our prompts?
- No, and there is no setting that changes this. Prompts and completions from chat and completion requests are relayed and not stored by us at all. There is no opt-out to configure because there is nothing to opt out of.
- How long is our data retained?
- Chat and completion traffic is not retained. Asynchronous job inputs and results — video and image generation, which cannot return inline — are held for 30 days from completion so they can be fetched, or deleted immediately on request. Usage metadata is kept for 24 months because the dashboard and the invoice are built from it. The privacy policy carries the authoritative schedule.
- Who is the contracting entity?
- Innoprise Incubator INC. The same entity is named in the terms, the privacy policy and the compliance page, deliberately, because three documents naming three variants of a company name is how a review stalls on a question nobody intended to raise.
- Where do the weights actually run?
- On inference capacity we buy and operate rather than on a resold upstream API, which is what the open licence permits and what puts the cost base under our control. Requests for a model we do not currently serve fail with an error naming the model rather than being routed somewhere unexpected.
- Which models are actually callable today?
- 7 of 24: Kimi K2.6, Kimi K3, GLM-5.2, DeepSeek V4 Pro, DeepSeek V4 Flash, Qwen-Image, Qwen3 Embedding 8B. The remainder are catalogued with published prices and marked as not yet served. For a procurement exercise this matters more than usual, because approving a model that cannot be called wastes the review rather than the integration.
- Do you substitute a different model if one fails?
- No. Substituting would change the licence terms of the output as well as its cost and content, which makes it a compliance event rather than a resilience feature. Requests fail with the upstream status and a machine-readable code instead.
- How do we verify your pricing claim independently?
- Every row prints the publisher's own rate beside ours, so the comparison can be checked against the publisher's public pricing page rather than accepted. The claim is that our rate sits 36–42% below theirs — not that it is the lowest rate available anywhere, which is a claim nobody can substantiate for long.
- Who do we contact for a security or legal question?
- affiliate@xark.io for licensing and contractual questions and affiliate@xark.io for security disclosure. Both are monitored addresses. We publish only addresses that actually receive mail, because a bouncing contact in a policy document is worse than a missing one — the sender believes they made contact.
- Is there a volume agreement for a reviewed vendor relationship?
- Yes. Accounts above $1,000 a month can ask for custom rates, and we reply within 24 hours. Nothing on the published pricing page is contingent on that conversation; it is an option, not a gate.
Comparing against a general-purpose router
In context →- When is OpenRouter the better choice?
- If you need broad access to closed-source frontier models — GPT, Claude, Gemini — alongside open ones, all through a single router with automatic provider fallback, OpenRouter is genuinely the better fit. That is not what we are built for, and a router with 500 models and multi-provider redundancy solves a real problem that our 22-model catalog does not. If your architecture depends on failing over between providers when one degrades, choose them.
- What is the actual fee difference?
- Their platform fee is ~5.5% on credit purchases (non-crypto); ours is none. That figure does not appear on a per-model pricing table, which is why a comparison built from rate cards alone systematically understates it.
- Do you carry as many models?
- No, and not close. 7 callable of 24 catalogued, open-weight only, against a catalogue of hundreds across many providers. That row is marked as one they win in the table above. The narrower catalogue is a deliberate scope choice rather than a roadmap gap.
- Do you have multi-provider failover?
- No. Each model is served by one provider. If a request fails it returns the upstream status and a machine-readable code rather than being retried elsewhere, because substituting changes the output, the price and the licence terms of what you receive. If failover is a requirement, a router is the right architecture.
- Is your latency better?
- Requests go directly to our own inference rather than through a routing hop, which removes that hop's overhead. We do not publish a latency figure because we do not have a measurement we would be willing to defend across regions, models and load — and a number we cannot stand behind is worse than no number.
- Can I use both?
- Yes, and for a lot of teams that is the right answer. Both endpoints are OpenAI-compatible, so running open-weight traffic here and closed-model traffic there costs one extra client instance. Splitting by model category is a stable architecture rather than a halfway migration.
- How is cached-input pricing different?
- It is a published column on every row here rather than something that varies by upstream. On a repeated-prefix workload that is the difference between 36–42% and 65–68% — computed on 400M input tokens a month with a 60% repeated prefix, and 8M output.
- Are you cheaper on every model?
- No, and we will not claim it. Some providers run lower published rates than ours on some open text models, and our own comparison pages say so. The claim this site makes is different and narrower: every model here is priced below what its own publisher charges, with both numbers on the row. We guarantee at least 20% below the model publisher's own rate on every model we serve. The smallest discount in the catalogue today is 36%, so the guarantee has room in it by design.
- What about video and image models?
- They are catalogued as a first-class category with published per-second and per-image rates, which most routers do not carry at all. Availability is the honest caveat: of 24 catalogued models, 7 are callable today, and no video model is among them yet. The table says so on every row.
- Do I have to migrate everything at once?
- No. Move one route, compare a billing cycle, and keep the rest where it is. Reverting is the same one-line change in reverse, since the endpoint is OpenAI-compatible in both directions.
- How do I check your pricing claims?
- Every row prints the model publisher's own rate beside ours, and the publisher's rate is on a public page you can open in another tab. We also publish the date the rates were last reconciled, because a comparison against a stale competitor figure is the one thing a rival will screenshot.
- What is on your roadmap that is missing today?
- Per-key spending limits, bring-your-own-provider-key routing, and upstream capacity for the catalogued models that are not yet callable. All three are listed as not shipped rather than described as available, because discovering a missing feature after signup is how a comparison page loses the credibility it was built to earn.
Check it against your own numbers
$5 in free credits, no card required.
Every rate quoted above is the rate the API bills.