<div class="pull-right">

</div>
# Polling is over: send a Podping!
If you want to hear Adam Curry, the Podfather, explain Podping here he is: [No Agenda
1682 - "Natalism"](https://podverse.fm/clip/kVk9UCZSM)
If you're running a podcast hosting platform that publishes RSS feeds you need to be sending ***podpings***.
A Podping is a tiny little signal which gets written to the Hive Blockchain and tells the whole world that one of your RSS feeds has an update. That can trigger hundreds or thousands of clients to check the RSS feed and take appropriate action.
Sending ***podpings*** is the replacement for the repetitive and wasteful "polling" or speculatively checking of RSS feeds which has been the normal way to detect changes since the invention of RSS and Podcasting.
## How to send a Podping
### Easiest: Podping.Cloud
By far the easiest way for any web based service to send a ***podping*** is to use the [podping.cloud service](https://github.com/Podcastindex-org/podping.cloud) hosted service run by @podcastindex. This service requires you to get an authorization key from Dave at Podcastindex dot org.
Once you have that, alerting the whole world that one of your RSS feeds has changed is as simple as this:
```http
GET https://podping.cloud/?url=https://feeds.example.org/podcast/rss
```
You can also append 2 additional parameters (`reason` and/or `medium`):
```http
GET https://podping.cloud/?url=https://feeds.example.org/livestream/rss&reason=live&medium=music
```
If `reason` is not present, the default is "update". If `medium` is not present, the default is "podcast". A full explanation of these options and what they mean is [here](https://github.com/Podcastindex-org/podping-hivewriter#podping-reasons).
### Most Sovereign: Direct to Hive
Why would you not choose to do the easiest thing? Because sometimes sovereignty is worth it.
Whilst Adam and Dave have done a heroic job in setting up @podcastindex and the entire Podcasting 2.0 project, ***podping*** is built to be fully self supporting and sovereign. It is *easier* to use their `podping.cloud` service but not necessary.
The most self sustaining way to write a ***podping*** is to have your own **Hive** account and keys and directly write the ***podping*** to the Hive Blockchain yourself.
There are a many ways to get Hive Keys, I'll just highlight two:
#### Get a Hive Account
- [v4v.app/signup](https://v4v.app/signup) - requires a small payment in Lighting
- [Ecency.com/signup](https://ecency.com/signup) - requires an email address but is free
If you want help, reach out to me, brian at v4v dot app.
You might want a specific Hive account for sending ***podpings*** from. The `podping.cloud` for example uses five accounts, `podping.aaa`, `podping.bbb`, `podping.ccc`, `podping.ddd` and `podping.eee`.
#### Send a Custom Json
##### Feed Updates
This is a typical ***podping***. In this case it has 4 RSS feed iris (urls).
- `version` is `1.1` as of the time of this post.
- `medium` and `reason` [are explained here in the docs](https://github.com/Podcastindex-org/podping-hivewriter?tab=readme-ov-file#podping-reasons) but in most cases you'll be using `podcast` and `update`.
- The `iris` field in the JSON object is a list of one or more RSS feed IRIs (Internationalized Resource Identifiers), which are URLs pointing to the RSS feeds. Each entry in the list represents the location of an RSS feed that is being updated or referenced by the podping.
- `timestampNs` field in the JSON object represents a timestamp in nanoseconds since the Unix epoch (January 1, 1970).
- `sessionId` is an optional identifier which can be used to track multiple instances or processes which send successive ***podpings***.
There is a maximum limit of around 200 `iris` per `custom_json` and this is set by Hive's blocksize. In practice you should avoid getting close to this limit and sending one at a time is practical if that represents the rate at which you publish updates.
Hive produces new blocks every 3 seconds: in practice you might want to consider batching and sending updates once a minute or so.
```json
id: pp_podcast_update
json: {
"version": "1.1",
"medium": "podcast",
"reason": "update",
"iris": [
"https://feeds.audiomeans.fr/feed/0ec7708b-cbf0-4048-971d-955b8d05bc31.xml",
"https://feeds.audiomeans.fr/feed/6be8a533-aa0f-45c9-86a1-1187bfbc4461.xml",
"https://feeds.audiomeans.fr/feed/b4de9333-deb0-4c99-82e3-3c21cfac3f2a.xml",
"https://www.spreaker.com/show/6096975/episodes/feed"
],
"timestampNs": 1726734767069026000,
"sessionId": 10631874232419994000
}
required_auths: []
required_posting_auths: [
"podping.eee"
]
```
If you want to see thousands of examples of this, open up a [Hive block explorer like this one for account @podping.bbb](https://hivehub.dev/@podping.bbb) and look!
##### Live Items
- `live` and `liveEnd` these special reason codes are for indicating a live broadcast. These will usually be sent with precise timing and quickly so as to alert watching apps.
```json
id: pp_video_live
json: {
"version": "1.1",
"medium": "video",
"reason": "live",
"iris": [
"https://tv.mattchristiansenmedia.com/plugins/podcast2/router/podcast2?channel=matt_christiansen"
],
"timestampNs": 1726707654177263000,
"sessionId": 10708055723163822000
}
required_auths: []
required_posting_auths: [
"podping.bbb"
]
```
I won't lay out here all the [ways to write to the Hive Blockchain](https://developers.hive.io/) but that may be a future post.
##### Uses Podping
There is also a small tag you can put in all the RSS feeds which you will use ***podping*** on to [signal that your RSS feed uses ***podping***](https://github.com/Podcastindex-org/podcast-namespace/blob/81454618bd1ff5bfefbba946d78b07bc03ea6083/docs/1.0.md#podping).
This allows indexing systems and clients to know that they only need to watch ***podping*** and no longer need to check all the RSS feeds under your control.
## Conclusion
Sending Podpings is easy and censorship resistant. Once you have a Hive account (which needs a minimal amount of Hive's `Resource Credits`) nobody can stop you sending ***podpings***.
If you want a fun visualisation of all the podcasts updating in real time via ***podping*** just take a look at [tiles.podping.org](https://tiles.podping.org).