Voos
Busca de passagens aéreas em tempo real
Voos (Flights)
Busque passagens aéreas em tempo real com preços e disponibilidade atualizados de múltiplos fornecedores.
Fluxo Completo
Para realizar uma reserva de voo via API, siga este fluxo:
- Buscar aeroportos — Use o autocomplete para encontrar códigos IATA
- Buscar voos — Pesquise voos disponíveis com origem, destino e datas
- Criar reserva — Use o
iddoflightGroupretornado na busca para criar a reserva via API de Reservas
Os IDs dos voos retornados na busca têm validade limitada. Crie a reserva logo após a busca para garantir preço e disponibilidade.
Buscar Aeroportos (Autocomplete)
GET /api/public/airports/searchBusca aeroportos por nome da cidade, nome do aeroporto ou código IATA. Este endpoint é público e não requer autenticação.
Query Parameters
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
q | string | Sim | Termo de busca (mínimo 2 caracteres). Ex: sao paulo, GRU, rio |
limit | number | Não | Máximo de resultados (padrão: 10) |
Exemplo de Requisição
curl -X GET "https://app.moblix.co/api/public/airports/search?q=sao+paulo&limit=5"const response = await fetch(
'https://app.moblix.co/api/public/airports/search?q=sao+paulo&limit=5'
);
const data = await response.json();
console.log(data.airports);import requests
response = requests.get(
'https://app.moblix.co/api/public/airports/search',
params={'q': 'sao paulo', 'limit': 5}
)
data = response.json()
print(data['airports'])Resposta
{
"airports": [
{
"iata_code": "GRU",
"name": "Aeroporto Internacional de Guarulhos",
"city": "São Paulo",
"state": "SP",
"country_code": "BR",
"is_international": true,
"priority": 100
},
{
"iata_code": "CGH",
"name": "Aeroporto de Congonhas",
"city": "São Paulo",
"state": "SP",
"country_code": "BR",
"is_international": false,
"priority": 90
}
]
}Campos da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
iata_code | string | Código IATA de 3 letras |
name | string | Nome do aeroporto |
city | string | Cidade |
state | string | Estado (para aeroportos brasileiros) |
country_code | string | Código do país (ISO 2) |
is_international | boolean | Se é aeroporto internacional |
priority | number | Prioridade de exibição (maior = mais relevante) |
Buscar Voos
POST /api/v1/flights/searchRealiza uma busca de voos em tempo real nos fornecedores integrados.
Parâmetros
{
"origin": "GRU",
"destination": "GIG",
"departureDate": "2026-03-15",
"returnDate": "2026-03-20",
"adults": 2,
"children": 0,
"infants": 0,
"cabinClass": "economy"
}| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
origin | string | Sim | Código IATA do aeroporto de origem (ex: GRU, CGH, GIG) |
destination | string | Sim | Código IATA do aeroporto de destino |
departureDate | string | Sim | Data de ida no formato YYYY-MM-DD |
returnDate | string | Não | Data de volta (omita para só ida) |
adults | number | Sim | Número de adultos (1-9) |
children | number | Não | Número de crianças 2-11 anos (padrão: 0) |
infants | number | Não | Número de bebês 0-2 anos (padrão: 0) |
cabinClass | string | Não | Classe: economy, premium_economy, business, first |
directOnly | boolean | Não | Filtrar apenas voos diretos (padrão: false) |
maxStops | number | Não | Número máximo de escalas (0-3) |
provider | string | Não | Fornecedor: rextur (padrão) ou moblix |
Exemplo de Requisição
curl -X POST https://app.moblix.co/api/v1/flights/search \
-H "Authorization: Bearer mbx_live_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{
"origin": "GRU",
"destination": "GIG",
"departureDate": "2026-03-15",
"returnDate": "2026-03-20",
"adults": 2
}'const response = await fetch('https://app.moblix.co/api/v1/flights/search', {
method: 'POST',
headers: {
'Authorization': 'Bearer mbx_live_sua_chave_aqui',
'Content-Type': 'application/json'
},
body: JSON.stringify({
origin: 'GRU',
destination: 'GIG',
departureDate: '2026-03-15',
returnDate: '2026-03-20',
adults: 2
})
});
const data = await response.json();
console.log(data.flightGroups);import requests
response = requests.post(
'https://app.moblix.co/api/v1/flights/search',
headers={
'Authorization': 'Bearer mbx_live_sua_chave_aqui',
'Content-Type': 'application/json'
},
json={
'origin': 'GRU',
'destination': 'GIG',
'departureDate': '2026-03-15',
'returnDate': '2026-03-20',
'adults': 2
}
)
data = response.json()
print(data['flightGroups'])Resposta
{
"searchId": "search_abc123",
"flightGroups": [
{
"id": "group_xyz789",
"provider": "rextur",
"totalPrice": 1250.00,
"currency": "BRL",
"pricePerAdult": 625.00,
"outbound": {
"departure": {
"airport": "GRU",
"city": "São Paulo",
"datetime": "2026-03-15T08:00:00"
},
"arrival": {
"airport": "GIG",
"city": "Rio de Janeiro",
"datetime": "2026-03-15T09:05:00"
},
"duration": "1h 5min",
"airline": {
"code": "G3",
"name": "GOL"
},
"flightNumber": "G3 1234",
"stops": 0,
"segments": [
{
"departure": {
"airport": "GRU",
"datetime": "2026-03-15T08:00:00"
},
"arrival": {
"airport": "GIG",
"datetime": "2026-03-15T09:05:00"
},
"airline": "G3",
"flightNumber": "1234",
"aircraft": "Boeing 737-800",
"cabinClass": "economy"
}
]
},
"inbound": {
"departure": {
"airport": "GIG",
"city": "Rio de Janeiro",
"datetime": "2026-03-20T18:00:00"
},
"arrival": {
"airport": "GRU",
"city": "São Paulo",
"datetime": "2026-03-20T19:10:00"
},
"duration": "1h 10min",
"airline": {
"code": "G3",
"name": "GOL"
},
"flightNumber": "G3 1235",
"stops": 0,
"segments": [...]
},
"baggage": {
"included": {
"carryOn": "1 x 10kg",
"checked": "0"
},
"purchasable": true
},
"fareRules": {
"refundable": false,
"changeable": true,
"changeFeeBRL": 200.00
}
}
],
"searchParams": {
"origin": "GRU",
"destination": "GIG",
"departureDate": "2026-03-15",
"returnDate": "2026-03-20",
"adults": 2,
"children": 0,
"infants": 0
},
"timestamp": "2026-01-26T10:30:00Z"
}Estrutura da Resposta
FlightGroup
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID único do grupo de voos (usar para reserva) |
provider | string | Fornecedor (rextur, etc.) |
totalPrice | number | Preço total para todos os passageiros |
currency | string | Moeda (BRL) |
pricePerAdult | number | Preço por adulto |
outbound | Flight | Voo de ida |
inbound | Flight | Voo de volta (quando aplicável) |
baggage | Baggage | Informações de bagagem |
fareRules | FareRules | Regras da tarifa |
Flight (Trecho)
| Campo | Tipo | Descrição |
|---|---|---|
departure | Location | Informações de partida |
arrival | Location | Informações de chegada |
duration | string | Duração total do voo |
airline | Airline | Companhia aérea |
flightNumber | string | Número do voo |
stops | number | Número de escalas |
segments | Segment[] | Detalhes de cada segmento |
Segment (Segmento/Escala)
| Campo | Tipo | Descrição |
|---|---|---|
departure | Location | Partida do segmento |
arrival | Location | Chegada do segmento |
airline | string | Código da companhia |
flightNumber | string | Número do voo |
aircraft | string | Modelo da aeronave |
cabinClass | string | Classe da cabine |
Códigos IATA Comuns (Brasil)
| Código | Cidade | Aeroporto |
|---|---|---|
GRU | São Paulo | Guarulhos |
CGH | São Paulo | Congonhas |
GIG | Rio de Janeiro | Galeão |
SDU | Rio de Janeiro | Santos Dumont |
BSB | Brasília | Internacional |
CNF | Belo Horizonte | Confins |
SSA | Salvador | Deputado Luís Eduardo |
REC | Recife | Guararapes |
FOR | Fortaleza | Pinto Martins |
POA | Porto Alegre | Salgado Filho |
CWB | Curitiba | Afonso Pena |
FLN | Florianópolis | Hercílio Luz |
Notas Importantes
A busca de voos pode levar alguns segundos pois consulta fornecedores em tempo real.
Os preços e disponibilidade são dinâmicos. Recomendamos criar a reserva logo após a busca para garantir o preço.
Rate Limit
| Endpoint | Limite |
|---|---|
/flights/search | 30 req/min |
O rate limit de busca é menor devido ao custo computacional de consultar múltiplos fornecedores.