API
Serwis przyjmuje notatki markdown i oddaje losowy link, który wygasa. Są dwa punkty wejścia: jeden dla skryptów i integracji (wymaga klucza), drugi dla przeglądarki (bez klucza, za to z limitem).
Tworzenie notatki
POST https://md.damianslimak.pl/api/notes
X-Api-Key: TWÓJ_KLUCZ
Content-Type: application/json
{
"content": "# Tytuł\n\nTreść notatki w markdownie",
"ttl": "1d",
"password": "opcjonalne"
}
Odpowiedź 201:
{
"slug": "15LlZpeAd7gljKOR04Ssgw",
"url": "https://md.damianslimak.pl/15LlZpeAd7gljKOR04Ssgw",
"expires_at": 1785958800
}
Parametry
| pole | wymagane | opis |
|---|---|---|
content | tak | Treść w markdownie, UTF-8, do 256 kB. Pusta treść to błąd. |
ttl | nie | Czas życia: "1h", "1d", "7d", "30d". Domyślnie 1d. |
password | nie | Hasło do otwarcia notatki. Pominięte lub puste znaczy: bez hasła. |
Czasy życia
| wartość | znaczenie |
|---|---|
1h | godzina |
1d | dzień |
7d | tydzień |
30d | miesiąc |
Zapis z przeglądarki
Ten sam mechanizm, którego używa edytor na stronie głównej. Bez klucza API, za to z limitem 60 nowych notatek na 60 minut z jednego adresu IP. Poprawianie własnej notatki nie zużywa limitu — możesz zapisywać ją bez ograniczeń.
POST https://md.damianslimak.pl/api/notes/save
Content-Type: application/json
{
"content": "# Treść",
"ttl": "1d",
"password": "opcjonalne",
"slug": "istniejący-slug",
"edit_token": "sekret-zwrócony-przy-tworzeniu"
}
Bez pary slug i edit_token powstaje nowa notatka — odpowiedź 201 zawiera dodatkowo edit_token. Z poprawną parą treść zostaje nadpisana pod tym samym adresem — odpowiedź 200 i "updated": true.
Przy nadpisaniu:
- pominięty
ttlzostawia datę wygaśnięcia bez zmian, - pominięte
passwordzostawia hasło bez zmian, - puste
passwordzdejmuje hasło.
Odczyt notatki
| adres | co zwraca |
|---|---|
/{slug} | Notatka wyrenderowana do HTML. |
/{slug}/plain | Surowy markdown w przeglądarce. |
/{slug}/md | Plik .md do pobrania. |
/{slug}/print | Wersja do druku, otwiera okno drukowania (stąd PDF). |
/{slug}/edit | Edytor z wczytaną treścią. |
Kody odpowiedzi
| kod | kiedy |
|---|---|
| 200 | Notatka nadpisana albo odczytana. |
| 201 | Notatka utworzona. |
| 401 | Brak lub zły klucz API (dotyczy /api/notes). |
| 404 | Nieznany slug. |
| 405 | Metoda inna niż POST. |
| 410 | Notatka wygasła — treść jest już usunięta. |
| 422 | Pusta treść, przekroczony rozmiar, zły ttl, zły edit_token. |
| 429 | Przekroczony limit nowych notatek z jednego IP. Dotyczy też prób nadpisania cudzym tokenem. |
| 503 | Baza chwilowo niedostępna. |
Przykłady
Wysłanie pliku z dysku:
curl -X POST https://md.damianslimak.pl/api/notes \
-H "X-Api-Key: $MD_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --rawfile c notatka.md '{content: $c, ttl: "7d"}')"
Notatka na godzinę, zabezpieczona hasłem:
curl -X POST https://md.damianslimak.pl/api/notes \
-H "X-Api-Key: $MD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"content":"# Dane dostępowe\n\nlogin: admin","ttl":"1h","password":"tajne"}'
Co warto wiedzieć
- Slug ma 22 znaki base62 i jest losowy — nie da się go zgadnąć ani wyliczyć.
- Po terminie treść jest kasowana z bazy. Pusty wiersz zostaje jeszcze 7 dni tylko po to, żeby odbiorca dostał komunikat „wygasła" zamiast „nie istnieje".
edit_tokennigdy nie pojawia się w adresie URL. Kto go nie ma, może notatkę przeczytać i skopiować, ale nie nadpisać.- Hasło chroni odczyt, nie szyfruje treści. Notatka leży w bazie jawnie.
- Wszystkie strony mają
noindex, a odczyt notatki nie trafia do cache.