ZaminDocs

Fayllar

sendVideo

Video yuboradi (MP4, MOV, WebM).

POSThttps://api.zamin.app/bot<TOKEN>/sendVideo

GET ham ishlaydi. Parametrlar: query, JSON, form yoki multipart β€” batafsil.

Video yuboradi. Fayl mazmuni bo'yicha video bo'lishi kerak: MP4, QuickTime (MOV) yoki WebM. Javobda video maydoni bo'ladi. Davomiylik, eskiz (thumbnail) kabi maydonlar hozircha yo'q.

Parametrlar

ParametrTuriMajburiyCheklovIzoh
chat_idInteger yoki StringMajburiy≀16 raqam (manfiy ham) yoki @usernameShaxsiy chat: foydalanuvchining id'si (message.chat.id), faqat botni boshlagan va bloklamagan bo'lsa. Guruh yoki kanal: manfiy id (-4012345678, -100…) yoki bot a'zo bo'lgan ochiq chatning @username'i. Chat id'lari.
videoInputFile yoki StringMajburiy≀50 MBMultipart orqali yangi fayl yoki bot avval ko'rgan file_id (≀128 belgi). URL qabul qilinmaydi. MP4, MOV yoki WebM.
captionStringIxtiyoriy0–1024 belgiFayl ostidagi matn (oddiy matn).
reply_markupInlineKeyboardMarkup, ReplyKeyboardMarkup yoki ReplyKeyboardRemoveIxtiyoriy≀12 qator, qatorda ≀8, jami ≀100 tugmaJSON obyekt. Query, form yoki multipart so'rovda JSON matn sifatida yuboriladi. Klaviaturalar. Guruhda faqat inline klaviatura; kanal postida tugma bo'lmaydi.
reply_to_message_idIntegerIxtiyoriyβ€”Javob qilinadigan xabar. Shu chatda bo'lishi va o'chirilmagan bo'lishi kerak. Kanal postlarida e'tiborga olinmaydi.

Javob

Natija (result): Message

JSON
{
  "ok": true,
  "result": {
    "message_id": 14,
    "from": {
      "id": 1000001,
      "is_bot": true,
      "first_name": "Ob-havo",
      "username": "ObHavoBot",
      "can_join_groups": true,
      "can_read_all_group_messages": false,
      "supports_inline_queries": false
    },
    "chat": {
      "id": 4810235517,
      "type": "private",
      "first_name": "Ali",
      "last_name": "Valiyev",
      "username": "ali"
    },
    "date": 1791106200,
    "caption": "Mana fayl",
    "video": {
      "file_id": "BQx8Kq2vN0aLrT5mW1pZcY7uE3sHdJ9gFbR4",
      "file_unique_id": "Vd5tG8hJ1kL3zX6c",
      "file_size": 4823011,
      "mime_type": "video/mp4",
      "file_name": "video.mp4"
    }
  }
}

Xatolar

KodTavsifSabab va yechim
400Bad Request: chat not foundchat_id noto'g'ri, foydalanuvchi botni boshlamagan, bloklagan yoki hisobi o'chirilgan. Hammasi uchun javob bir xil (atayin).
400Bad Request: there is no video in the requestvideo maydoni yo'q (yoki multipart fayl boshqa nom bilan yuborilgan).
400Bad Request: sending files by URL is not supportedFaylni URL bilan emas, multipart yoki file_id bilan yuboring.
400Bad Request: wrong file identifier/HTTP URL specifiedBu file_id shu botga tegishli emas yoki fayl o'chirilgan.
400Bad Request: type of file mismatch (expected video)Fayl turi metodga mos emas (masalan, sendPhoto'ga video).
400Bad Request: caption: message caption is too longcaption 1024 belgidan oshmasin.
400Bad Request: empty_fileFayl bo'sh.
400Bad Request: invalid_imageRasmni o'qib bo'lmadi (buzilgan fayl yoki 50 megapikseldan katta).
413Bad Request: file_too_largeFayl limitdan katta (rasm 20 MB, boshqalar 50 MB).
413Request Entity Too LargeMultipart so'rov 52 MB dan katta.
400Bad Request: message to be replied not foundreply_to_message_id bo'yicha xabar yo'q yoki o'chirilgan (guruhda β€” bot qo'shilishidan oldingi xabar ham).
429Too Many Requests: retry after NXabar limiti. So'rov bajarilmagan va limitlardan olgan tokenlari qaytarilgan: parameters.retry_after soniya kutib, o'sha so'rovni qayta yuboring.
429Too Many Requests: retry after 1Bir vaqtda juda ko'p fayl uzatish: bot bo'yicha 3 ta, umumiy 16 ta (multipart yuklash; guruh yoki kanalga file_id bilan qayta yuborish ham). 1 soniyadan keyin qayta urining.
400Bad Request: not enough rights to send media messages to the chatGuruh: bot admin emas va guruh sozlamalarida a'zolarga fayl yuborish o'chirilgan.
400Bad Request: not enough rights to send messages to the chatKanal: botda "Post joylash" (can_post_messages) huquqi yo'q yoki bu rasmiy kanal.
400Bad Request: only inline keyboards are supported in groupsGuruhda reply klaviatura (keyboard, remove_keyboard) ishlamaydi.
400Bad Request: channel posts can't have buttonsKanal postiga reply_markup berib bo'lmaydi.
400Bad Request: &lt;sabab&gt;Kanal: post (yoki tahrir) matni kontent filtridan o'tmadi β€” odamlarning postlaridagi qoidalar bilan bir xil.
403Forbidden: the bot's owner must accept Zamin's terms of use firstKanal: yangi post uchun bot egasi Zamin foydalanish shartlarini qabul qilishi kerak.
400Bad Request: method is not available for this chatKanal izohlari chatida (supergroup) bu amal yo'q: bot izoh yoza olmaydi, izohlar chatini boshqarmaydi.
429Too Many Requests: retry after NBitta guruh yoki kanalga daqiqasiga 20 ta xabar, bot bo'yicha soniyasiga 30 ta yoki guruhda shifrlash byudjeti (1 000 qurilma/s bot, 1 500/s bot egasi, 5 000/s umumiy). Rad etilgan so'rov hech narsa qilmagan: retry_after soniya kutib, qayta yuboring.

