De mssgs-feed
Wat er gebeurt, live.
Foto’s, video’s en korte berichten van mensen, communities en lokale instanties, zodra ze binnenkomen. Niemand volgt iemand: de feed leert wat jij interessant vindt van wat je liket, waarop je reageert en wat je opent.
- Geen volgers
- Geen advertenties
- Gratis openbare API
De feed van dit moment. Elk bericht heeft een eigen pagina op feed.mss.gs. Open de feed
Zo werkt het
Een tijdlijn zonder volgers
Je hoeft eerst geen publiek op te bouwen. Een bericht gaat naar iedereen, en elke lezer krijgt een feed die bij hem of haar past.
Geen volgers
Je volgt niemand en niemand volgt jou. Wat je liket, waarop je reageert en wat je opent (mensen, hashtags, wat er op een foto staat) leert de feed wat jij interessant vindt.
Foto’s zijn berichten
Een foto, diavoorstelling of video die je met iedereen deelt, is een bericht in de feed, met het onderschrift, reacties, reposts, likes en weergaven.
Dubbeltik + om te schrijven
Tik in de mssgs-app op je telefoon één keer op + om een foto te plaatsen, of dubbeltik om een tekstbericht van maximaal 500 tekens te schrijven, met #hashtags en als je wilt je stad.
Gecontroleerd voordat het live gaat
Een bericht verschijnt zodra de moderatie het heeft gecontroleerd. Berichten die je met een privégroep deelt, komen hier nooit: de openbare feed bevat alleen berichten die met iedereen zijn gedeeld.
Voor gemeenten, politie, scholen en buurten
Vertel je buurt wat er speelt
Een bericht in de mssgs-feed bereikt iedereen, niet alleen je volgers, en kan je stad meekrijgen. Bewoners, lokale nieuwssites en het scherm in het gemeentehuis halen er dan uit wat er bij hen in de buurt gebeurt, op plaats en op hashtag.
Gemeente
Wegwerkzaamheden, het ophalen van afval, een straat die vanavond dicht is, de openingstijden van de milieustraat.
#wegwerkzaamheden Zutphensestraat dicht van 14 t/m 18 oktober, omleiding via de Arnhemsestraat.
Politie
Een waarschuwing voor de wijk, een gevonden fiets, een seintje over nepbellers. Kort, snel en openbaar.
#veiligheid Vanavond controle op fietsverlichting rond het station.
School
Een studiedag, een gesloten school, de eerste dag na de vakantie. Ouders zien het zonder nog een groepsapp.
#schoolnieuws Morgen is het studiedag: de school is dicht.
Buurt
Een straatfeest, een vermiste kat, een oproep voor hulp in de buurttuin.
#straatfeest Zaterdag vanaf 15.00 uur, neem een stoel mee!
Zo doe je het
- Schrijf het bericht in de mssgs-app en voeg je stad toe.
- Gebruik steeds dezelfde hashtag, zodat mensen precies dat kunnen volgen (#wegwerkzaamheden, #schoolnieuws).
- Bewoners lezen het in de feed, in hun RSS-lezer, of op je eigen site via de API:
near=je plaats,hashtag=je tag.
Een bericht krijgt de stad mee, nooit de precieze plek waar het is geschreven.
https://feed.mss.gs/rss.xml?near=52.09,6.15&radius_km=10&hashtag=wegwerkzaamheden
https://feed.mss.gs/v1/posts?near=52.09,6.15&radius_km=10&hashtag=wegwerkzaamheden
Embeds
Zet een bericht op je site
Elk bericht heeft een eigen adres: feed.mss.gs gevolgd door de id. Het fragment toont het bericht als kaart, passend gemaakt, met de foto en de reacties, reposts, likes en weergaven. Lezers zonder JavaScript zien gewoon het citaat.
- Kopieer de link van het bericht op feed.mss.gs.
- Plak de blockquote waar het bericht moet komen, met de id van het bericht in
data-guid. Metdata-lang="nl"kies je de taal van de kaart. - Zet het script één keer op de pagina, waar dan ook.
oEmbed
Tools die oEmbed spreken, vragen de embedcode zelf op: het antwoord is een iframe met de kaart.
<blockquote class="mssgs-post" data-guid="4cf6070aff4c39d671be1898ea5f1a325ff5cc7fd3d9456447069d9987379033j02">
<p>Rain again in #amsterdam</p>
— @sofie <a href="https://feed.mss.gs/4cf6070aff4c39d671be1898ea5f1a325ff5cc7fd3d9456447069d9987379033j02">6 Oct 2026</a>
</blockquote>
<script async src="https://feed.mss.gs/embed.js"></script>
GET https://feed.mss.gs/oembed?url=https://feed.mss.gs/4cf6070aff4c39d671be1898ea5f1a325ff5cc7fd3d9456447069d9987379033j02&maxwidth=550
Voor ontwikkelaars
De openbare API
Lees de feed vanuit je eigen code. Geen sleutel en geen account: gewone JSON, open voor elke website (CORS), met alleen openbare berichten die door de moderatie zijn gekomen.
Endpoints op feed.mss.gs
| Endpoint | Wat het doet |
|---|---|
GET /v1/posts | De nieuwste berichten, nieuwste eerst op het moment van plaatsen (een repost verplaatst hier geen bericht). Filter en blader met de parameters hieronder. |
GET /v1/posts/{guid} | Eén bericht, als { post }, of 404 POST_NOT_FOUND. |
GET /v1/posts/{guid}/replies | De reacties, oudste eerst. Een reactie op een reactie heeft parent_guid. |
GET /rss.xml | Dezelfde lijst als RSS 2.0, met dezelfde parameters. |
GET /oembed?url= | oEmbed voor de link van een bericht (JSON, type rich). |
Parameters
| Parameter | Wat het doet |
|---|---|
limit | 1 tot 50; standaard 20. |
before | Een tijd in milliseconden: berichten die ouder zijn. Geef next_before van de vorige pagina mee. |
hashtag | Zonder #, bijvoorbeeld amsterdam. |
user | Een gebruikersnaam: de berichten van één account. |
near | lat,lon: berichten uit steden rond dat punt. |
radius_km | 1 tot 100 kilometer rond near; standaard 25. |
Limieten
60 verzoeken per minuut per IP-adres. Elk antwoord zegt hoeveel je er nog over hebt (X-RateLimit-Remaining); daarboven krijg je 429 met Retry-After in seconden. Lijsten worden 10 seconden bewaard en een bericht 30, dus vaker vragen levert nooit nieuwere berichten op.
RSS
Elke lijst is ook een feed voor een lezer, een widget of een scherm: zet dezelfde parameters achter rss.xml.
const res = await fetch('https://feed.mss.gs/v1/posts?hashtag=amsterdam&limit=10');
const { posts, has_more, next_before } = await res.json();
for (const post of posts) {
console.log(post.author.username, post.text, post.url);
}
// The next page: the posts before the last one you have.
if (has_more) {
await fetch(`https://feed.mss.gs/v1/posts?hashtag=amsterdam&before=${next_before}`);
}
Zo ziet een lijst eruit
{
"posts": [
{
"guid": "4cf6070aff4c39d671be1898ea5f1a325ff5cc7fd3d9456447069d9987379033j02",
"url": "https://feed.mss.gs/4cf6070aff4c39d671be1898ea5f1a325ff5cc7fd3d9456447069d9987379033j02",
"created": "2026-10-06T08:12:04.715Z",
"created_unix": 1791273124,
"type": "photo",
"text": "Rain again in #amsterdam",
"hashtags": ["amsterdam"],
"media": [
{
"type": "image",
"url": "https://mss.gs/static/stories/…/a1b2.jpg",
"thumb_url": "https://mss.gs/static/stories/…/a1b2_540x960.jpg",
"width": 540,
"height": 960
}
],
"author": {
"username": "sofie",
"avatar_url": "https://mss.gs/static/profile-uploads/….png",
"is_verified": false,
"profile_url": "https://mss.gs/@sofie"
},
"stats": { "likes": 12, "replies": 4, "reposts": 3, "views": 240 },
"place": { "city": "Amsterdam", "country_code": "NL" }
}
],
"has_more": true,
"next_before": 1791273124715
}
Live, via een WebSocket
Wil je berichten zodra ze live gaan, verbind dan met de mssgs-gateway en abonneer je; inloggen is niet nodig. Nieuwe berichten komen binnen in de vorm van de backend (de tekst is description, mediapaden zijn relatief aan https://mss.gs), verwijderingen en nieuwe tellingen zodra ze gebeuren. Een repost zet een bericht weer bovenaan: het komt opnieuw binnen als FEED_POST, met reposted_by (wie) en sort_cms (wanneer). Sorteer op sort_cms, anders _meta.cms, nieuwste eerst, en houd één regel per bericht: die met de grootste sleutel. FEED_POST_STATS bevat likes, comments en reposts. Stuur elke 30 seconden een PING, en abonneer je opnieuw na een herverbinding.
const ws = new WebSocket('wss://ams1-gateway.mss.gs');
ws.onopen = () => {
ws.send(JSON.stringify({ method: 'FEED_SUBSCRIBE', payload: {}, request_id: 'live-1' }));
// Keep the socket open: a PING every 30 seconds.
setInterval(() => {
ws.send(JSON.stringify({ method: 'PING', payload: {}, request_id: 'ping' }));
}, 30000);
};
ws.onmessage = (event) => {
const { method, payload } = JSON.parse(event.data);
if (method === 'FEED_POST') {
// A new post, or one a repost brought back to the top: then it has
// reposted_by (who) and sort_cms (when). Order by sort_cms ?? _meta.cms.
const { item } = payload;
console.log(item.reposted_by ? `reposted by ${item.reposted_by.username}` : 'new post', item);
}
if (method === 'FEED_POST_REMOVED') console.log('removed', payload.guid);
if (method === 'FEED_POST_STATS') console.log('new counts', payload); // likes, comments, reposts
};
Vragen
Heb ik een account nodig om de feed te lezen?
Nee. De feed op feed.mss.gs, elke berichtpagina, de embeds, RSS en de API zijn open voor iedereen. Om te posten, te liken of te reageren gebruik je de mssgs-app.
Wie ziet mijn bericht?
Een bericht dat je met iedereen deelt, is openbaar: het staat in de feed, heeft een eigen pagina en kan worden ge-embed en via de API gelezen. Een bericht dat je met een privégroep deelt, blijft in die groep en komt hier nooit.
Wat doet een repost?
Een bericht dat je goed vindt, komt voor iedereen weer bovenaan de feed te staan, met jouw naam erboven, en telt één repost meer. Je repost in de mssgs-app, één keer per bericht, en je kunt het weer terugdraaien. Alleen openbare berichten kun je reposten, en niet je eigen berichten.
Laat een bericht zien waar ik ben?
Alleen als je je stad toevoegt, en dan alleen de stad: nooit de precieze plek.
Is de API gratis?
Ja. Er is geen sleutel nodig, en hij is beperkt tot 60 verzoeken per minuut per IP-adres, zodat hij voor iedereen snel blijft.
Plaats je eerste bericht
Haal mssgs op je telefoon, tik op + en deel wat er gebeurt.







