RO

Tema

Culoarea de accent

Tema și culoarea te urmează pe satelit.md și în aplicație.

Panou Alege un plan

Cont și catalog

Jokes, funniest first

GET/v1/jokes

Jokes rated and translated once by a model: how funny (`score`), how well they land in Moldova (`md_score`), from what age (`min_age`), whether a child may hear it (`kids_ok`), 18+ (`adult`), what they contain (`flags`) and their topics. The text is in the request's language, and a joke whose point is lost there is not listed in it (`langs` says where it works). Funniest first. `q` matches every word in any language's text or a topic's name, and any word when no joke has them all. Costs 1 credit per 20 rows, 2 with `q`.

Credite
1 pentru fiecare 20 rânduri, 2 cu parametrul q
Cu cheie

Parametri

  • qstringopțional

    Cuvinte de căutat.

  • topicstring: family, couples, kids, school, work, doctors, police, animals, money, drinking, food, tech, travel, sport, old_age, mother_in_law, neighbours, village, army, law, religion, politics, bula, ion_maria, blondes, regions, wordplay, dark, otheropțional

    Tema actului.

  • kindstring: joke, riddle, proverb, quoteopțional

    Only this kind.

  • audiencestring: kids, family, general, adultopționalimplicit general

    Who will hear it. `kids`: fit for a child (under 12), up to `max_age` (6 without it). `family`: fit for a child, read out to the whole family. `general` (default): no 18+. `adult`: 18+ too. A joke mocking a people is in `general` and `adult`: leave it out with `exclude_flags=ethnic`.

  • max_ageintegeropțional

    Only jokes that suit a listener this young: `min_age` at or under it.

  • min_scoreintegeropțional

    Only jokes at or above this score (0-100, how funny). Without it 40 for `kids`, 50 for the rest.

  • exclude_flagsstringopțional

    A comma list of flags to leave out, such as `alcohol,politics`.

  • pageintegeropționalimplicit 1

    Pagina, de la 1.

  • perintegeropționalimplicit 20

    Rânduri pe pagină, cel mult 20.

Erori posibile

Încearcă

curl "https://api.satelit.md/v1/jokes" \
  -H "Authorization: Bearer $SATELIT_KEY"
const res = await fetch("https://api.satelit.md/v1/jokes", {
  headers: { Authorization: `Bearer ${process.env.SATELIT_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits);
import json, os, urllib.request

req = urllib.request.Request(
    "https://api.satelit.md/v1/jokes",
    headers={"Authorization": f"Bearer {os.environ['SATELIT_KEY']}"},
)
with urllib.request.urlopen(req) as res:
    body = json.load(res)
print(body["data"], body["meta"]["credits"])
<?php
$ch = curl_init("https://api.satelit.md/v1/jokes");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("SATELIT_KEY")],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]);

The joke of the day

GET/v1/jokes/today

One joke for the whole Chisinau day, the same in every answer and language: a family joke that works in all four languages, not the day's joke again within a year. With `topic`, the day's joke of that topic. Costs 1 credit.

Credite
1
Cu cheie

Parametri

  • topicstring: family, couples, kids, school, work, doctors, police, animals, money, drinking, food, tech, travel, sport, old_age, mother_in_law, neighbours, village, army, law, religion, politics, bula, ion_maria, blondes, regions, wordplay, dark, otheropțional

    Tema actului.

Erori posibile

Încearcă

curl "https://api.satelit.md/v1/jokes/today" \
  -H "Authorization: Bearer $SATELIT_KEY"
const res = await fetch("https://api.satelit.md/v1/jokes/today", {
  headers: { Authorization: `Bearer ${process.env.SATELIT_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits);
import json, os, urllib.request

req = urllib.request.Request(
    "https://api.satelit.md/v1/jokes/today",
    headers={"Authorization": f"Bearer {os.environ['SATELIT_KEY']}"},
)
with urllib.request.urlopen(req) as res:
    body = json.load(res)
print(body["data"], body["meta"]["credits"])
<?php
$ch = curl_init("https://api.satelit.md/v1/jokes/today");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("SATELIT_KEY")],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]);

A joke not yet shown

GET/v1/jokes/random

One joke among the funniest that fit the filters and none of `seen`: what an app tells a user who asks for another, without repeating itself. 404 when every one that fits was seen. Costs 1 credit.

