auth.v1.SocialVerificationService
ConfirmSocialVerification
Link the Telegram account that submitted the caller's challenge code. A linked Telegram account becomes a channel to the account, so the caller needs enrolled MFA and a fresh, single-use step-up proof in the X-Auth-Step-Up header, obtained by completing an MFA challenge for fresh step-up. The link consumes the proof; a retried confirmation of an existing link needs no new proof. AUTH_RESOURCE_NOT_FOUND means no verification exists; start one first. AUTH_SOCIAL_VERIFICATION_EXPIRED means the challenge window passed; start a new verification. AUTH_SOCIAL_VERIFICATION_INVALID_STATE means no submitted account awaits confirmation, or provider_user_id is not the account that submitted the code. AUTH_SOCIAL_ACCOUNT_ALREADY_LINKED means that Telegram account is linked to another Polyester account; the verification fails. AUTH_MFA_NOT_ENROLLED means enroll MFA first; AUTH_STEP_UP_REQUIRED and AUTH_STEP_UP_PROOF_UNAVAILABLE mean complete a new fresh step-up and retry.
Request
curl --request POST \ \
--url 'https://api.testnet.polyester.com/auth.v1.SocialVerificationService/ConfirmSocialVerification' \
--header 'Content-Type: application/json' \
--header 'Connect-Protocol-Version: 1' \
--data '{
"provider": "TWITTER",
"providerUserId": "123456789012345678"
}'Responses
{
"verification": {
"attempts": 1,
"challengeCode": "POLY-VERIFY-7K2M",
"displayName": "value",
"errorCode": "AUTH_USERNAME_INVALID",
"expiresAt": "2025-01-01T00:00:00Z",
"handle": "polyester_trader",
"id": "1",
"lastError": "The profile could not be verified.",
"method": "METHOD_PROFILE",
"provider": "TWITTER",
"providerUserId": "123456789012345678",
"requestedAt": "2025-01-01T00:00:00Z",
"status": "STATUS_PENDING_USER_ACTION",
"updatedAt": "2025-01-01T00:00:00Z",
"verifiedAt": "2025-01-01T00:00:00Z"
}
}auth.v1.ConfirmSocialVerificationRequestauth.v1.ConfirmSocialVerificationResponseProvider account to confirm. Only TELEGRAM is accepted.
Provider user ID the user confirms, as provider_user_id of the verification in STATUS_AWAITING_CONFIRMATION. The request fails when it is not the account that submitted the code, so the user links exactly the account they were shown.
Verification identifier. Public ID. ConnectRPC carries it as int64 (a decimal string in JSON).
Provider account being verified.
Method used for this verification. If unspecified at start time, the provider default is used.
Provider handle being verified. Handles are returned lowercase and without a leading "@". For Telegram, the username of the account that submitted the code; empty when that account has no username.
Stable provider-side user identifier. Empty until verification succeeds, except for Telegram: while the status is STATUS_AWAITING_CONFIRMATION, it is the numeric user ID of the Telegram account that submitted the code, the value ConfirmSocialVerification takes.
Provider display name of the account being verified, for showing it to the user. Telegram only: the account's name, set once the code is submitted. Empty for other providers.
Challenge code the user must submit according to the verification method. Discord and Telegram codes are returned only when a challenge is issued. Codes expire after 15 minutes.
Current verification status.
Time in UTC when the current challenge code was issued.
Time in UTC when the current challenge code expires.
Time in UTC when verification succeeded. Empty until status is STATUS_VERIFIED.
Number of recorded provider-check attempts for this challenge.
Last verification error, if the most recent check failed. Empty when there is no recorded error.
Stable machine-readable error code for the current failed verification. AUTH_UNSPECIFIED when no typed error applies.
Time in UTC when this verification state last changed.
| Key | HTTP status | Connect code | Error | When |
|---|---|---|---|---|
| unauthenticated | 401 | unauthenticated | Unauthenticated | Authentication required. |
| permission-denied | 403 | permission_denied | Permission Denied | Permission denied. |
| invalid-argument | 400 | invalid_argument | Invalid Argument | Invalid argument. |
| not-found | 404 | not_found | Not Found | Not found. |
| unavailable | 503 | unavailable | Unavailable | Service unavailable. |