Uttapen One endpoint for 400+ language models, billed in toman
Change base_url and nothing else. Toman wallet, API keys, real streaming, models from OpenAI, Anthropic, Google and DeepSeek.
To try it out, free models work without a top-up — up to 50 requests a day. A failed request costs nothing; only real usage leaves your wallet.
Not a developer? AI chat or Image and video studio
- models in the catalogue
- 453
- model makers
- 65
- toman minimum top-up
- 100,000
https://api.uttapen.ir/v1curl https://api.uttapen.ir/v1/chat/completions \
-H "Authorization: Bearer sk-up-…" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5",
"messages": [{"role": "user", "content": "Introduce yourself."}],
"stream": true
}'from openai import OpenAI
client = OpenAI(
base_url="https://api.uttapen.ir/v1",
api_key="sk-up-…",
)
stream = client.chat.completions.create(
model="openai/gpt-5",
messages=[{"role": "user", "content": "Introduce yourself."}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.uttapen.ir/v1",
apiKey: "sk-up-…",
});
const stream = await client.chat.completions.create({
model: "openai/gpt-5",
messages: [{ role: "user", content: "Introduce yourself." }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}<?php
// composer require openai-php/client guzzlehttp/guzzle
$client = OpenAI::factory()
->withBaseUri('https://api.uttapen.ir/v1')
->withApiKey('sk-up-…')
->make();
$result = $client->chat()->create([
'model' => 'openai/gpt-5',
'messages' => [['role' => 'user', 'content' => 'Introduce yourself.']],
]);
echo $result->choices[0]->message->content;package main
import (
"context"
"fmt"
"github.com/openai/openai-go"
"github.com/openai/openai-go/option"
)
func main() {
client := openai.NewClient(
option.WithBaseURL("https://api.uttapen.ir/v1"),
option.WithAPIKey("sk-up-…"),
)
resp, err := client.Chat.Completions.New(context.Background(), openai.ChatCompletionNewParams{
Model: "openai/gpt-5",
Messages: []openai.ChatCompletionMessageParamUnion{openai.UserMessage("Introduce yourself.")},
})
if err != nil {
panic(err)
}
fmt.Println(resp.Choices[0].Message.Content)
}The same code works with stream=True, tools and response_format with no further changes.
Models people actually use
Price per 1M tokens in toman, at today's rate.
- GPT-5
openai/gpt-5400,000 ctxInput432,774Output3,462,194 - Claude Sonnet 4.5
anthropic/claude-sonnet-4.51,000,000 ctxInput1,038,658Output5,193,290 - Gemini 2.5 Pro
google/gemini-2.5-pro1,048,576 ctxInput432,774Output3,462,194 - DeepSeek V3
deepseek/deepseek-chat163,840 ctxInput89,117Output356,156 - Grok 4.20
x-ai/grok-4.202,000,000 ctxInput432,774Output865,548 - Qwen3 Coder 480B A35B
qwen/qwen3-coder262,144 ctxInput103,866Output346,219 - GPT-5 Mini
openai/gpt-5-mini400,000 ctxInput86,555Output692,439 - Gemini 2.5 Flash
google/gemini-2.5-flash1,048,576 ctxInput103,866Output865,548
453 models from 65 model makers, every one priced in toman.
One wallet, three ways in
An OpenAI-compatible API
Create a key, change base_url, and call any model from Python, Node, PHP or Go. Streaming, tools and JSON output work the way you already know.
from openai import OpenAI client = OpenAI( base_url="https://api.uttapen.ir/v1", api_key="sk-up-…", )
Running WordPress?
The uttapen WordPress plugin brings these same models into your dashboard without a line of code: text editing, researched post drafts, a support widget that knows your site, and WooCommerce — paid from the same toman wallet.
Meet the WordPress plugin →
Images, video, music and speech on the same key
Generate images, short videos, music and speech in the studio or through the same API, from the same toman wallet, with the price of each output shown before you create it.
uttapen studio →
For everyone, no code at all
The same toman wallet, no key and no code — in the browser or the Android app.
AI chat
Ask, write, translate, send a photo and get an answer — in Persian or English, with the world's leading models.
Made with the uttapen studio
Images, video, music and voice; tap any piece to see it large.
Three steps to your first request
- 1
Sign up with a mobile number
An SMS code. No email, no international card.
- 2
Top up the toman wallet
A local payment gateway, with a payment receipt for every top-up.
- 3
Create a key and change base_url
The official OpenAI SDK; the rest of your code stays as it is.
- You pay for the tokens you used
- Every request is billed against the usage it actually reported. A failed request costs nothing, and every line is visible in your usage panel.
- Prompts and answers are never stored
- Only metadata: model, tokens, cost, timing. The text of an API request never reaches a log or a database.
- Servers in Iran, models abroad
- Panel, wallet and keys run inside Iran; model calls leave over a private route. No VPN, no foreign card.
Ready?
Sign up with a phone number, top up from 100,000 toman, key in 30 seconds.