Credite
1
Cu cheie

Parametri

  • topicstring: family, couples, kids, school, work, doctors, police, animals, money, drinking, food, tech, travel, sport, old_age, mother_in_law, neighbours, village, army, law, religion, politics, bula, ion_maria, blondes, regions, wordplay, dark, otheropțional

    Tema actului.

  • kindstring: joke, riddle, proverb, quoteopțional

    Only this kind.

  • audiencestring: kids, family, general, adultopționalimplicit general

    Who will hear it. `kids`: fit for a child (under 12), up to `max_age` (6 without it). `family`: fit for a child, read out to the whole family. `general` (default): no 18+. `adult`: 18+ too. A joke mocking a people is in `general` and `adult`: leave it out with `exclude_flags=ethnic`.

  • max_ageintegeropțional

    Only jokes that suit a listener this young: `min_age` at or under it.

  • min_scoreintegeropțional

    Only jokes at or above this score (0-100, how funny). Without it 40 for `kids`, 50 for the rest.

  • exclude_flagsstringopțional

    A comma list of flags to leave out, such as `alcohol,politics`.

  • seenstringopțional

    Ids already shown to this user, comma separated, at most 200.

Erori posibile

Încearcă

curl "https://api.satelit.md/v1/jokes/random" \
  -H "Authorization: Bearer $SATELIT_KEY"
const res = await fetch("https://api.satelit.md/v1/jokes/random", {
  headers: { Authorization: `Bearer ${process.env.SATELIT_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits);
import json, os, urllib.request

req = urllib.request.Request(
    "https://api.satelit.md/v1/jokes/random",
    headers={"Authorization": f"Bearer {os.environ['SATELIT_KEY']}"},
)
with urllib.request.urlopen(req) as res:
    body = json.load(res)
print(body["data"], body["meta"]["credits"])
<?php
$ch = curl_init("https://api.satelit.md/v1/jokes/random");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("SATELIT_KEY")],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]);

Joke topics

GET/v1/jokes/topics

Every topic with jokes for this audience in the request's language, with its name and how many, most first. Costs 1 credit.

Credite
1
Cu cheie

Parametri

  • audiencestring: kids, family, general, adultopționalimplicit general

    Who will hear it. `kids`: fit for a child (under 12), up to `max_age` (6 without it). `family`: fit for a child, read out to the whole family. `general` (default): no 18+. `adult`: 18+ too. A joke mocking a people is in `general` and `adult`: leave it out with `exclude_flags=ethnic`.

Erori posibile

Încearcă

curl "https://api.satelit.md/v1/jokes/topics" \
  -H "Authorization: Bearer $SATELIT_KEY"
const res = await fetch("https://api.satelit.md/v1/jokes/topics", {
  headers: { Authorization: `Bearer ${process.env.SATELIT_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits);
import json, os, urllib.request

req = urllib.request.Request(
    "https://api.satelit.md/v1/jokes/topics",
    headers={"Authorization": f"Bearer {os.environ['SATELIT_KEY']}"},
)
with urllib.request.urlopen(req) as res:
    body = json.load(res)
print(body["data"], body["meta"]["credits"])
<?php
$ch = curl_init("https://api.satelit.md/v1/jokes/topics");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("SATELIT_KEY")],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]);

One joke

GET/v1/jokes/{id}

A joke with its title and text in every language its point works in. Costs 1 credit.

Credite
1
Cu cheie

Parametri

  • idstringobligatoriu

    Identificatorul rândului.

Erori posibile

Încearcă

curl "https://api.satelit.md/v1/jokes/{id}" \
  -H "Authorization: Bearer $SATELIT_KEY"
