Webhooks are an incredibly useful feature of the Taddy API. In the background, Taddy is constantly monitoring RSS feeds to know whenever they have been updated. Whenever there is new data, we send it to you via a webhook. This means you don't have to continuously check with us for new updates, we'll push those updates to you immediately.
Example use-cases:
- Do you care about SEO? Get a webhook notification immediately whenever your website is mentioned on a new episode.
- Do you want industry specific leads? Get a webhook notification immediately when a person or a brand has been mentioned on a new episode.
- Do you want to push notify your users whenever a new episode is released? Get a webhook notification immediately when a new episode is released. On your server, you match which users want a push notification and send one to them.
Setting Up a Webhook
- Open up the Taddy Dashboard, you will see a “Setup a New Webhook” button.
- You will have to enter in:
- The endpoint url where you want to receive the notifications (usually on your own server)
- Pick which webhook events you would like to receive.
Note:
- You must be on a Business plan to add a webhook to your account.
- Webhook notifications do not count against your monthly API limits 🥳.
- The endpoint url you enter needs to be one publicly accessible over the internet. (For example, 127.0.0.1 and localhost URLs will not work, since Taddy servers will not be able to contact your local computer). If you’d like to test receiving these notifications locally on your computer, Ngrok provides a useful & free way to do so (It provides you a public url that is mapped to your localhost).
- Your endpoint url needs to be a
POSTendpoint
- In the Webhooks section, one of the fields given to you is the Webhook Secret. This is an optional security feature. We add this secret as the header
X-TADDY-WEBHOOK-SECRETto all webhook notifications sent to this webhook. Because your endpoint url is publicly accessible and if you dont share this secret with anyone else, you can be confident that any data you receive on your endpoint is from us and can be trusted.
- Listen Up is a very simple app that receives and displays webhook events. It’s a great way to test and see what kind of events your webhook endpoint is going to receive.
- There is an example project which allows you to mock webhook events. It's a great way to test receiving webhook events before receiving the live events from Taddy’s API.
Webhook Events
If you are interested in receiving webhooks for Podcasts, the following 3 webhook types may be useful to you:
- PodcastSeries
- PodcastEpisode
- iTunesInfo
PodcastSeries
Event | Description |
podcastseries.created | Get a notification when a new podcast series has been added to Taddy |
podcastseries.updated | Get a notification when any podcast series details have been updated (e.g. title, description, etc.) |
podcastseries.deleted | Get a notification when a podcast series has been removed from Taddy, usually at the request of the podcast creator |
podcastseries.new_episodes_released | Most users won't need to subscribe to this event. When new episodes have been released, you'll get this notification only once, no matter how many episodes have been added, updated, or removed. An example use case for this notification is if you're parsing the podcast RSS feed yourself and want to be notified once when the feed has changed, instead of getting multiple notifications for each episode that's been added or updated. |
PodcastEpisode
Event | Description |
podcastepisode.created | Get a notification when a new podcast episode has been released |
podcastepisode.updated | Get a notification when podcast episode details have been updated (e.g. title, description, audioUrl, etc.) |
podcastepisode.deleted | Get a notification when a podcast episode has been removed. |
iTunesInfo
Event | Description |
itunesinfo.created | Get a notification when itunes information for a podcast series has been added to Taddy (e.g. itunes artwork etc.) This is information from iTunes and not found on the podcast's RSS feed |
itunesinfo.updated | Get a notification when itunes information for a podcast series has been updated (e.g. itunes artwork etc.) This is information from iTunes and not found on the podcast's RSS feed |
itunesinfo.deleted | Get a notification when itunes information for a podcast series has been removed from Taddy, usually because it has been removed from iTunes |
If you are interested in receiving webhooks for Comics, the following 4 webhook types may be useful to you:
- ComicSeries
- ComicIssue
- Creator
- CreatorContent
ComicSeries
Event | Description |
comicseries.created | Get a notification when a new comic series has been added to Taddy |
comicseries.updated | Get a notification when any comic series details have been updated (e.g. name, description, etc.) |
comicseries.deleted | Get a notification when a comic series has been removed from Taddy, usually at the request of the comic creator. |
comicseries.new_issues_released | Most users won't need to subscribe to this event. When new issues have been released, you'll get this notification only once, no matter how many issues have been added, updated, or removed. An example use case for this notification is if you're parsing the comic SSS feed yourself and want to be notified once when the feed has changed, instead of getting multiple notifications for each issue that's been added or updated. |
ComicIssue
Event | Description |
comicissue.created | Get a notification when a new comic issue has been released |
comicissue.updated | Get a notification when comic issue details have been updated (e.g. name, description, images, etc.) |
comicissue.deleted | Get a notification when a comic issue has been removed. |
Creator
Event | Description |
creator.created | Get a notification when a new creator feed has been released |
creator.updated | Get a notification when creator details have been updated (e.g. name, description, avatar image, etc.) |
creator.deleted | Get a notification when a comic feed has been removed from Taddy, usually at the request of the creator |
creator.new_content_released | Most users won't need to subscribe to this event. When new creatorcontent have been released, you'll get this notification only once, no matter how many creatorcontent items have been added, updated, or removed. An example use case for this notification is if you're parsing the creator SSS feed yourself and want to be notified once when the feed has changed, instead of getting multiple notifications for each piece of creatorcontent that's been added or updated. |
CreatorContent
Event | Description |
creatorcontent.created | Get a notification when the creator has released a new type of content (along with their role in making the content). ex) Creator had made a ComicSeries and had the roles COMICSERIES_ARTIST & COMICSERIES_WRITER on it. |
creatorcontent.updated | Get a notification when a details around the the role they performed in creating the content are updated. |
creatorcontent.deleted | Get a notification when a creator has removed a type of content from their content feed. |
What does a webhook event look like?
A webhook event is made up of:
uuid, taddyType, action, timestamp, data.Examples:
// EXAMPLE WEBHOOK EVENT for a PodcastSeries event
{
uuid: 'cb8d858a-3ef4-4645-8942-67e55c0927f2',
taddyType: 'podcastseries',
action: 'updated',
timestamp: 1673984316,
data: {
uuid: 'cb8d858a-3ef4-4645-8942-67e55c0927f2',
hash: 'b8f97d07ce3a9916aeba1feda9db610b58aee8d62a2dfa0495a0b1893e857d91',
name: 'The Daily',
description: 'This is what the news should sound like. The biggest stories of our time, told by the best journalists in the world. Hosted by Michael Barbaro and Sabrina Tavernise. Twenty minutes a day, five days a week, ready by 6 a.m.',
imageUrl: 'https://image.simplecastcdn.com/images/03d8b493-87fc-4bd1-931f-8a8e9b945d8a/2cce5659-f647-4366-b318-46e4b67afcfa/3000x3000/c81936f538106550b804e7e4fe2c236319bab7fba37941a6e8f7e5c3d3048b88fc5b2182fb790f7d446bdc820406456c94287f245db89d8656c105d5511ec3de.jpeg?aid=rss_feed',
datePublished: 1484687987,
language: 'ENGLISH',
seriesType: 'EPISODIC',
contentType: 'AUDIO',
isExplicitContent: false,
copyright: '© 2020-2021 THE NEW YORK TIMES COMPANY; The New York Times encourages the use of RSS feeds for personal use in a news reader or as part of a non-commercial blog, subject to your agreement to our Terms of Service.',
websiteUrl: 'https://www.nytimes.com/the-daily',
rssUrl: 'https://feeds.simplecast.com/54nAGcIl',
rssOwnerName: 'The New York Times',
rssOwnerPublicEmail: '[email protected]',
authorName: 'The New York Times',
isCompleted: false,
isBlocked: null,
itunesId: 1200361736,
genres: [ 'PODCASTSERIES_NEWS_DAILY_NEWS', 'PODCASTSERIES_NEWS' ],
childrenHash: '95ef1fee188406c415e32915f85855eab3cf49e0f9052785e42ef368792333db',
popularityRank: 'TOP_200',
itunesInfo: {
uuid: 'cb8d858a-3ef4-4645-8942-67e55c0927f2',
publisherId: 121664449,
publisherName: 'The New York Times',
baseArtworkUrl: 'https://is1-ssl.mzstatic.com/image/thumb/Podcasts115/v4/1c/ac/04/1cac0421-4483-ff09-4f80-19710d9feda4/mza_12421371692158516891.jpeg/',
baseArtworkUrlOf: 'https://is1-ssl.mzstatic.com/image/thumb/Podcasts115/v4/1c/ac/04/1cac0421-4483-ff09-4f80-19710d9feda4/mza_12421371692158516891.jpeg/640x640bb.png'
}
}
}Â
// EXAMPLE WEBHOOK EVENT for a PodcastEpisode event
{
uuid: 'a2b41ecd-565c-4f29-8cf9-ac737bcc8d99',
taddyType: 'podcastepisode',
action: 'updated',
timestamp: 1673984261,
data: {
uuid: 'a2b41ecd-565c-4f29-8cf9-ac737bcc8d99',
hash: '8130da98420b6ea1bcafd9a7e411625bf0437e93cd2e44b0a2291430e7cd940c',
name: 'Consider the Burying Beetle. (Or Else.)',
description: '<p>The current level of biodiversity loss is extraordinary in human history: The global rate of species extinction is at least tens to hundreds of times higher than the average over the past 10 million years. </p><p>At the end of 2022, countries around the world came together in Montreal for an agreement akin to the Paris climate accord to tackle the biodiversity crisis. Here’s more on the effort and how it seeks to confront the problem.</p><p>Guest: <a href="https://www.nytimes.com/by/catrin-einhorn">Catrin Einhorn</a>, who reports on biodiversity and climate for The New York Times.</p><p>Background reading: </p><ul><li>Last year, roughly 190 nations, aiming to halt a dangerous decline in biodiversity,<a href="https://www.nytimes.com/2022/12/19/climate/biodiversity-cop15-montreal-30x30.html"> agreed to preserve 30 percent of the planet’s land and seas</a>. </li></ul><p>For more information on today’s episode, visit <a href="http://nytimes.com/thedaily?smid=pc-thedaily">nytimes.com/thedaily</a>. Transcripts of each episode will be made available by the next workday. </p>\n',
imageUrl: null,
datePublished: 1673001900,
guid: '848d3475-dc4d-4c53-b97c-e69f05bad846',
subtitle: 'The current level of biodiversity loss is extraordinary in human history: The global rate of species extinction is at least tens to hundreds of times higher than the average over the past 10 million years. \n' +
'\n' +
'At the end of 2022, countries around the world came together in Montreal for an agreement akin to the Paris climate accord to tackle the biodiversity crisis. Here’s more on the effort and how it seeks to confront the problem.\n' +
'\n' +
'Guest: Catrin Einhorn, who reports on biodiversity and climate for The New York Times.',
audioUrl: 'https://dts.podtrac.com/redirect.mp3/chrt.fm/track/8DB4DB/pdst.fm/e/nyt.simplecastaudio.com/03d8b493-87fc-4bd1-931f-8a8e9b945d8a/episodes/b8f7e904-bf5d-4c60-b3d7-de67dfc271fc/audio/128/default.mp3?aid=rss_feed&awCollectionId=03d8b493-87fc-4bd1-931f-8a8e9b945d8a&awEpisodeId=b8f7e904-bf5d-4c60-b3d7-de67dfc271fc&feed=54nAGcIl',
videoUrl: null,
fileLength: 24695702,
fileType: 'audio/mpeg',
duration: 1543,
episodeType: 'FULL',
seasonNumber: null,
episodeNumber: null,
websiteUrl: 'https://www.nytimes.com/the-daily',
isExplicitContent: false,
isRemoved: null,
podcastSeries: {
uuid: 'cb8d858a-3ef4-4645-8942-67e55c0927f2',
name: 'The Daily',
rssUrl: 'https://feeds.simplecast.com/54nAGcIl',
itunesId: 1200361736
}
}
}Â
// EXAMPLE WEBHOOK EVENT for a iTunesInfo event
{
uuid: 'cb8d858a-3ef4-4645-8942-67e55c0927f2',
taddyType: 'itunesinfo',
action: 'updated',
timestamp: 1673984345,
data: {
uuid: 'cb8d858a-3ef4-4645-8942-67e55c0927f2',
hash: '2c022ad3c4482664cdecbcb05e87313e917aff2b697f1f674b69bb6514f55ed6',
subtitle: null,
summary: 'This is what the news should sound like. The biggest stories of our time, told by the best journalists in the world. Hosted by Michael Barbaro and Sabrina Tavernise. Twenty minutes a day, five days a week, ready by 6 a.m.',
baseArtworkUrl: 'https://is1-ssl.mzstatic.com/image/thumb/Podcasts115/v4/1c/ac/04/1cac0421-4483-ff09-4f80-19710d9feda4/mza_12421371692158516891.jpeg/',
publisherId: 121664449,
publisherName: 'The New York Times',
country: 'UNITED_STATES_OF_AMERICA',
podcastSeries: {
uuid: 'cb8d858a-3ef4-4645-8942-67e55c0927f2',
name: 'The Daily',
rssUrl: 'https://feeds.simplecast.com/54nAGcIl',
itunesId: 1200361736
}
}
}Â
// EXAMPLE WEBHOOK EVENT for ComicSeries event
{
uuid: 'b00c3bc5-2758-483a-942c-4229eb742cb4',
taddyType: 'comicseries',
action: 'created',
timestamp: 1684445348,
data: {
uuid: 'b00c3bc5-2758-483a-942c-4229eb742cb4',
name: "Warrior's Strife",
description: 'Frayja has trained all her life to become the greatest warrior in her clan. She has been taught to fear and hate elves and their magic. But a day on the battlefield dramatically alters her perspective on reality.',
hash: '397b0176c21bff026d7b58e7bf87147626d4b9c2f7c7a6ddb5de467aa8b1c751',
issuesHash: 'c005d4e0aadf39c1a043ff3be40833480a2adab59cbffd3ea86620da0a21cc97',
datePublished: 1683664725,
coverImageAsString: '{"base_url":"https://ax1.taddy.org/b00c3bc5-2758-483a-942c-4229eb742cb4/97699676-ece5-4ab5-b089-5288cfa7421c/","cover_sm":"cover-sm.webp","cover_md":"cover-md.webp","cover_lg":"cover-lg.webp"}',
bannerImageAsString: '{"base_url":"https://ax1.taddy.org/b00c3bc5-2758-483a-942c-4229eb742cb4/f8f972c4-6d77-404e-b5c3-5cf37c3172f3/","banner_sm":"banner-sm.webp","banner_md":"banner-md.webp","banner_lg":"banner-lg.webp"}',
thumbnailImageAsString: '{"base_url":"https://ax1.taddy.org/b00c3bc5-2758-483a-942c-4229eb742cb4/a1718041-2b8c-42e9-94fe-099ade2b3417/","thumbnail":"thumbnail.webp"}',
tags: [
'fantasy', 'darkfantasy',
'lgbtqia', 'lgbt',
'monsters', 'viking',
'elf', 'magic',
'action', 'drama',
'medieval'
],
genres: [ 'COMICSERIES_ROMANCE', 'COMICSERIES_DRAMA' ],
language: 'ENGLISH',
contentRating: 'COMICSERIES_TEENS',
seriesType: 'WEBTOON',
sssUrl: 'https://taddy.org/feeds/sss/comicseries/b00c3bc5-2758-483a-942c-4229eb742cb4',
sssOwnerName: null,
sssOwnerPublicEmail: null,
copyright: 'Copyright notice available at http://3s-docs.org/creator-friendly-copyright-notice',
isCompleted: false,
isBlocked: null,
totalIssuesCount: 16
}
}Â
// EXAMPLE WEBHOOK EVENT for ComicIssue event
{
uuid: '826f3ba0-c231-4d93-95ad-d3e65f9d57b1',
taddyType: 'comicissue',
action: 'created',
timestamp: 1684445690,
data: {
uuid: '826f3ba0-c231-4d93-95ad-d3e65f9d57b1',
seriesUuid: 'b00c3bc5-2758-483a-942c-4229eb742cb4',
name: 'Chapter 1 Book 1',
creatorNote: null,
hash: '08b4ce69403beb038ce831ea7163d4c9ae81139c52b82c55e0eafe7160d18a99',
storiesHash: '94d497b23c9a506d1bec028c70e9901f83a0caafacc60445c77fc6a1f050a55f',
datePublished: 1683664717,
bannerImageAsString: '{"base_url":"https://ax1.taddy.org/b00c3bc5-2758-483a-942c-4229eb742cb4/f8f972c4-6d77-404e-b5c3-5cf37c3172f3/","banner_sm":"banner-sm.webp","banner_md":"banner-md.webp","banner_lg":"banner-lg.webp"}',
thumbnailImageAsString: '{"base_url":"https://ax1.taddy.org/b00c3bc5-2758-483a-942c-4229eb742cb4/826f3ba0-c231-4d93-95ad-d3e65f9d57b1/43e484b0-6111-41f2-92e2-0b6515655969/","thumbnail":"thumbnail.webp"}',
stories: [
{
"uuid": "9f2120bb-5660-44a3-a3d5-9537bdd438e9",
"issueUuid": "826f3ba0-c231-4d93-95ad-d3e65f9d57b1",
"seriesUuid": "b00c3bc5-2758-483a-942c-4229eb742cb4",
"storyImageAsString": "{\"base_url\":\"https://ay1.taddy.org/b00c3bc5-2758-483a-942c-4229eb742cb4/826f3ba0-c231-4d93-95ad-d3e65f9d57b1/9bb57b57-0c0c-4d1a-8eed-0d64daf347d9/\",\"story\":\"story.webp\"}"
},
{
"uuid": "5a0bd406-d513-46cf-8fd1-b8474e4e1909",
"issueUuid": "826f3ba0-c231-4d93-95ad-d3e65f9d57b1",
"seriesUuid": "b00c3bc5-2758-483a-942c-4229eb742cb4",
"storyImageAsString": "{\"base_url\":\"https://ay1.taddy.org/b00c3bc5-2758-483a-942c-4229eb742cb4/826f3ba0-c231-4d93-95ad-d3e65f9d57b1/a51fad16-89a9-4a0e-8d2c-88625f8bc957/\",\"story\":\"story.webp\"}"
},
...,
],
position: 0,
isRemoved: null,
isBlocked: null
}
}Â
// EXAMPLE WEBHOOK EVENT for Creator event
{
uuid: '5a4977e8-b0da-4cc7-a516-16a0fb6973d8',
taddyType: 'creator',
action: 'created',
timestamp: 1684448992,
data: {
uuid: '5a4977e8-b0da-4cc7-a516-16a0fb6973d8',
name: 'Zachary Morris',
bio: null,
hash: '2b80ecea81312717bcbe1872aa80c52ede308993819fdbafa2027ee123ed565c',
contentHash: '9d982608495697f438e0e31d768fdb297d1e6984f013842b2ccc982562c343a6',
avatarImageAsString: '{"base_url":"https://ax1.taddy.org/5a4977e8-b0da-4cc7-a516-16a0fb6973d8/c414e9a8-8d27-4280-9e43-a2e5445a9626/","avatar_sm":"avatar-sm.webp","avatar_md":"avatar-md.webp","avatar_lg":"avatar-lg.webp"}',
tags: [ 'zachmorris', 'willdrawforfood1', 'cartoonist' ],
country: 'UNITED_STATES_OF_AMERICA',
linksAsString: '[{"type":"PATREON","base_url":"https://patreon.com/","value":"zachmorris"},{"type":"TWITTER","base_url":"https://twitter.com/","value":"toonzach"}]',
sssUrl: 'https://taddy.org/feeds/sss/creator/5a4977e8-b0da-4cc7-a516-16a0fb6973d8',
sssOwnerName: null,
sssOwnerPublicEmail: null,
copyright: 'Copyright notice available at http://3s-docs.org/creator-friendly-copyright-notice',
isBlocked: null,
totalContentCount: 1
}
}Â
// EXAMPLE WEBHOOK EVENT for CreatorContent event
{
uuid: '3c90e534-0aba-4536-8bab-43e9dd0c4ac9',
taddyType: 'creatorcontent',
action: 'created',
timestamp: 1684449090,
data: {
hash: 'f2c93ef053a62b05da1092cb39e41726da9fbbe436888b4d53dd6c9067839013',
creatorUuid: '5a4977e8-b0da-4cc7-a516-16a0fb6973d8',
contentUuid: '71113968-45a2-4c30-b770-655b57ae0de6',
contentType: 'COMICSERIES',
roles: [ 'COMICSERIES_ARTIST', 'COMICSERIES_WRITER' ],
position: 0,
contentPosition: 0
}
}