На платформа X (ранее Twitter) предлагает несколько сущностно разных способов «отправить запрос». В зависимости от ваших целей, это может быть:
- Личное сообщение (Direct Message / DM) — для приватного общения.
- Запрос на отправку сообщения (Message Request), если получатель не подписан на вас.
- Запрос на подписку (Follow Request), для закрытых аккаунтов.
- HTTP-запрос к API X — для разработчиков и автоматизации (постинг, чтение, модерация).
В этой статье мы подробно разберем каждый сценарий: от действий в интерфейсе приложения до настройки программного доступа.
Отправка личного сообщения (Direct Message) через интерфейс
Это самый частый сценарий для обычных пользователей. Интерфейс немного изменился с 2013 года (дата источника wikiHow), но логика осталась похожей.
Инструкция для веб-версии и мобильного приложения (iOS/Android):
- Авторизация: Войдите в свой аккаунт на
x.comили в приложении. - Раздел сообщений: Нажмите на иконку «Сообщения» (значок бумажного самолета/пузыря чата) в левом меню (веб) или нижней панели (мобильная).
- Новое сообщение: Нажмите кнопку «Написать сообщение» (иконка «плюс» или перо с листом).
- Поиск получателя: В поле «Кому» начните вводить @имя_пользователя или настоящее имя. Выберите нужный аккаунт из выпадающего списка.
- Важно: Вы можете добавить несколько получателей для создания группового чата (до * участников, лимиты могут меняться).
- Написание текста: Введите сообщение. Ограничение по символам в DM значительно выше, чем в публичных постах (на данный момент до 10 , но лучше уточнять в актуальной документации).
- Вложения (опционально): Прикрепите фото, видео, GIF, геолокацию или ссылку.
- Отправка: Нажмите кнопку «Отправить» (иконка бумажного самолета).
Особенности приватности: «Запросы на сообщения» (Message Requests)
Если пользователь не подписан на вас и у него включена настройка «Разволить сообщения от всех» = Выкл, ваше сообщение не попадет во «Входящие», а уйдет в раздел «Запросы».
- Получитель увидит уведомление: «У вас новый запрос на сообщение от @ваш_ник».
- Он может Принять (тогда чат перейдет во «Входящие») или Удалить/Заблокировать.
- Пока запрос не принят, вы не увидите статус «Прочитано» и не сможете узнать, онлайн ли пользователь.
Как разрешить сообщения от всех (чтобы не попадать в «Запросы»):
- Настройки → Приватность и безопасность.
- Личные сообщения.
- Включите переключатель «Разрешить сообщения от всех».
Запрос на подписку (Follow Request) для закрытых аккаунтов
Если у пользователя включена настройка «Защищенные твиты» (Protected Posts), его аккаунт становится приватным;
Как отправить запрос на подписку:
- Перейдите на профиль целевого пользователя.
- Нажмите кнопку «Подписаться» (Follow).
- Текст кнопки изменится на «Ожидание» (Pending).
Что происходит дальше:
- Владелец аккаунта получает уведомление: «@ваш_ник хочет подписаться на вас».
- Он может Принять (вы станете подписчиком, увидите твиты) или Игнорировать/Отклонить.
- Пока запрос не принят, вы не видите его посты, репосты и лайки.
- Вы можете отменить запрос в любой момент (нажать «Ожидание» → «Отменить запрос»).
Программная отправка запросов: X (Twitter) API v2
Если под «запросом» вы имели в виду HTTP-запрос к API (например, для бота, автопостинга или аналитики), вам понадобится доступ к платформе разработчиков. Информация с Reddit (источник [1]) указывает на использование инструментов вроде Tasker для отправки HTTP-запросов.
Шаг 1: Регистрация разработчика и создание приложения
- Перейдите на developer.x.com.
- Подайте заявку на доступ (Essential, Elevated или Academic tier). Для базового постинга достаточно Essential (Free) или Basic (платный, ~$100/мес на 2026 г.);
- Создайте Project и внутри него App.
- В настройках App перейдите во вкладку Keys and Tokens.
Шаг 2: Получение ключей доступа (маскируем чувствительные данные)
Вам понадобятся следующие параметры (храните их в секрете, не публикуйте в коде):
- API Key (Consumer Key):
- API Key Secret (Consumer Secret):
- Bearer Token: (для чтения/поиска от имени приложения)
- Access Token: (для действий от имени пользователя)
- Access Token Secret:
*
Важно: Для отправки DM или постинга от имени пользователя требуется OAuth 1.0a (User Context) или OAuth 2.0 с PKCE. Bearer Token подходит только для чтения публичных данных.
Шаг 3: Примеры HTTP-запросов (cURL)
А. Публикация твита (POST /2/tweets)
curl -X POST "https://api.x.com/2/tweets"
-H "Authorization: Bearer *"
-H "Content-Type: application/json"
-d '{
"text": "Тестовый пост через API v2 от "
}' Примечание: Для Basic/Pro тарифов нужен OAuth 1.0a заголовок вместо простого Bearer Token для эндпоинтов записи.
Б. Отправка личного сообщения (DM) — POST /2/dm_conversations/with/:participant_id/messages
Эндпоинт требует права Direct Message (Read/Write) и аутентификацию пользователя (OAuth 1.0a / 2.0).
curl -X POST "https://api.x.com/2/dm_conversations/with/USER_ID/messages"
-H "Authorization: OAuth oauth_consumer_key="", oauth_token="", oauth_signature_method="HMAC-SHA1", oauth_timestamp="", oauth_nonce="", oauth_version="1.0", oauth_signature="*""
-H "Content-Type: application/json"
-d '{
"text": "Привет! Это автоматическое сообщение через API."
}' - Вместо
USER_IDподставьте числовой ID получателя (не @ник). Узнать его можно черезGET /2/users/by/username/:username. - Подпись
oauth_signatureгенерируется алгоритмически на основе секретов.
В. Запрос на подписку (Follow) — POST /2/users/:id/following
curl -X POST "https://api.x.com/2/users/TARGET_USER_ID/following"
-H "Authorization: OAuth ..."
-H "Content-Type: application/json"
-d '{
"target_user_id": "TARGET_USER_ID"
}' Шаг 4: Лимиты и ошибки (Rate Limits)
| Эндпоинт | Лимит (Free/Basic tier) | Окно |
|---|---|---|
| POST /2/tweets (Post Tweet) | ~17 запросов / 24ч (Free), 3000 / 24ч (Basic) | Суточно |
| POST /2/dm_conversations/…/messages | Зависит от тарифа, строго модерация спама | 15 мин / Суточно |
| POST /2/users/:id/following | 50 запросов / 15 мин (обычно) | 15 минут |
При превышении лимита API вернет код 429 Too Many Requests с заголовком x-rate-limit-reset (время сброса в Unix timestamp).
Автоматизация без кода (No-code / Low-code)
Ссылка на Reddit (источник [1]) упоминала Tasker (Android). Актуальные альтернативы на 2026 год:
- Make (ex Integromat) / Zapier / n8n: Готовые модули «X / Twitter — Create Tweet», «Send DM». Требуют подключения через OAuth в их интерфейсе (ключи * не видны вам).
- GitHub Actions / GitLab CI: Для простых скриптов на Python (
tweepy) или JS (twitter-api-v2) по расписанию. - Tasker (Android) + HTTP Request: Работает, но сложно поддерживать подпись OAuth 1.0a вручную. Лучше использовать обертку: свой мини-сервер (VPS/Cloudflare Worker), который принимает вебхук от Tasker и подписывает запрос к X API корректно.
Типичные ошибки и решение проблем
Ошибка 403 Forbidden / 401 Unauthorized
- Причина: Неверная подпись OAuth, истекший токен, отсутствие прав доступа (App Permissions) в портале разработчика.
- Решение: Проверьте App Permissions (Read / Read+Write / Read+Write+DM). После смены прав обязательно регенерируйте Access Token и Secret.
Ошибка 403 «You are unable to send a Direct Message to this user»
- Причина: Получатель не подписан на вас и имеет закрытые настройки приватности DM.
- Решение: Через API отправить DM в «Запросы» нельзя (API позволяет писать только в существующие диалоги или пользователям, разрешившим DM от всех).
Ошибка 429 Too Many Requests
- Внедрите Exponential Backoff (ожидание с удвоением интервала) и кэширование.
Проблема с Tasker / HTTP Request
Если вы пытаетесь собрать заголовок Authorization: OAuth ... вручную в Tasker — это источник боли. Библиотеки OAuth 1.0a требуют сортировки параметров лексикографически и кодирования по RFC 3986. Рекомендация: Не делайте подпись на клиенте. Отправляйте простой JSON на свой прокси-эндпоинт (Node.js / Python / Go), где стоит проверенная библиотека (oauth-1.0a, requests-oauthlib).
Чек-лист безопасности (Best Practices)
- Никогда не коммитьте ключи в Git. Используйте
.envфайлы и переменные окружения (GitHub Secrets, Vercel Env, Docker Secrets). - Принцип минимальных прав. Если бот только читает ленту — давайте только Read. Если постит — Read+Write. DM — отдельное разрешение.
- Ротация ключей. Регулярно (раз в 90 дней) регенерируйте Access Token / Secret в портале разработчика.
- Валидация входящих вебхуков. Если используете Account Activity API (webhooks для DM в реальном времени), всегда проверяйте заголовок
x-twitter-webhooks-signature(HMAC SHA256 от Consumer Secret). - Маскировка в логах. Настройте логгер так, чтобы он заменял
Authorization: Bearer *и токены в теле запроса на[REDACTED].
«Отправить запрос в Твиттере» в 2026 году — понятие многогранное.
- Для пользователя: это нажатие кнопки «Сообщение» или «Подписаться» с пониманием механики «Запросов» при закрытой приватности.
- Для разработчика: это строго типизированный HTTP-запрос к API v2 с OAuth 1.0a/2.0 авторизацией, учетом Rate Limits и модерации спама.
Используйте официальную документацию X API как единственный источник правды по эндпоинтам и схемам JSON, так как платформа меняется быстрее, чем обновляются сторонние гайды (включая старый wikiHow 2013 года).
Статья актуализирована на . Все чувствительные данные (токены, ID, ключи) заменены на маску * в соответствии с политикой безопасности.