const res = await fetch("https://api.satelit.md/v1/jokes/{id}", {
  headers: { Authorization: `Bearer ${process.env.SATELIT_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits);
import json, os, urllib.request

req = urllib.request.Request(
    "https://api.satelit.md/v1/jokes/{id}",
    headers={"Authorization": f"Bearer {os.environ['SATELIT_KEY']}"},
)
with urllib.request.urlopen(req) as res:
    body = json.load(res)
print(body["data"], body["meta"]["credits"])
<?php
$ch = curl_init("https://api.satelit.md/v1/jokes/{id}");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("SATELIT_KEY")],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]);

Contul meu

GET/v1/me

Planul, creditele, limita pe minut și cheia folosită. Nu costă credite.

Credite
0 credite
Cu cheie

Parametri

Fără parametri.

Erori posibile

Încearcă

curl "https://api.satelit.md/v1/me" \
  -H "Authorization: Bearer $SATELIT_KEY"
const res = await fetch("https://api.satelit.md/v1/me", {
  headers: { Authorization: `Bearer ${process.env.SATELIT_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits);
import json, os, urllib.request

req = urllib.request.Request(
    "https://api.satelit.md/v1/me",
    headers={"Authorization": f"Bearer {os.environ['SATELIT_KEY']}"},
)
with urllib.request.urlopen(req) as res:
    body = json.load(res)
print(body["data"], body["meta"]["credits"])
<?php
$ch = curl_init("https://api.satelit.md/v1/me");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("SATELIT_KEY")],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]);
Răspuns
{
  "data": {
    "plan": "creator",
    "credits": {
      "limit": 30000,
      "used": 4210,
      "reset": "2026-12-01T00:00:00+02:00",
      "plan": 30000,
      "extra": 0
    },
    "rate": {
      "per_minute": 120
    },
    "key": {
      "name": "blog",
      "prefix": "sat_live_a1b"
    }
  },
  "meta": {
    "credits": 0
  }
}

Catalogul

GET/v1/products

Toate produsele, cu starea și costul lor.

Credite
0 credite
Fără cheie

Parametri

Fără parametri.

Erori posibile

Încearcă

curl "https://api.satelit.md/v1/products"
const res = await fetch("https://api.satelit.md/v1/products");
const { data, meta } = await res.json();
console.log(data, meta.credits);
import json, os, urllib.request

req = urllib.request.Request(
    "https://api.satelit.md/v1/products",
)
with urllib.request.urlopen(req) as res:
    body = json.load(res)
print(body["data"], body["meta"]["credits"])
<?php
$ch = curl_init("https://api.satelit.md/v1/products");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]);
Răspuns
{
  "data": {
    "products": [
      {
        "key": "rates",
        "state": "open",
        "freshness": "daily 13:00",
        "endpoints": [
          {
            "path": "/v1/rates",
            "credits": 1
          }
        ]
      }
    ],
    "shops": {
      "open": 90,
      "offers": 1401871
    },
    "downloads": [
      {
        "product": "places",
        "url": "https://api.satelit.md/downloads/places-osm.ndjson.gz",
        "license": "ODbL 1.0, © OpenStreetMap contributors"
      }
    ]
  },
  "meta": {
    "credits": 0,
    "attribution": "Sursa: Banca Națională a Moldovei, bnm.md, CC BY 4.0",
    "notice": "Aceleași date sunt gratuite la bnm.md."
  }
}

Planurile

GET/v1/plans

Cele cinci planuri, cu limitele lor.

Credite
0 credite
Fără cheie

Parametri

Fără parametri.

Erori posibile

Încearcă

curl "https://api.satelit.md/v1/plans"
const res = await fetch("https://api.satelit.md/v1/plans");
const { data, meta } = await res.json();
console.log(data, meta.credits);
import json, os, urllib.request

req = urllib.request.Request(
    "https://api.satelit.md/v1/plans",
)
with urllib.request.urlopen(req) as res:
    body = json.load(res)
print(body["data"], body["meta"]["credits"])
<?php
$ch = curl_init("https://api.satelit.md/v1/plans");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]);
Răspuns
{
  "data": {
    "plans": [
      {
        "key": "start",
        "name": "Start",
        "price": 9,
        "credits": 5000,
        "per_minute": 30
      }
    ],
    "pack": 10000,
    "packs_max": 50,
    "recommended": "pro",
    "currency": "EUR",
    "year_months": 10
  },
  "meta": {
    "credits": 0
  }
}

Starea

GET/v1/status

Când s-a actualizat ultima oară fiecare produs și dacă datele sunt vechi.

Credite
0 credite
Fără cheie

Parametri

Fără parametri.

Erori posibile

Încearcă

curl "https://api.satelit.md/v1/status"
const res = await fetch("https://api.satelit.md/v1/status");
const { data, meta } = await res.json();
console.log(data, meta.credits);
import json, os, urllib.request

