Send confirmation codes to Telegram instead of SMS
Tasdiq ID is an API for websites and apps. Codes for sign-in, sign-up and payment confirmation arrive in the user’s Telegram. No phone number required.
100 codes a month for free. No bank card required.
Valid for 5 min. Do not share it with anyone.9:41
4 steps for the user
They open the bot once, then request a code on your site, copy it from Telegram and enter it. It all takes a few seconds.
The video’s voice-over and captions are in Uzbek.
For developers: two requests
Send a code and verify it. Integration usually takes one working day.
- 1
The user links to the bot
Your site issues a one-time link. The user opens it, taps “I agree” in the bot, and their Telegram account is linked to their user ID in your system. This is done once.
- 2
Your server requests a code
At sign-in or sign-up you call /v1/otp/send. We generate the code and deliver it to Telegram.
- 3
You verify the entered code
You send the digits the user typed to /v1/otp/verify and get valid: true or false. We track expiry and the number of attempts.
# 1. Send a code curl https://api.tasdiqid.uz/v1/otp/send \ -H "Authorization: Bearer $TASDIQ_KEY" \ -d '{"external_user_id": "user-1"}' # 202 {"request_id": "7c1e9a…", "status": "queued", "expires_at": "…"} # 2. Verify the code entered by the user curl https://api.tasdiqid.uz/v1/otp/verify \ -H "Authorization: Bearer $TASDIQ_KEY" \ -d '{"request_id": "7c1e9a…", "code": "482915"}' # 200 {"valid": true}
Full reference, error codes and examples in other languages: API docs
No coding: a ready-made “Sign in with Telegram” button
Add one line of code to your site, or connect WordPress, Moodle, Laravel and other systems via OpenID Connect with no code. The user enters a number, the code arrives in Telegram — you get a verified number.
How to connect →<script src="https://id.tasdiqid.uz/widget.js"
data-client-id="tqc_..."
data-login-url="/tasdiq-login"
async></script>About the platform
Codes are delivered through a queue within a second, and security rules are on by default. The dashboard has API keys, message texts, webhooks and monthly statistics.
Specifications
Code length and validity are set per request. Message text and bot settings are in the dashboard.
- Code length
- 4–8 digits, 6 by default
- Validity
- 1–15 minutes, 5 by default
- Wrong attempts
- The code is cancelled after 5 wrong attempts
- Storage
- Only a hash of the code is stored
- Resend
- A new code cancels the previous one
- Queue
- Confirmation codes are sent before broadcasts
- Webhooks
- user.linked, otp.delivered, otp.failed, broadcast.completed — HMAC-signed
- Message text
- A separate template for each site or app
- Bot languages
- Uzbek, Russian, English — chosen by the user
- Data
- Stored on a server in Uzbekistan
Pricing
Monthly subscription in UZS. Codes over the limit are added to the next invoice at the plan’s rate.
FAQ
Do I need the user’s phone number?
No. When linking via a link, the Telegram account is tied to the user ID in your system.
What if the user blocks the bot?
The API returns 403 bot_blocked and an otp.failed webhook is sent. Your site can then offer a fallback such as SMS or email.
What if the phone is off?
Telegram delivers the message when the phone is back on, but the code may expire in the meantime. Add a “Resend code” button: a new code cancels the old one.
Which programming languages are supported?
Any: it’s a plain HTTPS REST API. The docs include curl, Node.js, PHP and Python examples.
How does payment work?
By bank transfer under an agreement and a monthly invoice. You can try the free plan with 100 codes a month.
Contact us
Write to us about integration, pricing or contracts. On working days we reply the same day.