Auth Telegram Oidc
curl --request POST \
--url https://api.example.com/cabinet/auth/telegram/oidc \
--header 'Content-Type: application/json' \
--data '
{
"id_token": "<string>",
"campaign_slug": "<string>",
"referral_code": "<string>"
}
'import requests
url = "https://api.example.com/cabinet/auth/telegram/oidc"
payload = {
"id_token": "<string>",
"campaign_slug": "<string>",
"referral_code": "<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_token: '<string>', campaign_slug: '<string>', referral_code: '<string>'})
};
fetch('https://api.example.com/cabinet/auth/telegram/oidc', 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/cabinet/auth/telegram/oidc",
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_token' => '<string>',
'campaign_slug' => '<string>',
'referral_code' => '<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/cabinet/auth/telegram/oidc"
payload := strings.NewReader("{\n \"id_token\": \"<string>\",\n \"campaign_slug\": \"<string>\",\n \"referral_code\": \"<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/cabinet/auth/telegram/oidc")
.header("Content-Type", "application/json")
.body("{\n \"id_token\": \"<string>\",\n \"campaign_slug\": \"<string>\",\n \"referral_code\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/cabinet/auth/telegram/oidc")
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_token\": \"<string>\",\n \"campaign_slug\": \"<string>\",\n \"referral_code\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"access_token": "<string>",
"refresh_token": "<string>",
"expires_in": 123,
"user": {
"id": 123,
"created_at": "2023-11-07T05:31:56Z",
"telegram_id": 123,
"username": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"email_verified": false,
"balance_kopeks": 0,
"balance_rubles": 0,
"referral_code": "<string>",
"language": "ru",
"auth_type": "telegram"
},
"token_type": "bearer",
"campaign_bonus": {
"campaign_name": "<string>",
"bonus_type": "<string>",
"balance_kopeks": 0,
"subscription_days": 123,
"tariff_name": "<string>"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Cabinet Auth
Auth Telegram Oidc
Authenticate using Telegram OIDC id_token (popup flow).
The frontend uses Telegram.Login.init() popup which returns an id_token. We validate it via JWKS and create/login the user.
POST
/
cabinet
/
auth
/
telegram
/
oidc
Auth Telegram Oidc
curl --request POST \
--url https://api.example.com/cabinet/auth/telegram/oidc \
--header 'Content-Type: application/json' \
--data '
{
"id_token": "<string>",
"campaign_slug": "<string>",
"referral_code": "<string>"
}
'import requests
url = "https://api.example.com/cabinet/auth/telegram/oidc"
payload = {
"id_token": "<string>",
"campaign_slug": "<string>",
"referral_code": "<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_token: '<string>', campaign_slug: '<string>', referral_code: '<string>'})
};
fetch('https://api.example.com/cabinet/auth/telegram/oidc', 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/cabinet/auth/telegram/oidc",
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_token' => '<string>',
'campaign_slug' => '<string>',
'referral_code' => '<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/cabinet/auth/telegram/oidc"
payload := strings.NewReader("{\n \"id_token\": \"<string>\",\n \"campaign_slug\": \"<string>\",\n \"referral_code\": \"<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/cabinet/auth/telegram/oidc")
.header("Content-Type", "application/json")
.body("{\n \"id_token\": \"<string>\",\n \"campaign_slug\": \"<string>\",\n \"referral_code\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/cabinet/auth/telegram/oidc")
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_token\": \"<string>\",\n \"campaign_slug\": \"<string>\",\n \"referral_code\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"access_token": "<string>",
"refresh_token": "<string>",
"expires_in": 123,
"user": {
"id": 123,
"created_at": "2023-11-07T05:31:56Z",
"telegram_id": 123,
"username": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"email_verified": false,
"balance_kopeks": 0,
"balance_rubles": 0,
"referral_code": "<string>",
"language": "ru",
"auth_type": "telegram"
},
"token_type": "bearer",
"campaign_bonus": {
"campaign_name": "<string>",
"bonus_type": "<string>",
"balance_kopeks": 0,
"subscription_days": 123,
"tariff_name": "<string>"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Body
application/json
Request for Telegram OIDC authentication (popup flow).
Response
Successful Response
Full authentication response with tokens and user.
User data response.
Show child attributes
Show child attributes
Info about campaign bonus applied during auth.
Show child attributes
Show child attributes
⌘I
