Telegram Login
curl --request POST \
--url https://api.example.com/api/v2/auth/telegram \
--header 'Content-Type: application/json' \
--data '
{
"id": 123,
"first_name": "<string>",
"auth_date": 123,
"hash": "<string>",
"username": "<string>",
"photo_url": "<string>"
}
'import requests
url = "https://api.example.com/api/v2/auth/telegram"
payload = {
"id": 123,
"first_name": "<string>",
"auth_date": 123,
"hash": "<string>",
"username": "<string>",
"photo_url": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
id: 123,
first_name: '<string>',
auth_date: 123,
hash: '<string>',
username: '<string>',
photo_url: '<string>'
})
};
fetch('https://api.example.com/api/v2/auth/telegram', 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.example.com/api/v2/auth/telegram",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => 123,
'first_name' => '<string>',
'auth_date' => 123,
'hash' => '<string>',
'username' => '<string>',
'photo_url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v2/auth/telegram"
payload := strings.NewReader("{\n \"id\": 123,\n \"first_name\": \"<string>\",\n \"auth_date\": 123,\n \"hash\": \"<string>\",\n \"username\": \"<string>\",\n \"photo_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/api/v2/auth/telegram")
.header("Content-Type", "application/json")
.body("{\n \"id\": 123,\n \"first_name\": \"<string>\",\n \"auth_date\": 123,\n \"hash\": \"<string>\",\n \"username\": \"<string>\",\n \"photo_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v2/auth/telegram")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": 123,\n \"first_name\": \"<string>\",\n \"auth_date\": 123,\n \"hash\": \"<string>\",\n \"username\": \"<string>\",\n \"photo_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyAuth
Telegram Login
Sign in with Telegram Login Widget
POST
/
api
/
v2
/
auth
/
telegram
Telegram Login
curl --request POST \
--url https://api.example.com/api/v2/auth/telegram \
--header 'Content-Type: application/json' \
--data '
{
"id": 123,
"first_name": "<string>",
"auth_date": 123,
"hash": "<string>",
"username": "<string>",
"photo_url": "<string>"
}
'import requests
url = "https://api.example.com/api/v2/auth/telegram"
payload = {
"id": 123,
"first_name": "<string>",
"auth_date": 123,
"hash": "<string>",
"username": "<string>",
"photo_url": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
id: 123,
first_name: '<string>',
auth_date: 123,
hash: '<string>',
username: '<string>',
photo_url: '<string>'
})
};
fetch('https://api.example.com/api/v2/auth/telegram', 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.example.com/api/v2/auth/telegram",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => 123,
'first_name' => '<string>',
'auth_date' => 123,
'hash' => '<string>',
'username' => '<string>',
'photo_url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v2/auth/telegram"
payload := strings.NewReader("{\n \"id\": 123,\n \"first_name\": \"<string>\",\n \"auth_date\": 123,\n \"hash\": \"<string>\",\n \"username\": \"<string>\",\n \"photo_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/api/v2/auth/telegram")
.header("Content-Type", "application/json")
.body("{\n \"id\": 123,\n \"first_name\": \"<string>\",\n \"auth_date\": 123,\n \"hash\": \"<string>\",\n \"username\": \"<string>\",\n \"photo_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v2/auth/telegram")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": 123,\n \"first_name\": \"<string>\",\n \"auth_date\": 123,\n \"hash\": \"<string>\",\n \"username\": \"<string>\",\n \"photo_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyinteger
required
Telegram user ID.
string
required
Telegram first name.
integer
required
Unix timestamp of the authorization.
string
required
HMAC-SHA256 signature from Telegram Widget.
string
Telegram username (optional, not always set).
string
Profile photo URL (optional).
Overview
Pass the full data object returned by the Telegram Login Widget directly to this endpoint.Request
curl -X POST https://elumenta.ru/api/v2/auth/telegram \
-H "Content-Type: application/json" \
-d '{
"id": 123456789,
"first_name": "Ivan",
"username": "ivan_dev",
"auth_date": 1741432800,
"hash": "abc123..."
}'
Response
{
"access_token": "eyJhbGciOiJIUzI1NiJ9...",
"refresh_token": "eyJhbGciOiJIUzI1NiJ9...",
"token_type": "bearer",
"is_new_user": true,
"user": {
"id": 12345,
"telegram_id": 123456789,
"plan": "free",
"token_balance": 50
}
}
⌘I

