diff --git a/README.md b/README.md
index d6e7e3ed..0e32bd7f 100644
--- a/README.md
+++ b/README.md
@@ -643,12 +643,13 @@ Here's an example of what the notifications look like:

#### Configuring Telegram alerts
-| Parameter | Description | Default |
-|:----------------------------------|:-------------------------------------------------------------------------------------------|:--------------|
-| `alerting.telegram` | Configuration for alerts of type `telegram` | `{}` |
-| `alerting.telegram.token` | Telegram Bot Token | Required `""` |
-| `alerting.telegram.id` | Telegram User ID | Required `""` |
-| `alerting.telegram.default-alert` | Default alert configuration.
See [Setting a default alert](#setting-a-default-alert) | N/A |
+| Parameter | Description | Default |
+|:----------------------------------|:-------------------------------------------------------------------------------------------|:---------------------------|
+| `alerting.telegram` | Configuration for alerts of type `telegram` | `{}` |
+| `alerting.telegram.token` | Telegram Bot Token | Required `""` |
+| `alerting.telegram.id` | Telegram User ID | Required `""` |
+| `alerting.telegram.api-url` | Telegram API URL | `https://api.telegram.org` |
+| `alerting.telegram.default-alert` | Default alert configuration.
See [Setting a default alert](#setting-a-default-alert) | N/A |
```yaml
alerting:
diff --git a/alerting/provider/telegram/telegram.go b/alerting/provider/telegram/telegram.go
index 54488d59..b3b1f4f0 100644
--- a/alerting/provider/telegram/telegram.go
+++ b/alerting/provider/telegram/telegram.go
@@ -11,10 +11,13 @@ import (
"github.com/TwiN/gatus/v3/core"
)
+const defaultAPIURL = "https://api.telegram.org"
+
// AlertProvider is the configuration necessary for sending an alert using Telegram
type AlertProvider struct {
- Token string `yaml:"token"`
- ID string `yaml:"id"`
+ Token string `yaml:"token"`
+ ID string `yaml:"id"`
+ APIURL string `yaml:"api-url"`
// DefaultAlert is the default alert configuration to use for endpoints with an alert of the appropriate type
DefaultAlert *alert.Alert `yaml:"default-alert,omitempty"`
@@ -28,7 +31,11 @@ func (provider *AlertProvider) IsValid() bool {
// Send an alert using the provider
func (provider *AlertProvider) Send(endpoint *core.Endpoint, alert *alert.Alert, result *core.Result, resolved bool) error {
buffer := bytes.NewBuffer([]byte(provider.buildRequestBody(endpoint, alert, result, resolved)))
- request, err := http.NewRequest(http.MethodPost, fmt.Sprintf("https://api.telegram.org/bot%s/sendMessage", provider.Token), buffer)
+ apiURL := provider.APIURL
+ if apiURL == "" {
+ apiURL = defaultAPIURL
+ }
+ request, err := http.NewRequest(http.MethodPost, fmt.Sprintf("%s/bot%s/sendMessage", apiURL, provider.Token), buffer)
if err != nil {
return err
}