본문 바로가기
텔레그램 한글 가이드
채널·봇 STEP 66 / 98

텔레그램 봇 API 첫 요청 — getMe 와 sendMessage

텔레그램 봇 API 를 라이브러리 없이 curl 한 줄로 시험하는 방법입니다. 토큰으로 getMe 를 불러 응답 읽기, sendMessage 로 메시지 보내기와 chat_id 얻는 곳, 실제 403 응답 예와 401·400·429 오류 원인까지 정리했습니다.

  • 난이도L4
  • 읽는 시간5분
  • 최종 검증

결론부터

  1. 1주소 하나로 시험한다 — api.telegram.org/bot<토큰>/메서드.
  2. 2getMe 로 토큰 확인, sendMessage 는 chat_id 와 text 두 칸.
  3. 3실패하면 ok:false — 숫자보다 description 문장을 먼저 본다.
이 글의 목차
  1. 준비물은 토큰 하나
  2. getMe — 토큰이 맞는지 확인
  3. sendMessage — 메시지 보내기
  4. 실패 응답 읽기
  5. 다음 단계
  6. 자주 묻는 질문
  7. 한눈에 정리

준비물은 토큰 하나

봇 API 는 정해진 주소에 HTTPS 요청을 보내는 방식입니다. 라이브러리나 서버 없이도 브라우저 주소창이나 curl 한 줄로 바로 시험할 수 있습니다. 필요한 것은 @BotFather 에게 받은 토큰뿐입니다(봇 만들기).

요청 주소는 늘 같은 모양입니다.

https://api.telegram.org/bot<토큰>/<메서드 이름>

이 글의 토큰 123456:ABC-EXAMPLE 과 숫자 ID 는 모두 예시 값입니다. 내 토큰으로 바꿔 넣습니다.

getMe — 토큰이 맞는지 확인

가장 먼저 부르는 메서드입니다. 토큰이 맞으면 봇 자신의 정보가 돌아옵니다.

curl https://api.telegram.org/bot123456:ABC-EXAMPLE/getMe

돌려받는 응답(실제 응답의 모양 그대로, 값은 예시):

{
  "ok": true,
  "result": {
    "id": 123456,
    "is_bot": true,
    "first_name": "예시 도우미",
    "username": "sample_help_bot",
    "can_join_groups": true,
    "can_read_all_group_messages": false,
    "supports_inline_queries": false
  }
}
칸읽는 법
oktrue 면 성공. 모든 응답에 붙는다
result메서드가 돌려준 값 — getMe 는 봇 계정 정보
can_join_groups그룹에 넣을 수 있는지(@BotFather 설정)
can_read_all_group_messagesfalse 면 그룹에서 명령·답장만 본다(개인정보 모드)

실제 응답에는 이 밖에도 봇 설정에 따른 칸이 여러 개 더 붙습니다. 새 기능이 생길 때마다 칸이 늘어나므로, 프로그램은 모르는 칸을 무시하게 짭니다.

sendMessage — 메시지 보내기

보낼 곳(chat_id)과 내용(text)을 넘깁니다.

curl https://api.telegram.org/bot123456:ABC-EXAMPLE/sendMessage \
  -d chat_id=987654321 \
  -d text="안녕하세요"

성공하면 result 에 방금 보낸 메시지가 돌아옵니다 — 메시지 번호(message_id), 보낸 봇(from), 대화(chat), 보낸 시각(date, 유닉스 시간), 내용(text)이 들어 있습니다.

chat_id 는 어디서 얻나

봇은 먼저 말을 걸 수 없습니다. 그래서 chat_id 는 사용자가 봇에게 먼저 보낸 메시지에서 얻습니다. 사용자가 봇 대화에서 시작을 누르거나 메시지를 보내면, 봇이 받는 업데이트에 그 대화의 chat_id 가 들어 있습니다. 업데이트를 받는 두 방법은 롱 폴링과 웹훅에 있습니다. 봇을 관리자로 넣은 공개 채널이라면 @채널아이디 를 chat_id 자리에 바로 쓸 수 있습니다.

실패 응답 읽기

실패하면 ok 가 false 이고, 숫자 error_code 와 사람이 읽는 description 이 옵니다. 아래는 봇이 들어가 있지 않은 공개 채널로 보내 본 실제 응답입니다.

{
  "ok": false,
  "error_code": 403,
  "description": "Forbidden: bot is not a member of the channel chat"
}
error_code흔한 원인
401토큰이 틀렸거나 새로 발급해 옛 토큰이 무효
400chat_id 가 없는 대화거나 칸 형식이 틀림 — description 에 이유가 적힌다
403보낼 권한이 없다 — 봇이 채널·그룹에 없거나, 사용자가 봇을 시작하지 않았거나 차단했다
429너무 빨리 많이 보냈다 — 응답이 알려 주는 초만큼 기다렸다 다시

원인 판단은 숫자보다 description 문장을 먼저 봅니다. 같은 403 이라도 문장이 다릅니다.

다음 단계

하려는 것글
사용자 메시지 받기롱 폴링과 웹훅
봇이 아닌 길도 보기API 4가지 고르기

자주 묻는 질문

텔레그램 봇 API 를 시험하려면 서버가 필요한가요?

아닙니다. 브라우저 주소창이나 curl 로 api.telegram.org 주소에 요청을 보내면 바로 응답이 옵니다.

chat_id 는 어떻게 알아내나요?

사용자가 봇에게 먼저 보낸 메시지의 업데이트에 들어 있습니다. 봇이 관리자인 공개 채널은 @채널아이디 를 쓸 수 있습니다.

403 Forbidden 이 나와요.

봇이 그 채널·그룹에 없거나, 사용자가 봇을 시작하지 않았거나 차단한 경우입니다. description 문장으로 원인을 구분합니다.

429 오류는 무엇인가요?

너무 빨리 많이 보냈다는 뜻입니다. 응답이 알려 주는 초만큼 기다렸다가 다시 보냅니다.

참고한 공식 문서

요약

한눈에 정리

  1. 1getMe

    토큰이 맞는지.

  2. 2sendMessage

    chat_id · text.

  3. 3오류

    description 먼저.

이 글 공유하기

같은 문제를 겪는 친구에게 보내 주세요.

텔레그램
더보기

휴대폰으로 열기휴대폰 카메라로 비추면 이 글이 열려요.

최종 수정 2026-10-06

함께 보면 좋은 글

전체 보기 ›