DripChat Bot API

Send messages and native playable videos to DripChat from your app or assistant. Official API base: https://api.dripchat.io. Updated October 18, 2026.

Quick start

Use your existing DripChat bot token. The token belongs in the URL path: https://api.dripchat.io/bot<TOKEN>/<METHOD>. Keep the entire token, including its colon. This is the DripChat API, not api.telegram.org. A personal access token is a different credential.

Supported methods are GET getMe, POST sendMessage, and POST sendVideo. Video sending is available now. These sending methods do not consume DripBot AI credits.

First call getMe to verify the token and read capabilities. This does not send a message. The examples read DRIPCHAT_BOT_TOKEN from your secret store/environment; replace the variable with the saved secret in your integration, without displaying or logging it.

curl --fail-with-body --silent --show-error \
  "https://api.dripchat.io/bot${DRIPCHAT_BOT_TOKEN}/getMe"

Never put the token in public documents, source control, screenshots, analytics, or request logs. Redact the token-bearing URL in errors and monitoring. If you do not have a bot token, obtain one from the owner of the DripChat bot you are integrating.

Choose a recipient

Supply exactly one destination in the request:

Private recipients do not need to message the bot first. No existing conversation or chat ID is needed when you know their username or user ID. The API creates or reuses the direct conversation, and the first delivered message appears in their chat list.

A display name alone is not a unique username. If the API returns RECIPIENT_NOT_FOUND, obtain the exact username or user ID. Do not substitute the bot owner or a similarly named account. Blocks, chat membership, and media permissions still apply. Group chats require existing membership.

Camel-case aliases chatId, recipientId, and recipientUsername are also accepted. The response's result.chatId identifies the resolved conversation.

Send a native playable video

Upload the actual MP4/MOV file using multipart form data. The file field must be named video. Use a new unique idempotency key for each intended message; keep the same key and content if retrying it.

# Example key only: generate and persist a unique key for each new video.
curl --fail-with-body --silent --show-error \
  "https://api.dripchat.io/bot${DRIPCHAT_BOT_TOKEN}/sendVideo" \
  -H 'Idempotency-Key: video-20261018-001' \
  --form-string 'chat_id=@ikako' \
  --form-string 'caption=Your video is ready' \
  --form 'video=@/path/to/clip.mp4;type=video/mp4'

This creates a native video message with a player, not a document attachment. The recipient does not need to start a bot conversation first.

Uploads support up to 25 MiB (26,214,400 bytes) of MP4/MOV with H.264 or HEVC video and optional AAC audio. The server checks the media, prepares an MP4 for progressive playback, and creates its thumbnail, dimensions, and duration. Renaming an unsupported file to .mp4 does not convert it.

Alternatively, send a direct public HTTPS media URL in JSON or URL-encoded form data:

curl --fail-with-body --silent --show-error \
  "https://api.dripchat.io/bot${DRIPCHAT_BOT_TOKEN}/sendVideo" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: video-20261018-002' \
  --data '{"chat_id":"@ikako","video":"https://media.example.com/clip.mp4","caption":"Your video is ready"}'

The URL pathname must end in .mp4 or .mov. YouTube, TikTok, Facebook, and HTML page links are not direct video URLs. URL mode references the original media without fetching, converting, or hosting it for you. Keep it publicly available without cookies or authentication; upload the file for server-prepared media instead.

Optional video fields: caption (maximum 4096 UTF-16 code units), width and height (supply both, each greater than 0 and at most 8192), duration (seconds, greater than 0 and at most 86400), supports_streaming (boolean), and reply_to_message_id (an accessible message in that chat). Uploaded-file metadata is detected from the file. supports_streaming does not transcode a URL. videoURL aliases video; text aliases caption. Conflicting aliases and unsupported video fields are rejected.

Send text

curl --fail-with-body --silent --show-error \
  "https://api.dripchat.io/bot${DRIPCHAT_BOT_TOKEN}/sendMessage" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: message-20261018-001' \
  --data '{"chat_id":"@ikako","text":"Your video is ready"}'

Text must be non-empty after trimming. Keep it within 4096 UTF-16 code units; longer input is truncated. reply_to_message_id is optional and must refer to an accessible message in the destination chat. Markdown/HTML parse_mode is not implemented; send plain text.

Responses and retries

New messages return HTTP 201; a successful replay returns HTTP 200. Both include ok: true, replay, and the message in result, including message_id, chatId, and type. Video messages include videoURL. Acceptance means the message was stored and delivery queued, not that the recipient has watched it.

{"ok":true,"result":{"message_id":"MESSAGE_ID","chatId":"CHAT_ID","type":"video","videoURL":"https://media.example.com/clip.mp4"},"replay":false}

Idempotency-Key is strongly recommended. Use 1–121 characters from letters, digits, _, :, @, and -; reserved names __proto__, constructor, and prototype are invalid. Body fields operationId or clientMessageId are alternatives. A key identifies one send across this bot's sending methods. Reuse the exact destination, method, and content for retry; changing them can produce HTTP 409. Do not reuse a key for a different message. Without a key, retrying can send duplicates.

Errors have ok: false, error_code, description, and usually code. Authentication and proxy failures may not have a code or a JSON body, so check HTTP status as well.

Assistant integration checklist

For a request such as “send my videos to ikako on DripChat,” use the saved bot token, verify getMe, and send the actual video with sendVideo and chat_id: "@ikako". Do not ask for a chat ID or a first message when the username is already known. If the name is only a display name or the server cannot resolve it, request the exact username.

Send only when authorized by the user. Persist the intended recipient and idempotency key with the job; report success only after an ok: true response. A preference for future videos must be implemented by the calling assistant's own workflow; the DripChat API does not schedule future sends automatically.

This is a supported subset of a Telegram-shaped API, not full Telegram API compatibility. Do not invent sendDocument, sendPhoto, getUpdates, webhook, or username-search methods. Native video uses sendVideo.

Machine-readable reference

OpenAPI: https://api.dripchat.io/openapi.json

Assistant discovery: https://api.dripchat.io/llms.txt

Plain Markdown: https://api.dripchat.io/docs/bots.md

Human-readable docs: https://api.dripchat.io/docs/bots