메인 콘텐츠로 건너뛰기
이 가이드는 다이렉트 메시지를 보내고 그룹 대화를 생성하는 방법을 단계별로 안내합니다.
사전 준비 사항시작하기 전에 다음이 필요합니다.
  • 승인된 App이 있는 개발자 계정
  • dm.writedm.read scope를 가진 User Access Token (OAuth 2.0 PKCE)

일대일 메시지 보내기

1

받는 사람의 사용자 ID 가져오기

메시지를 보내려는 사용자의 user ID가 필요합니다. 이 ID는 사용자 조회 엔드포인트에서 확인할 수 있습니다.
2

메시지 보내기

cURL
curl -X POST "https://api.x.com/2/dm_conversations/with/9876543210/messages" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"text": "Hello! This is a message from the API."}'
3

응답 검토하기

{
  "data": {
    "dm_conversation_id": "1234567890-9876543210",
    "dm_event_id": "1582103724607971332"
  }
}

그룹 대화 만들기

1

참가자 지정

그룹에 포함하고 싶은 사용자(본인은 제외)의 사용자 ID를 모읍니다.
2

첫 번째 메시지와 함께 그룹 생성

cURL
curl -X POST "https://api.x.com/2/dm_conversations" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "conversation_type": "Group",
    "participant_ids": ["944480690", "906948460078698496"],
    "message": {"text": "Welcome to our new group!"}
  }'
3

대화 ID 받기

{
  "data": {
    "dm_conversation_id": "1582103724607971328",
    "dm_event_id": "1582103724607971332"
  }
}
나중에 더 많은 메시지를 추가할 수 있도록 dm_conversation_id를 저장합니다.

기존 대화에 메시지 추가하기

이미 참여 중인 대화에 메시지를 보냅니다:
cURL
curl -X POST "https://api.x.com/2/dm_conversations/1582103724607971328/messages" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"text": "Adding another message to the conversation."}'

미디어가 포함된 메시지 보내기

1

미디어 업로드하기

먼저 Media Upload endpoint를 사용해 미디어를 업로드합니다.
2

미디어를 첨부해 메시지 보내기

cURL
curl -X POST "https://api.x.com/2/dm_conversations/with/9876543210/messages" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Check out this image!",
    "attachments": [{"media_id": "1234567890123456789"}]
  }'

메시지 삭제

보낸 메시지를 삭제하려면:
cURL
curl -X DELETE "https://api.x.com/2/dm_events/1582103724607971332" \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN"
응답:
{
  "data": {
    "deleted": true
  }
}
본인이 보낸 메시지만 삭제할 수 있으며, 다른 참가자가 보낸 메시지는 삭제할 수 없습니다.

필요한 scope

OAuth 2.0 PKCE를 사용할 때는 액세스 토큰에 다음 scope를 포함해야 합니다:
Scope설명
dm.write메시지 전송 및 삭제
dm.read대화 읽기 (dm.write와 함께 필요)
tweet.read일부 expansions에 필요
users.read사용자 expansions에 필요

다음 단계

DM 조회

DM 대화 조회

통합 가이드

핵심 개념과 모범 사례

API 참조 문서

전체 엔드포인트 문서

샘플 코드

동작하는 코드 예제