FNRH Digital API Documentation
Integrate bookings, guests, check-in and check-out with the same standard used by premium operations.
https://fnrh.sisteminter.net/api/v1First steps
- In the dashboard, configure API Integration.
- Copy X-Property-Id and X-Api-Key.
- Test in the Playground.
- Connect your PMS/ERP using the endpoints below.
Required authentication
X-Property-Id: SEU_PROPERTY_ID
X-Api-Key: SUA_CHAVE_API
Content-Type: application/json
If you get 401, check for missing header, wrong credentials or disabled integration in the dashboard.
Recommended integration flow
1) Criar/atualizar reserva
POST https://fnrh.sisteminter.net/api/v1/reservasCria uma reserva nova ou atualiza a existente quando o reservation_code ja existe.
| Campo | Obrigatorio | Tipo | Formato | Exemplo |
|---|---|---|---|---|
reservation_code | Sim | string | Codigo unico da reserva | RES-2026-0001 |
arrival_date | Sim | date | YYYY-MM-DD ou DD/MM/YYYY | 2026-02-20 |
departure_date | Sim | date | YYYY-MM-DD ou DD/MM/YYYY | 2026-02-23 |
unit | Nao | string | Unidade/quarto | 101 |
adults | Nao | int | Minimo 1 | 2 |
children | Nao | int | Minimo 0 | 1 |
ota_source | Nao | string | Origem/canal | Booking.com |
travel_reason | Nao | string | Lista de motivos aceitos | LAZER_FERIAS |
transport_type | Nao | string | Lista de meios aceitos | AUTOMOVEL |
origin_city | Nao | string | Cidade/UF origem | Sao Paulo/SP |
destination_city | Nao | string | Cidade/UF destino | Rio de Janeiro/RJ |
guest_name | Sim | string | Titular | Maria Souza |
guest_contact | Nao | string | Telefone ou contato | 11999998888 |
status | Nao | string | Lista de status aceitos | PENDING |
guests | Nao | array | Lista de hospedes | [...] |
Se guest_name nao for enviado na criacao da reserva, a API responde 422.
{
"reservation_code": "RES-12345",
"arrival_date": "2026-02-20",
"departure_date": "2026-02-23",
"unit": "101",
"adults": 2,
"children": 1,
"ota_source": "Booking.com",
"travel_reason": "LAZER_FERIAS",
"transport_type": "AUTOMOVEL",
"origin_city": "Sao Paulo/SP",
"destination_city": "Rio de Janeiro/RJ",
"guest_name": "Maria Souza",
"guest_contact": "11999998888"
}
Resposta resumida:
{
"success": true,
"reservation": {
"id": 123,
"reservation_code": "RES-12345",
"status": "PENDING",
"checkin_status": "PENDING",
"checkout_status": "PENDING",
"arrival_date": "2026-02-20",
"departure_date": "2026-02-23",
"check_in_at": null,
"check_out_at": null,
"unit": "101",
"adults": 2,
"children": 1,
"ota_source": "Booking.com",
"travel_reason": "LAZER_FERIAS",
"transport_type": "AUTOMOVEL",
"origin_city": "Sao Paulo/SP",
"destination_city": "Rio de Janeiro/RJ",
"guest_name": "Maria Souza",
"guest_contact": "11999998888",
"created_at": "2026-03-19 10:00:00",
"updated_at": "2026-03-19 10:05:00"
},
"guests_count": 0,
"whatsapp": {
"success": false,
"skipped": true,
"message": ""
}
}
Os campos de viagem e titular retornam no objeto reservation e podem ser reaproveitados por sistemas externos.
2) Sincronizar hospedes
POST https://fnrh.sisteminter.net/api/v1/reservas/{reservation_code}/hospedesEnvia ou atualiza a lista completa de hospedes da reserva.
| Campo | Obrigatorio | Tipo | Formato | Exemplo |
|---|---|---|---|---|
doc_type | Sim | string | cpf ou passport | cpf |
doc_number | Sim | string | CPF (11 digitos) ou passaporte | 12345678901 |
name | Sim | string | Nome completo | Maria Souza |
is_primary | Nao | bool/int | 1/true titular. Primeiro item vira titular por padrao. | 1 |
social_name | Nao | string | Nome social | Maria S. |
birth_date | Nao | date | YYYY-MM-DD | 1990-08-15 |
gender | Nao | string | Lista de genero | MULHER |
raca | Nao | string | Lista raca/cor | BRANCA |
has_disability | Nao | string | NAO, SIM, NAOINFORMAR | NAO |
disability_type | Nao | string | Obrigatorio se has_disability=SIM | FISICA |
tipo_nacionalidade | Nao | string | BRASILEIRO ou ESTRANGEIRO | BRASILEIRO |
nationality | Nao | string | Pais ISO-2 | BR |
profession | Nao | string | Profissao | Engenheira |
email | Nao | string | maria@email.com | |
phone | Nao | string | Telefone | 11999998888 |
address_street | Nao | string | Logradouro | Rua A |
address_number | Nao | string | Numero | 123 |
address_complement | Nao | string | Complemento | Apto 12 |
address_neighborhood | Nao | string | Bairro | Centro |
address_city | Nao | string | Cidade | Sao Paulo |
address_state | Nao | string | UF | SP |
address_zip | Nao | string | CEP | 01001-000 |
address_country | Nao | string | Pais texto | Brasil |
passport_country | Nao | string | Pais emissor passaporte | Estados Unidos |
{
"guests": [
{
"doc_type": "cpf",
"doc_number": "12345678901",
"name": "Maria Souza",
"is_primary": 1,
"email": "maria@email.com",
"phone": "11999998888"
},
{
"doc_type": "passport",
"doc_number": "AB1234567",
"name": "John Doe",
"is_primary": 0
}
]
}
3) Consultar check-in
GET https://fnrh.sisteminter.net/api/v1/reservas/{reservation_code}Retorna os dados consolidados da reserva/check-in e a lista de hospedes vinculados.
O objeto reservation retorna os mesmos campos consolidados do upsert. O array guests traz os dados cadastrados de cada hospede.
{
"success": true,
"reservation": {
"id": 123,
"reservation_code": "RES-12345",
"status": "PENDING",
"checkin_status": "PENDING",
"checkout_status": "PENDING",
"arrival_date": "2026-02-20",
"departure_date": "2026-02-23",
"check_in_at": null,
"check_out_at": null,
"unit": "101",
"adults": 2,
"children": 1,
"ota_source": "Booking.com",
"travel_reason": "LAZER_FERIAS",
"transport_type": "AUTOMOVEL",
"origin_city": "Sao Paulo/SP",
"destination_city": "Rio de Janeiro/RJ",
"guest_name": "Maria Souza",
"guest_contact": "11999998888",
"created_at": "2026-03-19 10:00:00",
"updated_at": "2026-03-19 10:05:00"
},
"guests_count": 2,
"guests": [
{
"id": 456,
"name": "Maria Souza",
"social_name": null,
"doc_type": "cpf",
"doc_number": "12345678901",
"birth_date": "1990-01-01",
"gender": "MULHER",
"raca": "BRANCA",
"has_disability": "NAO",
"disability_type": null,
"tipo_nacionalidade": "BRASILEIRO",
"nationality": "BR",
"profession": "Engenheira",
"email": "maria@email.com",
"phone": "11999998888",
"address_country": "Brasil",
"address_street": "Rua A",
"address_number": "123",
"address_complement": "Apto 12",
"address_neighborhood": "Centro",
"address_city": "Sao Paulo",
"address_state": "SP",
"address_zip": "01001-000",
"passport_country": null,
"is_primary": true
}
]
}
3.1) Webhook opcional de pre-check-in
Quando habilitado, o sistema envia automaticamente um POST para a URL configurada assim que o hospede conclui o pre-check-in.
Evento enviado: precheckin.completed. O payload espelha o retorno do GET /reservas/{reservation_code} e inclui event e hotel_id.
Autenticacao outbound por header customizado. Por padrao usamos X-Sisteminter-Webhook-Token, mas o nome pode ser ajustado na implantacao. Em caso de falha, o envio entra em fila com retries automaticos.
POST URL_WEBHOOK_CONFIGURADA
Content-Type: application/json
X-Webhook-Event: precheckin.completed
X-Webhook-Idempotency-Key: <hash>
X-Sisteminter-Webhook-Token: <secret>
{
"event": "precheckin.completed",
"hotel_id": 1,
"reservation": {
"reservation_code": "RES-12345",
"travel_reason": "LAZER_FERIAS",
"transport_type": "AUTOMOVEL",
"origin_city": "Sao Paulo/SP",
"destination_city": "Rio de Janeiro/RJ",
"guest_name": "Maria Souza"
},
"guests_count": 2,
"guests": [
{
"name": "Maria Souza",
"doc_type": "cpf",
"doc_number": "12345678901",
"is_primary": true
}
]
}
4) Marcar check-in
POST https://fnrh.sisteminter.net/api/v1/reservas/{reservation_code}/checkinMarca o check-in da reserva.
{
"check_in_at": "2026-02-20 14:30:00"
}
Sem check_in_at, o servidor usa data/hora atual.
5) Marcar check-out
POST https://fnrh.sisteminter.net/api/v1/reservas/{reservation_code}/checkoutMarca o check-out da reserva.
{
"check_out_at": "2026-02-23 12:00:00"
}
Sem check_out_at, o servidor usa data/hora atual.
6) Cancelar reserva
POST https://fnrh.sisteminter.net/api/v1/reservas/{reservation_code}/cancelarMarca a reserva como CANCELADA. Sem body (pode enviar {}).
{}
Se ja estiver CANCELADA, a API responde sucesso (idempotente). Se estiver NOSHOW ou COMPLETED, retorna 409.
7) Marcar no-show
POST https://fnrh.sisteminter.net/api/v1/reservas/{reservation_code}/noshowMarca a reserva como NOSHOW (nao comparecimento). Sem body (pode enviar {}).
{}
Se ja estiver NOSHOW, a API responde sucesso (idempotente). Se estiver CANCELADA ou COMPLETED, retorna 409.
Expected values (quick lists)
LAZER_FERIAS, NEGOCIOS, CONGRESSO_FEIRA, COMPRAS, ESTUDOS_CURSOS, PARENTES_AMIGOS, RELIGIAO, SAUDEAUTOMOVEL, AVIAO, ONIBUS, MOTO, NAVIO_BARCO, TREM, BICICLETA, PEHOMEM, MULHER, OUTRO, NAOINFORMADOBRASILEIRO, ESTRANGEIRONAO, SIM, NAOINFORMARFISICA, AUDITIVA_SURDEZ, VISUAL, INTELECTUAL, MULTIPLAcpf, passportPENDING, SENT, COMPLETED, CANCELADA, NOSHOWErrors and response table
| Status HTTP | Significado | Acao recomendada |
|---|---|---|
200 | Sucesso | Operacao concluida. |
400 | JSON invalido | Valide estrutura, aspas e virgulas. |
401 | Credencial invalida/ausente | Revise X-Property-Id e X-Api-Key. |
402 | Pendencia de pagamento | Regularize a assinatura para reativar a API. |
403 | Acesso negado | Verifique plano/limites e configuracao da integracao. |
404 | Reserva nao encontrada | Confirme o reservation_code. |
409 | Conflito de status | Evite cancelar/no-show apos concluir check-in/checkout. |
422 | Dados invalidos | Revise obrigatorios e formatos. |
429 | Rate limit | Respeite o Retry-After e tente novamente. |
500 | Erro interno | Tente novamente e envie payload/horario ao suporte. |