Group invites and join requests
Get a Chat group invite link
Returns the preview of an encrypted Chat group conversation from its invite link: group name, avatar, member count, and the authenticated user’s join state. The conversation ID and the token both come from the invite link.
GET
/
2
/
chat
/
conversations
/
{id}
/
invites
/
{token}
Get a Chat group invite link
curl --request GET \
--url https://api.x.com/2/chat/conversations/{id}/invites/{token} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.x.com/2/chat/conversations/{id}/invites/{token}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.x.com/2/chat/conversations/{id}/invites/{token}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.x.com/2/chat/conversations/{id}/invites/{token}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.x.com/2/chat/conversations/{id}/invites/{token}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.x.com/2/chat/conversations/{id}/invites/{token}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.x.com/2/chat/conversations/{id}/invites/{token}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"conversation_id": "<string>",
"expires_at": "<string>",
"group_avatar_url": "<string>",
"group_name": "<string>",
"invite_url": "<string>",
"join_state": "<string>",
"member_count": 123,
"token": "<string>",
"welcome_message": "<string>"
},
"errors": [
{
"detail": "<string>",
"resource_type": "<string>",
"title": "<string>",
"type": "https://api.x.com/2/problems/resource-not-found",
"parameter": "<string>",
"resource_id": "<string>",
"status": 123,
"value": "<string>"
}
]
}{
"code": 123,
"message": "<string>"
}Authorizations
OAuth2UserTokenUserToken
The access token received from the authorization server in the OAuth 2.0 flow.
FlowAuthorization Code
- Authorization URL
- https://api.x.com/2/oauth2/authorize
- Token URL
- https://api.x.com/2/oauth2/token
Scopes3
tweet.read
View all posts you can see, including those from protected accounts.
dm.read
Read all your Direct Messages.
users.read
View any account you can see, including protected accounts.
Path Parameters
The ID of the group conversation, starting with g.
Pattern:
^g[0-9]{1,19}$The 10-character invite token from the group's invite link.
Pattern:
^[A-Za-z0-9_-]{10}$Query Parameters
A comma separated list of ChatGroupInvite fields to display. The fields available for a ChatGroupInvite object.
Minimum array length:
1Available options:
conversation_id, expires_at, group_avatar_url, group_name, invite_url, join_state, member_count, token, welcome_message ⌘I
Get a Chat group invite link
curl --request GET \
--url https://api.x.com/2/chat/conversations/{id}/invites/{token} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.x.com/2/chat/conversations/{id}/invites/{token}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.x.com/2/chat/conversations/{id}/invites/{token}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.x.com/2/chat/conversations/{id}/invites/{token}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.x.com/2/chat/conversations/{id}/invites/{token}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.x.com/2/chat/conversations/{id}/invites/{token}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.x.com/2/chat/conversations/{id}/invites/{token}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"conversation_id": "<string>",
"expires_at": "<string>",
"group_avatar_url": "<string>",
"group_name": "<string>",
"invite_url": "<string>",
"join_state": "<string>",
"member_count": 123,
"token": "<string>",
"welcome_message": "<string>"
},
"errors": [
{
"detail": "<string>",
"resource_type": "<string>",
"title": "<string>",
"type": "https://api.x.com/2/problems/resource-not-found",
"parameter": "<string>",
"resource_id": "<string>",
"status": 123,
"value": "<string>"
}
]
}{
"code": 123,
"message": "<string>"
}