{"openapi":"3.1.0","info":{"title":"Meetly scheduling API","version":"1.0.0","description":"Use an expiring API key from Settings → API, MCP & Zapier. Create free individual bookings on owned event types. Invitations and emails can be sent. Paid/team creation requires the booking page. Cancellation does not refund payments. Static Bearer tokens, not OAuth."},"servers":[{"url":"https://api.appmeetly.com/api/automation/v1"}],"externalDocs":{"url":"https://www.appmeetly.com/docs/automation"},"security":[{"meetlyToken":[]}],"components":{"securitySchemes":{"meetlyToken":{"type":"http","scheme":"bearer","bearerFormat":"Meetly API key","description":"mtly_ token issued by the account owner. Store as a secret."}},"schemas":{"Booking":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"eventTypeId":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"type":"string","enum":["scheduled","instant"]},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","enum":["confirmed","pending","cancelled","rescheduled","completed","no_show"]},"inviteeName":{"type":"string"},"inviteeEmail":{"type":"string"},"inviteeTimezone":{"type":"string"},"startAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"endAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"locationType":{"type":"string"},"videoJoinUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["id","eventTypeId","kind","title","status","inviteeName","inviteeEmail","inviteeTimezone","startAt","endAt","locationType","videoJoinUrl","createdAt","updatedAt"],"additionalProperties":false}}},"paths":{"/me":{"get":{"operationId":"getConnection","summary":"Verify your token and granted permissions","description":"Only the connected account's resources are accessible.","parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":["string","null"]},"email":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}}}}}}},"400":{"description":"Invalid input, date window, or pagination cursor"},"401":{"description":"Missing, invalid, expired, or revoked token"},"403":{"description":"Token does not grant the required permission"},"404":{"description":"Resource does not exist or is not owned by the connected account"},"409":{"description":"Event paused, slot taken, booking not actionable, idempotency conflict, or request in progress"},"422":{"description":"Booking page required, required answers missing, or other booking requirement unmet"},"429":{"description":"Rate limit reached; honor Retry-After"},"500":{"description":"Server failure; a write may have completed. Inspect the result before using a new operation ID"}}}},"/event-types":{"get":{"operationId":"listEventTypes","summary":"List event types and intake questions; follow nextCursor","description":"Requires bookings:read. Only the connected account's resources are accessible.","x-required-scopes":["bookings:read"],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":500}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["data","nextCursor"],"properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"slug":{"type":"string"},"duration":{"type":"integer"},"schedulingType":{"type":"string"},"locationType":{"type":"string"},"locationOptions":{"type":"array","items":{"type":"string"}},"locationDetails":{"type":"object","additionalProperties":true},"isHidden":{"type":"boolean","description":"True means bookings are paused"},"price":{"type":["integer","null"],"description":"Price in minor units; must be zero or null for API creation"},"currency":{"type":"string"},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"},"required":{"type":"boolean"},"options":{"type":["array","null"],"items":{"type":"string"}}}}}}}},"nextCursor":{"type":["string","null"]}}}}}},"400":{"description":"Invalid input, date window, or pagination cursor"},"401":{"description":"Missing, invalid, expired, or revoked token"},"403":{"description":"Token does not grant the required permission"},"404":{"description":"Resource does not exist or is not owned by the connected account"},"409":{"description":"Event paused, slot taken, booking not actionable, idempotency conflict, or request in progress"},"422":{"description":"Booking page required, required answers missing, or other booking requirement unmet"},"429":{"description":"Rate limit reached; honor Retry-After"},"500":{"description":"Server failure; a write may have completed. Inspect the result before using a new operation ID"}}}},"/availability/{id}":{"get":{"operationId":"getAvailability","summary":"Find available times (maximum 31 days)","description":"Requires bookings:read. Only the connected account's resources are accessible.","x-required-scopes":["bookings:read"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date-time"},"description":"UTC ISO instant, ending in Z"},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date-time"},"description":"UTC ISO instant, ending in Z"},{"name":"tz","in":"query","required":true,"schema":{"type":"string"},"description":"IANA timezone, e.g. America/New_York"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"slots":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"}}}}}}}}},"400":{"description":"Invalid input, date window, or pagination cursor"},"401":{"description":"Missing, invalid, expired, or revoked token"},"403":{"description":"Token does not grant the required permission"},"404":{"description":"Resource does not exist or is not owned by the connected account"},"409":{"description":"Event paused, slot taken, booking not actionable, idempotency conflict, or request in progress"},"422":{"description":"Booking page required, required answers missing, or other booking requirement unmet"},"429":{"description":"Rate limit reached; honor Retry-After"},"500":{"description":"Server failure; a write may have completed. Inspect the result before using a new operation ID"}}}},"/bookings":{"get":{"operationId":"listBookings","summary":"List hosted bookings, newest-created first","description":"Requires bookings:read. Only the connected account's resources are accessible.","x-required-scopes":["bookings:read"],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":500}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["data","nextCursor"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Booking"}},"nextCursor":{"type":["string","null"]}}}}}},"400":{"description":"Invalid input, date window, or pagination cursor"},"401":{"description":"Missing, invalid, expired, or revoked token"},"403":{"description":"Token does not grant the required permission"},"404":{"description":"Resource does not exist or is not owned by the connected account"},"409":{"description":"Event paused, slot taken, booking not actionable, idempotency conflict, or request in progress"},"422":{"description":"Booking page required, required answers missing, or other booking requirement unmet"},"429":{"description":"Rate limit reached; honor Retry-After"},"500":{"description":"Server failure; a write may have completed. Inspect the result before using a new operation ID"}}},"post":{"operationId":"createBooking","summary":"Create a free individual booking; may send invitations and emails","description":"Requires bookings:create. Only the connected account's resources are accessible.","x-required-scopes":["bookings:create"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,128}$"},"description":"Unique operation ID. Retry with the same key and exact body. Never change the key to retry an uncertain write. Keys are scoped to a credential."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"eventTypeId":{"type":"string","minLength":1},"locationType":{"description":"Choose one of the event type locationOptions. Required when more than one option is offered.","type":"string","enum":["in_person","phone","zoom","meet","teams","facetime","whereby","around","custom"]},"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"inviteeName":{"type":"string","minLength":1,"maxLength":120},"inviteeEmail":{"type":"string","maxLength":254,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"inviteeTimezone":{"type":"string","minLength":1,"maxLength":64},"inviteePhone":{"type":"string","maxLength":32},"phoneNotesConsent":{"type":"object","properties":{"accepted":{"type":"boolean","const":true},"version":{"type":"string","const":"2026-11-09"},"state":{"type":"string","enum":["AL","AK","AZ","AR","CA","CO","CT","DE","DC","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"]}},"required":["accepted","version","state"],"additionalProperties":false},"notes":{"type":"string","maxLength":5000},"answers":{"default":[],"maxItems":50,"type":"array","items":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"value":{"type":"string","maxLength":5000}},"required":["questionId","value"]}},"notetakerConsent":{"type":"boolean"}},"required":["eventTypeId","start","inviteeName","inviteeEmail","inviteeTimezone"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"400":{"description":"Invalid input, date window, or pagination cursor"},"401":{"description":"Missing, invalid, expired, or revoked token"},"403":{"description":"Token does not grant the required permission"},"404":{"description":"Resource does not exist or is not owned by the connected account"},"409":{"description":"Event paused, slot taken, booking not actionable, idempotency conflict, or request in progress"},"422":{"description":"Booking page required, required answers missing, or other booking requirement unmet"},"429":{"description":"Rate limit reached; honor Retry-After"},"500":{"description":"Server failure; a write may have completed. Inspect the result before using a new operation ID"}}}},"/bookings/{id}":{"get":{"operationId":"getBooking","summary":"Read a hosted booking and current join URL","description":"Requires bookings:read. Only the connected account's resources are accessible.","x-required-scopes":["bookings:read"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"400":{"description":"Invalid input, date window, or pagination cursor"},"401":{"description":"Missing, invalid, expired, or revoked token"},"403":{"description":"Token does not grant the required permission"},"404":{"description":"Resource does not exist or is not owned by the connected account"},"409":{"description":"Event paused, slot taken, booking not actionable, idempotency conflict, or request in progress"},"422":{"description":"Booking page required, required answers missing, or other booking requirement unmet"},"429":{"description":"Rate limit reached; honor Retry-After"},"500":{"description":"Server failure; a write may have completed. Inspect the result before using a new operation ID"}}}},"/bookings/{id}/cancel":{"post":{"operationId":"cancelBooking","summary":"Cancel a hosted booking and notify attendees (no automatic refund)","description":"Requires bookings:cancel. Only the connected account's resources are accessible.","x-required-scopes":["bookings:cancel"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,128}$"},"description":"Unique operation ID. Retry with the same key and exact body. Never change the key to retry an uncertain write. Keys are scoped to a credential."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"reason":{"type":"string","maxLength":2000}},"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"400":{"description":"Invalid input, date window, or pagination cursor"},"401":{"description":"Missing, invalid, expired, or revoked token"},"403":{"description":"Token does not grant the required permission"},"404":{"description":"Resource does not exist or is not owned by the connected account"},"409":{"description":"Event paused, slot taken, booking not actionable, idempotency conflict, or request in progress"},"422":{"description":"Booking page required, required answers missing, or other booking requirement unmet"},"429":{"description":"Rate limit reached; honor Retry-After"},"500":{"description":"Server failure; a write may have completed. Inspect the result before using a new operation ID"}}}},"/bookings/{id}/reschedule":{"post":{"operationId":"rescheduleBooking","summary":"Move a hosted booking and notify attendees","description":"Requires bookings:reschedule. Only the connected account's resources are accessible.","x-required-scopes":["bookings:reschedule"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,128}$"},"description":"Unique operation ID. Retry with the same key and exact body. Never change the key to retry an uncertain write. Keys are scoped to a credential."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"start":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"inviteeTimezone":{"type":"string","minLength":1,"maxLength":64},"reason":{"type":"string","maxLength":2000}},"required":["start","inviteeTimezone"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"400":{"description":"Invalid input, date window, or pagination cursor"},"401":{"description":"Missing, invalid, expired, or revoked token"},"403":{"description":"Token does not grant the required permission"},"404":{"description":"Resource does not exist or is not owned by the connected account"},"409":{"description":"Event paused, slot taken, booking not actionable, idempotency conflict, or request in progress"},"422":{"description":"Booking page required, required answers missing, or other booking requirement unmet"},"429":{"description":"Rate limit reached; honor Retry-After"},"500":{"description":"Server failure; a write may have completed. Inspect the result before using a new operation ID"}}}},"/events":{"get":{"operationId":"listBookingEvents","summary":"Poll booking lifecycle events from the last seven days","description":"Requires events:read. Only the connected account's resources are accessible.","x-required-scopes":["events:read"],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":500}},{"name":"type","in":"query","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","enum":["booking.created","booking.cancelled","booking.rescheduled","booking.no_show"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["data","nextCursor"],"properties":{"data":{"type":"array","items":{"type":"object","additionalProperties":true}},"nextCursor":{"type":["string","null"]}}}}}},"400":{"description":"Invalid input, date window, or pagination cursor"},"401":{"description":"Missing, invalid, expired, or revoked token"},"403":{"description":"Token does not grant the required permission"},"404":{"description":"Resource does not exist or is not owned by the connected account"},"409":{"description":"Event paused, slot taken, booking not actionable, idempotency conflict, or request in progress"},"422":{"description":"Booking page required, required answers missing, or other booking requirement unmet"},"429":{"description":"Rate limit reached; honor Retry-After"},"500":{"description":"Server failure; a write may have completed. Inspect the result before using a new operation ID"}}}}}}