Dokumentacija
Adios API daje hrvatske vijesti svih velikih portala kao podatke: najnovije i najveće priče, pretragu po smislu, sve povezano s pitanjem, vijesti oko bilo kojeg mjesta, kartu, kronologije, preglede dana, teme u trendu i opozive proizvoda.
| Adresa | https://adios.hr/api/v1 |
| Format | JSON (UTF-8), nazivi u snake_case, vremena u UTC (ISO 8601) |
| OpenAPI | /api/v1/openapi.json (Postman, generatori koda, GPT akcije) |
| MCP | https://adios.hr/api/mcp · vodič |
| CORS | Dopušten sa svih domena (ključ, a ne kolačić, kaže tko zove). |
Brzi početak
- Napravite ključ
Prijavite se na Adios i otvorite konzolu. Prvi ključ dobivate odmah; prikazuje se samo jednom. - Pozovite API
export ADIOS_KEY="adios_…" curl "https://adios.hr/api/v1/articles?sort=most_covered&limit=5" -H "Authorization: Bearer $ADIOS_KEY"
- Čitajte data
Svaki odgovor je {"data": …, "meta": …}; data je objekt ili popis, meta kaže koliko je stavki i što je paket ograničio.
Za AI agente ne treba ni ključ: MCP na /api/mcp radi odmah.
Ključevi
Ključ šaljite u zaglavlju, na jedan od dva načina:
Authorization: Bearer adios_AbC123… X-Api-Key: adios_AbC123…
- Ključ je „adios_” i 40 slova i znamenki. Čuvamo samo njegov otisak (SHA-256), pa ga ne možemo ponovno prikazati: izgubljeni ključ opozovite i napravite novi.
- Do 10 aktivnih ključeva po računu (npr. jedan za produkciju, jedan za testiranje). Opozvani ključ prestaje raditi odmah.
- Ključ ne stavljajte u javni kod stranice ili aplikacije: zovite API sa svog servera.
- Samo MCP prima ključ i u adresi (
/api/mcp?key=adios_…), jer ChatGPT i Claude ne mogu postaviti zaglavlje.
Ograničenja
Svaki paket ima ograničenje u minuti i u danu, a skuplji pozivi (pretraga, sve povezano, mjesta) imaju i svoje dnevno ograničenje. Dan počinje u 00:00 UTC.
| Skupina | Što | Besplatno | MCP bez ključa (po sesiji) |
|---|---|---|---|
| u minuti | svi pozivi | 60 | 20 |
| u danu | svi pozivi | 5.000 | 300 |
| search | /v1/search | 500 | 40 |
| connected | /v1/connected | 200 | 20 |
| geo | /v1/nearby, /v1/map, /v1/cities, /v1/places | 1.000 | 80 |
| webhooks | isporuke webhookova | 500 | – |
| polumjer | /v1/nearby | 50 km | 50 km |
| arhiva | koliko dana unatrag | 30 | 30 |
| limit | stavki po pozivu | 50 | 20 |
Svaki odgovor nosi stanje u zaglavljima:
X-RateLimit-Limit: 5000 # dnevno ograničenje X-RateLimit-Remaining: 4987 # preostalo danas X-RateLimit-Reset: 1760227200 # kad se broj vraća na nulu (Unix) X-RateLimit-Minute: 60 X-RateLimit-Group: geo # za skuplje pozive X-RateLimit-Group-Limit: 1000 X-RateLimit-Group-Remaining: 992
Kad je ograničenje dosegnuto, odgovor je 429 sa zaglavljem Retry-After (sekunde). Ako tražite više od paketa (veći polumjer, više stavki, dalje u prošlost), dobit ćete koliko paket dopušta, a meta to kaže (npr. radius_limited_to).
Odgovori
{
"data": [ … ],
"meta": {
"count": 20,
"limit": 20,
"plan": "free",
"took_ms": 41
}
}- Popisi imaju limit i offset (priče: page). Prazna polja se ne šalju.
- url je stranica na Adiosu (sažetak, svi portali, karta); source.url je članak na portalu.
- Svi popisi (i pretraga, sve povezano, vijesti u blizini, grad, karta, priče) izostavljaju nebitne vijesti: horoskope, kvizove, reality, trač i promo. include_filler=true ih vraća u bilo kojem pozivu.
Greške
{ "error": { "code": "invalid_parameter", "message": "'lat' must be a number between -90 and 90.", "docs": "https://adios.hr/developers/docs#errors" } }| HTTP | code | Značenje |
|---|---|---|
| 400 | missing_parameter, invalid_parameter, invalid_body, invalid_url | Parametar nedostaje ili nije dobar; poruka kaže koji. |
| 401 | key_required, invalid_key | Nema ključa, ili je pogrešan ili opozvan. |
| 403 | account_suspended, history_limit, webhook_limit, radius_limit | Račun je suspendiran ili traženo prelazi paket. |
| 404 | article_not_found, place_not_found, city_not_found, digest_not_found, story_not_found, webhook_not_found, unknown_endpoint | Toga nema. |
| 429 | rate_limited, too_many_wrong_keys | Ograničenje je dosegnuto; pogledajte Retry-After. |
| 500 | internal_error | Greška kod nas; zabilježena je. Pokušajte ponovno. |
| 503 | unavailable | API se odmara (održavanje). |
Vijesti
Najnovije vijesti
MCP: get_latest_newsNajnovije vijesti svih portala, ili po rubrici, portalu i razdoblju. Isti članak s više portala dolazi jednom.
| Parametar | Tip | Opis |
|---|---|---|
| category | string | Rubrika: crime, politics, sport… (vidi /v1/categories). |
| provider | string | Samo jedan portal, po slugu (vidi /v1/providers). |
| from | string | Od (YYYY-MM-DD ili ISO vrijeme), unutar arhive paketa. |
| to | string | Do (YYYY-MM-DD ili ISO vrijeme). |
| sort | string |
newest (zadano), most_read (najčitanije) ili most_covered (najviše portala).
newest · most_read · most_covered |
| stories_only | boolean | Samo vijesti koje su dio praćene priče (kronologije). |
| include_filler | boolean | Nebitne vijesti (horoskopi, kvizovi, reality, trač, promo) su izostavljene iz svih popisa; true ih vraća. |
| limit | integer | Koliko rezultata (zadano 20, najviše koliko dopušta paket). |
| offset | integer | Preskoči ovoliko (stranice). |
curl "https://adios.hr/api/v1/articles?category=crime&limit=5" \ -H "Authorization: Bearer $ADIOS_KEY"
Članak
MCP: get_articleSve o jednom članku: Adiosov kratki sažetak i kontekst, teme i osobe, ista vijest na drugim portalima, povezani članci, mjesto događaja i priča (kronologija) kojoj pripada.
| Parametar | Tip | Opis |
|---|---|---|
| id obavezno | string · path | Id članka (iz liste ili pretrage). |
curl "https://adios.hr/api/v1/articles/{id}" \
-H "Authorization: Bearer $ADIOS_KEY"Pretraga
search MCP: search_newsPretraga vijesti po smislu i riječima (hrvatski i engleski upiti), najrelevantnije ili najnovije prvo.
| Parametar | Tip | Opis |
|---|---|---|
| q obavezno | string | Upit, npr. "požar Split" ili "inflacija". |
| category | string | Rubrika: crime, politics, sport… (vidi /v1/categories). |
| provider | string | Samo jedan portal, po slugu (vidi /v1/providers). |
| from | string | Od (YYYY-MM-DD ili ISO vrijeme), unutar arhive paketa. |
| to | string | Do (YYYY-MM-DD ili ISO vrijeme). |
| sort | string |
relevance (zadano) ili newest.
relevance · newest |
| include_filler | boolean | Nebitne vijesti (horoskopi, kvizovi, reality, trač, promo) su izostavljene iz svih popisa; true ih vraća. |
| limit | integer | Koliko rezultata (zadano 20, najviše koliko dopušta paket). |
| offset | integer | Preskoči ovoliko. |
curl "https://adios.hr/api/v1/search?q=po%C5%BEar%20Split&limit=5" \ -H "Authorization: Bearer $ADIOS_KEY"
Sve povezano
connected MCP: research_topicSlobodno pitanje, a odgovor je sve što je povezano: članci, praćene priče s koracima, gdje se dogodilo, pregledi dana koji su o tome pisali i jedna vremenska crta svega.
| Parametar | Tip | Opis |
|---|---|---|
| q obavezno | string | Što vas zanima: osoba, mjesto, događaj, tema. |
| days | integer | Koliko dana unatrag (zadano 30, najviše arhiva paketa). |
| include_filler | boolean | Nebitne vijesti (horoskopi, kvizovi, reality, trač, promo) su izostavljene iz svih popisa; true ih vraća. |
| limit | integer | Koliko rezultata (zadano 15, najviše koliko dopušta paket). |
curl "https://adios.hr/api/v1/connected?q=cijene%20goriva" \ -H "Authorization: Bearer $ADIOS_KEY"
Mjesta i karta
Vijesti u blizini
geo MCP: get_nearby_newsVijesti oko mjesta ili točke: sve u krugu od N km, s udaljenošću, vrstom (požar, nesreća, crna kronika…) i izvještajima portala.
| Parametar | Tip | Opis |
|---|---|---|
| place | string | Mjesto u Hrvatskoj, kako god napisano: "Zadar", "u Zadru", "Dugo Selo", "otok Krk". |
| lat | number | Geografska širina (umjesto mjesta). |
| lon | number | Geografska dužina. |
| radius_km | number | Polumjer u km (zadano 25, najviše koliko dopušta paket). |
| hours | integer | Koliko sati unatrag (zadano 24, najviše 720). |
| kinds | array | Vrste priča na karti, npr. fire,crash,crime (vidi /v1/categories). |
| urgent_only | boolean | Samo bitno: požari, nesreće, eksplozije, potresi, poplave, nevrijeme, spašavanja, nestali i velike priče. |
| include_filler | boolean | Nebitne vijesti (horoskopi, kvizovi, reality, trač, promo) su izostavljene iz svih popisa; true ih vraća. |
| sort | string |
distance (zadano), newest ili importance.
distance · newest · importance |
| limit | integer | Koliko rezultata (zadano 20, najviše koliko dopušta paket). |
curl "https://adios.hr/api/v1/nearby?place=Zadar&radius_km=50&hours=48" \ -H "Authorization: Bearer $ADIOS_KEY"
Pronađi mjesto
geo MCP: resolve_placeIme mjesta u točku (i obrnuto: točka u najbliže mjesto), iz popisa svih hrvatskih mjesta.
| Parametar | Tip | Opis |
|---|---|---|
| name | string | Ime mjesta u bilo kojem padežu. |
| lat | number | Ili točka: širina… |
| lon | number | …i dužina. |
curl "https://adios.hr/api/v1/places/resolve?name=Dugom%20Selu" \ -H "Authorization: Bearer $ADIOS_KEY"
Gradovi
geoGradovi s vlastitom stranicom vijesti i broj priča u zadnjih 30 dana.
curl "https://adios.hr/api/v1/cities" \ -H "Authorization: Bearer $ADIOS_KEY"
Vijesti grada
geo MCP: get_city_newsVijesti grada i okolice iz zadnjih 30 dana (svaka priča na stranici grada kojem je najbliža).
| Parametar | Tip | Opis |
|---|---|---|
| slug obavezno | string · path | Grad: zadar, split, slavonski-brod… ili ime grada. |
| kinds | array | Vrste priča na karti, npr. fire,crash,crime (vidi /v1/categories). |
| include_filler | boolean | Nebitne vijesti (horoskopi, kvizovi, reality, trač, promo) su izostavljene iz svih popisa; true ih vraća. |
| limit | integer | Koliko rezultata (zadano 30, najviše koliko dopušta paket). |
curl "https://adios.hr/api/v1/cities/zadar" \ -H "Authorization: Bearer $ADIOS_KEY"
Karta vijesti
geo MCP: get_news_mapSve priče s mjestom događaja u zadnjih N sati (Hrvatska i svijet), najnovije prvo.
| Parametar | Tip | Opis |
|---|---|---|
| hours | integer | Koliko sati unatrag (zadano 24, najviše 720). |
| kinds | array | Vrste priča na karti, npr. fire,crash,crime (vidi /v1/categories). |
| urgent_only | boolean | Samo bitno: požari, nesreće, eksplozije, potresi, poplave, nevrijeme, spašavanja, nestali i velike priče. |
| include_filler | boolean | Nebitne vijesti (horoskopi, kvizovi, reality, trač, promo) su izostavljene iz svih popisa; true ih vraća. |
| limit | integer | Koliko rezultata (zadano 100, najviše koliko dopušta paket). |
curl "https://adios.hr/api/v1/map?hours=6&urgent_only=true" \ -H "Authorization: Bearer $ADIOS_KEY"
Pregledi
Pregled dana
MCP: get_daily_digestAdiosov pregled dana: što se dogodilo, po rubrikama, s vremenskom crtom i poveznicama na priče. Danas se piše uživo.
| Parametar | Tip | Opis |
|---|---|---|
| date | string | Dan (YYYY-MM-DD, today, yesterday); zadano najnoviji. |
curl "https://adios.hr/api/v1/digests/daily?date=yesterday" \ -H "Authorization: Bearer $ADIOS_KEY"
Pregled tjedna
MCP: get_weekly_digestPregled tjedna (ponedjeljak do nedjelje): najvažnije priče tjedna.
| Parametar | Tip | Opis |
|---|---|---|
| date | string | Bilo koji dan tjedna (YYYY-MM-DD); zadano najnoviji. |
curl "https://adios.hr/api/v1/digests/weekly" \ -H "Authorization: Bearer $ADIOS_KEY"
Pregled mjeseca
Pregled mjeseca: najvažnije priče mjeseca.
| Parametar | Tip | Opis |
|---|---|---|
| date | string | Bilo koji dan mjeseca (YYYY-MM-DD); zadano najnoviji. |
curl "https://adios.hr/api/v1/digests/monthly" \ -H "Authorization: Bearer $ADIOS_KEY"
Popis pregleda
Najnoviji pregledi jedne vrste (naslovi i poveznice).
| Parametar | Tip | Opis |
|---|---|---|
| kind | string |
daily (zadano), weekly ili monthly.
daily · weekly · monthly |
| limit | integer | Koliko rezultata (zadano 14, najviše koliko dopušta paket). |
curl "https://adios.hr/api/v1/digests?kind=weekly&limit=4" \ -H "Authorization: Bearer $ADIOS_KEY"
Priče (kronologije)
Priče
MCP: list_storiesPraćene priče (kronologije u više koraka): najnoviji razvoj prvo, ili najduže, ili najviše izvještaja.
| Parametar | Tip | Opis |
|---|---|---|
| q | string | Pretraga po imenu priče i njezinih koraka. |
| category | string | Rubrika: crime, politics, sport… (vidi /v1/categories). |
| period | string |
Novi korak: day, week ili month.
day · week · month |
| order | string |
latest (zadano), longest ili most_reports.
latest · longest · most_reports |
| page | integer | Stranica (20 po stranici). |
| include_filler | boolean | Nebitne vijesti (horoskopi, kvizovi, reality, trač, promo) su izostavljene iz svih popisa; true ih vraća. |
curl "https://adios.hr/api/v1/stories?period=week" \ -H "Authorization: Bearer $ADIOS_KEY"
Kronologija priče
MCP: get_story_timelineCijela kronologija priče: svaki korak s imenom, vremenom, sažetkom i izvještajima portala, i gdje se dogodilo.
| Parametar | Tip | Opis |
|---|---|---|
| slug obavezno | string · path | Slug priče (iz /v1/stories ili iz adrese /kronologija/…). |
curl "https://adios.hr/api/v1/stories/{slug}" \
-H "Authorization: Bearer $ADIOS_KEY"Još
Teme u trendu
MCP: get_trending_topicsTeme o kojima se sada najviše piše i koje se najviše traže.
curl "https://adios.hr/api/v1/trending" \ -H "Authorization: Bearer $ADIOS_KEY"
Opozivi proizvoda
MCP: get_product_recallsAdios Radar: opozivi proizvoda i sigurnosna upozorenja (HAPIH, EU RASFF, Safety Gate), na hrvatskom ili engleskom.
| Parametar | Tip | Opis |
|---|---|---|
| q | string | Pretraga: proizvod, marka, trgovina, opasnost. |
| lang | string |
hr (zadano) ili en.
hr · en |
| limit | integer | Koliko rezultata (zadano 10, najviše koliko dopušta paket). |
curl "https://adios.hr/api/v1/recalls?lang=en&limit=5" \ -H "Authorization: Bearer $ADIOS_KEY"
Portali
MCP: list_portalsPortali koje Adios čita, sa slugom za filtriranje.
curl "https://adios.hr/api/v1/providers" \ -H "Authorization: Bearer $ADIOS_KEY"
Rubrike i vrste
MCP: list_categoriesRubrike članaka i vrste priča na karti (hrvatski i engleski nazivi).
curl "https://adios.hr/api/v1/categories" \ -H "Authorization: Bearer $ADIOS_KEY"
Račun
Moja potrošnja
MCP: get_my_usageVaš paket, ograničenja i današnja potrošnja po skupinama.
curl "https://adios.hr/api/v1/me" \ -H "Authorization: Bearer $ADIOS_KEY"
Webhookovi
Moji webhookovi
samo s ključemVaši webhookovi s događajem, postavkama i zadnjom isporukom.
curl "https://adios.hr/api/v1/webhooks" \ -H "Authorization: Bearer $ADIOS_KEY"
Novi webhook
samo s ključemAdios šalje POST na vašu adresu kad se dogodi: vijest u blizini mjesta (nearby.story), novi opoziv (recall.new), pregled dana (digest.daily) ili novi korak praćene priče (story.stage). JSON tijelo.
| Parametar | Tip | Opis |
|---|---|---|
| name obavezno | string · body | Ime (za vas). |
| url obavezno | string · body | Vaša HTTPS adresa. |
| event obavezno | string · body |
nearby.story, recall.new, digest.daily ili story.stage.
nearby.story · recall.new · digest.daily · story.stage |
| place | string · body | nearby.story: mjesto… |
| lat | number · body | …ili točka (širina)… |
| lon | number · body | …i dužina. |
| radius_km | number · body | nearby.story: polumjer (zadano 25). |
| kinds | array · body | nearby.story: samo ove vrste. |
| urgent_only | boolean · body | nearby.story: samo bitno. |
| story | string · body | story.stage: slug priče. |
| lang | string · body |
recall.new: hr ili en.
hr · en |
curl -X POST "https://adios.hr/api/v1/webhooks" \
-H "Authorization: Bearer $ADIOS_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Hotel Zadar","url":"https://example.com/adios","event":"nearby.story","place":"Zadar","radius_km":20,"urgent_only":true}'Obriši webhook
samo s ključemBriše webhook.
| Parametar | Tip | Opis |
|---|---|---|
| id obavezno | string · path | Id webhooka. |
curl -X DELETE "https://adios.hr/api/v1/webhooks/{id}" \
-H "Authorization: Bearer $ADIOS_KEY"Probna isporuka
samo s ključemŠalje probni događaj na adresu webhooka (s istim potpisom kao pravi).
| Parametar | Tip | Opis |
|---|---|---|
| id obavezno | string · path | Id webhooka. |
curl -X POST "https://adios.hr/api/v1/webhooks/{id}/test" \
-H "Authorization: Bearer $ADIOS_KEY"Webhookovi: događaji
Webhook je vaša HTTPS adresa na koju Adios šalje POST kad se nešto dogodi, bez da vi pitate. Napravite ga u konzoli ili preko API-ja (POST /v1/webhooks).
| Događaj | Kada | Postavke |
|---|---|---|
| nearby.story | Nova priča u vašem krugu oko mjesta (hotel, kamp, grad): požari, nesreće, nevrijeme, zatvorene ceste, sve s karte. Svaka priča jednom. | place | lat+lon, radius_km, kinds, urgent_only |
| recall.new | Novi opoziv proizvoda ili sigurnosno upozorenje Adios Radara (HAPIH, EU RASFF, Safety Gate). | lang (hr|en) |
| digest.daily | Pregled dana kad dan završi (malo iza ponoći, po hrvatskom vremenu). | – |
| story.stage | Novi korak praćene priče (njezine kronologije), npr. nestala osoba pronađena. | story (slug) |
Tijelo isporuke:
POST https://example.com/adios
Content-Type: application/json
Adios-Event: nearby.story
Adios-Delivery: nearby_3f2c…
Adios-Signature: t=1760180000,v1=5b2e…
{
"id": "nearby_3f2c…",
"type": "nearby.story",
"created_at": "2026-10-11T18:04:00Z",
"webhook_id": "9a1d…",
"test": false,
"data": {
"place": "Zadar",
"story": { "title": "…", "kind": "fire", "place": "Bibinje", "distance_km": 6.2, "url": "https://adios.hr/…", … }
}
}Provjera potpisa
Svaka isporuka je potpisana tajnom vašeg webhooka (vidi konzolu): v1 je HMAC-SHA256 od "{t}.{tijelo}". Provjerite potpis i da t nije stariji od 5 minuta.
import crypto from "node:crypto";
function verify(secret, header, rawBody) {
const parts = Object.fromEntries(header.split(",").map(p => p.split("=")));
if (Math.abs(Date.now() / 1000 - Number(parts.t)) > 300) return false;
const expected = crypto.createHmac("sha256", secret).update(`${parts.t}.${rawBody}`).digest("hex");
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1 ?? ""));
}import hmac, hashlib, time
def verify(secret: str, header: str, raw_body: bytes) -> bool:
parts = dict(p.split("=", 1) for p in header.split(","))
if abs(time.time() - int(parts["t"])) > 300:
return False
signed = parts["t"].encode() + b"." + raw_body
expected = hmac.new(secret.encode(), signed, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, parts.get("v1", ""))static bool Verify(string secret, string header, string rawBody)
{
var parts = header.Split(',').Select(p => p.Split('=', 2)).ToDictionary(p => p[0], p => p[1]);
long t = long.Parse(parts["t"]);
if (Math.Abs(DateTimeOffset.UtcNow.ToUnixTimeSeconds() - t) > 300) return false;
byte[] hash = HMACSHA256.HashData(Encoding.UTF8.GetBytes(secret), Encoding.UTF8.GetBytes($"{t}.{rawBody}"));
return CryptographicOperations.FixedTimeEquals(
Encoding.ASCII.GetBytes(Convert.ToHexStringLower(hash)), Encoding.ASCII.GetBytes(parts["v1"]));
}function verify(string $secret, string $header, string $rawBody): bool {
parse_str(str_replace(',', '&', $header), $parts);
if (abs(time() - (int)$parts['t']) > 300) return false;
$expected = hash_hmac('sha256', $parts['t'] . '.' . $rawBody, $secret);
return hash_equals($expected, $parts['v1'] ?? '');
}Isporuka i ponavljanje
- Odgovorite s 2xx u 10 sekundi. Sve ostalo je neuspjeh.
- Neuspjela isporuka se ponavlja sve rjeđe (1, 2, 4… do 60 minuta); nakon 20 neuspjeha zaredom webhook se isključuje, a u konzoli ga uključite ponovno.
- Svaki događaj stiže jednom (id je stalan, pa duplikate lako prepoznate). Novi webhook kreće od trenutka kad je napravljen, bez starih događaja.
- Adios provjerava vijesti svake minute. Gumb „Proba” u konzoli šalje pravi primjer odmah.
- Adrese moraju biti https:// na javnom internetu.
MCP
Adios je i MCP server (Model Context Protocol, Streamable HTTP). Svaki endpoint iznad s oznakom MCP je i alat, a uz njih su i search i fetch (za ChatGPT konektore i deep research) te gotovi upiti (jutarnji pregled, lokalne vijesti, objasni priču, opozivi).
https://adios.hr/api/mcpBez ključa radi za svakoga (ograničenja po sesiji); s ključem (zaglavlje ili ?key=) vrijede ograničenja vašeg paketa i pozivi su u vašem zapisniku.
Kako spojiti ChatGPT, Claude, Cursor…Promjene
1.0 · 11. listopada 2026. · Prva verzija: vijesti, pretraga, sve povezano, vijesti u blizini, karta, gradovi, pregledi, kronologije, teme u trendu, opozivi, webhookovi i MCP za svakoga.
Promjene koje bi mogle slomiti vaš kod najavljujemo unaprijed; nova polja u odgovorima mogu stići bilo kada.