HTTP 400 · Bad Request
HTTP 400 Authentication Parameterized

When & why it happens

Email unconfirmed, the length of the code must be %v. Treated by gogram as a regular API error; inspect ErrResponseCode.Message for the exact code.

Parameterized error

The wire code carries a parameter on its tail (literal you'll see: EMAIL_UNCONFIRMED_42). Gogram parses it out and stores it on ErrResponseCode.AdditionalInfo with the right type.

Handling in gogram

Surfaced as *gogram.ErrResponseCode. Match on the message:

if err, ok := err.(*gogram.ErrResponseCode); ok { if strings.HasPrefix(err.Message, "EMAIL_UNCONFIRMED") { secs := err.AdditionalInfo.(int) time.Sleep(time.Duration(secs) * time.Second) // retry } }