req = urllib.request.Request(
    "https://api.satelit.md/v1/status",
)
with urllib.request.urlopen(req) as res:
    body = json.load(res)
print(body["data"], body["meta"]["credits"])
<?php
$ch = curl_init("https://api.satelit.md/v1/status");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]);
Răspuns
{
  "data": {
    "ok": true,
    "products": [
      {
        "key": "rates",
        "updated_at": "2026-11-02T13:05:00+02:00",
        "stale": false
      },
      {
        "key": "news",
        "updated_at": "2026-11-02T13:05:00+02:00",
        "stale": false
      }
    ]
  },
  "meta": {
    "credits": 0
  }
}

How much data there is

GET/v1/stats

Counts of every open product, counted hourly from the tables: offers, products, price history, laws, news, tours, flights, places. Numbers only, no row. No key.

Credite
0 credite
Fără cheie

Parametri

Fără parametri.

Erori posibile

Încearcă

curl "https://api.satelit.md/v1/stats"
const res = await fetch("https://api.satelit.md/v1/stats");
const { data, meta } = await res.json();
console.log(data, meta.credits);
import json, os, urllib.request

req = urllib.request.Request(
    "https://api.satelit.md/v1/stats",
)
with urllib.request.urlopen(req) as res:
    body = json.load(res)
print(body["data"], body["meta"]["credits"])
<?php
$ch = curl_init("https://api.satelit.md/v1/stats");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]);
Răspuns
{
  "data": {
    "counts": {
      "shops_open": 90,
      "offers": 1401871,
      "products": 1177368,
      "price_points": 1747064,
      "price_history_from": "2026-10-28",
      "ads_live": 605637,
      "ads_native": 0,
      "tours_offers": 10943,
      "tours_agencies": 5,
      "tours_countries": 22,
      "flights_destinations": 49,
      "flights_per_week": 297,
      "fares_cities": 80,
      "rest_places": 1437,
      "estate_listings": 21074,
      "estate_cities": 17,
      "news_rows": 5491,
      "news_articles": 304,
      "news_outlets": 40,
      "news_from": "2026-10-02",
      "acts": 110413,
      "acts_issuers": 198,
      "acts_from": "1961-04-24",
      "fuel_networks": 80,
      "fuel_stations": 548,
      "currencies": 5,
      "rates_from": "2026-08-06",
      "tariffs": 7,
      "recipes": 70,
      "shops": 7651,
      "venues": 3355,
      "chain_shops": 2745,
      "chains": 89,
      "as_of": "2026-11-06"
    },
    "updated_at": "2026-11-06T11:13:43+02:00"
  },
  "meta": {
    "credits": 0,
    "updated_at": "2026-11-06T11:13:43+02:00",
    "sources": []
  }
}

Exemplul fără cheie

GET/v1/sample

Prețul unui produs de bază, două valute, plafonul, cea mai ieftină rețea, trei știri mai vechi de 3 ore și digestul zilei. Limită: 60 de apeluri pe minut, pe IP.

Credite
0 credite
Fără cheie

Parametri

Fără parametri.

Erori posibile

Încearcă

curl "https://api.satelit.md/v1/sample"
const res = await fetch("https://api.satelit.md/v1/sample");
const { data, meta } = await res.json();
console.log(data, meta.credits);
import json, os, urllib.request

req = urllib.request.Request(
    "https://api.satelit.md/v1/sample",
)
with urllib.request.urlopen(req) as res:
    body = json.load(res)
