Short answers to the things people ask first.
Models#
Is there a free model?
No. The free plan includes a monthly credit allowance you can spend on any model, and Bala is the cheapest of the three, but every model is metered per token. Older documentation describing Bala as free is out of date.
Which model should I use?
Yuva unless you have a reason. Bala for high-volume plain text where latency matters most; Rishi for hard reasoning or anything involving video.
Can I use OpenAI or Anthropic model names?
No — gpt-4o and friends return 400 unknown_model. There are three ids and no aliases. Substituting a different model for the one you asked for would make your bill and your output impossible to explain.
Which provider is behind each model?
We do not publish it, and it can change. That indirection is the product: when a better model appears we move the name to it and your code does not change. What is guaranteed is the interface, the context window and the capabilities on GET /v1/models.
Using the API#
Does the OpenAI SDK work?
Yes. Set base_url to https://ai.upfyn.com/v1 and use an Upfyn key. Chat, streaming, tools, structured outputs, files, images and audio all work. Compatibility lists the differences.
Is there an embeddings endpoint?
No. There is also no batch API, no moderations endpoint, no legacy completions, no fine-tuning and no assistants. Calling client.embeddings.create() returns a 404.
Is there an Upfyn SDK package?
No, and deliberately so. The official openai package with a different base_url is the supported path — it means you are using a well-tested client rather than one we maintain part-time.
Why does my streaming call not report a cost?
You need stream_options: { include_usage: true }. Without it the only figure you see is the X-Credits-Reserved header, which is the hold, not the charge.
Billing#
Am I charged for a failed request?
No. Failures are refunded and logged at zero credits. You are not billed for our outages.
Reserved versus used?
A reservation is held before the request runs so a call cannot start that you cannot pay for. It is settled against real token counts afterwards, and settles lower almost every time. Bill your own customers from credits_used, never the reservation.
What happens when I run out?
Requests return 402 with insufficient_credits and a link to add more. It is not an auth problem — a new key will not help.
Limits#
What are the rate limits?
60 requests per minute per account and 120 per API key, plus 60 per minute from one network address. They scale with your plan. Rate limits has the detail and the headers.
I keep getting 429 even after retrying.
Retrying harder makes it worse — repeated 429s trigger a short automatic block. Back off exponentially and honour Retry-After.
How big can an upload be?
100 MB. Larger returns 413 file_too_large.
Data#
Do you store my prompts?
Only if you ask. A plain request writes a billing record — model, token counts, credits, timing — and no message content. Message content is stored when you opt into a session. The Privacy Policy is the authoritative statement, and the controls are on Preferences.
Do you train on my data?
No. See the Privacy Policy for the full statement.
How long is generated media kept?
30 days, then removed automatically. Files you upload yourself stay until you delete them.
Something missing?
If you hit a question this page should answer, tell us through Support — an unanswered question here is a bug in the docs.