دقیقهها، سقفها و محدودیتها
دقیقهها
Section titled “دقیقهها”هزینهٔ لُب به دقیقه است. توکن از همان موجودی خرج میکند که خود برنامه: جلسهای که با API میفرستید همانقدر هزینه دارد که همان جلسه در برنامه.
چه چیزی دقیقه خرج میکند
Section titled “چه چیزی دقیقه خرج میکند”فقط سه دسترسی میتوانند دقیقه خرج کنند. بقیهٔ مسیرها رایگاناند، از جمله خواندن، جستوجو و گرفتن قیمت پرسش.
| دسترسی | چه چیزی خرج میکند | چقدر |
|---|---|---|
recordings:write |
فرستادن جلسه، POST /recordings |
دقیقههای جلسه: minutes در پاسخ 202 |
recordings:query |
پرسش از یک جلسه، POST /recordings/{id}/ask |
قیمتی که GET /recordings/{id}/ask/quote میگوید |
series:query |
پرسش از یک سری، POST /series/{id}/ask |
قیمتی که GET /series/{id}/ask/quote میگوید |
فرستادن جلسه. minutes در پاسخ 202 هزینهٔ جلسه است: طول صدا، بهاضافهٔ هزینهٔ افزودهٔ
واژگان وقتی useKeyterms به کار برود، بهاضافهٔ پیوست. از لحظهای که لُب جلسه را میپذیرد، این
دقیقهها کنار گذاشته میشوند: جلسهٔ بعدیای که میفرستید نمیتواند آنها را خرج کند. خود هزینه وقتی
از موجودی برداشته میشود که رونوشت آماده شود. جلسهای که تبدیلش به رونوشت شکست بخورد هزینهای
ندارد؛ جلسهای هم که پیش از آمادهشدن رونوشت حذفش کنید هزینهای ندارد. جلسهای که در مرحلهٔ نامگذاری منتظر
بماند، یا هنگام نوشتن لُب شکست بخورد، هزینه دارد، و تلاش دوباره هزینهٔ تازهای ندارد.
پرسش. هر پرسش دقیقاً همان قیمتی را خرج میکند که گرفتن قیمت پرسش پیش از آن میگوید. با maxMinutes بیشترین قیمتی را
که میپذیرید بفرستید: اگر قیمت بیشتر باشد، پاسخ 409 PRICE_ABOVE_MAX است و چیزی خرج نمیشود.
پاسخی که مدل از دادنش خودداری کند هم هزینه دارد، اما پرسشی که با خطا تمام شود
(502 GENERATE_FAILED) هزینهای ندارد.
یک هزینه غیرمستقیم است: واژگانی که با account:write یا series:write مینویسید، هزینهٔ افزودهٔ
واژگان را به جلسههای بعدیای اضافه میکند که از آن استفاده کنند.
وقتی دقیقه کم بیاید
Section titled “وقتی دقیقه کم بیاید”اگر موجودی برای درخواستی کافی نباشد، پاسخ 402 INSUFFICIENT_MINUTES است و چیزی خرج نمیشود.
error.details اینها را دارد:
requiredMinutes: چند دقیقه برای این درخواست لازم است؛balanceMinutes، فقط برای توکنی کهaccount:readدارد: برای جلسهای که میفرستید، موجودی منهای جلسههایی که هنوز در راهاند؛ برای پرسش، خود موجودی، یعنی همان عددwallet.balanceMinutes.
تا صاحب حساب دقیقه نخریده است، همان درخواست را دوباره نفرستید. wallet.balanceMinutes در
whoami و GET /account جلسههایی را که رونوشتشان هنوز آماده نشده کم نمیکند، پس ممکن است بیشتر
از دقیقهای باشد که جلسهٔ تازه میتواند خرج کند.
حسابی که اعتبار آزمایشی گرفته (اعتبار آزمایشی بعد از تأیید شمارهٔ موبایل فعال میشود) و هنوز هیچ دقیقهای نخریده، یک بار میتواند جلسهای بفرستد که موجودیاش آن را نمیپوشاند، به شرط آنکه کمبود از حد مشخصی بیشتر نباشد. در این حالت موجودی تا خرید بعدی زیر صفر میرود.
لُب برای هر حساب سقفهای روزانهٔ خودش را هم دارد، برای جلسهها و برای پرسشها. رسیدن به آنها پاسخ
429 DAILY_LIMIT_REACHED میدهد و هیچ توکنی آنها را بالا نمیبرد.
سقف روزانهٔ توکن
Section titled “سقف روزانهٔ توکن”اگر توکنی سقف روزانه داشته باشد و درخواستی آن را از سقف بگذراند، پاسخ
429 TOKEN_DAILY_CAP است و چیزی خرج نمیشود. error.details مقدارهای capMinutes (سقف)،
usedMinutes (آنچه توکن در ۲۴ ساعت گذشته خرج کرده) و requiredMinutes (هزینهٔ همین درخواست) را
دارد.
Retry-After میگوید چند ثانیه صبر کنید تا خرجهای قدیمیتر از بازهٔ ۲۴ ساعته بیرون بروند و برای
این درخواست جا باز شود. اگر نیامده باشد، همین درخواست بهتنهایی از سقف بزرگتر است و صبر کمکی نمیکند: سقف را در «اتصالها» بالا
ببرید.
سقف درخواستها
Section titled “سقف درخواستها”هر توکن برای هر دسته از مسیرها سقفی از درخواستها دارد، در هر بازهٔ ۱۰ دقیقهای:
| دسته | سقف هر توکن | مسیرها |
|---|---|---|
read |
۶۰۰ درخواست در هر ۱۰ دقیقه | GET /whoami، GET /recordings/ready، GET /recordings/{id}/bundle، GET /recordings/{id}/status، GET /events، GET /series/readable، GET /series/{id}، GET /series/{id}/keyterms، GET /account، GET /account/keyterms، GET /account/memory |
submit |
۳۰ درخواست در هر ۱۰ دقیقه | POST /recordings، POST /recordings/{id}/naming، POST /recordings/{id}/retry |
search |
۱۲۰ درخواست در هر ۱۰ دقیقه | GET /recordings/search، GET /recordings/{id}/ask/quote، GET /series/{id}/ask/quote |
ask |
۳۰ درخواست در هر ۱۰ دقیقه | POST /recordings/{id}/ask، POST /series/{id}/ask |
settings |
۶۰ درخواست در هر ۱۰ دقیقه | POST /series، PATCH /series/{id}، PUT /series/{id}/keyterms، PATCH /account/settings، PUT /account/keyterms، PATCH /account/memory/{id}، DELETE /account/memory/{id} |
- سقف مال دسته است، نه مال یک مسیر: همهٔ مسیرهای یک دسته با هم زیر همان یک سقف شمرده میشوند.
خواندن پیاپی
GET /eventsهمان سقفreadرا پر میکند که خواندن جلسهٔ کامل، وضعیت وwhoami. - هر توکن سقفهای خودش را دارد، پس درخواستهای یک دستیار سقف دستیار دیگری را پر نمیکند.
- اگر از سقف بگذرید، پاسخ
429 RATE_LIMITEDباRetry-Afterاست: ثانیههایی که باید صبر کنید. همانقدر صبر کنید و زودتر دوباره نفرستید. - لُب در بعضی مسیرها شمار درخواستهایی را هم که از یک نشانی IP میآیند محدود میکند، با هر توکنی.
پاسخ این محدودیت هم
429 RATE_LIMITEDباRetry-Afterاست. - خواندن وضعیت یک جلسه، تقریباً هر یک دقیقه یک بار، بسیار کمتر از این سقف است.
محدودیتهای ارسال فایل
Section titled “محدودیتهای ارسال فایل”whoami محدودیتهای کنونی را در limits میگوید:
limits.maxUploadMb: بزرگترین فایل صوتی، به مگابایت. فایل بزرگتر پاسخ413 UPLOAD_TOO_LARGEمیگیرد.limits.maxRecordingMinutes: طولانیترین جلسه، به دقیقهٔ صدا. جلسهٔ بلندتر پاسخ413 RECORDING_TOO_LONGمیگیرد.
این عددها ممکن است تغییر کنند، پس آنها را در کدتان ننویسید و از
GET /whoami بخوانید.
فایلهایی که لُب میپذیرد. فیلد audio یک فایل صوتی میگیرد:
| قالب | نوعی که بفرستید |
|---|---|
| M4A، صدای MP4 | audio/mp4 |
| MP3 | audio/mpeg |
| WAV | audio/wav |
| WebM | audio/webm |
| Ogg | audio/ogg |
| AAC | audio/aac |
| FLAC | audio/flac |
لُب نوع فایل را از Content-Type همان بخش از درخواست که فایل در آن است میخواند. اگر این نوع
نیامده باشد یا نوع صوتی نباشد (اگر ;type=… را اضافه نکنید، curl نوع
application/octet-stream را میفرستد)، لُب فایلهای MP3، AAC، WAV، FLAC، Ogg و بیشتر فایلهای M4A را از چند بایت اولشان
میشناسد. فایل WebM نوعش را لازم دارد: -F "audio=@meeting.webm;type=audio/webm". فایلی که لُب
نوعش را نشناسد پاسخ 400 VALIDATION میگیرد، فایلی که نتواند بخواند 400 INVALID_AUDIO، و فایل
M4A یا MP4 ناقص 400 AUDIO_INCOMPLETE.
فایل ویدیویی (video/mp4، video/quicktime، video/webm یا video/x-matroska) فقط وقتی پذیرفته
میشود که ارسال ویدیو روشن باشد، و لُب فقط صدای آن را نگه میدارد. نوع ویدیو را هم بفرستید:
-F "audio=@meeting.mp4;type=video/mp4". لُب ویدیو را از بایتهایش نمیشناسد، پس بدون نوع، پاسخ
400 VALIDATION است. وقتی ارسال ویدیو خاموش باشد، فرستادن ویدیو پاسخ 409 VIDEO_UPLOAD_DISABLED
میگیرد.
فیلد attachment یک فایل PDF، PPTX یا DOCX تا ۱۰ مگابایت میگیرد که لُب نوعش را از پسوند نام فایل
میشناسد. پیوست به اندازهٔ حجمش دقیقه به هزینهٔ جلسه اضافه میکند.