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ź”.

Pełna lista terminów · Formularz rezerwacji

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/book z 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_slots i fill_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

  1. 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.
  2. 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.
  3. Za zgodą osoby wyślij POST https://majlo.dev/api/v1/bookings z tymi danymi jako JSON albo otwórz GET opisany niżej. Termin przekaż dokładnie jako wartość start z listy.
  4. 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_id już 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ź”.

  1. 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.
  2. Do pola booking_link wybranego terminu dopisz &name=…&email=…&topic=… (każdą wartość zakoduj, encodeURIComponent). Maile po angielsku: dodaj &language=en.
  3. Jeśli osoba zgodziła się na rezerwację, otwórz kompletny link i odczytaj wynik. Przy pending_confirmation albo already_pending poproś o potwierdzenie w mailu w ciągu 30 minut. Przy rejected przeczytaj message i zaproponuj alternatives.
  4. 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 start z 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 message i zaproponuj alternatives. Nie próbuj z innymi danymi.

Dla maszyn