API هوش مصنوعی دیپفا،
سازگار با OpenAI
مدلهای GPT، Claude، Gemini، Grok و DeepSeek پشت یک آدرس و یک کلید. چون API دقیقاً همان استاندارد OpenAI است، کتابخانهها و ابزارهایی که همین حالا دارید — از کتابخانهٔ رسمی پایتون و جاوااسکریپت تا افزونههای VS Code و Cursor — فقط با عوض کردن آدرس پایه به دیپفا وصل میشوند و با اعتبار ریالی کار میکنند.
یک آدرس عوض کنید، همهجا کار میکند
منظور از «سازگار با OpenAI» این است که شکل درخواست و پاسخ API ما دقیقاً همان استاندارد OpenAI است — نه اینکه فقط مدلهای OpenAI را میدهیم. به همین دلیل هر برنامه، کتابخانه یا سرویسی که با OpenAI کار میکند — کد خودتان، سرور، اپ موبایل، اتوماسیون، افزونههای VS Code و Cursor — فقط با عوض کردن آدرس پایه به دیپفا وصل میشود و مدلهای GPT، Claude، Gemini، Grok و DeepSeek را با اعتبار ریالی اجرا میکند.
curl https://deepfa.ir/api/v1/chat/completions \ -H "Authorization: Bearer $DEEPFA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-6-luna", "messages": [{"role": "user", "content": "سلام"}] }'
from openai import OpenAI client = OpenAI( api_key="YOUR_DEEPFA_KEY", base_url="https://deepfa.ir/api/v1", ) answer = client.chat.completions.create( model="claude-sonnet-5", messages=[{"role": "user", "content": "سلام"}], ) print(answer.choices[0].message.content)
import OpenAI from "openai"; const client = new OpenAI({ apiKey: "YOUR_DEEPFA_KEY", baseURL: "https://deepfa.ir/api/v1", }); const answer = await client.chat.completions.create({ model: "gemini-3.8-flash", messages: [{ role: "user", content: "سلام" }], });
مسیرهای در دسترس
| POST | /chat/completions | گفتوگو، با استریم و فراخوانی ابزار |
| POST | /responses | API ریسپانسز، برای Codex و مدلهای OpenAI |
| POST | /messages | API مسیجز، برای Claude Code و مدلهای Claude |
| POST | /messages/count_tokens | شمارش توکنهای یک درخواست Claude، رایگان |
| GET | /models | مدلهایی که کلید شما اجازه دارد |
| GET | /balance | موجودی و سقفهای همین کلید |
| POST | /embeddings | تبدیل متن به بردار، برای جستوجو |
| POST | /images/generations | ساخت تصویر |
| POST | /images/edits | تصویر به تصویر |
| POST | /audio/transcriptions | تبدیل گفتار به متن |
| POST | /audio/speech | تبدیل متن به گفتار |
| POST | /videos | ساخت ویدیو از متن، تصویر یا ویدیو |
| GET | /videos/{id} | وضعیت ساخت ویدیو |
| GET | /videos/{id}/content | دریافت ویدیوی آماده |
| POST | /music | ساخت آهنگ با شعر و خواننده یا بیکلام |
| GET | /music/{id} | وضعیت ساخت و شعر آهنگ |
| GET | /music/{id}/content | دریافت آهنگ آماده |
| POST | /3d | ساخت مدل سهبعدی از عکس یا توضیح |
| GET | /3d/{id} | وضعیت ساخت مدل سهبعدی |
| GET | /3d/{id}/content | دریافت مدل سهبعدی آماده |
| POST | /podcasts | ساخت پادکست دو نفره یا تکنفره از یک سناریو |
| GET | /podcasts/{id} | وضعیت ساخت و متن پادکست |
| GET | /podcasts/{id}/content | دریافت پادکست آماده |
| POST | /agents/runs | اجرای ایجنت: پژوهش، تحلیل داده یا ساخت سایت |
| GET | /agents/runs/{id} | وضعیت اجرا و فایلهای آن |
همهٔ مسیرها از یک اعتبار API خرج میکنند: گفتوگو و تبدیل متن به بردار بهاندازهٔ توکن، تصویر بهازای هر تصویر، ویدیو بر اساس مدت و کیفیت، آهنگ بهازای هر درخواست، مدل سهبعدی بهازای هر مدل، رونوشت بهازای هر دقیقه و تبدیل متن به گفتار بهازای هر کاراکتر. هزینهٔ هر تماس در هدر پاسخ و در صفحهٔ مصرف شما نوشته میشود.
ایجنتها، از کد خودتان
ایجنت یک کار را خودش تا آخر میبرد: وب را جستوجو میکند، در یک محیط ایزوله کد مینویسد و اجرا میکند، و در پایان پاسخ بههمراه فایلهایی که ساخته تحویل میدهد — گزارش، نمودار، اکسل یا یک صفحهٔ وب کامل. هر سه ایجنت پنل با همان کلید از کد شما هم اجرا میشوند.
یک POST به /agents/runs با نام ایجنت و ورودیاش؛ شناسهٔ اجرا برمیگردد.
هر چند ثانیه GET /agents/runs/{id}؛ وضعیت از «در حال اجرا» به «تکمیلشده» میرسد.
پاسخ و فهرست فایلها؛ هر فایل یک آدرس دارد که با همان کلید دانلود میشود.
curl https://deepfa.ir/api/v1/agents/runs \ -H "Authorization: Bearer $DEEPFA_API_KEY" \ -H "Content-Type: application/json" \ -d '{"agent":"research","input":{"topic":"...","depth":"standard","language":"fa"}}'
هزینهٔ اجرا در پایان از اعتبار API کم میشود: مصرف مدل، هر جستوجوی وب و نشست محیط ایزوله. اجرایی که ناموفق بماند، لغو شود یا خروجی ندهد هزینهای ندارد.
قیمت هر مدل
قیمتها بهازای یک میلیون توکن است. همان کار روی مدلهای مختلف تا بیست برابر تفاوت دارد، پس پیش از انتخاب مدل این جدول را ببینید.
| مدل | قیمت رسمی سازنده | در برابر قیمت رسمی | ورودی | ورودی کششده | خروجی | یک میلیون ورودی + خروجی | معادل دلاری |
|---|---|---|---|---|---|---|---|
| OpenAI | |||||||
| text-embedding-3-small openai | 0.02 دلار | — | 50 | — | 0 | 8,000 تومان | 0.0286 دلار |
| text-embedding-3-large openai | 0.13 دلار | — | 325 | — | 0 | 52,000 تومان | 0.19 دلار |
| gpt-6-luna openai | 0.60 دلار | تا ۵۷٪ ارزانتر در همهٔ پلنها دستکم ۱۷٪ | 75 | 7.5 | 375 | 72,000 تومان | 0.26 دلار |
| gpt-6.1-terra openai | 6.00 دلار | تا ۵۷٪ ارزانتر در همهٔ پلنها دستکم ۱۷٪ | 750 | 37.5 | 3,750 | 720,000 تومان | 2.57 دلار |
| gpt-6.1-sol openai | 12.00 دلار | تا ۵۷٪ ارزانتر در همهٔ پلنها دستکم ۱۷٪ | 1,500 | 75 | 7,500 | 1,440,000 تومان | 5.14 دلار |
| gpt-5.3-codex openai | 15.75 دلار | تا ۴۳٪ ارزانتر | 1,750 | 175 | 14,000 | 2,520,000 تومان | 9.00 دلار |
| gpt-6-astra openai | 60.00 دلار | تا ۶۰٪ ارزانتر در همهٔ پلنها دستکم ۲۳٪ | 7,000 | 700 | 35,000 | 6,720,000 تومان | 24.00 دلار |
| Anthropic (Claude) | |||||||
| claude-haiku-5-5 anthropic | 0.60 دلار | تا ۱۴٪ ارزانتر | 150 | 15 | 750 | 144,000 تومان | 0.51 دلار |
| claude-sonnet-5-5 anthropic | 12.00 دلار | تا ۴۳٪ ارزانتر | 2,000 | 200 | 10,000 | 1,920,000 تومان | 6.86 دلار |
| claude-sonnet-5 anthropic | 12.00 دلار | تا ۳۹٪ ارزانتر | 2,125 | 212.5 | 10,687.5 | 2,050,000 تومان | 7.32 دلار |
| claude-opus-5-5 anthropic | 24.00 دلار | تا ۴۳٪ ارزانتر | 4,000 | 200 | 20,000 | 3,840,000 تومان | 13.72 دلار |
| claude-opus-5 anthropic | 30.00 دلار | تا ۴۳٪ ارزانتر | 5,000 | 500 | 25,000 | 4,800,000 تومان | 17.15 دلار |
| claude-fable-5 anthropic | 60.00 دلار | تا ۴۳٪ ارزانتر | 10,000 | 1,000 | 50,000 | 9,600,000 تومان | 34.29 دلار |
| claude-fable-5-1 anthropic | 60.00 دلار | — | 25,000 | 625 | 125,000 | 24,000,000 تومان | 85.73 دلار |
| Google (Gemini) | |||||||
| gemini-3.7-flash google | 4.50 دلار | تا ۵۷٪ ارزانتر در همهٔ پلنها دستکم ۱۷٪ | 562.5 | 56.25 | 2,812.5 | 540,000 تومان | 1.93 دلار |
| gemini-3.8-flash google | 9.00 دلار | تا ۷۹٪ ارزانتر در همهٔ پلنها دستکم ۵۹٪ | 562.5 | 56.25 | 2,812.5 | 540,000 تومان | 1.93 دلار |
| gemini-3.1-pro-preview google | 14.00 دلار | تا ۵۹٪ ارزانتر در همهٔ پلنها دستکم ۲۱٪ | 1,250 | 125 | 8,750 | 1,600,000 تومان | 5.72 دلار |
| gemini-4-argon google | 12.00 دلار | تا ۴۳٪ ارزانتر | 2,000 | 200 | 10,000 | 1,920,000 تومان | 6.86 دلار |
| xAI (Grok) | |||||||
| grok-4.3 xai | 3.75 دلار | تا ۴۳٪ ارزانتر | 1,250 | 200 | 2,500 | 600,000 تومان | 2.14 دلار |
| grok-4.6 xai | 8.00 دلار | تا ۴۳٪ ارزانتر | 2,000 | 500 | 6,000 | 1,280,000 تومان | 4.57 دلار |
| grok-4.7 xai | 8.00 دلار | تا ۴۳٪ ارزانتر | 2,000 | 500 | 6,000 | 1,280,000 تومان | 4.57 دلار |
| DeepSeek | |||||||
| deepseek-flash deepseek | 1.50 دلار | تا ۴۳٪ ارزانتر | 300 | 6 | 1,187.5 | 238,000 تومان | 0.85 دلار |
| deepseek-v4-pro deepseek | 5.28 دلار | — | 3,250 | 108.25 | 9,875 | 2,100,000 تومان | 7.50 دلار |
| Perplexity | |||||||
| sonar perplexity | 2.00 دلار | — | 2,500 | — | 2,500 | 800,000 تومان | 2.86 دلار |
| sonar-reasoning-pro perplexity | 10.00 دلار | — | 5,000 | — | 20,000 | 4,000,000 تومان | 14.29 دلار |
عددهای ستونهای ورودی و خروجی، اعتبار بهازای یک میلیون توکن هستند. ستونهای تومان و دلار همان مقدار با کمترین قیمت هر اعتبار (بزرگترین بستهٔ API) است. «تا» صرفهجویی با ارزانترین اعتبار است (بزرگترین بستهٔ API، همان ستون تومان و دلار)؛ «در همهٔ پلنها دستکم» صرفهجویی با گرانترین اعتباری است که هر پلن یا بستهای میفروشد. قیمت رسمی، قیمت یک میلیون توکن ورودی و یک میلیون توکن خروجی در سایت خود سازنده است.
| مدل | قیمت رسمی سازنده | در برابر قیمت رسمی | واحد | اعتبار | تومان | دلار |
|---|---|---|---|---|---|---|
| تصویر | ||||||
| gpt-image-2.5-sunburst تصویر | 0.22 دلار | تا ۸۰٪ ارزانتر در همهٔ پلنها دستکم ۶۲٪ | هر تصویر | 75 | 12,000 | 0.0429 |
| gpt-image-2.5-flare تصویر | 0.22 دلار | تا ۸۰٪ ارزانتر در همهٔ پلنها دستکم ۶۲٪ | هر تصویر | 75 | 12,000 | 0.0429 |
| gpt-image-1 تصویر | 0.17 دلار | — | هر تصویر | 625 | 100,000 | 0.36 |
| flux-3 تصویر | 0.048 دلار | — | هر تصویر | 125 | 20,000 | 0.0714 |
| flux-3-klein تصویر | 0.009 دلار | — | هر تصویر | 25 | 4,000 | 0.0143 |
| flux-schnell تصویر | 0.003 دلار | — | هر تصویر | 25 | 4,000 | 0.0143 |
| nano-banana-2.1 تصویر | 0.0336 دلار | تا ۱۵٪ ارزانتر | هر تصویر | 50 | 8,000 | 0.0286 |
| nano-banana-2-lite تصویر | 0.0336 دلار | تا ۱۵٪ ارزانتر | هر تصویر | 50 | 8,000 | 0.0286 |
| تبدیل متن به گفتار | ||||||
| tts-1 تبدیل متن به گفتار | — | — | هر ۱۰۰۰ کاراکتر | 37.5 | 6,000 | 0.0214 |
| tts-1-hd تبدیل متن به گفتار | — | — | هر ۱۰۰۰ کاراکتر | 75 | 12,000 | 0.0429 |
| gpt-4o-mini-tts تبدیل متن به گفتار | — | — | هر ۱۰۰۰ کاراکتر | 37.5 | 6,000 | 0.0214 |
| eleven-v4 تبدیل متن به گفتار | — | — | هر ۱۰۰۰ کاراکتر | 200 | 32,000 | 0.11 |
| eleven-v4-turbo تبدیل متن به گفتار | — | — | هر ۱۰۰۰ کاراکتر | 100.1 | 16,016 | 0.0572 |
| gemini-3.8-flash-lite-tts تبدیل متن به گفتار | 0.0153 دلار | تا ۲٪ ارزانتر | هر ۱۰۰۰ کاراکتر | 26.3 | 4,208 | 0.015 |
| رونوشت گفتار | ||||||
| gpt-transcribe رونوشت گفتار | — | — | هر دقیقه | 11.25 | 1,800 | 0.0064 |
| whisper-1 رونوشت گفتار | — | — | هر دقیقه | 15 | 2,400 | 0.0086 |
| gpt-4o-transcribe رونوشت گفتار | — | — | هر دقیقه | 15 | 2,400 | 0.0086 |
| gpt-4o-mini-transcribe رونوشت گفتار | — | — | هر دقیقه | 7.5 | 1,200 | 0.0043 |
| ویدیو | ||||||
| kling-3-turbo-pro ویدیو | 0.70 دلار | — | هر کلیپ ۵ ثانیهای | 1,425 | 228,000 | 0.81 |
| luma-ray-32 ویدیو | 0.50 دلار | — | هر کلیپ ۵ ثانیهای، 540p | 1,250 | 200,000 | 0.71 |
| grok-imagine-15 ویدیو | 0.24 دلار | تا ۷۶٪ ارزانتر در همهٔ پلنها دستکم ۵۴٪ | هر کلیپ ۳ ثانیهای، 480p | 100 | 16,000 | 0.0571 |
| minimax-h3-max ویدیو | 0.40 دلار | تا ۲۹٪ ارزانتر | هر کلیپ ۵ ثانیهای، 768p | 500 | 80,000 | 0.29 |
| wan-30 ویدیو | 0.25 دلار | — | هر کلیپ ۵ ثانیهای، 480p | 500 | 80,000 | 0.29 |
| kling-3-pro ویدیو | 0.84 دلار | — | هر کلیپ ۵ ثانیهای | 1,700 | 272,000 | 0.97 |
| kling-o3 ویدیو | 0.70 دلار | — | هر کلیپ ۵ ثانیهای | 1,750 | 280,000 | 1.00 |
| google-veo-31 ویدیو | 3.20 دلار | تا ۴۴٪ ارزانتر | هر کلیپ ۸ ثانیهای، 720p | 3,125 | 500,000 | 1.79 |
| google-veo-31-fast ویدیو | 1.20 دلار | تا ۶۴٪ ارزانتر در همهٔ پلنها دستکم ۳۱٪ | هر کلیپ ۸ ثانیهای، 720p | 750 | 120,000 | 0.43 |
| google-veo-31-lite ویدیو | 0.40 دلار | تا ۴۶٪ ارزانتر | هر کلیپ ۸ ثانیهای، 720p | 375 | 60,000 | 0.21 |
| seedance-25 ویدیو | 1.10 دلار | تا ۸٪ ارزانتر | هر کلیپ ۵ ثانیهای، 480p | 1,775 | 284,000 | 1.01 |
| kling-4 ویدیو | 0.47 دلار | — | هر کلیپ ۳ ثانیهای، 720p | 1,075 | 172,000 | 0.61 |
| kling-video-pro ویدیو | 0.84 دلار | — | هر کلیپ ۵ ثانیهای | 1,700 | 272,000 | 0.97 |
| kling-video-o3 ویدیو | 0.70 دلار | — | هر کلیپ ۵ ثانیهای | 1,750 | 280,000 | 1.00 |
| luma-dream-machine ویدیو | 0.15 دلار | — | هر کلیپ ۵ ثانیهای، 540p | 375 | 60,000 | 0.21 |
| wan-video-25 ویدیو | 0.25 دلار | — | هر کلیپ ۵ ثانیهای، 480p | 625 | 100,000 | 0.36 |
| bytedance-upscaler ویدیو | 0.0072 دلار | — | هر ثانیه ویدیو، 1080p | 20 | 3,200 | 0.0114 |
| happy-horse-edit ویدیو | 0.28 دلار | تا ۲۹٪ ارزانتر | هر ثانیه ویدیو، 720p | 350 | 56,000 | 0.20 |
| kling-o3-pro-edit ویدیو | 0.17 دلار | — | هر ثانیه ویدیو | 420 | 67,200 | 0.24 |
| grok-imagine-edit ویدیو | 0.06 دلار | — | هر ثانیه ویدیو، 480p | 150 | 24,000 | 0.0857 |
| موسیقی | ||||||
| suno-v6 موسیقی | — | — | هر درخواست، ۲ آهنگ | 150 | 24,000 | 0.0857 |
| lyria-3.5 موسیقی | — | — | هر آهنگ | 250 | 40,000 | 0.14 |
| minimax-music-2.5 موسیقی | — | — | هر آهنگ | 375 | 60,000 | 0.21 |
| مدل سهبعدی | ||||||
| tripo-h3.1 مدل سهبعدی | — | — | هر مدل، از | 500 | 80,000 | 0.29 |
| hunyuan-3d-3.1-pro مدل سهبعدی | — | — | هر مدل، از | 1,312.5 | 210,000 | 0.75 |
| rodin-gen-2.5 مدل سهبعدی | — | — | هر مدل، از | 1,000 | 160,000 | 0.57 |
| meshy-7.1 مدل سهبعدی | — | — | هر مدل، از | 3,000 | 480,000 | 1.71 |
| trellis-2 مدل سهبعدی | — | — | هر مدل، از | 750 | 120,000 | 0.43 |
تصویر، ویدیو، گفتار و رونوشت هم از همان اعتبار API خرج میکنند و ستونهای تومان و دلار با کمترین قیمت هر اعتبار (بزرگترین بستهٔ API) حساب شدهاند.
در ویرایشگر خودتان
{ "models": [{ "title": "DeepFA", "provider": "openai", "model": "claude-sonnet-5", "apiKey": "YOUR_DEEPFA_KEY", "apiBase": "https://deepfa.ir/api/v1" }] }
"github.copilot.chat.customOAIModels": [{ "modelId": "claude-sonnet-5", "displayName": "DeepFA Claude Sonnet 5", "endpoint": "https://deepfa.ir/api/v1", "apiKey": "YOUR_DEEPFA_KEY" }]
# Settings → Models → OpenAI API Base URL: https://deepfa.ir/api/v1 API Key: YOUR_DEEPFA_KEY Model: gpt-6.1-sol / claude-sonnet-5-5
Provider: OpenAI Compatible Base URL: https://deepfa.ir/api/v1 API Key: YOUR_DEEPFA_KEY Model ID: claude-sonnet-5
// ~/.claude/settings.json { "env": { "ANTHROPIC_BASE_URL": "https://deepfa.ir/api", "ANTHROPIC_AUTH_TOKEN": "YOUR_DEEPFA_KEY", "ANTHROPIC_MODEL": "claude-sonnet-5-5" } }
# ~/.codex/config.toml model = "gpt-6.1-sol" model_provider = "deepfa" [model_providers.deepfa] name = "DeepFA" base_url = "https://deepfa.ir/api/v1" env_key = "DEEPFA_API_KEY" wire_api = "responses"
کلیدها را از پیشخوان خودتان میسازید و هر زمان باطل میکنید. هر کلید را میتوانید به سقف مصرف روزانه و ماهانه، نشانیهای IP، مسیرها و مدلهای مشخص و یک تاریخ پایان محدود کنید یا موقتاً خاموشش کنید.
یک دروازهٔ سازگار با OpenAI، برای توسعهدهندگان و کسبوکارها
API هوش مصنوعی دیپفا یک دروازهٔ سازگار با استاندارد OpenAI است: همان مسیر /v1/chat/completions، همان بدنهٔ درخواست، همان شکل پاسخ و همان قالب خطا. یعنی هر کتابخانه، افزونه یا سرویسی که امروز با OpenAI کار میکند، تنها با عوض کردن آدرس پایه و کلید به دیپفا وصل میشود — بدون بازنویسی کد، بدون SDK اختصاصی و بدون یاد گرفتن یک قرارداد جدید. پشت این یک آدرس، مدلهای GPT، Claude، Gemini، Grok و DeepSeek قرار دارند و عوض کردن مدل فقط عوض کردن یک رشته در فیلد model است. Claude Code و Codex هم که شکلهای دیگری حرف میزنند، از مسیرهای /v1/messages و /v1/responses با همین کلید وصل میشوند.
علاوه بر گفتوگو، تبدیل متن به بردار برای جستوجوی معنایی و RAG، ساخت تصویر با GPT Image، FLUX و Nano Banana، ساخت ویدیو، تبدیل گفتار به متن و تبدیل متن به گفتار هم از همین آدرس در دسترساند. استریم بهصورت SSE، فراخوانی ابزار، خروجی ساختاریافته و ارسال تصویر همگی پشتیبانی میشوند و دقیقاً همانطور رفتار میکنند که در سرویس اصلی انتظار دارید. هزینهٔ هر تماس در هدر پاسخ برمیگردد و در صفحهٔ API پنل کاربری، به تفکیک کلید و مدل ثبت میشود؛ درخواستهای ناموفق هم ثبت میشوند تا هیچوقت ندانید اعتبارتان کجا رفته است.
برای توسعهدهندهٔ ایرانی مهمترین تفاوت، پرداخت است: اعتبار را با درگاه داخلی و به ریال میخرید، کارت بینالمللی لازم نیست و اعتبار خریداریشده تاریخ انقضا ندارد. روی هر کلید میتوانید سقف اعتبار روزانه و ماهانه، سقف تعداد درخواست در دقیقه، فهرست مدلها و مسیرهای مجاز، نشانیهای IP مجاز و تاریخ پایان بگذارید یا آن را موقتاً خاموش کنید، پس کلیدی که به یک اسکریپت یا همکارتان میدهید نمیتواند کل حساب را خالی کند و در صورت لو رفتن با یک کلیک باطل میشود. پیش از تمام شدن اعتبار API هم ایمیل هشدار میگیرید.
چرا API هوش مصنوعی دیپفا؟
طراحیشده با تمرکز بر نیاز توسعهدهندگان — ساده برای شروع، امن در استفاده و مقیاسپذیر برای رشد.
سازگار با OpenAI
همان مسیرها، همان بدنهٔ درخواست، همان شکل پاسخ. کتابخانهٔ رسمی OpenAI و هر ابزاری که با آن کار میکند، فقط با عوض کردن آدرس پایه به دیپفا وصل میشود؛ Claude Code و Codex هم از مسیرهای مخصوص خودشان.
یک کلید برای همهٔ فروشندهها
GPT، Claude، Gemini، Grok و DeepSeek پشت یک کلید و یک آدرس. عوض کردن مدل یعنی عوض کردن یک رشته در درخواست، نه عوض کردن کتابخانه و حساب و صورتحساب.
استریم، ابزار و ورودی تصویری
پاسخ کلمهبهکلمه با SSE، فراخوانی ابزار (function calling)، خروجی ساختاریافته و ارسال تصویر — همه بدون تغییر در کدی که از قبل نوشتهاید.
سقف خرج روی هر کلید
برای هر کلید سقف روزانه و ماهانه، محدودیت درخواست در دقیقه، مدلها و مسیرهای مجاز، نشانیهای IP و تاریخ پایان تعیین کنید. کلیدی که به یک اسکریپت میدهید نمیتواند کل حساب را خالی کند.
هزینهٔ هر تماس، جداگانه
هزینهٔ هر درخواست در هدر پاسخ برمیگردد و در صفحهٔ مصرف شما به تفکیک کلید و مدل ثبت میشود — خطاها هم. اعتبار برای شما یک چاه سیاه نیست.
پرداخت ریالی، بدون کارت ارزی
اعتبار را با درگاه داخلی میخرید و اعتبار خریداریشده تاریخ انقضا ندارد. نه کارت بینالمللی لازم است، نه تحریم دور زدن.
هزاران درخواست در یک فایل
با Batch API هزاران تیتر، خلاصه یا ترجمه را در یک فایل JSONL بفرستید؛ در پسزمینه و ظرف یک روز اجرا میشوند و پاسخها را در یک فایل تحویل میگیرید. نه محدودیت سرعتی را باید مدیریت کنید، نه تلاش دوباره را؛ همان شکل Batch API در OpenAI.
خبر پایان کار با Webhook
بهجای اینکه مدام بپرسید ویدیو، آهنگ، مدل سهبعدی، پادکست، اجرای ایجنت یا batch آماده شده یا نه، یک آدرس https بدهید تا با پایان هر کار یک رویداد امضاشده به آن ارسال شود (استاندارد Standard Webhooks، همانی که OpenAI استفاده میکند).
برچسب مصرف و حساب تیمی
با هدر X-DeepFA-Tag هر درخواست را به یک پروژه، بخش یا مشتری نسبت دهید تا مصرف به همان تفکیک دیده شود. صاحب تیم هم میتواند API را برای اعضا باز کند تا کلیدهایشان از اعتبار تیم و در سقف ماهانهٔ هر عضو خرج کنند.
مسیرهایی که میتوانید صدا بزنید
همه زیر یک آدرس پایه، همه با همان کلید، همه با همان شکل درخواست و پاسخی که از OpenAI میشناسید؛ فقط مسیر messages شکل Anthropic را دارد.
هر مسیر چه میگیرد و چه برمیگرداند
آنچه فراتر از شکل استاندارد OpenAI است: قابلیتهای چت، پارامترهای تصویر و صدا، کارهای ویدیو، فهرست مدلها، موجودی، و همهٔ خطاها و محدودیتها.
فراخوانی تابع (tools)
ابزارها را به شکل OpenAI بفرستید. اگر مدل بخواهد ابزاری را صدا بزند، پاسخ بهجای متن tool_calls دارد؛ تابع را خودتان اجرا کنید و نتیجه را با نقش tool و همان tool_call_id برگردانید تا مدل پاسخ نهایی را بنویسد. در همهٔ مدلهای متنی کار میکند بهجز Sonar که خودش در وب جستوجو میکند و ابزار نمیگیرد.
{
"model": "gpt-6-luna",
"messages": [{"role": "user", "content": "What is the weather in Tehran?"}],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Current weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"]
}
}
}],
"tool_choice": "auto"
}
{"role": "tool", "tool_call_id": "call_8f2...", "content": "{\"temp_c\": 21}"}
خروجی JSON (response_format)
با {"type": "json_object"} پاسخ یک JSON معتبر است؛ با json_schema دقیقاً همان ساختاری که تعریف میکنید برمیگردد.
{
"model": "gpt-6-luna",
"messages": [{"role": "user", "content": "Three colours, as JSON."}],
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "colours",
"schema": {
"type": "object",
"properties": {"colours": {"type": "array", "items": {"type": "string"}}},
"required": ["colours"]
}
}
}
}
ورودی تصویر و میزان استدلال
برای فرستادن تصویر، content را آرایه کنید و image_url بدهید: یک آدرس https عمومی، یا data URL بهصورت base64 (data:image/png;base64,…). مدلهای استدلالی (GPT-5، GPT-6، سری o و Gemini) reasoning_effort را با low، medium یا high میپذیرند؛ اگر نفرستید، پیشفرض خود مدل به کار میرود (در GPT-6: medium). مدلهای GPT-6 و سری o پارامترهای temperature و top_p را نمیپذیرند.
{
"model": "gpt-6-luna",
"reasoning_effort": "low",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "What is in this picture?"},
{"type": "image_url", "image_url": {"url": "https://example.com/cat.png"}}
]
}]
}
کش پرامپت
بخشی از پرامپت که مدل قبلاً دیده (مثلاً پیام سیستمی ثابت) با نرخ «ورودی کششده» جدول قیمت حساب میشود و تعدادش در usage.prompt_tokens_details.cached_tokens برمیگردد. در GPT، Gemini و DeepSeek خودکار است؛ در Claude مقدار cache_control با نوع ephemeral را روی پیام یا کل درخواست بگذارید (در /v1/messages همان نشانههای Claude Code بیتغییر میروند).
POST /v1/messages
شکل API مسیجز Anthropic، برای مدلهای Claude؛ همان مسیری که Claude Code با ANTHROPIC_BASE_URL برابر https://deepfa.ir/api صدا میزند. بدنه بیتغییر فرستاده میشود: system بهصورت بلوک، cache_control، thinking و ابزارها، و هدرهای anthropic-beta و anthropic-version هم منتقل میشوند. استریم رویداد به رویداد و به همان ترتیب برمیگردد و خطاها به شکل خطای Anthropic است. شناسههای تاریخدار مثل claude-haiku-4-5-20251001 و پسوند [1m] هم پذیرفته میشوند.
چند چیز برداشته میشود، چون هر کدام بیرون از نرخ توکن جدول قیمت هزینه دارد: speed (حالت سریع)، inference_geo و service_tier، و ابزارهای سمت سرور جستوجوی وب و اجرای کد که Anthropic بهازای هر بار استفاده حساب میکند. POST /v1/messages/count_tokens توکنهای یک درخواست را بدون هزینه میشمارد. مدلهای غیر Claude از /v1/chat/completions در دسترساند.
POST /v1/responses
شکل API ریسپانسز OpenAI، برای مدلهای OpenAI؛ تنها شکلی که Codex با آن کار میکند (wire_api = "responses"). آیتمهای input، آیتمهای استدلال با محتوای رمزشدهشان، و ابزارهای function، custom و shell بیتغییر منتقل میشوند. پاسخی که ذخیره میشود (پیشفرض، مگر "store": false) سی روز نگه داشته میشود و previous_response_id آن فقط برای همان حساب کار میکند. پارامتر conversation پشتیبانی نمیشود.
برداشته میشود: service_tier، background و ابزارهای میزبانیشدهای که بهازای هر استفاده هزینه دارند (جستوجوی وب و فایل، code interpreter، ساخت تصویر، computer use و MCP راه دور).
نام مدلهای بازنشسته
درخواستی که نام مدلی جایگزینشده را دارد، مثل gpt-5.6-luna، با مدل جانشین (gpt-6-luna) و به قیمت آن پاسخ داده میشود و صاحب کلید یک بار با ایمیل و اعلان پنل خبردار میشود. فهرست این نامها در زبانهٔ مدلهای صفحهٔ API است.
POST /v1/images/generations — تصویرها بهصورت b64_json (PNG با base64) برمیگردند و فقط برای تصویرهایی که واقعاً ساخته شدهاند هزینه کم میشود.
| فیلد | توضیح |
|---|---|
model | پیشفرض gpt-image-2.5-sunburst. همچنین gpt-image-2.5-flare، gpt-image-1، flux-3، flux-3-klein، flux-schnell، nano-banana-2.1 و nano-banana-2-lite. |
prompt | الزامی؛ توصیف تصویر. |
n | تعداد تصویر، ۱ تا ۱۰ (پیشفرض ۱). |
size | مثل 1024x1024، 1536x1024 یا 1024x1536. در FLUX، GPT Image 2.5 و Nano Banana به نزدیکترین نسبت تصویری که مدل میسازد تبدیل میشود. |
quality, background, output_format | برای gpt-image-1 همانطور که OpenAI تعریف کرده. |
{
"model": "flux-schnell",
"prompt": "A lighthouse at dawn, watercolour",
"n": 2,
"size": "1536x1024"
}
POST /v1/images/edits
تصویر به تصویر، به شکل multipart/form-data مثل OpenAI: یک تا چهار تصویر بههمراه توضیح میفرستید و تصویر تازه بهصورت b64_json برمیگردد. قیمت هر تصویر همان قیمت مدل است؛ در مدلهایی که سرویسدهنده برای هر تصویر ورودی هزینه میگیرد، هر تصویر ورودی مبلغ credits_per_input_image را در GET /v1/models اضافه میکند.
| فیلد | توضیح |
|---|---|
image / image[] | الزامی؛ یک تا چهار تصویر PNG، JPEG یا WebP (در nano-banana-2-lite تا سه)، هر کدام تا ۱۰ مگابایت (به حدود یک مگاپیکسل کوچک میشوند). |
model | پیشفرض gpt-image-2.5-sunburst. همچنین gpt-image-2.5-flare، nano-banana-2.1، nano-banana-2-lite، flux-3 و flux-3-klein. |
prompt | الزامی؛ بگویید با تصاویر چه کند. |
n | تعداد تصویر، ۱ تا ۱۰ (پیشفرض ۱). |
size | اختیاری؛ مثل 1024x1024، یا auto برای همشکل تصویر ورودی. |
curl https://deepfa.ir/api/v1/images/edits \ -H "Authorization: Bearer $DEEPFA_API_KEY" \ -F model=flux-3 \ -F "image[]=@product.png" \ -F "prompt=Place this bottle on a marble counter in soft morning light"
POST /v1/audio/speech
فایل صوتی را مستقیم برمیگرداند و بهازای هر کاراکتر هزینه دارد.
| فیلد | توضیح |
|---|---|
model | پیشفرض tts-1. همچنین tts-1-hd، gpt-4o-mini-tts، و eleven-v4 و eleven-v4-turbo (سریعتر) که فارسی و بیش از نود زبان دیگر را میخوانند. و gemini-3.8-flash-lite-tts که فارسی و انگلیسی و زبانهای دیگر را با هفتاد صدا میخواند. |
input | الزامی؛ متن، حداکثر ۴۰۹۶ کاراکتر در هر درخواست. |
voice | برای مدلهای OpenAI یکی از alloy، ash، ballad، coral، echo، fable، nova، onyx، sage، shimmer، verse (پیشفرض alloy). برای مدلهای eleven نام یک صدای ElevenLabs، مثل Rachel. |
response_format | mp3 (پیشفرض), opus, aac, flac, wav, pcm — مدلهای eleven همیشه mp3 برمیگردانند. |
voice (Gemini) | برای gemini-3.8-flash-lite-tts یکی از هفتاد صدای Gemini مثل Fola (پیشفرض)، Zephyr، Kore، Puck یا Charon. |
speed | سرعت خواندن (اختیاری). |
instructions | لحن و شیوهٔ خواندن، برای gpt-4o-mini-tts و gemini-3.8-flash-lite-tts. |
language | زبان متن، برای مدلهای eleven (اختیاری). |
POST /v1/audio/transcriptions
به شکل multipart/form-data؛ بهازای هر دقیقهٔ شروعشده هزینه دارد.
| فیلد | توضیح |
|---|---|
file | الزامی؛ فایل صوتی یا ویدیویی، حداکثر ۲۵ مگابایت. |
model | پیشفرض gpt-transcribe. همچنین gpt-4o-transcribe، gpt-4o-mini-transcribe و whisper-1 تا ۷ اسفند ۱۴۰۵ که OpenAI خاموششان میکند؛ از آن روز درخواستهایشان با gpt-transcribe انجام میشود. |
languages[], keywords[], prompt | اختیاری در gpt-transcribe: زبانهای احتمالی صدا (مثلاً fa)، واژههایی که انتظار شنیدنشان را دارید، و توضیح موضوع. language تکی هم پذیرفته و به languages[] تبدیل میشود. |
language, temperature | اختیاری در مدلهای قدیمی، همانطور که OpenAI تعریف کرده. |
response_format | json (پیشفرض) یا text؛ در whisper-1 (تا ۷ اسفند ۱۴۰۵) همچنین srt، vtt و verbose_json. |
ساخت ویدیو چند دقیقه طول میکشد، پس یک «کار» است: POST /v1/videos کار را شروع میکند و بیدرنگ شناسهاش را با وضعیت queued برمیگرداند؛ GET /v1/videos/{id} را هر چند ثانیه بخوانید تا وضعیت از in_progress به completed (با url فایل) یا failed برسد؛ GET /v1/videos/{id}/content به فایل آماده هدایت میکند (کد ۳۰۲) و اگر آماده نباشد ۴۰۹ میدهد. هزینه هنگام پذیرش کار کم میشود و اگر کار ناموفق شود، کامل برمیگردد.
| فیلد | توضیح |
|---|---|
model | الزامی؛ از جدول پایین. |
prompt | الزامی (بهجز bytedance-upscaler). |
image_url | آدرس عمومی https یک تصویر، برای متحرک کردن آن. |
video_url | آدرس عمومی https یک ویدیو، برای ویرایش آن. image_url و video_url را با هم نفرستید. |
seconds | مدت کلیپ، یکی از مدتهای مدل در جدول پایین (پیشفرض ۵). برای ویرایش لازم نیست: مدت از خود ویدیوی ورودی خوانده میشود و باید 1 تا 120 ثانیه باشد. |
resolution | مثل 480p، 720p یا 1080p. اگر نفرستید یا مدل آن را نسازد، وضوح پیشفرض مدل به کار میرود. قیمت با وضوح و مدت تغییر میکند. |
aspect_ratio | 16:9 (پیشفرض)، 9:16، یا 1:1 در مدلهایی که آن را میسازند. |
audio | ساخت صدا در مدلهایی که صدا میسازند (پیشفرض true). |
fps, keep_audio, audio_setting | فقط برای ویرایش: فریمریت bytedance-upscaler (پیشفرض 30)، نگهداشتن صدای ویدیوی ورودی (پیشفرض true)، و تنظیم صدا در happy-horse-edit. |
مدلها و مدتهای مجاز
| مدل | نوع کار | مدت (ثانیه) |
|---|---|---|
| kling-3-turbo-pro | متن به ویدیو | 5، 10 |
| luma-ray-32 | متن به ویدیو | 5، 10 |
| grok-imagine-15 | متن به ویدیو، تصویر به ویدیو (image_url) | 3، 5، 10، 15 |
| minimax-h3-max | متن به ویدیو | 5، 10، 15 |
| wan-30 | متن به ویدیو | 5، 10، 15 |
| kling-3-pro | متن به ویدیو | 5، 10 |
| kling-o3 | متن به ویدیو | 5، 10 |
| google-veo-31 | متن به ویدیو، تصویر به ویدیو (image_url) | 4، 6، 8 |
| google-veo-31-fast | متن به ویدیو، تصویر به ویدیو (image_url) | 4، 6، 8 |
| google-veo-31-lite | متن به ویدیو، تصویر به ویدیو (image_url) | 4، 6، 8 |
| seedance-25 | متن به ویدیو، تصویر به ویدیو (image_url) | 5، 10، 15، 20، 30 |
| kling-4 | متن به ویدیو، تصویر به ویدیو (image_url) | 3، 5، 10، 15، 20، 30 |
| kling-video-pro | تصویر به ویدیو (image_url) | 5، 10 |
| kling-video-o3 | تصویر به ویدیو (image_url) | 5، 10 |
| luma-dream-machine | تصویر به ویدیو (image_url) | 5 |
| wan-video-25 | تصویر به ویدیو (image_url) | 5، 10 |
| bytedance-upscaler | ویرایش ویدیو (video_url) | مدت ویدیوی ورودی |
| happy-horse-edit | ویرایش ویدیو (video_url) | مدت ویدیوی ورودی |
| kling-o3-pro-edit | ویرایش ویدیو (video_url) | مدت ویدیوی ورودی |
| grok-imagine-edit | ویرایش ویدیو (video_url) | مدت ویدیوی ورودی |
curl https://deepfa.ir/api/v1/videos \
-H "Authorization: Bearer $DEEPFA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine-15",
"prompt": "A paper boat sailing down a rainy street",
"seconds": 5,
"resolution": "720p",
"aspect_ratio": "16:9"
}'
{
"id": "t_48213",
"object": "video",
"model": "grok-imagine-15",
"kind": "text_to_video",
"status": "queued",
"seconds": 5,
"created_at": 1790443124
}
پادکست یک «کار» است، مثل ویدیو: POST /v1/podcasts سناریو را میگیرد و بیدرنگ شناسهای مثل p_123 برمیگرداند؛ با GET /v1/podcasts/{id} وضعیت را بپرسید تا completed شود و با GET /v1/podcasts/{id}/content فایل صوتی را بگیرید (?what=transcript متن و ?what=srt زیرنویس). صدا با مدل gemini-3.8-flash-lite-tts ساخته میشود؛ هزینه فقط یکبار و پس از ساخت کامل، بهاندازهٔ کاراکترهای خواندهشده و با همان نرخ /v1/audio/speech برای این مدل است، و اگر ساخت ناموفق باشد چیزی کم نمیشود. نوشتن سناریو با خود شماست (برای نوشتن آن از /v1/chat/completions استفاده کنید).
| فیلد | توضیح |
|---|---|
turns | سناریو بهصورت فهرستی از {speaker: ۱ تا ۴, text, style}. style اختیاری و انگلیسی است، مثل warmly یا quietly amazed. یا بهجای آن script را بفرستید. |
script | سناریو بهصورت متن با خطوطی مثل «سارا: سلام». نامها همان names هستند، یا برچسبهایی مثل Speaker 1 و گوینده ۲. |
voices, names | تا چهار صدا و نام میزبانها (پیشفرض Laomedeia، Alnilam، Sulafat و Puck). صداها همان صداهای Gemini هستند. با بیش از دو میزبان، صداها دو به دو ضبط میشوند. |
language | کد زبان، مثل fa، en، ar، tr … (پیشفرض en). |
kind, natural, title | kind برابر solo یعنی یک گوینده؛ natural گفتگوی طبیعی با مِنمِن و مکث؛ title عنوان قسمت. |
| برچسبهای صدا | داخل متن میتوانید <laugh>، <sigh>، <gasp>، <short pause> و <long pause> بنویسید؛ معادل فارسیشان هم کار میکند: <خنده>، <آه>، <مکث کوتاه>، <مکث بلند>. |
حداکثر ۱۲٬۰۰۰ کاراکتر در هر پادکست (حدود بیست دقیقه) و سه پادکستِ همزمان برای هر حساب. پادکستهایی که با API ساخته شوند در فهرست ابزار «پادکست هوش مصنوعی» هم دیده میشوند.
curl https://deepfa.ir/api/v1/podcasts \
-H "Authorization: Bearer $DEEPFA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"language":"en","voices":["Kore","Puck"],"turns":[{"speaker":1,"text":"Hi everyone, welcome! "},{"speaker":2,"text":"Glad to be here.","style":"warmly"}]}'
{"id":"p_123","object":"podcast","model":"gemini-3.8-flash-lite-tts","status":"queued","progress":0}
مدل سهبعدی هم یک «کار» است: POST /v1/3d یک عکس (image_url)، چند عکس از یک چیز از زاویههای مختلف (image_urls) یا یک توضیح (prompt) میگیرد و شناسهای مثل 3d_123 برمیگرداند؛ GET /v1/3d/{id} را بپرسید تا completed شود و فایل را از GET /v1/3d/{id}/content بگیرید (?format=glb پیشفرض؛ obj، fbx، usdz یا stl اگر موتور ساخته باشد، در فهرست files). ساخت معمولاً یک تا چند دقیقه طول میکشد. هزینه وقتی سرویسدهنده کار را بپذیرد کم میشود و اگر ساخت ناموفق باشد به اعتبار API برمیگردد. مدلهایی که با API ساخته شوند در «استودیو سهبعدی» حساب شما هم دیده میشوند.
| فیلد | توضیح |
|---|---|
model | tripo-h3.1, hunyuan-3d-3.1-pro, rodin-gen-2.5, meshy-7.1, trellis-2 |
image_url, image_urls | آدرس عمومی http(s) عکس یا data: URI (PNG، JPEG یا WebP، تا ۱۵ مگابایت). چند عکس یعنی یک چیز از چند طرف: اول جلو، بعد پشت، چپ و راست (Hunyuan بالا، پایین و دو گوشهٔ جلو را هم میگیرد). |
prompt | توضیح آنچه ساخته شود، تا ۱۰۰۰ کاراکتر؛ برای ساخت از متن (trellis-2 فقط از عکس میسازد). |
character, animation | فقط meshy-7.1: کاراکتر اسکلتبندیشده از یک عکس یا توضیح؛ animation شمارهٔ حرکت است (مثل 405 رقص شاد، 30 راه رفتن، 28 دست تکان دادن، 16 دویدن) و فایل GLB متحرک برمیگردد. |
texture, geometry | tripo-h3.1: texture برابر none، standard یا hd و geometry برابر standard یا detailed. meshy-7.1: texture برابر true یا false (بدون رنگ برای چاپ سهبعدی). |
pbr, tier, hd, lowpoly, resolution | pbr: مواد واقعی در hunyuan-3d-3.1-pro. tier و hd: کیفیت rodin-gen-2.5 (Gen-2.5-Medium، Gen-2.5-High، Gen-2.5-Extreme-High؛ hd افزونهٔ HighPack). lowpoly: مدل کمحجم برای بازی در meshy-7.1. resolution: 512، 1024 یا 1536 در trellis-2. |
title | نام مدل در حساب شما (اختیاری). |
| مدل | از یک عکس | از چند عکس | از توضیح |
|---|---|---|---|
tripo-h3.1 |
750 اعتبار | 750 اعتبار (تا 4) | 500 اعتبار |
hunyuan-3d-3.1-pro |
1,313 اعتبار | 1,688 اعتبار (تا 8) | 1,313 اعتبار |
rodin-gen-2.5 |
1,000 اعتبار | 1,000 اعتبار (تا 5) | 1,000 اعتبار |
meshy-7.1 |
3,000 اعتبار | 3,000 اعتبار (تا 4) | 3,000 اعتبار |
trellis-2 |
750 اعتبار | — | — |
قیمتها با تنظیمات پیشفرض هر مدل است؛ گزینههایی مثل texture: "hd"، hd: true یا کاراکتر متحرک به آن اضافه میکنند و هزینهٔ دقیق هر درخواست در هدر x-deepfa-credits برمیگردد.
curl https://deepfa.ir/api/v1/3d \
-H "Authorization: Bearer $DEEPFA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"tripo-h3.1","image_url":"https://example.com/chair.jpg","texture":"hd"}'
{"id":"3d_123","object":"3d_model","model":"tripo-h3.1","status":"completed",
"files":[{"format":"glb","label":"GLB: web, AR and most 3D apps","url":"https://deepfa.ir/api/v1/3d/3d_123/content?format=glb"}],
"preview_image_url":"..."}
برای هزاران درخواست، به شکل Batch API در OpenAI و با همان کتابخانهها: درخواستها را در یک فایل JSONL بنویسید (هر خط یک درخواست)، با POST /v1/files و purpose=batch بالا بفرستید، با POST /v1/batches اجرا را شروع کنید، GET /v1/batches/{id} را بپرسید تا وضعیت completed شود و پاسخها را از GET /v1/files/{output_file_id}/content بگیرید. درخواستها ظرف ۲۴ ساعت در پسزمینه اجرا میشوند، بدون محدودیت سرعت کلید، و هر کدام دقیقاً به قیمت همان درخواست زنده و با سقفهای روزانه و ماهانهٔ کلید حساب میشود.
{"custom_id": "news-1", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gpt-6-luna", "messages": [{"role": "user", "content": "..."}]}}
{"custom_id": "news-2", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gpt-6-luna", "messages": [{"role": "user", "content": "..."}]}}
curl https://deepfa.ir/api/v1/files -H "Authorization: Bearer $DEEPFA_API_KEY" -F purpose=batch -F file=@requests.jsonl
curl https://deepfa.ir/api/v1/batches -H "Authorization: Bearer $DEEPFA_API_KEY" -H "Content-Type: application/json" \
-d '{"input_file_id": "file-...", "endpoint": "/v1/chat/completions", "completion_window": "24h"}'
| نکته | توضیح |
|---|---|
endpoint | /v1/chat/completions یا /v1/embeddings؛ همهٔ خطهای فایل باید همین url را داشته باشند. |
custom_id | الزامی و یکتا در هر فایل؛ پاسخ هر خط با همین شناسه برمیگردد، چون ترتیب تحویل تضمین نیست. |
| بررسی فایل | اگر خطی نامعتبر باشد (JSON نادرست، مدل ناموجود، custom_id تکراری)، batch با وضعیت failed و فهرست خطاها در errors برمیگردد و هیچ درخواستی اجرا نمیشود. |
| نتیجه | output_file_id پاسخهای موفق و error_file_id درخواستهای ناموفق را دارد؛ هر خط شامل custom_id، response.status_code و response.body است. request_counts، usage و credits خلاصهٔ کار و هزینهاند. |
| لغو و انقضا | POST /v1/batches/{id}/cancel درخواستهای اجرانشده را کنار میگذارد و آنچه انجام شده در فایل میماند. آنچه ظرف ۲۴ ساعت اجرا نشود با کد batch_expired در فایل خطاها میآید و هزینهای ندارد. |
| محدودیت | حداکثر ۵۰٬۰۰۰ درخواست در هر batch؛ حجم فایل تا سقف آپلود سرور (متن خطا مقدارش را میگوید). فایلها سی روز نگه داشته میشوند و فقط با کلید همان حساب خوانده میشوند. |
بهجای پرسیدن مداوم وضعیت، در زبانهٔ «اتصال» صفحهٔ API یک آدرس https بدهید. با پایان هر کار طولانی یک رویداد به آن ارسال میشود و اگر سرور شما با 2xx پاسخ ندهد، تا حدود یک روز دوباره تلاش میشود (پس از ۱، ۵ و ۳۰ دقیقه، ۲، ۶ و ۱۵ ساعت). بدنهٔ رویداد فقط شناسهٔ کار را دارد؛ نتیجه را با کلید خودتان بخوانید.
{"id": "evt_...", "object": "event", "type": "video.completed", "created_at": 1793000000,
"data": {"id": "t_123", "object": "video", "status": "completed"}}
| رویداد | کی |
|---|---|
video.completed, video.failed | ساخت ویدیو تمام شد یا ناموفق شد (اعتبار برمیگردد). |
music.completed, music.failed | آهنگ آماده شد یا ناموفق شد. |
podcast.completed, podcast.failed | پادکست آماده شد یا ناموفق شد. |
3d_model.completed, 3d_model.failed | مدل سهبعدی آماده شد یا ناموفق شد (اعتبار برمیگردد). |
agent_run.completed, agent_run.failed, agent_run.cancelled | اجرای ایجنت پایان یافت. |
batch.completed, batch.failed, batch.expired, batch.cancelled | یک batch پایان یافت. |
بررسی امضا
هر ارسال سه هدر استاندارد Standard Webhooks دارد که Webhookهای خود OpenAI هم به کار میبرند: webhook-id، webhook-timestamp و webhook-signature (به شکل v1, و سپس HMAC-SHA256 رشتهٔ «id.timestamp.body» با بایتهای کلید امضا، به base64). کلید امضا (whsec_...) در همان زبانهٔ «اتصال» است؛ کتابخانههای Standard Webhooks و تابع webhooks.unwrap در SDK رسمی OpenAI آن را بررسی میکنند.
# pip install standardwebhooks
from standardwebhooks.webhooks import Webhook
event = Webhook("whsec_...").verify(request_body, request_headers) # raises if forged
GET /v1/models
فقط مدلهایی را برمیگرداند که پلن و کلید شما اجازه میدهند، هر کدام با شیء pricing به اعتبار. در مدلهای متنی: input_per_million_tokens، output_per_million_tokens، و در صورت وجود cached_input_per_million_tokens و cache_write_per_million_tokens. در مدلهای دیگر: credits بهازای credits_per (image، character، minute، video، second یا model)؛ در مدل سهبعدی، کمترین قیمت با from و ورودیها با inputs و max_images آمدهاند؛ در ویدیو، seconds و resolution هم کلیپی را نشان میدهند که قیمتش آمده است. همیشه همان قیمتی است که واقعاً کسر میشود.
GET /v1/balance
موجودیای که همین کلید میتواند خرج کند، بدون هزینه. available اعتبار حساب است که API به آن دسترسی دارد و pockets آن را به ترتیب خرج نشان میدهد: اعتبار API، اعتبار پلن، اعتبار پیشپرداخت. key سقفهای روزانه و ماهانهٔ همین کلید را با مقدار خرجشده نشان میدهد و spendable چیزی است که کلید همین حالا میتواند خرج کند، یعنی موجودی محدود به نزدیکترین سقف. در حساب نامحدود unlimited برابر true و available برابر null است. برای عضو تیمی که صاحب تیم API را برایش باز کرده، pockets.team سهم او از اعتبار تیم (در سقف ماهانهاش) است و در available حساب میشود.
curl https://deepfa.ir/api/v1/balance -H "Authorization: Bearer $DEEPFA_API_KEY"
{
"object": "balance",
"unit": "credits",
"unlimited": false,
"available": 6500,
"pockets": {"api": 5000, "plan": 1200, "prepaid": 300},
"key": {
"name": "production",
"rpm_limit": 60,
"daily": {"limit": 100, "spent": 30, "remaining": 70},
"monthly": {"limit": null, "spent": 30, "remaining": null}
},
"spendable": 70
}
هر خطا به شکل استاندارد OpenAI برمیگردد و code همان type است؛ param نام فیلدی است که مشکل دارد. در /v1/messages خطا به شکل Anthropic برمیگردد.
{
"error": {
"message": "The model \"gpt-9\" is not available.",
"type": "model_not_found",
"param": "model",
"code": "model_not_found"
}
}
| HTTP | type | یعنی |
|---|---|---|
400 | invalid_request_error | فیلدی جا افتاده یا نادرست است؛ param نام همان فیلد است. |
401 | invalid_api_key | کلید نادرست است، باطل شده، یا اصلاً فرستاده نشده (invalid_request_error). |
401 | key_expired | تاریخ پایانی که روی این کلید گذاشتهاید گذشته است. |
403 | account_inactive | حساب تأیید یا فعال نشده است. |
403 | key_disabled | این کلید را در صفحهٔ API خاموش کردهاید. |
403 | ip_not_allowed | درخواست از نشانیای آمده که در فهرست نشانیهای مجاز این کلید نیست. |
403 | endpoint_not_allowed | این کلید اجازهٔ صدا زدن این مسیر را ندارد. |
403 | permission_denied | پلن شما اجازهٔ این ایجنت را نمیدهد. |
404 | model_not_found | مدل وجود ندارد، یا پلن یا کلید شما اجازهاش را نمیدهد. |
404 | not_found | ویدیو یا اجرایی با این شناسه پیدا نشد. |
404 | invalid_request_error | آدرس مسیر نادرست است؛ متن خطا آدرس این مرجع را دارد. |
409 | invalid_request_error | ویدیو یا پادکست هنوز آماده نیست، یا ناموفق شده (از مسیر content). |
409 | idempotency_key_in_use | درخواستی با همین Idempotency-Key هنوز در حال اجراست؛ چند ثانیه بعد دوباره بفرستید. |
422 | idempotency_key_reused | این Idempotency-Key قبلاً برای درخواست دیگری به کار رفته؛ برای درخواست تازه کلید تازه بفرستید. |
413 | invalid_request_error | فایل رونوشت از ۲۵ مگابایت بزرگتر است. |
429 | insufficient_quota | اعتبار کافی نیست؛ متن خطا نشانی خرید اعتبار را دارد. |
429 | key_daily_limit_reached | سقف روزانهای که روی این کلید گذاشتهاید پر شده. |
429 | key_monthly_limit_reached | سقف ماهانهٔ این کلید پر شده. |
429 | rate_limit_exceeded | درخواستهای این کلید در دقیقه از حدش گذشته (هدر Retry-After میگوید چند ثانیه صبر کنید)، یا سه اجرای ایجنت همزمان دارید. |
500 | internal_error | خطای داخلی؛ هزینهای کم نشده است. |
502 | upstream_error | سرویسدهندهٔ مدل خطا داد یا در دسترس نبود؛ دوباره تلاش کنید. |
503 | model_unavailable | این مدل موقتاً در دسترس نیست. |
محدودیتها
- تعداد درخواست در دقیقه برای هر کلید: پیشفرض ۶۰؛ هنگام ساخت یا ویرایش کلید در پنل میتوانید آن را از ۱ تا ۶۰۰۰ بگذارید. بیش از آن، ۴۲۹ با هدر
Retry-After. - سقف اعتبار روزانه و ماهانه برای هر کلید، اختیاری، در پنل؛ مقدار باقیماندهاش را
GET /v1/balanceنشان میدهد. - برای هر کلید، اختیاری: نشانیهای IP مجاز (IPv4، IPv6 یا بازهٔ CIDR)، گروه مسیرهای مجاز، تاریخ پایان، و خاموش کردن موقت.
- حداکثر سه اجرای ایجنت همزمان برای هر حساب.
- فایل رونوشت حداکثر ۲۵ مگابایت؛ متن گفتار حداکثر ۴۰۹۶ کاراکتر؛ تصویر حداکثر ۱۰ عدد در هر درخواست؛ ویرایش ویدیو 1 تا 120 ثانیه.
- هزینهٔ هر درخواست در هدر
x-deepfa-creditsو شناسهٔ آن درx-deepfa-request-idبرمیگردد؛ این شناسه را هنگام تماس با پشتیبانی بفرستید.
هدرهای اختیاری
X-DeepFA-Tag: برچسبی تا ۶۴ کاراکتر برای هر درخواست (پروژه، بخش، یکی از مشتریانتان)؛ صفحهٔ مصرف و فایل Excel مصرف را به تفکیک آن نشان میدهند. برچسب فارسی را درصد-کد (URL-encode) کنید، چون بیشتر کتابخانهها حروف غیرلاتین را در هدر نمیپذیرند.Idempotency-Key: اگر همان درخواست را با همان کلید تا یک روز دوباره بفرستید (مثلاً پس از قطع اتصال)، پاسخ اول با هدرIdempotent-Replayed: trueبرمیگردد و درخواست دوباره اجرا و حساب نمیشود. پاسخهای جریانی (stream) بازپخش نمیشوند؛ کلیدشان فقط جلوی اجرای دوباره را میگیرد.
برای ابزارها و پایش
- توصیف کامل API به شکل OpenAPI 3.1، برای وارد کردن در Postman یا Insomnia یا ساخت کلاینت: /api/openapi.json
- وضعیت لحظهای و نود روز اخیر هر بخش API: صفحهٔ وضعیت و برای پایش خودکار /api/status.json
شروع سریع در ۶ زبان برنامهنویسی
همان درخواست در شش زبان. تنها چیزی که با OpenAI فرق دارد، آدرس پایه و کلید است.
curl https://deepfa.ir/api/v1/chat/completions \
-H "Authorization: Bearer $DEEPFA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5",
"messages": [{"role": "user", "content": "Hello"}]
}'
# pip install openai
from openai import OpenAI
client = OpenAI(
api_key="YOUR_DEEPFA_KEY",
base_url="https://deepfa.ir/api/v1",
)
completion = client.chat.completions.create(
model="claude-sonnet-5",
messages=[{"role": "user", "content": "Hello"}],
)
print(completion.choices[0].message.content)
print(completion.usage.total_tokens, "tokens")
// Any fetch, no SDK needed.
const res = await fetch('https://deepfa.ir/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': `Bearer ${DEEPFA_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'gpt-6.1-sol',
messages: [{ role: 'user', content: 'Hello' }],
stream: false
})
});
const data = await res.json();
console.log(data.choices[0].message.content);
// What the call cost, straight off the response header.
console.log(res.headers.get('x-deepfa-credits'), 'credits');
// npm install openai
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: process.env.DEEPFA_API_KEY,
baseURL: 'https://deepfa.ir/api/v1'
});
// Streaming works exactly as it does upstream.
const stream = await client.chat.completions.create({
model: 'gemini-3.8-flash',
messages: [{ role: 'user', content: 'Write a haiku' }],
stream: true
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? '');
}
<?php
$ch = curl_init('https://deepfa.ir/api/v1/chat/completions');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('DEEPFA_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'model' => 'deepseek-flash',
'messages' => [['role' => 'user', 'content' => 'Hello']],
]),
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
echo $result['choices'][0]['message']['content'];
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main() {
body, _ := json.Marshal(map[string]any{
"model": "claude-haiku-5-5",
"messages": []map[string]string{
{"role": "user", "content": "Hello"},
},
})
req, _ := http.NewRequest("POST",
"https://deepfa.ir/api/v1/chat/completions",
bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer "+os.Getenv("DEEPFA_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
var out map[string]any
json.NewDecoder(res.Body).Decode(&out)
fmt.Println(out["choices"])
}
{
"id": "chatcmpl-9f2c1a",
"object": "chat.completion",
"model": "claude-sonnet-5",
"choices": [{
"index": 0,
"message": { "role": "assistant", "content": "Hello!" },
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 306,
"total_tokens": 318
}
}
data: {"id":"chatcmpl-9f2c1a","object":"chat.completion.chunk",
"choices":[{"delta":{"content":"Hel"},"index":0}]}
data: [DONE]
{
"object": "list",
"model": "text-embedding-3-small",
"data": [{ "object": "embedding", "index": 0,
"embedding": [0.0021, -0.0134, 0.0075] }],
"usage": { "prompt_tokens": 8, "total_tokens": 8 }
}
{
"created": 1788115200,
"data": [{ "b64_json": "iVBORw0KGgoAAAANSUhEUgAA..." }]
}
x-deepfa-request-id: 3f9a1c2e-... x-deepfa-credits: 0.0954 x-deepfa-credit-unit: credits
{
"error": {
"message": "You have run out of credit. Top up your balance to continue: https://deepfa.ir/app/user/pricing/plans#api_packs",
"type": "insufficient_quota",
"param": null,
"code": "insufficient_quota"
}
}
در چهار گام ساده اولین درخواست را بفرستید
از ساخت کلید تا اولین پاسخ، کمتر از یک دقیقه. هیچ ثبت اپلیکیشن و گردش OAuthای در کار نیست.
ساخت کلید API
وارد حساب خود شوید، به صفحهٔ API بروید و یک کلید بسازید. کلید فقط یک بار نمایش داده میشود، پس همانجا کپیاش کنید.
عوض کردن آدرس پایه
در ابزار یا کتابخانهای که دارید، آدرس پایه را روی https://deepfa.ir/api/v1 بگذارید و کلید را بهعنوان API key وارد کنید.
انتخاب مدل
نام مدل را در همان فیلد model بنویسید — claude-sonnet-5-5، gpt-6.1-sol، gemini-3.8-flash یا هر مدل دیگری که کلیدتان اجازه دارد.
دیدن هزینه
هزینهٔ هر تماس در هدر x-deepfa-credits برمیگردد و در صفحهٔ API به تفکیک کلید و مدل ثبت میشود.
نگاهی به محیط کاربری API
رابط کاربری ساده و کاربردی — روی هر تصویر کلیک کنید تا بزرگتر ببینید.
پرسشهای پرتکرار درباره API هوش مصنوعی دیپفا
پاسخ سوالات رایج توسعهدهندگان درباره استفاده از API — اگر پاسخ سوال خود را پیدا نکردید، با پشتیبانی تماس بگیرید.
کلید API خود را دریافت کنید و امروز پروژهتان را بسازید
ثبتنام رایگان، ساخت کلید در چند ثانیه، و اعتباری که تاریخ انقضا ندارد