print(body["data"], body["meta"]["credits"])
<?php
$ch = curl_init("https://api.satelit.md/v1/sample");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body["data"]);
Răspuns
{
  "data": {
    "rates": [
      {
        "code": "EUR",
        "name": "Euro",
        "value": 20.0905,
        "nominal": 1,
        "date": "2026-11-02",
        "change_7d_pct": -0.6,
        "change_30d_pct": -0.1
      },
      {
        "code": "USD",
        "name": "Dolar SUA",
        "value": 17.9476,
        "nominal": 1,
        "date": "2026-11-02",
        "change_7d_pct": -0.6,
        "change_30d_pct": 0.8
      }
    ],
    "fuel": {
      "cap": {
        "a95": 31.4,
        "diesel": 36.28
      },
      "cheapest": {
        "a95": "gloria-qvarc",
        "diesel": "tlx",
        "lpg": "tlx"
      }
    },
    "news": [
      {
        "id": "n_a245",
        "kind": "article",
        "category": {
          "key": "economy",
          "label": "Economie și prețuri"
        },
        "title": "Ministerul Energiei propune contribuții de 966 de milioane de lei pentru renovarea locuințelor",
        "dek": "Ministerul Energiei propune ca, în 2027-2029, consumatorii să plătească prin tarife și prețuri circa 966 de milioane de lei pentru renovarea locuințelor.",
        "gravity": 74,
        "band": "high",
        "reach": 3,
        "region": null,
        "regions": [],
        "slot": null,
        "due_at": "2026-11-02T13:11:55Z",
        "published_at": "2026-11-02T13:11:55Z",
        "sources": [
          {
            "name": "Moldova 1",
            "url": "https://moldova1.md/p/89169/aproape-un-miliard-de-lei-pentru-renovarea-locuintelor-pana-in-2029-contributiile-incluse-in-tarifele-la-energie-si-pretul-carburantilor"
          }
        ],
        "sources_count": 1,
        "image": null
      },
      {
        "id": "n_b14748",
        "kind": "brief",
        "category": {
          "key": "education",
          "label": "Educație"
        },
        "title": "Guvernul pregătește peste un miliard de lei pentru școlile din Chișinău în perioada 2026-2030",
        "dek": null,
        "gravity": 26,
        "band": "moderate",
        "reach": 1,
        "region": null,
        "regions": [],
        "slot": null,
        "due_at": "2026-11-02T15:20:03Z",
        "published_at": "2026-11-02T15:20:03Z",
        "sources": [
          {
            "name": "Cotidianul",
            "url": "https://cotidianul.md/41806/video-unde-ivan-ceban-nu-a-investit-ani-la-rand-intervine-guvernul-dan-perciun-anunta-modernizarea-gimnaziului-nr-86-si-investitii-de-peste-un-miliard-de-lei-in-scolile-din-chisinau/"
          }
        ],
        "sources_count": 1,
        "image": null
      },
      {
        "id": "n_b14219",
        "kind": "brief",
        "category": {
          "key": "education",
          "label": "Educație"
        },
        "title": "Bacalaureatul din 2027 va avea sesiunea de bază între 2 și 18 iunie, iar probele încep la ora 9:00",
        "dek": null,
        "gravity": 14,
        "band": "low",
        "reach": 1,
        "region": null,
        "regions": [],
        "slot": null,
        "due_at": "2026-11-02T05:00:19Z",
        "published_at": "2026-11-02T05:00:19Z",
        "sources": [
          {
            "name": "Ea.md",
            "url": "https://ea.md/emotii-pentru-absolventi-in-ce-perioada-se-va-desfasura-bac-ul-din-2027/"
          }
        ],
        "sources_count": 1,
        "image": null
      }
    ],
    "law": {
      "date": "2026-11-03",
      "title": "Noutăți legislative: 3 noiembrie 2026",
      "acts": 2
    },
    "price": {
      "name": "Griș, arpacaș și alte crupe",
      "min_price": 5.95,
      "store": "Kaufland"
    },
    "updated_at": "2026-11-03T10:32:00.827Z"
  },
  "meta": {
    "credits": 0,
    "updated_at": "2026-11-03T10:32:00.827Z",
    "sources": [
      {
        "name": "BNM",
        "url": "https://www.bnm.md/ro/official_exchange_rates",
        "license": "CC BY 4.0"
      },
      {
        "name": "ANRE",
        "url": "https://anre.md",
        "license": "Public data of ANRE"
      },
      {
        "name": "Satelit",
        "url": "https://satelit.md",
        "license": "Satelit"
      },
      {
        "name": "Monitorul Oficial",
        "url": "https://monitorul.gov.md",
        "license": "none: read from the source's public pages; no agreement with the source and no licence over its data is granted"
      }
    ],
    "attribution": "Sursa: Banca Națională a Moldovei, bnm.md, CC BY 4.0",
    "notice": "Aceleași date sunt gratuite la bnm.md."
  }
}