[{"data":1,"prerenderedAt":1365},["ShallowReactive",2],{"developers-cs":3,"developers-en":762},{"id":4,"title":5,"body":6,"description":755,"extension":756,"meta":757,"navigation":121,"path":758,"seo":759,"stem":760,"__hash__":761},"content\u002Fpages\u002Fdevelopers-cs.md","Zaptime pro vývojáře",{"type":7,"value":8,"toc":741},"minimark",[9,13,25,30,60,172,181,185,192,196,211,215,226,315,503,513,517,524,532,541,545,574,578,635,639,647,651,659,663,673,677,721,725,737],[10,11,5],"h1",{"id":12},"zaptime-pro-vývojáře",[14,15,16,17,24],"p",{},"Zaptime je český online rezervační kalendář. Tento vývojářský portál shrnuje vše, co potřebujete pro napojení: veřejné rezervační API, vložitelný kalendář, webhooky, MCP server pro AI asistenty a strojově čitelné soubory pro agenty. Podrobné návody jsou na ",[18,19,23],"a",{"href":20,"rel":21},"https:\u002F\u002Fdocs.zaptime.app\u002F",[22],"nofollow","docs.zaptime.app"," (anglicky).",[26,27,29],"h2",{"id":28},"rychlý-start-zaptime-api-ve-třech-krocích","Rychlý start: Zaptime API ve třech krocích",[31,32,33,43,57],"ol",{},[34,35,36,37,42],"li",{},"Zaregistrujte se na ",[18,38,41],{"href":39,"rel":40},"https:\u002F\u002Fmy.zaptime.app\u002Fregister",[22],"my.zaptime.app\u002Fregister"," (plán Personal je zdarma) a vytvořte typ události.",[34,44,45,46,51,52,56],{},"Na ",[18,47,50],{"href":48,"rel":49},"https:\u002F\u002Fmy.zaptime.app\u002Fcalendars",[22],"my.zaptime.app\u002Fcalendars"," u typu události zkopírujte ",[53,54,55],"strong",{},"API token",". Token je zároveň API klíč, každý typ události má vlastní.",[34,58,59],{},"Načtěte volné termíny a vytvořte rezervaci:",[61,62,67],"pre",{"className":63,"code":64,"language":65,"meta":66,"style":66},"language-bash shiki shiki-themes github-light github-light","# Volné termíny\ncurl \"https:\u002F\u002Fapi.zaptime.app\u002Ftime-slots?from=2026-09-01&until=2026-09-07\" \\\n  -H \"Authorization: Bearer $ZAPTIME_TOKEN\" -H \"Accept: application\u002Fjson\"\n\n# Rezervace jednoho z nich\ncurl -X POST https:\u002F\u002Fapi.zaptime.app\u002Freservations \\\n  -H \"Authorization: Bearer $ZAPTIME_TOKEN\" -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"start\":\"2026-09-01T09:00:00Z\",\"end\":\"2026-09-01T09:30:00Z\",\"email\":\"jana@example.com\",\"firstname\":\"Jana\",\"lastname\":\"Nováková\",\"timezone\":\"Europe\u002FPrague\"}'\n","bash","",[68,69,70,79,94,116,123,129,145,163],"code",{"__ignoreMap":66},[71,72,75],"span",{"class":73,"line":74},"line",1,[71,76,78],{"class":77},"sJ8bj","# Volné termíny\n",[71,80,82,86,90],{"class":73,"line":81},2,[71,83,85],{"class":84},"se37E","curl",[71,87,89],{"class":88},"sOTlB"," \"https:\u002F\u002Fapi.zaptime.app\u002Ftime-slots?from=2026-09-01&until=2026-09-07\"",[71,91,93],{"class":92},"sMN4m"," \\\n",[71,95,97,100,103,107,110,113],{"class":73,"line":96},3,[71,98,99],{"class":92},"  -H",[71,101,102],{"class":88}," \"Authorization: Bearer ",[71,104,106],{"class":105},"sKWpL","$ZAPTIME_TOKEN",[71,108,109],{"class":88},"\"",[71,111,112],{"class":92}," -H",[71,114,115],{"class":88}," \"Accept: application\u002Fjson\"\n",[71,117,119],{"class":73,"line":118},4,[71,120,122],{"emptyLinePlaceholder":121},true,"\n",[71,124,126],{"class":73,"line":125},5,[71,127,128],{"class":77},"# Rezervace jednoho z nich\n",[71,130,132,134,137,140,143],{"class":73,"line":131},6,[71,133,85],{"class":84},[71,135,136],{"class":92}," -X",[71,138,139],{"class":88}," POST",[71,141,142],{"class":88}," https:\u002F\u002Fapi.zaptime.app\u002Freservations",[71,144,93],{"class":92},[71,146,148,150,152,154,156,158,161],{"class":73,"line":147},7,[71,149,99],{"class":92},[71,151,102],{"class":88},[71,153,106],{"class":105},[71,155,109],{"class":88},[71,157,112],{"class":92},[71,159,160],{"class":88}," \"Content-Type: application\u002Fjson\"",[71,162,93],{"class":92},[71,164,166,169],{"class":73,"line":165},8,[71,167,168],{"class":92},"  -d",[71,170,171],{"class":88}," '{\"start\":\"2026-09-01T09:00:00Z\",\"end\":\"2026-09-01T09:30:00Z\",\"email\":\"jana@example.com\",\"firstname\":\"Jana\",\"lastname\":\"Nováková\",\"timezone\":\"Europe\u002FPrague\"}'\n",[14,173,174,175,180],{},"Kompletní popis požadavků a odpovědí je v ",[18,176,179],{"href":177,"rel":178},"https:\u002F\u002Fzaptime.cz\u002Fopenapi.json",[22],"OpenAPI 3.1 specifikaci"," (11 operací: termíny, rezervace, předrezervace a potvrzení, platby, konfigurace typu události, časové zóny).",[26,182,184],{"id":183},"sandbox-a-testování","Sandbox a testování",[14,186,187,188,191],{},"Samostatný testovací server neexistuje. Vytvořte si v účtu zvláštní testovací typ události (např. „API test“) a používejte jeho token; rezervace jdou jen do tohoto kalendáře a lze je přes API zrušit. Vypnutý typ události vrací ",[68,189,190],{},"403 event_type_disabled",", což je rychlý způsob, jak testovací integraci zastavit.",[26,193,195],{"id":194},"autentizace","Autentizace",[14,197,198,199,202,203,206,207,210],{},"Token typu události posílejte jako bearer token: ",[68,200,201],{},"Authorization: Bearer \u003Ctoken>",". Token platí pro jeden typ události a lze ho v aplikaci kdykoli vygenerovat znovu. ",[68,204,205],{},"GET \u002Ftimezones"," token nepotřebuje. Chybějící nebo neplatný token vrací ",[68,208,209],{},"401 unauthenticated",".",[26,212,214],{"id":213},"chyby","Chyby",[14,216,217,218,221,222,225],{},"Každá chyba je JSON, nikdy HTML stránka, a to i bez hlavičky ",[68,219,220],{},"Accept",". Tělo odpovídá schématu ",[68,223,224],{},"Error"," z OpenAPI specifikace:",[61,227,231],{"className":228,"code":229,"language":230,"meta":66,"style":66},"language-json shiki shiki-themes github-light github-light","{\n  \"success\": false,\n  \"status\": 404,\n  \"code\": \"not_found\",\n  \"message\": \"Not found.\",\n  \"hint\": \"Check the path and resource identifier. Endpoints are listed in the OpenAPI spec.\",\n  \"docs\": \"https:\u002F\u002Fzaptime.cz\u002Fdevelopers\u002F#errors\"\n}\n","json",[68,232,233,238,252,264,276,288,300,310],{"__ignoreMap":66},[71,234,235],{"class":73,"line":74},[71,236,237],{"class":105},"{\n",[71,239,240,243,246,249],{"class":73,"line":81},[71,241,242],{"class":92},"  \"success\"",[71,244,245],{"class":105},": ",[71,247,248],{"class":92},"false",[71,250,251],{"class":105},",\n",[71,253,254,257,259,262],{"class":73,"line":96},[71,255,256],{"class":92},"  \"status\"",[71,258,245],{"class":105},[71,260,261],{"class":92},"404",[71,263,251],{"class":105},[71,265,266,269,271,274],{"class":73,"line":118},[71,267,268],{"class":92},"  \"code\"",[71,270,245],{"class":105},[71,272,273],{"class":88},"\"not_found\"",[71,275,251],{"class":105},[71,277,278,281,283,286],{"class":73,"line":125},[71,279,280],{"class":92},"  \"message\"",[71,282,245],{"class":105},[71,284,285],{"class":88},"\"Not found.\"",[71,287,251],{"class":105},[71,289,290,293,295,298],{"class":73,"line":131},[71,291,292],{"class":92},"  \"hint\"",[71,294,245],{"class":105},[71,296,297],{"class":88},"\"Check the path and resource identifier. Endpoints are listed in the OpenAPI spec.\"",[71,299,251],{"class":105},[71,301,302,305,307],{"class":73,"line":147},[71,303,304],{"class":92},"  \"docs\"",[71,306,245],{"class":105},[71,308,309],{"class":88},"\"https:\u002F\u002Fzaptime.cz\u002Fdevelopers\u002F#errors\"\n",[71,311,312],{"class":73,"line":165},[71,313,314],{"class":105},"}\n",[316,317,318,335],"table",{},[319,320,321],"thead",{},[322,323,324,328,332],"tr",{},[325,326,327],"th",{},"HTTP",[325,329,330],{},[68,331,68],{},[325,333,334],{},"Kdy",[336,337,338,359,372,388,400,413,430,447,466,478,490],"tbody",{},[322,339,340,344,353],{},[341,342,343],"td",{},"400",[341,345,346,349,350],{},[68,347,348],{},"bad_request",", ",[68,351,352],{},"unsupported_api_version",[341,354,355,356],{},"Chybný požadavek nebo neznámá ",[68,357,358],{},"Zaptime-Api-Version",[322,360,361,364,369],{},[341,362,363],{},"401",[341,365,366],{},[68,367,368],{},"unauthenticated",[341,370,371],{},"Chybí nebo je neplatný bearer token",[322,373,374,377,385],{},[341,375,376],{},"403",[341,378,379,349,382],{},[68,380,381],{},"forbidden",[68,383,384],{},"event_type_disabled",[341,386,387],{},"Token je platný, ale typ události je vypnutý",[322,389,390,392,397],{},[341,391,261],{},[341,393,394],{},[68,395,396],{},"not_found",[341,398,399],{},"Neznámá cesta nebo UUID rezervace",[322,401,402,405,410],{},[341,403,404],{},"405",[341,406,407],{},[68,408,409],{},"method_not_allowed",[341,411,412],{},"Špatná HTTP metoda",[322,414,415,418,423],{},[341,416,417],{},"422",[341,419,420],{},[68,421,422],{},"validation_failed",[341,424,425,426,429],{},"Neplatný vstup; ",[68,427,428],{},"errors"," obsahuje zprávy pro jednotlivá pole",[322,431,432,435,440],{},[341,433,434],{},"429",[341,436,437],{},[68,438,439],{},"rate_limited",[341,441,442,443,446],{},"Překročen limit; počkejte ",[68,444,445],{},"Retry-After"," sekund",[322,448,449,455,463],{},[341,450,451,452],{},"200 se ",[68,453,454],{},"success: false",[341,456,457,349,460],{},[68,458,459],{},"slot_locked",[68,461,462],{},"reservation_finished",[341,464,465],{},"Termín právě rezervuje někdo jiný, nebo rezervaci už nelze obnovit",[322,467,468,470,475],{},[341,469,343],{},[341,471,472],{},[68,473,474],{},"stripe_not_configured",[341,476,477],{},"Platba u typu události bez napojeného Stripe",[322,479,480,482,487],{},[341,481,417],{},[341,483,484],{},[68,485,486],{},"payment_required",[341,488,489],{},"Potvrzení před úspěšnou platbou",[322,491,492,495,500],{},[341,493,494],{},"500",[341,496,497],{},[68,498,499],{},"internal_error",[341,501,502],{},"Neočekávaná chyba; zkuste znovu, pak napište podpoře",[14,504,505,506,508,509,512],{},"Větvěte podle ",[68,507,68],{},", ne podle ",[68,510,511],{},"message",": kódy jsou stabilní, texty se mohou změnit.",[26,514,516],{"id":515},"limity-požadavků","Limity požadavků",[14,518,519,520,523],{},"60 požadavků za minutu na token (bez tokenu na IP adresu). Každá odpověď nese hlavičky IETF RateLimit a starší dvojici ",[68,521,522],{},"X-RateLimit-*",":",[61,525,530],{"className":526,"code":528,"language":529},[527],"language-text","RateLimit-Policy: 60;w=60\nRateLimit: limit=60, remaining=59, reset=60\nX-RateLimit-Limit: 60\nX-RateLimit-Remaining: 59\n","text",[68,531,528],{"__ignoreMap":66},[14,533,534,535,537,538,540],{},"Odpověď ",[68,536,434],{}," přidává ",[68,539,445],{}," (v sekundách). Tolik počkejte a zkuste to znovu.",[26,542,544],{"id":543},"verzování-a-ukončování-funkcí","Verzování a ukončování funkcí",[14,546,547,548,551,552,555,556,559,560,565,566,569,570,573],{},"API má verzi ",[53,549,550],{},"1",". Cesty verzované nejsou; každá odpověď nese ",[68,553,554],{},"Zaptime-Api-Version: 1"," a stejnou hlavičkou můžete verzi v požadavku připnout (neznámá hodnota vrací ",[68,557,558],{},"400 unsupported_api_version","). V rámci verze jsou změny pouze aditivní: nové endpointy, volitelné parametry a pole v odpovědích. Nekompatibilní změny vycházejí jako nová verze. Cokoli se ruší, oznámíme na této stránce a v ",[18,561,564],{"href":562,"rel":563},"https:\u002F\u002Fzaptime.cz\u002Fnovinky\u002F",[22],"novinkách"," nejméně 6 měsíců předem a dotčené odpovědi po tu dobu nesou hlavičky ",[68,567,568],{},"Deprecation"," a ",[68,571,572],{},"Sunset"," (RFC 9745 a RFC 8594).",[26,575,577],{"id":576},"vložitelný-kalendář-a-sdk","Vložitelný kalendář a SDK",[579,580,581,589,606,617],"ul",{},[34,582,583,584],{},"Skript nebo iframe: ",[18,585,588],{"href":586,"rel":587},"https:\u002F\u002Fdocs.zaptime.app\u002Fguide\u002Fgetting-started.html",[22],"Getting started",[34,590,591,592,599,600,605],{},"Vue 3: balíček ",[18,593,596],{"href":594,"rel":595},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@zaptime\u002Fvue3",[22],[68,597,598],{},"@zaptime\u002Fvue3"," na npm, ",[18,601,604],{"href":602,"rel":603},"https:\u002F\u002Fdocs.zaptime.app\u002Fguide\u002Fvue-installation.html",[22],"návod na instalaci"," a headless composables",[34,607,608,609,616],{},"Logika bez frameworku: ",[18,610,613],{"href":611,"rel":612},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@zaptime\u002Fcore",[22],[68,614,615],{},"@zaptime\u002Fcore"," na npm",[34,618,619,620,349,625,349,630],{},"Reference konfigurace: ",[18,621,624],{"href":622,"rel":623},"https:\u002F\u002Fdocs.zaptime.app\u002Freference\u002Fzaptime-config.html",[22],"ZaptimeConfig",[18,626,629],{"href":627,"rel":628},"https:\u002F\u002Fdocs.zaptime.app\u002Freference\u002Fzaptime-locale.html",[22],"locale",[18,631,634],{"href":632,"rel":633},"https:\u002F\u002Fdocs.zaptime.app\u002Freference\u002Fzaptime-theme.html",[22],"theme",[26,636,638],{"id":637},"webhooky","Webhooky",[14,640,641,642,210],{},"Zaptime zavolá vaši URL při vytvoření, přesunutí nebo zrušení rezervace. URL se nastavuje u typu události v aplikaci; formát dat a opakování jsou v ",[18,643,646],{"href":644,"rel":645},"https:\u002F\u002Fdocs.zaptime.app\u002Fguide\u002Fwebhooks.html",[22],"návodu k webhookům",[26,648,650],{"id":649},"mcp-server-pro-ai-asistenty","MCP server pro AI asistenty",[14,652,653,654,210],{},"Zaptime má MCP (Model Context Protocol) server, díky kterému ChatGPT, Claude a další asistenti umí vypsat typy událostí, najít rezervační odkaz, hledat, přesouvat a rušit rezervace a spravovat dostupnost. Nastavení a seznam nástrojů najdete na stránce ",[18,655,658],{"href":656,"rel":657},"https:\u002F\u002Fzaptime.cz\u002Ffunkce\u002Fmcp\u002F",[22],"Zaptime MCP",[26,660,662],{"id":661},"příkazová-řádka","Příkazová řádka",[14,664,665,666,668,669,210],{},"Oficiální Zaptime CLI zatím neexistuje. API je obyčejné HTTPS a JSON, takže pro skriptování stačí ",[68,667,85],{}," a OpenAPI specifikace (nebo klient vygenerovaný z ní pomocí openapi-generator). Chybí vám? Napište na ",[18,670,672],{"href":671},"mailto:support@zaptime.app","support@zaptime.app",[26,674,676],{"id":675},"strojově-čitelné-zdroje","Strojově čitelné zdroje",[579,678,679,685,697,707,714],{},[34,680,681],{},[18,682,684],{"href":177,"rel":683},[22],"OpenAPI specifikace",[34,686,687,569,692],{},[18,688,691],{"href":689,"rel":690},"https:\u002F\u002Fzaptime.cz\u002Fllms.txt",[22],"llms.txt",[18,693,696],{"href":694,"rel":695},"https:\u002F\u002Fzaptime.cz\u002Fllms-full.txt",[22],"llms-full.txt",[34,698,699,700,703,704],{},"Každá stránka existuje i jako markdown: přidejte ",[68,701,702],{},".md"," k cestě nebo pošlete ",[68,705,706],{},"Accept: text\u002Fmarkdown",[34,708,709],{},[18,710,713],{"href":711,"rel":712},"https:\u002F\u002Fzaptime.cz\u002Fsitemap.xml",[22],"Sitemap",[34,715,716],{},[18,717,720],{"href":718,"rel":719},"https:\u002F\u002Fstatus.zaptime.app\u002F",[22],"Stav API",[26,722,724],{"id":723},"podpora","Podpora",[14,726,727,728,730,731,733,734,210],{},"Pište na ",[18,729,672],{"href":671},". Uveďte cestu požadavku, ",[68,732,68],{}," z těla chyby a pokud ho máte, hlavičku odpovědi ",[68,735,736],{},"apigw-requestid",[738,739,740],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .se37E, html code.shiki .se37E{--shiki-default:#6F42C1;--shiki-dark:#6F42C1}html pre.shiki code .sOTlB, html code.shiki .sOTlB{--shiki-default:#032F62;--shiki-dark:#032F62}html pre.shiki code .sMN4m, html code.shiki .sMN4m{--shiki-default:#005CC5;--shiki-dark:#005CC5}html pre.shiki code .sKWpL, html code.shiki .sKWpL{--shiki-default:#24292E;--shiki-dark:#24292E}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":66,"searchDepth":81,"depth":81,"links":742},[743,744,745,746,747,748,749,750,751,752,753,754],{"id":28,"depth":81,"text":29},{"id":183,"depth":81,"text":184},{"id":194,"depth":81,"text":195},{"id":213,"depth":81,"text":214},{"id":515,"depth":81,"text":516},{"id":543,"depth":81,"text":544},{"id":576,"depth":81,"text":577},{"id":637,"depth":81,"text":638},{"id":649,"depth":81,"text":650},{"id":661,"depth":81,"text":662},{"id":675,"depth":81,"text":676},{"id":723,"depth":81,"text":724},"Zaptime je český online rezervační kalendář. Tento vývojářský portál shrnuje vše, co potřebujete pro napojení: veřejné rezervační API, vložitelný kalendář, webhooky, MCP server pro AI asistenty a strojově čitelné soubory pro agenty. Podrobné návody jsou na docs.zaptime.app (anglicky).","md",{},"\u002Fpages\u002Fdevelopers-cs",{"title":5,"description":755},"pages\u002Fdevelopers-cs","JRGMSZEj_9m8KiGXIdgKKWwTylv2vbNfkwzcN78aMiQ",{"id":763,"title":764,"body":765,"description":1359,"extension":756,"meta":1360,"navigation":121,"path":1361,"seo":1362,"stem":1363,"__hash__":1364},"content\u002Fpages\u002Fdevelopers-en.md","Zaptime for developers",{"type":7,"value":766,"toc":1345},[767,770,776,780,802,878,886,890,896,900,911,914,923,993,1148,1157,1161,1167,1172,1181,1185,1208,1212,1255,1259,1266,1270,1276,1280,1288,1292,1327,1331,1343],[10,768,764],{"id":769},"zaptime-for-developers",[14,771,772,773,210],{},"Zaptime is an online booking calendar from the Czech Republic. This developer portal collects everything you need to build on it: the public booking API, the embeddable calendar, webhooks, the MCP server for AI assistants and the machine-readable files agents can read. Human-readable guides live at ",[18,774,23],{"href":20,"rel":775},[22],[26,777,779],{"id":778},"quickstart-zaptime-api-in-three-requests","Quickstart: Zaptime API in three requests",[31,781,782,789,799],{},[34,783,784,785,788],{},"Sign up at ",[18,786,41],{"href":39,"rel":787},[22]," (the Personal plan is free) and create an event type.",[34,790,791,792,795,796,798],{},"Open ",[18,793,50],{"href":48,"rel":794},[22],", pick the event type and copy its ",[53,797,55],{},". The token is the API key: every event type has its own.",[34,800,801],{},"Read available time slots and create a reservation:",[61,803,805],{"className":63,"code":804,"language":65,"meta":66,"style":66},"# Available slots\ncurl \"https:\u002F\u002Fapi.zaptime.app\u002Ftime-slots?from=2026-09-01&until=2026-09-07\" \\\n  -H \"Authorization: Bearer $ZAPTIME_TOKEN\" -H \"Accept: application\u002Fjson\"\n\n# Book one of them\ncurl -X POST https:\u002F\u002Fapi.zaptime.app\u002Freservations \\\n  -H \"Authorization: Bearer $ZAPTIME_TOKEN\" -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"start\":\"2026-09-01T09:00:00Z\",\"end\":\"2026-09-01T09:30:00Z\",\"email\":\"jane@example.com\",\"firstname\":\"Jane\",\"lastname\":\"Doe\",\"timezone\":\"Europe\u002FPrague\"}'\n",[68,806,807,812,820,834,838,843,855,871],{"__ignoreMap":66},[71,808,809],{"class":73,"line":74},[71,810,811],{"class":77},"# Available slots\n",[71,813,814,816,818],{"class":73,"line":81},[71,815,85],{"class":84},[71,817,89],{"class":88},[71,819,93],{"class":92},[71,821,822,824,826,828,830,832],{"class":73,"line":96},[71,823,99],{"class":92},[71,825,102],{"class":88},[71,827,106],{"class":105},[71,829,109],{"class":88},[71,831,112],{"class":92},[71,833,115],{"class":88},[71,835,836],{"class":73,"line":118},[71,837,122],{"emptyLinePlaceholder":121},[71,839,840],{"class":73,"line":125},[71,841,842],{"class":77},"# Book one of them\n",[71,844,845,847,849,851,853],{"class":73,"line":131},[71,846,85],{"class":84},[71,848,136],{"class":92},[71,850,139],{"class":88},[71,852,142],{"class":88},[71,854,93],{"class":92},[71,856,857,859,861,863,865,867,869],{"class":73,"line":147},[71,858,99],{"class":92},[71,860,102],{"class":88},[71,862,106],{"class":105},[71,864,109],{"class":88},[71,866,112],{"class":92},[71,868,160],{"class":88},[71,870,93],{"class":92},[71,872,873,875],{"class":73,"line":165},[71,874,168],{"class":92},[71,876,877],{"class":88}," '{\"start\":\"2026-09-01T09:00:00Z\",\"end\":\"2026-09-01T09:30:00Z\",\"email\":\"jane@example.com\",\"firstname\":\"Jane\",\"lastname\":\"Doe\",\"timezone\":\"Europe\u002FPrague\"}'\n",[14,879,880,881,885],{},"The full request and response shapes are in the ",[18,882,884],{"href":177,"rel":883},[22],"OpenAPI 3.1 specification"," (11 operations: time slots, reservations, prepare and confirm flow, payments, event type configuration, timezones).",[26,887,889],{"id":888},"sandbox-and-testing","Sandbox and testing",[14,891,892,893,895],{},"There is no separate sandbox host. Create a dedicated test event type in your account (for example \"API test\") and use its token; reservations made against it are real bookings in that calendar only and can be cancelled through the API. Disabled event types return ",[68,894,190],{},", which is a quick way to turn a test integration off.",[26,897,899],{"id":898},"authentication","Authentication",[14,901,902,903,905,906,908,909,210],{},"Send the event type token as a bearer token: ",[68,904,201],{},". Tokens are scoped to one event type and can be regenerated in the app at any time. ",[68,907,205],{}," needs no token. Missing or invalid tokens return ",[68,910,209],{},[26,912,913],{"id":428},"Errors",[14,915,916,917,919,920,922],{},"Every error is JSON, never an HTML page, even without an ",[68,918,220],{}," header. The body is the ",[68,921,224],{}," schema from the OpenAPI spec:",[61,924,925],{"className":228,"code":229,"language":230,"meta":66,"style":66},[68,926,927,931,941,951,961,971,981,989],{"__ignoreMap":66},[71,928,929],{"class":73,"line":74},[71,930,237],{"class":105},[71,932,933,935,937,939],{"class":73,"line":81},[71,934,242],{"class":92},[71,936,245],{"class":105},[71,938,248],{"class":92},[71,940,251],{"class":105},[71,942,943,945,947,949],{"class":73,"line":96},[71,944,256],{"class":92},[71,946,245],{"class":105},[71,948,261],{"class":92},[71,950,251],{"class":105},[71,952,953,955,957,959],{"class":73,"line":118},[71,954,268],{"class":92},[71,956,245],{"class":105},[71,958,273],{"class":88},[71,960,251],{"class":105},[71,962,963,965,967,969],{"class":73,"line":125},[71,964,280],{"class":92},[71,966,245],{"class":105},[71,968,285],{"class":88},[71,970,251],{"class":105},[71,972,973,975,977,979],{"class":73,"line":131},[71,974,292],{"class":92},[71,976,245],{"class":105},[71,978,297],{"class":88},[71,980,251],{"class":105},[71,982,983,985,987],{"class":73,"line":147},[71,984,304],{"class":92},[71,986,245],{"class":105},[71,988,309],{"class":88},[71,990,991],{"class":73,"line":165},[71,992,314],{"class":105},[316,994,995,1008],{},[319,996,997],{},[322,998,999,1001,1005],{},[325,1000,327],{},[325,1002,1003],{},[68,1004,68],{},[325,1006,1007],{},"When",[336,1009,1010,1025,1036,1049,1060,1071,1085,1099,1115,1126,1137],{},[322,1011,1012,1014,1020],{},[341,1013,343],{},[341,1015,1016,349,1018],{},[68,1017,348],{},[68,1019,352],{},[341,1021,1022,1023],{},"Malformed request or unknown ",[68,1024,358],{},[322,1026,1027,1029,1033],{},[341,1028,363],{},[341,1030,1031],{},[68,1032,368],{},[341,1034,1035],{},"Missing or invalid bearer token",[322,1037,1038,1040,1046],{},[341,1039,376],{},[341,1041,1042,349,1044],{},[68,1043,381],{},[68,1045,384],{},[341,1047,1048],{},"Token is valid but the event type is disabled",[322,1050,1051,1053,1057],{},[341,1052,261],{},[341,1054,1055],{},[68,1056,396],{},[341,1058,1059],{},"Unknown path or reservation UUID",[322,1061,1062,1064,1068],{},[341,1063,404],{},[341,1065,1066],{},[68,1067,409],{},[341,1069,1070],{},"Wrong HTTP method",[322,1072,1073,1075,1079],{},[341,1074,417],{},[341,1076,1077],{},[68,1078,422],{},[341,1080,1081,1082,1084],{},"Invalid input; ",[68,1083,428],{}," lists messages per field",[322,1086,1087,1089,1093],{},[341,1088,434],{},[341,1090,1091],{},[68,1092,439],{},[341,1094,1095,1096,1098],{},"Rate limit exceeded; wait ",[68,1097,445],{}," seconds",[322,1100,1101,1106,1112],{},[341,1102,1103,1104],{},"200 with ",[68,1105,454],{},[341,1107,1108,349,1110],{},[68,1109,459],{},[68,1111,462],{},[341,1113,1114],{},"Someone else is booking the slot, or the reservation can no longer be refreshed",[322,1116,1117,1119,1123],{},[341,1118,343],{},[341,1120,1121],{},[68,1122,474],{},[341,1124,1125],{},"Payment requested on an event type without Stripe",[322,1127,1128,1130,1134],{},[341,1129,417],{},[341,1131,1132],{},[68,1133,486],{},[341,1135,1136],{},"Confirmation attempted before a successful payment",[322,1138,1139,1141,1145],{},[341,1140,494],{},[341,1142,1143],{},[68,1144,499],{},[341,1146,1147],{},"Unexpected failure; retry, then contact support",[14,1149,1150,1151,1153,1154,1156],{},"Branch on ",[68,1152,68],{},", not on ",[68,1155,511],{},": codes are stable, messages may be reworded.",[26,1158,1160],{"id":1159},"rate-limits","Rate limits",[14,1162,1163,1164,1166],{},"60 requests per minute per token (per IP without a token). Every response carries the IETF rate-limit headers plus the legacy ",[68,1165,522],{}," pair:",[61,1168,1170],{"className":1169,"code":528,"language":529},[527],[68,1171,528],{"__ignoreMap":66},[14,1173,1174,1175,1177,1178,1180],{},"A ",[68,1176,434],{}," adds ",[68,1179,445],{}," (seconds). Back off for that long and retry.",[26,1182,1184],{"id":1183},"versioning-and-deprecation-policy","Versioning and deprecation policy",[14,1186,1187,1188,1190,1191,1193,1194,1196,1197,1201,1202,1204,1205,1207],{},"The API is version ",[53,1189,550],{},". Paths are not versioned; each response carries ",[68,1192,554],{},", and you may pin the version by sending the same request header (unknown values return ",[68,1195,558],{},"). Within a version changes are additive only: new endpoints, optional parameters and response fields. Breaking changes ship as a new version. Anything being retired is announced on this page and in the ",[18,1198,1200],{"href":562,"rel":1199},[22],"release notes"," at least 6 months ahead, and the affected responses carry ",[68,1203,568],{}," and ",[68,1206,572],{}," headers (RFC 9745 and RFC 8594) during that period.",[26,1209,1211],{"id":1210},"embeddable-calendar-and-sdks","Embeddable calendar and SDKs",[579,1213,1214,1220,1234,1243],{},[34,1215,1216,1217],{},"Script tag or iframe: ",[18,1218,588],{"href":586,"rel":1219},[22],[34,1221,1222,1223,1228,1229,1233],{},"Vue 3: ",[18,1224,1226],{"href":594,"rel":1225},[22],[68,1227,598],{}," on npm, ",[18,1230,1232],{"href":602,"rel":1231},[22],"installation guide"," and headless composables",[34,1235,1236,1237,1242],{},"Framework-agnostic logic: ",[18,1238,1240],{"href":611,"rel":1239},[22],[68,1241,615],{}," on npm",[34,1244,1245,1246,349,1249,349,1252],{},"Configuration reference: ",[18,1247,624],{"href":622,"rel":1248},[22],[18,1250,629],{"href":627,"rel":1251},[22],[18,1253,634],{"href":632,"rel":1254},[22],[26,1256,1258],{"id":1257},"webhooks","Webhooks",[14,1260,1261,1262,210],{},"Zaptime calls your URL when a reservation is created, rescheduled or cancelled. Configure the URL per event type in the app; payloads and retry rules are in the ",[18,1263,1265],{"href":644,"rel":1264},[22],"webhooks guide",[26,1267,1269],{"id":1268},"mcp-server-for-ai-assistants","MCP server for AI assistants",[14,1271,1272,1273,210],{},"Zaptime ships an MCP (Model Context Protocol) server so ChatGPT, Claude and other assistants can list event types, resolve booking links, search, reschedule and cancel reservations and manage availability. Setup instructions and the tool list are on ",[18,1274,658],{"href":656,"rel":1275},[22],[26,1277,1279],{"id":1278},"command-line","Command line",[14,1281,1282,1283,1285,1286,210],{},"There is no official Zaptime CLI yet. The API is plain HTTPS and JSON, so ",[68,1284,85],{}," plus the OpenAPI spec (or a client generated from it with openapi-generator) covers scripting needs. Want one? Tell us at ",[18,1287,672],{"href":671},[26,1289,1291],{"id":1290},"machine-readable-resources","Machine-readable resources",[579,1293,1294,1300,1308,1316,1321],{},[34,1295,1296],{},[18,1297,1299],{"href":177,"rel":1298},[22],"OpenAPI specification",[34,1301,1302,1204,1305],{},[18,1303,691],{"href":689,"rel":1304},[22],[18,1306,696],{"href":694,"rel":1307},[22],[34,1309,1310,1311,1313,1314],{},"Every page is also markdown: append ",[68,1312,702],{}," to the path or send ",[68,1315,706],{},[34,1317,1318],{},[18,1319,713],{"href":711,"rel":1320},[22],[34,1322,1323],{},[18,1324,1326],{"href":718,"rel":1325},[22],"API status",[26,1328,1330],{"id":1329},"support","Support",[14,1332,1333,1334,1336,1337,1339,1340,1342],{},"Email ",[18,1335,672],{"href":671},". Include the request path, the ",[68,1338,68],{}," from the error body and, if you have it, the ",[68,1341,736],{}," response header.",[738,1344,740],{},{"title":66,"searchDepth":81,"depth":81,"links":1346},[1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358],{"id":778,"depth":81,"text":779},{"id":888,"depth":81,"text":889},{"id":898,"depth":81,"text":899},{"id":428,"depth":81,"text":913},{"id":1159,"depth":81,"text":1160},{"id":1183,"depth":81,"text":1184},{"id":1210,"depth":81,"text":1211},{"id":1257,"depth":81,"text":1258},{"id":1268,"depth":81,"text":1269},{"id":1278,"depth":81,"text":1279},{"id":1290,"depth":81,"text":1291},{"id":1329,"depth":81,"text":1330},"Zaptime is an online booking calendar from the Czech Republic. This developer portal collects everything you need to build on it: the public booking API, the embeddable calendar, webhooks, the MCP server for AI assistants and the machine-readable files agents can read. Human-readable guides live at docs.zaptime.app.",{},"\u002Fpages\u002Fdevelopers-en",{"title":764,"description":1359},"pages\u002Fdevelopers-en","M1CCtxJcpNfSM48wjaCibCwm4X12rjyjI8A8NqkeV3U",1787562489164]