Telegram Bot APIs

Snippet Telegram

Quick-access to Telegram Bot APIs plus common troubleshooting steps.

What is this? Official Docs

Bot platform and API for sending messages, photos, and files via automated Telegram bots.

What is Telegram Bot API?

Telegram Bot API is a platform for creating automated bots that can send messages, photos, documents, and interact with users on Telegram. Perfect for notifications, alerts, and automated communication.

⚑ Key Features

  • Send text, photos, and files
  • Rich text formatting (Markdown/HTML)
  • Inline keyboards and buttons
  • Webhook support
  • Multi-language SDKs

🎯 Use Cases

  • Server monitoring alerts
  • CI/CD notifications
  • Automated reports
  • Customer support bots
  • Integration with services

πŸ’¬ Send Message - Basic

Send a simple text message to a user or group.

curl -X POST "https://api.telegram.org/bot<YOUR_TOKEN>/sendMessage" \
  -d "chat_id=<CHAT_ID>" \
  -d "text=Hello from DevTools!"

πŸ“ Send Message - Markdown

Send message with Markdown formatting.

curl -X POST "https://api.telegram.org/bot<YOUR_TOKEN>/sendMessage" \
  -d chat_id=<CHAT_ID> \
  -d parse_mode="Markdown" \
  -d text="*Bold* _Italic_ \`Code\`"

🌐 Send Message - HTML

Send message with HTML formatting.

curl -X POST "https://api.telegram.org/bot<YOUR_TOKEN>/sendMessage" \
  -d chat_id=<CHAT_ID> \
  -d parse_mode="HTML" \
  -d text="<b>Bold</b> <i>Italic</i>"

πŸ“Έ Send Photo - From URL

Send an image from a public URL.

curl -X POST "https://api.telegram.org/bot<YOUR_TOKEN>/sendPhoto" \
  -d chat_id=<CHAT_ID> \
  -d photo="https://example.com/image.png"

πŸ–ΌοΈ Send Photo - Local File

Upload and send a local image file.

curl -X POST "https://api.telegram.org/bot<YOUR_TOKEN>/sendPhoto" \
  -F chat_id=<CHAT_ID> \
  -F photo=@"/path/to/image.png"

🏷️ Send Photo - With Caption

Send image with text caption.

curl -X POST "https://api.telegram.org/bot<YOUR_TOKEN>/sendPhoto" \
  -F chat_id=<CHAT_ID> \
  -F photo=@"screenshot.png" \
  -F caption="Server status report"

πŸ“„ Send Document - Any File

Send PDF, ZIP, logs, or any file type.

curl -X POST "https://api.telegram.org/bot<YOUR_TOKEN>/sendDocument" \
  -F chat_id=<CHAT_ID> \
  -F document=@"/path/to/file.pdf"

πŸ“Ž Send Document - With Caption

Send file with description and timestamp.

curl -X POST "https://api.telegram.org/bot<YOUR_TOKEN>/sendDocument" \
  -F chat_id=<CHAT_ID> \
  -F document=@"logs.txt" \
  -F caption="Application logs - $(date)"

🌍 Browser Request - Simple GET

Quick GET request you can use directly in browser.

https://api.telegram.org/bot<YOUR_TOKEN>/sendMessage?chat_id=<CHAT_ID>&text=Hello

πŸ”— Browser Request - URL Encoded

Send message with URL encoding for special characters.

https://api.telegram.org/bot<YOUR_TOKEN>/sendMessage?chat_id=<CHAT_ID>&text=Server%20is%20up

β˜• Java - Send Text Message

Basic Java implementation using HttpURLConnection.

String token = "<YOUR_TOKEN>";
String chatId = "<CHAT_ID>";
String text = "Hello from Java!";

String url = "https://api.telegram.org/bot" + token +
             "/sendMessage?chat_id=" + chatId +
             "&text=" + URLEncoder.encode(text, "UTF-8");

HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestMethod("GET");

int responseCode = conn.getResponseCode();
System.out.println("Response: " + responseCode);

πŸ”· Java - HttpClient (Java 11+)

Modern Java HttpClient implementation.

HttpClient client = HttpClient.newHttpClient();
String body = String.format(
    "chat_id=%s&text=%s",
    chatId,
    URLEncoder.encode(message, StandardCharsets.UTF_8)
);

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.telegram.org/bot" + token + "/sendMessage"))
    .header("Content-Type", "application/x-www-form-urlencoded")
    .POST(HttpRequest.BodyPublishers.ofString(body))
    .build();

