Passar para o conteúdo principal

Ayrton Hostay — Documentação da API

Versão: 1.0 Última atualização: Junho 2026 Suporte: suporte@ayrton.net.br

Escrito por Rodolfo

Versão: 1.0
Última atualização: Junho 2026
Suporte: suporte@ayrton.net.br

Visão Geral

API de integração do Ayrton Hostay para gestão de reservas, disponibilidade, calendário de preços, conversas com hóspedes, pagamentos e governança.

⚠️ Confidencialidade: Esta API é confidencial e não deve ser compartilhada com terceiros sem autorização prévia. Todos os direitos reservados à Ayrton Hostay.

Autenticação

Cada requisição deve incluir dois headers obrigatórios:

Header

Descrição

Exemplo

authorization

API Key emitida pelo Ayrton Hostay

9fddc509-445c-4900-...

x-hotel

ID numérico do hotel

214512...

Ambiente de testes: Utiliza autenticação via JWT Bearer Token pelo header Authorization: Bearer <token>.

Servidores

Rate Limits

Limite

Valor

Chamadas por minuto

3

Chamadas por segundo

0.05

Exceder o limite retorna HTTP 429 – Too Many Requests.

Formato de Resposta de Erro

Todas as respostas de erro seguem este formato padrão:

{   "statusCode": 400,   "message": "Descrição do erro",   "error": "Bad Request" }

Códigos de erro comuns

Código

Descrição

400

Dados da requisição inválidos

401

API key ausente ou inválida

404

Recurso não encontrado

413

Arquivo muito grande

429

Limite de requisições excedido

500

Erro interno do servidor

📋 Reservas

GET /booking/{resid}

Obter detalhes completos de uma reserva

Retorna todos os detalhes de uma reserva incluindo status, dados do hóspede, quartos, faturamento e origem.

Parâmetros

Nome

resid

Em

path

Obrigatório

Tipo

string

Descrição

ID único da reserva

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'

Resposta 200 — Sucesso

{   "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   } }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

Resposta 404 — Não encontrado

{   "statusCode": 404,   "message": "Reservation not found",   "error": "Not Found" }

POST /booking/{resid}/cancel

Cancelar uma reserva

Cancela uma reserva existente. Após o cancelamento, o campo status muda para cancelled.

Atenção: Reservas já canceladas, finalizadas (checked-out) ou em estado incompatível retornam 400 Bad Request.

Parâmetros

Nome

resid

Em

path

Obrigatório

Tipo

string

Descrição

ID da reserva a cancelar

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 ''

Resposta 201 — Sucesso

{   "statusCode": 201,   "message": "Reserva cancelada com sucesso" }

Resposta 400 — Não pode cancelar

{   "statusCode": 400,   "message": "Está reserva já foi Cancelada ou efetuado CheckOut.",   "error": "Bad Request" }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

Resposta 404 — Não encontrado

{   "statusCode": 404,   "message": "Reservation not found",   "error": "Not Found" }

POST /booking/{resid}/sendMessage

Enviar mensagem usando o ID da reserva

Envia uma mensagem de texto ao hóspede vinculado a uma reserva.

Parâmetros

Nome

resid

Em

path

Obrigatório

Tipo

string

Descrição

ID da reserva

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!" }   }'

Resposta 201 — Sucesso

{   "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 }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

Resposta 404 — Não encontrado

{   "statusCode": 404,   "message": "Reservation not found",   "error": "Not Found" }

🔍 Cotações

GET /quotes/listings

Obter configuração do motor de reservas

Retorna a configuração completa do motor de reservas incluindo listings disponíveis e localidades.

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'

Resposta 200 — Sucesso

{   "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"] }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

GET /quotes/locations

Obter localidades disponíveis

Retorna a lista de localidades disponíveis para busca no motor de reservas.

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'

Resposta 200 — Sucesso

[   "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" ]

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

POST /quotes/search

Buscar tipos de quarto disponíveis

Busca tipos de quarto disponíveis para o período e localidade informados.

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"   }'

Resposta 201 — Quartos disponíveis

{   "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 }         ]       }     ]   } }

Resposta 201 — Sem disponibilidade

{}

Resposta 400 — Check-in no passado

{   "statusCode": 400,   "message": "Checkin não pode ser em uma data passada.",   "error": "Bad Request" }

Resposta 400 — Estadia acima do limite

{   "statusCode": 400,   "message": "Estadia dever ter duração máxima de 90 dias.",   "error": "Bad Request" }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

POST /quotes/availability

Verificar disponibilidade e preço de listings específicos

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   }'

Resposta 200 — Sucesso

{   "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 }         ]       }     ]   } }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

POST /quotes/summary

Obter resumo diário de preços e disponibilidade

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   }'

Resposta 200 — Sucesso

{   "2025-05-13": {     "price": 230,     "date": "2025-05-13",     "mst": 2,     "stop_sell": false,     "closedForCheckin": false,     "closedForCheckOut": false,     "availability": 0,     "available": false   } }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

📅 Listings e Calendário

GET /listings/{id}/calendar

Obter calendário de disponibilidade

Retorna o calendário completo de um listing com preço, disponibilidade e restrições por dia.

Parâmetros

Nome

id

Em

path

Obrigatório

Tipo

string

Descrição

ID do listing

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'

Resposta 200 — Sucesso

[   {     "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     }   } ]

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

Resposta 404 — Não encontrado

{   "statusCode": 404,   "message": "Listing not found",   "error": "Not Found" }

POST /listings/{id}/calendar

Atualizar preços e restrições do calendário

Parâmetros

Nome

id

Em

path

Obrigatório

Tipo

string

Descrição

ID do listing a atualizar

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       }     }   ]'

