شروع سریع — اولین درخواست در ۵ دقیقه
ثبتنام با شماره موبایل، شارژ کیف پول تومانی، ساخت کلید sk-up و اولین فراخوانی مدل با SDK رسمی OpenAI در Python، Node و curl.
بهروزرسانی: ۱۶ شهریور ۱۴۰۵
یوتاپن سرویسی سازگار با API رسمی OpenAI است. کدی که امروز با OpenAI کار میکند، با تغییر یک خط (base_url) به بیش از ۴۰۰ مدل وصل میشود و هزینهٔ هر درخواست از کیف پول تومانیات کم میشود. این صفحه تو را از ثبتنام تا اولین پاسخ مدل میبرد.
۱. ثبتنام با شماره موبایل
به صفحهٔ ورود برو و شماره موبایلت را وارد کن. یک کد یکبارمصرف پیامک میشود؛ همان کد را وارد کن. ثبتنام و ورود یکی است و حسابت با اولین تأیید ساخته میشود. بعداً میتوانی در تنظیمات، رمز عبور هم بگذاری تا هر بار منتظر پیامک نمانی.
۲. شارژ کیف پول
از داشبورد ← کیف پول مبلغ را به تومان وارد کن و با درگاه زیبال پرداخت کن. حداقل شارژ ۱۰۰٬۰۰۰ تومان است. بعد از برگشت از درگاه، موجودی همان لحظه در حساب مینشیند و برای هر پرداخت فاکتور صادر میشود.
مدلهای رایگان (شناسه با پسوند :free) بدون شارژ هم کار میکنند، ولی سقف روزانه و ظرفیت مشترک دارند. برای کار جدی، حداقل یک شارژ کوچک بکن تا با 402 روبهرو نشوی.
۳. ساخت کلید API
در داشبورد ← کلیدها دکمهٔ «کلید جدید» را بزن. یک نام بده (مثلاً local-dev) و بساز. کلید با پیشوند sk-up- فقط یک بار نمایش داده میشود؛ همان لحظه کپیاش کن و در فایل .env پروژه بگذار. اگر گمش کردی، کلید را لغو کن و یک کلید تازه بساز.
هر کلید میتواند سقف ماهانه (تومان)، فهرست مدلهای مجاز، محدودیت نرخ و تاریخ انقضا داشته باشد. جزئیات در احراز هویت و کلیدها.
۴. اولین درخواست
آدرس پایه همیشه https://api.uttapen.ir/v1 است و شناسهٔ مدل به شکل provider/model نوشته میشود. نمونهٔ زیر با openai/gpt-5-mini است؛ هر مدل دیگری از فهرست مدلها را میتوانی جایش بگذاری.
curl https://api.uttapen.ir/v1/chat/completions \
-H "Authorization: Bearer sk-up-…" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5-mini",
"messages": [{"role": "user", "content": "خودت را معرفی کن"}],
"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-mini",
messages=[{"role": "user", "content": "خودت را معرفی کن"}],
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-mini",
messages: [{ role: "user", content: "خودت را معرفی کن" }],
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-mini',
'messages' => [['role' => 'user', 'content' => 'خودت را معرفی کن']],
]);
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-mini",
Messages: []openai.ChatCompletionMessageParamUnion{openai.UserMessage("خودت را معرفی کن")},
})
if err != nil {
panic(err)
}
fmt.Println(resp.Choices[0].Message.Content)
}اگر SDK نصب نیست:
pip install openai # Python
npm install openai # Node.js
کلید را در کد ننویس؛ از متغیر محیطی بخوان:
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.uttapen.ir/v1",
api_key=os.environ["UTTAPEN_API_KEY"],
)
resp = client.chat.completions.create(
model="openai/gpt-5-mini",
messages=[{"role": "user", "content": "سه مزیت Postgres را در سه خط بگو."}],
max_tokens=200,
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
۵. پاسخ چه چیزی دارد
بدنهٔ پاسخ دقیقاً فرمت OpenAI است: id، model، choices[0].message.content، finish_reason و بلوک usage. دو چیز اضافه هم میبینی:
usage— تعداد توکن ورودی و خروجی که مدل برای همین درخواست گزارش کرده؛ مبنای شارژ همین مصرف واقعی است.- چند هدر با پیشوند
X-Uttapen-روی پاسخهای غیراستریم:
X-Uttapen-Request-Id: 01a078dd-853e-7480-aa83-262d3239e6a2
X-Uttapen-Model: openai/gpt-5-mini
X-Uttapen-Cost-Toman: 6.659688
X-Uttapen-Balance-Toman: 97564.413809
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-Uttapen-Request-Id را در گزارش خطا به ما بده؛ همان شناسه در لاگ و دفتر حساب ما ثبت شده است. در Python با client.chat.completions.with_raw_response.create(...) و در Node با .withResponse() به این هدرها میرسی.
مبلغ تومانی هر درخواست از روی مصرف واقعی که مدل گزارش میدهد حساب میشود، نه از برآورد ما. قبل از ارسال مبلغی موقتاً رزرو میشود و بعد از پاسخ، مبلغ نهایی کم و بقیه آزاد میشود. جزئیات در قیمتگذاری.
۶. اگر خطا گرفتی
| وضعیت | معنی | کار بعدی |
|---|---|---|
401 invalid_api_key | کلید غلط، لغوشده یا منقضی | کلید تازه بساز و .env را بهروز کن |
402 insufficient_balance | موجودی برای رزرو این درخواست کافی نیست | کیف پول را شارژ کن یا max_tokens را کم کن |
404 model_not_found | شناسهٔ مدل اشتباه است | از /v1/models یا صفحهٔ مدلها شناسه را کپی کن |
429 rate_limit_exceeded | بیش از سقف دقیقهای کلید | Retry-After را رعایت کن |
جدول کامل در خطاها و کدها.
قدمهای بعدی
- پاسخ زنده با استریم و رویداد اختیاری
uttapen.metaبرای دیدن هزینهٔ هر پاسخ. - اگر از OpenAI یا Azure OpenAI میآیی، راهنمای مهاجرت تفاوتهای کوچک را فهرست کرده است.
- فراخوانی ابزار، تصویر و فایل، خروجی JSON و مدلهای استدلالی.
- برای هر زبان یک صفحهٔ جدا داریم: Python، Node، PHP، Go، curl.
- مصرف و هزینه را در داشبورد ← مصرف یا با
GET /v1/uttapen/usageببین.
راهنمای ویدیویی
همین مراحل در ویدیوهای کوتاه: پایتون، Node.js و PHP، استریم، تصویر و صدا، LangChain و Cursor. همهٔ ویدیوها
۱.اولین درخواست با پایتون
SDK رسمی OpenAI در پایتون؛ فقط base_url و کلید یوتاپن عوض میشود.
۲.Node.js و PHP با SDK رسمی
پکیج openai در Node.js و openai-php در PHP و لاراول؛ همان کد، با آدرس و کلید یوتاپن.
۳.پاسخ استریم، کلمهبهکلمه
با stream=True پاسخ کلمهبهکلمه میرسد؛ برای چتبات و رابطهای زنده.
۴.API تصویر و صدا
ساخت تصویر با images.generate و صدای فارسی با audio.speech، با همان کلاینت.
۵.LangChain و Cursor
ChatOpenAI در LangChain و تنظیمات مدل در Cursor؛ هر ابزار سازگار با OpenAI با همین دو مقدار.
با شماره موبایل ثبتنام کن، کیف پول را از ۱۰۰٬۰۰۰ تومان شارژ کن و کلید بساز. مدلهای رایگان بدون شارژ هم کار میکنند — تا ۵۰ درخواست در روز. ساخت کلید API ←