HttpResponse<String> response = client.send(request,
    HttpResponse.BodyHandlers.ofString());

πŸ“· Java - Send Photo

Send photo using Apache HttpClient with multipart.

String token = "<YOUR_TOKEN>";
String chatId = "<CHAT_ID>";
File file = new File("image.png");

String url = "https://api.telegram.org/bot" + token + "/sendPhoto";

HttpPost post = new HttpPost(url);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();

builder.addTextBody("chat_id", chatId);
builder.addBinaryBody("photo", new FileInputStream(file),
        ContentType.APPLICATION_OCTET_STREAM, file.getName());

post.setEntity(builder.build());

HttpClient client = HttpClientBuilder.create().build();
HttpResponse response = client.execute(post);
System.out.println(response.getStatusLine().getStatusCode());

🐘 PHP - Send Text Message

Send message using PHP native functions.

<?php
$token = "YOUR_TOKEN";
$chatId = "CHAT_ID";
$text = "Hello from PHP!";

$url = "https://api.telegram.org/bot{$token}/sendMessage";

$data = [
    'chat_id' => $chatId,
    'text' => $text
];

$options = [
    'http' => [
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data)
    ]
];

$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);

echo $result;
?>

πŸ“€ PHP - Send Document

Send file using cURL in PHP.

<?php
$token = "YOUR_TOKEN";
$chatId = "CHAT_ID";
$filePath = "/path/to/file.pdf";

$url = "https://api.telegram.org/bot{$token}/sendDocument";

$post_fields = [
    'chat_id' => $chatId,
    'document' => new CURLFile($filePath)
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>

ℹ️ Bot Info - Get Details

Verify bot token and get bot information.

curl https://api.telegram.org/bot<YOUR_TOKEN>/getMe

Response Example

{
  "ok": true,
  "result": {
    "id": 123456789,
    "is_bot": true,
    "first_name": "MyBot",
    "username": "my_bot"
  }
}

πŸ“₯ Updates - Get Messages

Retrieve messages sent to your bot.

curl https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates

πŸ†” Chat ID - Find User ID

Get chat ID from updates after sending a message.

curl https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates | grep -o '"chat":{"id":[0-9]*'

🚫 Troubleshoot - 401 Unauthorized

Fix β€œ401 Unauthorized” error (wrong token).

Solution

  1. Get correct token from @BotFather
  2. Verify with /getMe endpoint
  3. Check for extra spaces in token

❌ Troubleshoot - 400 Chat Not Found

Fix β€œ400 Chat not found” error.

Causes

  • User hasn’t started the bot
  • Wrong chat ID
  • Bot not added to group

Solutions

  • User must click Start button first
  • Bot must be added to group (for group messages)
  • Group chat IDs are negative (e.g., -987654321)

Get Correct Chat ID

# Send message to bot, then run:
curl https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates

⏱️ Troubleshoot - 429 Rate Limit

Fix β€œ429 Too Many Requests” error.

Rate Limits

  • 30 messages/second per bot
  • 1 message/second per chat
  • 20 requests/minute for same group

Solution

  • Add delays between messages
  • Use message queuing
  • Batch notifications

πŸ” Proxy - Java Configuration

Configure HTTP proxy in Java.

System.setProperty("http.proxyHost", "proxy.company.com");
System.setProperty("http.proxyPort", "8080");
System.setProperty("https.proxyHost", "proxy.company.com");
System.setProperty("https.proxyPort", "8080");

🌐 Proxy - cURL Configuration

Use proxy with cURL requests.

curl -x http://proxy.company.com:8080 \
  "https://api.telegram.org/bot<TOKEN>/getMe"

πŸ“š API Methods Reference

Quick reference of common Telegram Bot API methods.

MethodPurpose
sendMessageSend text
sendPhotoSend image
sendDocumentSend file
sendVideoSend video
sendAudioSend audio
sendLocationSend GPS coordinates
getUpdatesGet messages
getMeGet bot info

πŸ”‘ Important Variables

Key variables for Telegram Bot API.

<YOUR_TOKEN>    β†’ Bot token from @BotFather
<CHAT_ID>       β†’ User ID / Group ID
Group IDs       β†’ Always negative (-123456789)
User IDs        β†’ Always positive (123456789)

πŸš€ Getting Started

Steps to create and use your first Telegram bot.

  1. Message @BotFather on Telegram
  2. Send /newbot command
  3. Follow prompts to name your bot
  4. Save the token provided
  5. Start bot by sending /start from your account
  6. Get chat ID using /getUpdates
  7. Send your first message using API