Resposta 200 — Sucesso

[   { "date": "2026-05-26", "value": "250.00" } ]

Resposta 400 — Dados inválidos

{   "statusCode": 400,   "message": "Bad Request – invalid parameter",   "error": "Bad Request" }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

Resposta 404 — Não encontrado

{   "statusCode": 404,   "message": "Listing not found",   "error": "Not Found" }

GET /listings/{id}/blocks

Obter bloqueios e reservas do calendário

Retorna todos os bloqueios de calendário e reservas vinculados a um listing.

Parâmetros

Nome

id

Em

path

Obrigatório

Tipo

string

Descrição

ID do listing

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'

Resposta 200 — Sucesso

{   "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       }     ]   } }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

Resposta 404 — Não encontrado

{   "statusCode": 404,   "message": "Listing not found",   "error": "Not Found" }

💬 Conversas

POST /conversations/{id}/send

Enviar mensagem em uma conversa

Envia uma mensagem de texto em uma conversa existente entre o hotel e o hóspede.

Parâmetros

Nome

id

Em

path

Obrigatório

Tipo

string

Descrição

ID da conversa

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!" }   }'

Resposta 201 — Sucesso

{   "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 }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

Resposta 404 — Não encontrado

{   "statusCode": 404,   "message": "Conversation not found",   "error": "Not Found" }

GET /conversations/{id}

Obter mensagens de uma conversa

Retorna as mensagens de uma conversa com suporte a paginação. Mensagens ordenadas da mais recente para a mais antiga.

Parâmetros

Nome

id

Em

path

Obrigatório

Tipo

string

Descrição

ID da conversa

Nome

limit

Em

query

Obrigatório

Tipo

integer

Descrição

Máximo de mensagens (padrão: 50)

Nome

skip

Em

query

Obrigatório

Tipo

integer

Descrição

Mensagens a pular (padrão: 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'

Resposta 200 — Sucesso

{   "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   } }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

Resposta 404 — Não encontrado

{   "statusCode": 404,   "message": "Conversation not found",   "error": "Not Found" }

POST /conversations/{id}/read

Marcar mensagens como lidas

Marca todas as mensagens não lidas de uma conversa como lidas.

Parâmetros

Nome

id

Em

path

Obrigatório

Tipo

string

Descrição

ID da conversa

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 ''

Resposta 201 — Sucesso

{   "generatedMaps": [],   "raw": [],   "affected": 1 }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

Resposta 404 — Não encontrado

{   "statusCode": 404,   "message": "Conversation not found",   "error": "Not Found" }

POST /conversations/{id}/sendattachment

Enviar anexo em uma conversa

Envia um arquivo anexo (imagem, PDF) em uma conversa existente.

Fluxo recomendado

  1. Gere o link de upload em /conversations/generateAttachmentUploadLink.

  2. Faça o upload do arquivo para a URL retornada.

  3. Envie a URL do arquivo usando este endpoint.

Parâmetros

Nome

id

Em

path

Obrigatório

Tipo

string

Descrição

ID da conversa

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"   }'

Resposta 200 — Sucesso

{   "attachments": [     "https://resources.ayrton.net.br/attachments/exemplo.png"   ] }

Resposta 400 — URL inválida

{   "statusCode": 400,   "message": "Invalid URL or unsupported file format",   "error": "Bad Request" }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

Resposta 404 — Não encontrado

{   "statusCode": 404,   "message": "Conversation not found",   "error": "Not Found" }

POST /conversations/generateAttachmentUploadLink

Gerar link de upload para anexo

Gera uma URL pré-assinada para upload de arquivo.

Fluxo completo

  1. Chame este endpoint com os metadados do arquivo.

  2. Envie a URL final em /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"   }'

Resposta 200 — Sucesso

{   "url": "https://storage.amazonaws.com/upload?exemplo=abc" }

Resposta 400 — Dados inválidos

{   "statusCode": 400,   "message": "Invalid file metadata or unsupported format",   "error": "Bad Request" }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

Resposta 413 — Arquivo muito grande

{   "statusCode": 413,   "message": "File size exceeds the maximum allowed limit",   "error": "Payload Too Large" }

👤 Clientes

GET /customer/search/phone

Buscar clientes por telefone

Pesquisa clientes/hóspedes cadastrados pelo número de telefone. O número deve incluir o código do país.

Parâmetros

Nome

phone

Em

query

Obrigatório

Tipo

string

Descrição

Telefone com código do país. Formato: +{país}{DDD}{número}

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'

Resposta 200 — Sucesso

{   "customers": [     {       "id": "12345",       "name": "Pedro",       "phone": "+5582999990000",       "email": "pedro@exemplo.com"     }   ] }

Resposta 400 — Formato inválido

{   "statusCode": 400,   "message": "Invalid phone number format. Use +{country code}{area code}{number}",   "error": "Bad Request" }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

Resposta 404 — Não encontrado

{   "statusCode": 404,   "message": "No customers found with this phone number",   "error": "Not Found" }

💳 Faturamento

POST /bill/{id}/payment

Registrar pagamento em uma conta

Registra um novo pagamento em uma conta (bill) existente.

Parâmetros

Nome

id

Em

path

Obrigatório

Tipo

string

Descrição

ID da conta (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": {}   }'

Resposta 201 — Sucesso

Retorna o objeto completo da conta com o pagamento incluído.

{   "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"   } }

Resposta 400 — Dados inválidos

{   "statusCode": 400,   "message": "Invalid payment data – value must be a positive decimal string",   "error": "Bad Request" }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

Resposta 404 — Não encontrado

{   "statusCode": 404,   "message": "Bill not found",   "error": "Not Found" }

🧹 Governança

PUT /room/{rid}/markAsClean

Marcar quarto como limpo

Atualiza o status de governança do quarto para limpo (clean). Utilize após a equipe de limpeza concluir a arrumação.

Parâmetros

Nome

rid

Em

path

Obrigatório

Tipo

string

Descrição

ID do quarto

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'

Resposta 200 — Sucesso

{   "generatedMaps": [],   "raw": [],   "affected": 1 }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

Resposta 404 — Não encontrado

{   "statusCode": 404,   "message": "Room not found",   "error": "Not Found" }

PUT /room/{rid}/markAsDirty

Marcar quarto como sujo

Atualiza o status de governança do quarto para sujo (dirty). Geralmente acionado automaticamente após o check-out ou manualmente pela equipe de governança.

Parâmetros

Nome

rid

Em

path

Obrigatório

Tipo

string

Descrição

ID do quarto

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'

Resposta 200 — Sucesso

{   "generatedMaps": [],   "raw": [],   "affected": 1 }

Resposta 401 — Não autorizado

{   "statusCode": 401,   "message": "Invalid, disabled or non existent api key.",   "error": "Unauthorized" }

Resposta 404 — Não encontrado

{   "statusCode": 404,   "message": "Room not found",   "error": "Not Found" }

📎 Referência Interativa da API

Para a referência interativa completa com funcionalidade “Try it out”, acesse o Swagger UI:

© 2026 Ayrton Hostay. Todos os direitos reservados.

Respondeu à sua pergunta?