Version: 1.0
Last updated: June 2026
Support: suporte@ayrton.net.br
Overview
Ayrton Hostay integration API for managing reservations, availability, price calendar, guest conversations, payments, and governance.
⚠️ Confidentiality: This API is confidential and must not be shared with third parties without prior authorization. All rights reserved by Ayrton Hostay.
Authentication
Each request must include two mandatory headers:
Header
Description
Example
authorization
API Key issued by Ayrton Hostay
9fddc509-445c-4900-...
x-hotel
Numeric hotel ID
214512...
Testing environment: Uses authentication via JWT Bearer Token through the Authorization: Bearer header.
Servers
Environment
URL
Production
Staging / Testing (JWT)
SwaggerHub Mock
Rate Limits
Limit
Value
Calls per minute
3
Calls per second
0.05
Exceeding the limit returns HTTP 429 – Too Many Requests.
Error Response Format
All error responses follow this standard format:
{ "statusCode": 400, "message": "Descrição do erro", "error": "Bad Request" }Common error codes
Code
Description
400
Invalid request data
401
Missing or invalid API key
404
Resource not found
413
File too large
429
Request limit exceeded
500
Internal server error
📋 Reservations
GET /booking/{resid}
Get full details of a reservation
Returns all reservation details, including status, guest data, rooms, billing, and origin.
Parameters
Name
resid
In
path
Required
✅
Type
string
Description
Unique reservation ID
Curl
curl -X 'GET' \ 'https://api.ayrton.net.br/open-api/booking/68' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID'
Response 200 — Success
{ "id": 522, "status": "cancelled", "checkIn": "2026-03-17", "checkOut": "2026-03-19", "numberOfAdults": 1, "numberOfChildren": 0, "numberOfInfants": 0, "prices": [ { "date": "2026-03-17", "value": 0, "ratePlan": null }, { "date": "2026-03-18", "value": 0, "ratePlan": null } ], "bill": [ { "id": 573, "name": "Conta Hóspede", "closed": false, "chargeRates": true, "posClosed": false, "createdOn": "2026-02-28T15:29:26.082Z", "payments": [], "products": [], "services": [ { "name": "Diárias", "auto": true, "value": 0 } ] } ], "customer": [ { "id": 1010, "postPaid": false, "name": "João da Silva" } ], "primaryGuest": { "id": 1010, "postPaid": false, "name": "João da Silva" }, "values": { "rateValue": 0, "value": 0, "paid": 0, "owed": 0, "total": 0, "stayLength": 2, "taxTotal": 0, "bookingValue": 0, "feesWillApply": true } }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 404 — Not found
{ "statusCode": 404, "message": "Reservation not found", "error": "Not Found" }POST /booking/{resid}/cancel
Cancel a reservation
Cancels an existing reservation. After cancellation, the status field changes to cancelled.
Attention: Reservations that are already cancelled, checked-out, or in an incompatible state return 400 Bad Request.
Parameters
Name
resid
In
path
Required
✅
Type
string
Description
ID of the reservation to cancel
Curl
curl -X 'POST' \ 'https://api.ayrton.net.br/open-api/booking/68/cancel' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID' \ -d ''
Response 201 — Success
{ "statusCode": 201, "message": "Reserva cancelada com sucesso" }Response 400 — Cannot cancel
{ "statusCode": 400, "message": "Está reserva já foi Cancelada ou efetuado CheckOut.", "error": "Bad Request" }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 404 — Not found
{ "statusCode": 404, "message": "Reservation not found", "error": "Not Found" }POST /booking/{resid}/sendMessage
Send a message using the reservation ID
Sends a text message to the guest linked to a reservation.
Parameters
Name
resid
In
path
Required
✅
Type
string
Description
Reservation ID
Curl
curl -X 'POST' \ 'https://api.ayrton.net.br/open-api/booking/68/sendMessage' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID' \ -H 'Content-Type: application/json' \ -d '{ "message": { "message": "Bom dia!" } }'Response 201 — Success
{ "message": "Bom dia!", "authored": true, "date": "2026-06-01T12:40:13.222Z", "delivered": false, "sent": false, "channelManagerId": "", "id": 12278, "read": null, "isSystemMessage": null, "attachments": null, "deduplicationId": 1780317611 }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 404 — Not found
{ "statusCode": 404, "message": "Reservation not found", "error": "Not Found" }🔍 Quotes
GET /quotes/listings
Get booking engine configuration
Returns the full booking engine configuration, including available listings and locations.
Curl
curl -X 'GET' \ 'https://api.ayrton.net.br/open-api/quotes/listings' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID'
Response 200 — Success
{ "roomTypesObject": { "55": { "id": 55, "name": "Ritz Suítes | Flat 632", "location": "Cruz das Almas", "maxAdults": 2, "maxChildren": 2, "maxOccupants": 2 } }, "locations": ["Cruz das Almas", "Pajuçara"] }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }GET /quotes/locations
Get available locations
Returns the list of available locations for search in the booking engine.
Curl
curl -X 'GET' \ 'https://api.ayrton.net.br/open-api/quotes/locations' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID'
Response 200 — Success
[ "Moema", "Vila Mariana", "Vila Clementino", "Brooklin", "Santa Cecília/Higienopolis", "Pompeia", "Rebouças", "Centro histórico/Luz", "Cerqueira Cesar/Jardins", "República", "Alphaville", "Paraiso", "Liberdade" ]
Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }POST /quotes/search
Search available room types
Searches available room types for the informed period and location.
Curl
curl -X 'POST' \ 'https://api.ayrton.net.br/open-api/quotes/search' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID' \ -H 'Content-Type: application/json' \ -d '{ "checkin": "2025-06-15", "checkout": "2025-06-30", "location": ["Cruz das Almas"], "adults": "2" }'Response 201 — Available rooms
{ "55": { "id": 55, "name": "Ritz Suítes | Flat 632 | Quarto com Vista Mar", "maxAdults": 2, "maxChildren": 2, "maxOccupants": 2, "capacity": 2, "feeTotal": 200, "rateTotal": 5365, "total": 5365, "pricePerNight": 344.33, "rateplan": [ { "id": 233, "priceCache": [ { "date": "2025-06-15", "value": 308 }, { "date": "2025-06-16", "value": 280 } ] } ] } }Response 201 — No availability
{}Response 400 — Check-in in the past
{ "statusCode": 400, "message": "Checkin não pode ser em uma data passada.", "error": "Bad Request" }Response 400 — Stay above the limit
{ "statusCode": 400, "message": "Estadia dever ter duração máxima de 90 dias.", "error": "Bad Request" }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }POST /quotes/availability
Check availability and price for specific listings
Curl
curl -X 'POST' \ 'https://api.ayrton.net.br/open-api/quotes/availability' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID' \ -H 'Content-Type: application/json' \ -d '{ "checkin": "2025-06-16", "checkout": "2025-06-19", "listings": [62], "adults": 2 }'Response 200 — Success
{ "62": { "id": 62, "name": "Tenerife 605 | Beira-Mar Pajuçara", "maxAdults": 2, "maxChildren": 2, "maxOccupants": 2, "capacity": 2, "feeTotal": 130, "rateTotal": 846, "total": 846, "pricePerNight": 238.67, "stayLength": 3, "rateplan": [ { "id": 243, "priceCache": [ { "date": "2025-06-16", "value": 230 }, { "date": "2025-06-17", "value": 230 }, { "date": "2025-06-18", "value": 256 } ] } ] } }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }POST /quotes/summary
Get daily price and availability summary
Curl
curl -X 'POST' \ 'https://api.ayrton.net.br/open-api/quotes/summary' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID' \ -H 'Content-Type: application/json' \ -d '{ "start": "2025-05-13", "end": "2025-08-13", "listingId": 62 }'Response 200 — Success
{ "2025-05-13": { "price": 230, "date": "2025-05-13", "mst": 2, "stop_sell": false, "closedForCheckin": false, "closedForCheckOut": false, "availability": 0, "available": false } }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }📅 Listings and Calendar
GET /listings/{id}/calendar
Get availability calendar
Returns the full calendar of a listing with price, availability, and restrictions by day.
Parameters
Name
id
In
path
Required
✅
Type
string
Description
Listing ID
Curl
curl -X 'GET' \ 'https://api.ayrton.net.br/open-api/listings/62/calendar' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID'
Response 200 — Success
[ { "2026-05-26": { "available_units": 1, "date": "2026-05-26", "value": "207.00", "mst": 1, "closed_to_arrival": false, "closed_to_departure": false } }, { "2026-05-27": { "available_units": 1, "date": "2026-05-27", "value": "202.00", "mst": 1, "closed_to_arrival": false, "closed_to_departure": false } } ]Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 404 — Not found
{ "statusCode": 404, "message": "Listing not found", "error": "Not Found" }POST /listings/{id}/calendar
Update calendar prices and restrictions
Parameters
Name
id
In
path
Required
✅
Type
string
Description
ID of the listing to update
Curl
curl -X 'POST' \ 'https://api.ayrton.net.br/open-api/listings/62/calendar' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID' \ -H 'Content-Type: application/json' \ -d '[ { "2026-05-26": { "available_units": 1, "date": "2026-05-26", "value": "250.00", "mst": 1, "closed_to_arrival": false, "closed_to_departure": false } } ]'Response 200 — Success
[ { "date": "2026-05-26", "value": "250.00" } ]Response 400 — Invalid data
{ "statusCode": 400, "message": "Bad Request – invalid parameter", "error": "Bad Request" }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 404 — Not found
{ "statusCode": 404, "message": "Listing not found", "error": "Not Found" }GET /listings/{id}/blocks
Get calendar blocks and reservations
Returns all calendar blocks and reservations linked to a listing.
Parameters
Name
id
In
path
Required
✅
Type
string
Description
Listing ID
Curl
curl -X 'GET' \ 'https://api.ayrton.net.br/open-api/listings/62/blocks' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID'
Response 200 — Success
{ "blocks": { "reservations": [ { "reservation_id": "1", "start_date": "2026-03-19", "end_date": "2026-03-21", "booked_time": "2026-03-17", "status": "booked", "total_days": 2, "currency": "BRL", "ota": "BookingCom", "ota_commission": 69.97, "host_payout": 468.28, "total_cost": 468.28, "rental_revenue": 273.28 } ] } }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 404 — Not found
{ "statusCode": 404, "message": "Listing not found", "error": "Not Found" }💬 Conversations
POST /conversations/{id}/send
Send a message in a conversation
Sends a text message in an existing conversation between the hotel and the guest.
Parameters
Name
id
In
path
Required
✅
Type
string
Description
Conversation ID
Curl
curl -X 'POST' \ 'https://api.ayrton.net.br/open-api/conversations/68/send' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID' \ -H 'Content-Type: application/json' \ -d '{ "message": { "message": "Bom dia!" } }'Response 201 — Success
{ "message": "Bom dia!", "authored": true, "author": { "id": 1, "name": "Atendente", "cognitoId": "", "enabled": true, "restrictedAccessToRooms": false, "modules": ["guest"], "meta": null }, "date": "2026-06-01T12:40:13.222Z", "delivered": false, "sent": false, "channelManagerId": "", "conversation": { "id": 68, "title": "Hóspede 0000000000000", "AIStatus": "STOPPED", "threadId": "whatsapp: 0000000000000", "origin": "WhatsApp", "inbox": null, "archived": false, "unread": 0, "messagecount": 908, "lastUpdate": "2026-06-01T12:25:30.452Z", "lastHumanUpdate": "2026-06-01T12:25:30.452Z" }, "AIFeedback": null, "meta": null, "id": 12278, "read": null, "isSystemMessage": null, "attachments": null, "deduplicationId": 1780317611 }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 404 — Not found
{ "statusCode": 404, "message": "Conversation not found", "error": "Not Found" }GET /conversations/{id}
Get messages from a conversation
Returns the messages from a conversation with pagination support. Messages are ordered from newest to oldest.
Parameters
Name
id
In
path
Required
✅
Type
string
Description
Conversation ID
Name
limit
In
query
Required
❌
Type
integer
Description
Maximum number of messages, default: 50
Name
skip
In
query
Required
❌
Type
integer
Description
Messages to skip, default: 0
Curl
curl -X 'GET' \ 'https://api.ayrton.net.br/open-api/conversations/68?limit=20&skip=0' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID'
Response 200 — Success
{ "data": [ { "id": 351, "channelManagerId": null, "message": "Bom dia!", "sent": true, "delivered": true, "read": null, "authored": true, "isSystemMessage": null, "date": "2026-01-26T16:44:33.755Z", "attachments": null, "meta": null, "AIFeedback": { "id": "1" }, "author": null } ], "meta": { "count": 7 } }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 404 — Not found
{ "statusCode": 404, "message": "Conversation not found", "error": "Not Found" }POST /conversations/{id}/read
Mark messages as read
Marks all unread messages in a conversation as read.
Parameters
Name
id
In
path
Required
✅
Type
string
Description
Conversation ID
Curl
curl -X 'POST' \ 'https://api.ayrton.net.br/open-api/conversations/68/read' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID' \ -d ''
Response 201 — Success
{ "generatedMaps": [], "raw": [], "affected": 1 }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 404 — Not found
{ "statusCode": 404, "message": "Conversation not found", "error": "Not Found" }POST /conversations/{id}/sendattachment
Send an attachment in a conversation
Sends an attachment file, such as an image or PDF, in an existing conversation.
Recommended flow
Generate the upload link at /conversations/generateAttachmentUploadLink.
Upload the file to the returned URL.
Send the file URL using this endpoint.
Parameters
Name
id
In
path
Required
✅
Type
string
Description
Conversation ID
Curl
curl -X 'POST' \ 'https://api.ayrton.net.br/open-api/conversations/68/sendattachment' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID' \ -H 'Content-Type: application/json' \ -d '{ "url": "https://resources.ayrton.net.br/attachments/exemplo.png" }'Response 200 — Success
{ "attachments": [ "https://resources.ayrton.net.br/attachments/exemplo.png" ] }Response 400 — Invalid URL
{ "statusCode": 400, "message": "Invalid URL or unsupported file format", "error": "Bad Request" }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 404 — Not found
{ "statusCode": 404, "message": "Conversation not found", "error": "Not Found" }POST /conversations/generateAttachmentUploadLink
Generate upload link for attachment
Generates a pre-signed URL for file upload.
Full flow
Call this endpoint with the file metadata.
Send the final URL at /conversations/{id}/sendattachment.
Curl
curl -X 'POST' \ 'https://api.ayrton.net.br/open-api/conversations/generateAttachmentUploadLink' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID' \ -H 'Content-Type: application/json' \ -d '{ "key": "37d44b01824b3ff4baffa17640bf9aaf", "filetype": "image/jpeg", "ext": "jpeg" }'Response 200 — Success
{ "url": "https://storage.amazonaws.com/upload?exemplo=abc" }Response 400 — Invalid data
{ "statusCode": 400, "message": "Invalid file metadata or unsupported format", "error": "Bad Request" }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 413 — File too large
{ "statusCode": 413, "message": "File size exceeds the maximum allowed limit", "error": "Payload Too Large" }👤 Customers
GET /customer/search/phone
Search customers by phone
Searches registered customers/guests by phone number. The number must include the country code.
Parameters
Name
phone
In
query
Required
✅
Type
string
Description
Phone number with country code. Format: +{country code}{area code}{number}
Curl
curl -X 'GET' \ 'https://api.ayrton.net.br/open-api/customer/search/phone?phone=%2B5582999990000' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID'
Response 200 — Success
{ "customers": [ { "id": "12345", "name": "Pedro", "phone": "+5582999990000", "email": "pedro@exemplo.com" } ] }Response 400 — Invalid format
{ "statusCode": 400, "message": "Invalid phone number format. Use +{country code}{area code}{number}", "error": "Bad Request" }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 404 — Not found
{ "statusCode": 404, "message": "No customers found with this phone number", "error": "Not Found" }💳 Billing
POST /bill/{id}/payment
Register payment in an account
Registers a new payment in an existing account, bill.
Parameters
Name
id
In
path
Required
✅
Type
string
Description
Account ID, bill
Curl
curl -X 'POST' \ 'https://api.ayrton.net.br/open-api/bill/68/payment' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID' \ -H 'Content-Type: application/json' \ -d '{ "paymentType": "cash", "value": "150.00", "payload": {} }'Response 201 — Success
Returns the complete account object with the payment included.
{ "id": 68, "name": "Conta Hóspede", "closed": false, "dueDate": null, "chargeRates": true, "posClosed": false, "closedOn": null, "createdOn": "2026-01-26T23:40:31.549Z", "noServiceFee": null, "products": [], "billTocompany": null, "services": [], "payments": [ { "id": 11, "description": null, "payment": "cash", "value": 1, "origin": null, "isPrepayment": false, "dueOn": null, "paid": true, "notes": null, "receivalDate": "2026-05-26T22:50:51.711Z", "refunded": null, "refundedOn": null } ], "createdBy": null, "pos": null, "reservation": { "id": 68, "status": "cancelled", "checkIn": "2026-02-14", "checkOut": "2026-02-18", "numberOfAdults": 2, "origin": "AirBNB" } }Response 400 — Invalid data
{ "statusCode": 400, "message": "Invalid payment data – value must be a positive decimal string", "error": "Bad Request" }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 404 — Not found
{ "statusCode": 404, "message": "Bill not found", "error": "Not Found" }POST /comissions
Get commissions report
Returns a commissions report for the informed period.
Curl
curl -X 'POST' \ 'https://api.ayrton.net.br/open-api/comissions' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID' \ -H 'Content-Type: application/json' \ -d '{ "start": "2026-01-01", "end": "2026-06-01", "room": 68, "channel": null }'Response 201 — Success
{ "bookings": { "summary": { "soldNights": 50, "rateValue": 7009.52, "taxTotal": 3433, "stayLength": 50, "serviceTotal": 0, "productTotal": 0, "taxBreakDown": { "CLEANING_FEE": 3433, "SERVICE_FEE": 0, "LINEN_FEE": 0, "UTILITY_FEE": 0, "OTHER_FEE": 0, "TAX_FEE": 0 }, "bookingValue": 10442.52, "comissionAmount": 1662.75, "saleValue": 10497.66, "paid": 9982.75, "owed": 10442.52, "avgLengthOfStayPerBooking": 1.85, "avgRateValue": 140.19, "avgBookingValue": 386.76, "avgBookingValuePerDay": 208.85, "channel": { "BookingCom": { "days": 43, "bookingValue": 8554.74, "taxTotal": 2535, "cancelledCount": 6, "count": 13, "comissionAmount": 1278.30 }, "Direto": { "days": 5, "bookingValue": 459.76, "count": 1, "comissionAmount": 66.46 }, "AirBNB": { "days": 5, "bookingValue": 1428.02, "count": 3, "comissionAmount": 317.99 } }, "statusCount": { "confirmed": 17, "cancelled": 0, "noShow": 0 }, "guestCount": 27, "activeBookingCount": 17, "bookingCount": 27, "comissions": { "computedFinalValue": 10442.52, "totalComission": 3433, "ownerValue": 7009.52, "adminValue": 3433 } } }, "comissionModel": { "GENERAL": { "mode": 2, "calcMode": "checkOut" }, "RATES": { "calcBase": "net", "comissionMode": "percent", "comissionValue": 0 }, "CLEANING_FEE": { "calcBase": "net", "comissionMode": "percent", "comissionValue": 100 }, "method": "checkOut" }, "occupancy": 0, "bookableNights": 151, "soldNights": 50, "real_occp": 0.33 }Response 400 — Invalid data
{ "statusCode": 400, "message": "start and end dates are required", "error": "Bad Request" }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 404 — Not found
{ "statusCode": 404, "message": "Room not found", "error": "Not Found" }🧹 Governance
PUT /room/{rid}/markAsClean
Mark room as clean
Updates the room governance status to clean. Use after the cleaning team finishes the room preparation.
Parameters
Name
rid
In
path
Required
✅
Type
string
Description
Room ID
Curl
curl -X 'PUT' \ 'https://api.ayrton.net.br/open-api/room/68/markAsClean' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID'
Response 200 — Success
{ "generatedMaps": [], "raw": [], "affected": 1 }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 404 — Not found
{ "statusCode": 404, "message": "Room not found", "error": "Not Found" }PUT /room/{rid}/markAsDirty
Mark room as dirty
Updates the room governance status to dirty. Usually triggered automatically after check-out or manually by the governance team.
Parameters
Name
rid
In
path
Required
✅
Type
string
Description
Room ID
Curl
curl -X 'PUT' \ 'https://api.ayrton.net.br/open-api/room/9/markAsDirty' \ -H 'accept: application/json' \ -H 'authorization: SUA_API_KEY' \ -H 'x-hotel: SEU_HOTEL_ID'
Response 200 — Success
{ "generatedMaps": [], "raw": [], "affected": 1 }Response 401 — Unauthorized
{ "statusCode": 401, "message": "Invalid, disabled or non existent api key.", "error": "Unauthorized" }Response 404 — Not found
{ "statusCode": 404, "message": "Room not found", "error": "Not Found" }📎 Interactive API Reference
For the complete interactive reference with “Try it out” functionality, access the Swagger UI:
🔗 Swagger: AyrtonOpenAPI/1
© 2026 Ayrton Hostay. All rights reserved.
