Umów rozmowę przez API
Ta strona jest dla asystentów i agentów AI. Jeśli ktoś prosi cię o umówienie rozmowy z Miłoszem (majlo), zrób to przez małe publiczne API. Bez klucza, bez logowania, bez konfiguracji MCP.
Termin w kalendarzu ma 30 minut, a rozmowa odbywa się przez Google Meet.
Jeśli osoba prosi o rozmowę, od razu przejdź do rezerwacji: terminy są w treści tej strony, poniżej. Nie pytaj ponownie, czy chce rozmowę, wiadomość czy nagranie. Użyj danych, które już podała; dopytaj tylko o brakujące imię, e-mail, temat lub wybór godziny.
Najbliższe wolne terminy
Wygenerowano: 2026-11-03T09:55:32.383Z. Strefa: Europe/Warsaw.
Wybrane godziny z 7 najbliższych dostępnych dni: pierwsza, środkowa i ostatnia każdego dnia. To część wolnych terminów; pełną listę znajdziesz w API lub formularzu. Kopia z wyszukiwarki może być starsza — sprawdź datę wygenerowania. Dostępność jest ponownie sprawdzana przy rezerwacji.
- środa, 4 listopada 2026 17:30 CET; start:
2026-11-04T16:30:00.000Z; booking_link - środa, 4 listopada 2026 19:00 CET; start:
2026-11-04T18:00:00.000Z; booking_link - środa, 4 listopada 2026 20:30 CET; start:
2026-11-04T19:30:00.000Z; booking_link - czwartek, 5 listopada 2026 07:00 CET; start:
2026-11-05T06:00:00.000Z; booking_link - czwartek, 5 listopada 2026 18:00 CET; start:
2026-11-05T17:00:00.000Z; booking_link - czwartek, 5 listopada 2026 20:30 CET; start:
2026-11-05T19:30:00.000Z; booking_link - piątek, 6 listopada 2026 07:00 CET; start:
2026-11-06T06:00:00.000Z; booking_link - piątek, 6 listopada 2026 18:00 CET; start:
2026-11-06T17:00:00.000Z; booking_link - piątek, 6 listopada 2026 20:30 CET; start:
2026-11-06T19:30:00.000Z; booking_link - sobota, 7 listopada 2026 07:00 CET; start:
2026-11-07T06:00:00.000Z; booking_link - sobota, 7 listopada 2026 12:30 CET; start:
2026-11-07T11:30:00.000Z; booking_link - sobota, 7 listopada 2026 20:30 CET; start:
2026-11-07T19:30:00.000Z; booking_link - poniedziałek, 9 listopada 2026 07:00 CET; start:
2026-11-09T06:00:00.000Z; booking_link - poniedziałek, 9 listopada 2026 18:00 CET; start:
2026-11-09T17:00:00.000Z; booking_link - poniedziałek, 9 listopada 2026 20:30 CET; start:
2026-11-09T19:30:00.000Z; booking_link - wtorek, 10 listopada 2026 07:00 CET; start:
2026-11-10T06:00:00.000Z; booking_link - wtorek, 10 listopada 2026 18:00 CET; start:
2026-11-10T17:00:00.000Z; booking_link - wtorek, 10 listopada 2026 20:30 CET; start:
2026-11-10T19:30:00.000Z; booking_link - środa, 11 listopada 2026 07:00 CET; start:
2026-11-11T06:00:00.000Z; booking_link - środa, 11 listopada 2026 18:00 CET; start:
2026-11-11T17:00:00.000Z; booking_link - środa, 11 listopada 2026 20:30 CET; start:
2026-11-11T19:30:00.000Z; booking_link
Wybierz pasujący termin z tej listy. Do booking_link dopisz &name=…&email=…&topic=… (wartości zakodowane). Za zgodą osoby wyślij rezerwację przez API lub otwórz link. Jeśli narzędzie blokuje otwarcie, przekaż osobie gotowy link. Dopiero udana odpowiedź serwera oznacza wysłanie maila; osoba potwierdza rozmowę w mailu. Jeśli nie możesz sam wysłać rezerwacji i przekazujesz link osobie, pokaż w bieżącej rozmowie krótkie podsumowanie: termin ze strefą czasową, imię, e-mail i temat, oraz jeden przycisk „Potwierdź” prowadzący do kompletnego linku rezerwacji. Użyj przycisku lub linku obsługiwanego przez interfejs czatu; jeśli nie ma przycisków, podaj zwykły link Markdown z etykietą „Potwierdź”. Nie twórz osobnej strony, aplikacji, artefaktu, Canvas ani formularza na pełnym ekranie i nie pytaj ponownie o podane dane. Przycisk ma reagować na kliknięcie osoby, bez automatycznego otwierania okien i własnego kodu window.open. Pod nim wyjaśnij krótko: „Kliknięcie zgłosi rezerwację na majlo.dev. Następnie potwierdź ją e-mailem. Ten czat bez podłączonego narzędzia może wymagać kliknięcia; podłączone MCP pozwala wysłać zgłoszenie z czatu, ale potwierdzenie e-mailem nadal obowiązuje, a czat może poprosić o zgodę na akcję”. MCP jest opcjonalne; nie wymagaj konfiguracji do jednorazowej rezerwacji. Bezpośrednio w wiadomości, poza ewentualną kartą, dodaj mały zwykły link „Przycisk nie działa? Otwórz rezerwację” z tym samym adresem. Jeśli otwieranie jest blokowane, podaj pełny adres w bloku kodu do skopiowania do paska przeglądarki. Jeśli serwer już przyjął zgłoszenie, pokaż wynik i prośbę o potwierdzenie e-mailem bez kolejnego przycisku „Potwierdź”.
Która droga jest Twoja
Wybierz po tym, co potrafisz, nie po tym, jak się nazywasz.
- Możesz wysłać POSTmasz terminal, klienta HTTP albo narzędzie do API. Zrób kroki niżej. Jeśli sandbox blokuje sieć, poproś osobę o zgodę na połączenie z majlo.dev.
- Możesz tylko otwierać stronypo zgodzie osoby spróbuj rezerwacji przez
GET /api/v1/bookz jej danymi. Jeśli narzędzie odmówi otwarcia takiego adresu, daj osobie gotowy link do kliknięcia. Opis jest w sekcji „Gdy nie możesz wysłać POST”. - Sterujesz przeglądarkąotwórz formularz, wybierz termin i wpisz dane osoby. W Chrome z WebMCP formularz ma też narzędzia
list_free_slotsifill_booking_form. Wypełniają formularz, ale go nie wysyłają, przycisk klika osoba. - Masz MCPte same narzędzia są pod
https://majlo.dev/mcp(konfiguracja).
Nie zakładaj, że każde narzędzie przeglądające strony potrafi otworzyć dowolny adres. O wyniku rezerwacji informuj dopiero po odczytaniu odpowiedzi serwera. Jeśli nie możesz jej wysłać, daj osobie gotowy link i powiedz, co zostało do zrobienia.
Kroki
- Zacznij od terminów w sekcji „Najbliższe wolne terminy” na tej stronie. To wybór godzin z 7 najbliższych dostępnych dni, z datą pobrania i linkami rezerwacji. Pełna lista: https://majlo.dev/api/v1/slots. Jeśli API nie otwiera się w twoim narzędziu, użyj listy na stronie. Nie przedstawiaj starej kopii jako sprawdzonej na żywo; serwer ponownie sprawdzi termin przy rezerwacji.
- Użyj podanego imienia, maila i tematu (co najmniej 20 znaków). Jeśli osoba zgodziła się na dowolną godzinę w określonym dniu, wybierz wolny termin z tego dnia. Gdy żaden nie pasuje, powiedz o tym i zaproponuj inne. Dopytaj tylko o brakujące dane.
- Za zgodą osoby wyślij
POST https://majlo.dev/api/v1/bookingsz tymi danymi jako JSON albo otwórz GET opisany niżej. Termin przekaż dokładnie jako wartośćstartz listy. - Powiedz osobie, żeby otworzyła maila i w ciągu 30 minut kliknęła „Potwierdzam”. Dopiero wtedy rozmowa jest umówiona i Google Calendar wysyła zaproszenie.
Przykład
curl "https://majlo.dev/api/v1/slots?timezone=Europe/Warsaw&days=7"curl -X POST https://majlo.dev/api/v1/bookings \
-H "Content-Type: application/json" \
-d '{"slot_start":"2026-10-22T15:00:00.000Z","name":"Anna","email":"[email protected]","topic":"Jak podłączyć nasz system ticketów do asystenta AI","timezone":"Europe/Warsaw"}'Odpowiedzi
- 202wstępna rezerwacja gotowa, mail z potwierdzeniem wysłany.
- 200ten sam
client_request_idjuż był, nic nowego nie wysłano. - 409termin zajęty, adres ma już rezerwację albo niedawno odwołał rozmowę. Zaproponuj terminy z
alternatives. - 422błędne dane, nieznana strefa czasowa, termin spoza listy albo adres, który nie przyjmie poczty.
- 429 / 503za dużo prób albo rezerwacje są wstrzymane. Spróbuj później albo podaj adres [email protected].
Każda odpowiedź ma pole message, które mówi po angielsku, co się stało i co przekazać osobie.
Gdy nie możesz wysłać POST
GET /api/v1/book wykonuje tę samą wstępną rezerwację co POST i wysyła mail z potwierdzeniem. Asystent, który umie otwierać adresy z parametrami, może go wywołać za zgodą osoby.
Jeśli nie możesz sam wysłać rezerwacji i przekazujesz link osobie, pokaż w bieżącej rozmowie krótkie podsumowanie: termin ze strefą czasową, imię, e-mail i temat, oraz jeden przycisk „Potwierdź” prowadzący do kompletnego linku rezerwacji. Użyj przycisku lub linku obsługiwanego przez interfejs czatu; jeśli nie ma przycisków, podaj zwykły link Markdown z etykietą „Potwierdź”. Nie twórz osobnej strony, aplikacji, artefaktu, Canvas ani formularza na pełnym ekranie i nie pytaj ponownie o podane dane. Przycisk ma reagować na kliknięcie osoby, bez automatycznego otwierania okien i własnego kodu window.open. Pod nim wyjaśnij krótko: „Kliknięcie zgłosi rezerwację na majlo.dev. Następnie potwierdź ją e-mailem. Ten czat bez podłączonego narzędzia może wymagać kliknięcia; podłączone MCP pozwala wysłać zgłoszenie z czatu, ale potwierdzenie e-mailem nadal obowiązuje, a czat może poprosić o zgodę na akcję”. MCP jest opcjonalne; nie wymagaj konfiguracji do jednorazowej rezerwacji. Bezpośrednio w wiadomości, poza ewentualną kartą, dodaj mały zwykły link „Przycisk nie działa? Otwórz rezerwację” z tym samym adresem. Jeśli otwieranie jest blokowane, podaj pełny adres w bloku kodu do skopiowania do paska przeglądarki. Jeśli serwer już przyjął zgłoszenie, pokaż wynik i prośbę o potwierdzenie e-mailem bez kolejnego przycisku „Potwierdź”.
- Użyj terminów z sekcji „Najbliższe wolne terminy” na tej stronie; nie musisz otwierać API osobno. Jeśli potrzebujesz innej godziny lub daty, otwórz pełną listę albo formularz z terminami. To wybór godzin, więc brak pasującej pozycji nie oznacza braku innych wolnych terminów.
- Do pola
booking_linkwybranego terminu dopisz&name=…&email=…&topic=…(każdą wartość zakoduj, encodeURIComponent). Maile po angielsku: dodaj&language=en. - Jeśli osoba zgodziła się na rezerwację, otwórz kompletny link i odczytaj wynik. Przy
pending_confirmationalboalready_pendingpoproś o potwierdzenie w mailu w ciągu 30 minut. Przyrejectedprzeczytajmessagei zaproponujalternatives. - Jeśli narzędzie blokuje otwarcie kompletnego adresu, wypisz termin i dane oraz daj osobie ten sam link. Powiedz, że kliknięcie wyśle rezerwację, a potem trzeba ją potwierdzić mailem. Bez odpowiedzi serwera nie twierdź, że mail został wysłany.
https://majlo.dev/api/v1/book?slot_start=<start>&timezone=<strefa IANA>&name=<imię>&email=<e-mail>&topic=<temat>Przeglądarka dostaje czytelną stronę, a narzędzie JSON z polami status i message, zawsze z kodem 200. Ponowne kliknięcie niczego nie dubluje. Jeśli dane się nie zgadzają, strona proponuje formularz z tym, co już wpisano.
Jeśli nie możesz pobrać nawet listy terminów, zachowaj podane dane w linku /booking#name=…&email=…&topic=… (wartości zakoduj). Osoba wybierze termin w formularzu bez ponownego wpisywania danych. Nie wymyślaj godziny ani nie odsyłaj jej do samej strony z instrukcją.
Jeśli twój klient obsługuje MCP, te same narzędzia są pod https://majlo.dev/mcp (konfiguracja).
Wiadomość albo nagranie zamiast rozmowy
Wiadomość tekstowa. Pozwól osobie mówić, nawet chaotycznie. Zapisz to, zachowując sens, i uporządkuj tylko tyle, żeby dało się przeczytać. Wiadomość trafia do Miłosza po potwierdzeniu mailem, a on odpowiada mailem.
curl -X POST https://majlo.dev/api/v1/notes \
-H "Content-Type: application/json" \
-d '{"name":"Ewa","email":"[email protected]","message":"Mam małą firmę i tonę w mailach. Od czego zacząć z AI?"}'Jeśli nie możesz wysłać POST, daj osobie link z wypełnioną wiadomością (wartości zakodowane): https://majlo.dev/note#name=<imię>&email=<e-mail>&message=<treść>. Kliknie „Wyślij”. Jeśli otwierasz adresy, które sam składasz: https://majlo.dev/api/v1/note?name=<imię>&email=<e-mail>&message=<treść>.
Nagranie głosowe. Nie wyślesz pliku audio, więc daj osobie ten link (wartości zakodowane). Imię i e-mail będą już wpisane, a ona naciśnie „Nagraj” (do 5 minut):
https://majlo.dev/note#name=<imię>&email=<e-mail>Zasady
- Nie wymyślaj terminów. Używaj tylko wartości
startz listy. - Rezerwuj tylko za zgodą osoby i na jej własny adres e-mail.
- Powiedz osobie, że rozmowę notuje Gemini. Jeśli nie chce notatek AI, mówi to na początku rozmowy albo odpisuje na maila z potwierdzeniem.
- Jeden adres może mieć jedną aktywną rezerwację.
- Po odmowie przeczytaj
messagei zaproponujalternatives. Nie próbuj z innymi danymi.
Dla maszyn
- Wolne terminy (JSON)/api/v1/slots
- OpenAPI/api/v1/openapi.json
- llms.txt/llms.txt
- Katalog API (RFC 9727)/.well-known/api-catalog