"Important Security Update: We are temporarily suspending service for our URL shortener and bio link features to perform a system upgrade. This action is being taken to prevent ongoing misuse, and we are also disabling new registrations at this time. As part of this upgrade, all existing user accounts will be deleted, and all shortlinks removed, to ensure a clean system. Thank you for your cooperation."

Notification handlers

GET https://thail.ink/api/notification-handlers/
curl --request GET \
--url 'https://thail.ink/api/notification-handlers/' \
--header 'Authorization: Bearer {api_key}' \
Parameters Details Description
page Optional Integer The page number that you want results from. Defaults to 1.
results_per_page Optional Integer How many results you want per page. Allowed values are: 10 , 25 , 50 , 100 , 250 , 500 , 1000. Defaults to 25.
{ "data": [ { "id": 1, "type": "email", "name": "Work email", "settings": { "email": "hey@example.com" }, "is_enabled": true, "last_datetime": null, "datetime": "2026-05-20 22:12:12" } ], "meta": { "page": 1, "results_per_page": 25, "total": 1, "total_pages": 1 }, "links": { "first": "https://thail.ink/api/notification-handlers?&page=1", "last": "https://thail.ink/api/notification-handlers?&page=1", "next": null, "prev": null, "self": "https://thail.ink/api/notification-handlers?&page=1" } }
GET https://thail.ink/api/notification-handlers/{notification_handler_id}
curl --request GET \
--url 'https://thail.ink/api/notification-handlers/{notification_handler_id}' \
--header 'Authorization: Bearer {api_key}' \
{ "data": { "id": 1, "type": "email", "name": "Work email", "settings": { "email": "hey@example.com" }, "is_enabled": true, "last_datetime": null, "datetime": "2026-05-20 22:12:12" } }
POST https://thail.ink/api/notification-handlers
Parameters Details Description
name Required String -
type Required String Allowed values: email , webhook , slack , discord , telegram , microsoft_teams
email Optional String Available when: type = email Email
webhook Optional String Available when: type = webhook Webhook URL
slack Optional String Available when: type = slack Slack webhook URL
discord Optional String Available when: type = discord Discord webhook URL
telegram Optional String Available when: type = telegram Telegram API Token
telegram_chat_id Optional String Available when: type = telegram Telegram Chat ID
x_consumer_key Optional String Available when: type = x Telegram API Token
x_consumer_secret Optional String Available when: type = x Telegram API Token
x_access_token Optional String Available when: type = x Telegram API Token
x_access_token_secret Optional String Available when: type = x Telegram API Token
curl --request POST \
--url 'https://thail.ink/api/notification-handlers' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: multipart/form-data' \
--form 'name=Example' \
--form 'type=email' \
--form 'email=hello@example.com' \
{ "data": { "id": 1 } }
POST https://thail.ink/api/notification-handlers/{notification_handler_id}
Parameters Details Description
name Optional String -
type Optional String Allowed values: email , webhook , slack , discord , telegram , microsoft_teams
email Optional String Available when: type = email Email
webhook Optional String Available when: type = webhook Webhook URL
slack Optional String Available when: type = slack Slack webhook URL
discord Optional String Available when: type = discord Discord webhook URL
telegram Optional String Available when: type = telegram Telegram API Token
telegram_chat_id Optional String Available when: type = telegram Telegram Chat ID
x_consumer_key Optional String Available when: type = x Telegram API Token
x_consumer_secret Optional String Available when: type = x Telegram API Token
x_access_token Optional String Available when: type = x Telegram API Token
x_access_token_secret Optional String Available when: type = x Telegram API Token
is_enabled Optional Boolean -
curl --request POST \
--url 'https://thail.ink/api/notification-handlers/{notification_handler_id}' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: multipart/form-data' \
--form 'name=Example new name' \
--form 'is_enabled=1' \
{ "data": { "id": 1 } }
DELETE https://thail.ink/api/notification-handlers/{notification_handler_id}
curl --request DELETE \
--url 'https://thail.ink/api/notification-handlers/{notification_handler_id}' \
--header 'Authorization: Bearer {api_key}' \