Istalgan metodda bo'lishi mumkin: 401 Unauthorized, 403 Forbidden: bot is suspended, 429 Too Many Requests, 400 Bad Request: <maydon>: … β€” xato kodlari.

Misol

Python
import os
import requests

TOKEN = os.environ["ZAMIN_BOT_TOKEN"]
API = f"https://api.zamin.app/bot{TOKEN}"
CHAT_ID = int(os.environ["ZAMIN_CHAT_ID"])  # getUpdates javobidagi message.chat.id

with open("video.mp4", "rb") as f:
    r = requests.post(
        f"{API}/sendVideo",
        data={"chat_id": CHAT_ID, "caption": "Mana fayl"},
        files={"video": ("video.mp4", f, "video/mp4")},
        timeout=60,
    )
data = r.json()
print(data)

# Keyingi safar o'sha faylni qayta yuklamasdan, file_id bilan yuborish mumkin:
file_id = data["result"]["video"]["file_id"]
requests.post(f"{API}/sendVideo", json={"chat_id": CHAT_ID, "video": file_id}, timeout=15)
curl
curl -s "https://api.zamin.app/bot$ZAMIN_BOT_TOKEN/sendVideo" \
  -F chat_id=4810235517 \
  -F caption="Mana fayl" \
  -F video=@video.mp4

Guruh va kanalda

  • Guruh (chat_id manfiy): Fayl guruhning barcha a'zolari telefonlari uchun uchidan-uchiga shifrlanadi (boshqa botlar uni ko'rmaydi). Faqat inline klaviatura. Bot admin bo'lmasa, guruhning a'zolar uchun ruxsatlari amal qiladi. reply_to_message_id β€” guruhdagi xabar raqami.
  • Kanal: botda can_post_messages huquqi bo'lishi kerak, bot egasi esa Zamin foydalanish shartlarini qabul qilgan bo'lishi kerak; matn odamlarning postlari kabi kontent filtridan o'tadi. Post oddiy kanal posti bo'lib chiqadi (obunachilarga bildirishnoma boradi), javobda sender_chat bor, from yo'q. Tugmalar yo'q (reply_markup β†’ 400), reply_to_message_id e'tiborga olinmaydi.
  • Kanal izohlari chati: bot izoh yoza olmaydi (400 method is not available for this chat).
  • Limit: bitta guruh yoki kanalga daqiqasiga 20 ta xabar; guruhda β€” shifrlash byudjeti ham (xabar har bir odamning eng so'nggi faol 10 ta qurilmasiga shifrlanadi). Limitlar.

Guruhga yuborilgan fayl server tomonidan tekshiriladi va qayta kodlanadi (shaxsiy chatdagidek), so'ng uchidan-uchiga shifrlab saqlanadi; kalit faqat a'zolar telefonlariga va botning o'ziga boradi. Guruhda olingan file_id'ni boshqa guruh yoki kanalga yuborish mumkin, lekin shaxsiy chatga emas (wrong file identifier). Guruh yoki kanalga file_id bilan qayta yuborish ham, multipart yuklash ham (shaxsiy chatda ham) bir vaqtdagi fayl uzatish limitiga kiradi: bot bo'yicha 3 ta, umumiy 16 ta (429, retry_after: 1). Guruhdagi fayllar.