Developer Docs
Infiny Now
Referência técnica da entrega imediata Infiny, incluindo cotação, solicitação, rotas multiponto, cancelamento, status e localização do motorista.
Nesta página
Produto
O Infiny Now recebe a origem, os destinos e os volumes, calcula o valor, disponibiliza a corrida para motoristas elegíveis e devolve o andamento por consulta e webhook.
Disponível
Ciclo completo da entrega
Cotação, criação, cancelamento, consulta de status e eventos assíncronos já fazem parte da API.
Disponível
Localização do motorista
A posição mais recente fica disponível durante a corrida, com horário, idade do dado, precisão e indicador de atualização antiga.
Disponível
Rotas de até quatro pontos
A rota é ofertada e aceita como uma unidade indivisível, com sequência A/B/C/D, distância total e valor fechado.
Escopo operacional inicial
Matriz de disponibilidade
| Capacidade | Status | Comportamento |
|---|---|---|
| Entrega com um destino | Disponível | Um ponto de coleta e um ponto de entrega por oferta ao motorista. |
| Vários destinos no mesmo payload | Disponível | A API aceita até três dropoffs sob o mesmo deliveryId e mantém a ordem informada. |
| Rota atômica A/B/C/D | Disponível | Aceite único e transacional, sequência bloqueada, valor fechado e exclusividade do motorista. |
| Retorno à origem | Disponível | Entrega ou coleta com retorno ao ponto inicial, quando indicado na operação. |
Integração
Todas as chamadas usam o token exclusivo criado no painel de integrações. O mesmo token identifica e isola pedidos, status e localização de cada integrador.
Header obrigatório
httpAuthorization: Bearer SEU_TOKEN_INFINY_NOW
Content-Type: application/jsonFluxo ponta a ponta
- Configure no painel a URL HTTPS que receberá os eventos e gere o Bearer Token do Infiny Now.
- Consulte POST /api/quotation-delivery com os mesmos dados que serão usados na solicitação.
- Crie a corrida em POST /api/request-delivery e armazene o deliveryId retornado.
- Trate o webhook como canal principal de mudança de status e use a consulta de entrega para reconciliação.
- Depois da atribuição do motorista, consulte a localização enquanto a corrida estiver ativa.
- Quando necessário, cancele pelo deliveryId e trate retorno à origem ou taxa conforme o estágio operacional.
Proteja e rotacione o token
Contrato de dados
A cotação e a criação recebem a mesma estrutura. Isso evita divergência entre o preço consultado e os dados enviados para a operação.
Campos principais
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| vehicleType | string | Sim | MOTORCYCLE ou CAR. |
| pickup.contacts | object | Sim | Nome e telefone do contato no ponto de retirada. |
| pickup.address | object | Sim | Endereço completo e latitude/longitude obrigatórias da origem. |
| dropoffs | array | Sim | De um a três destinos. Endereço é obrigatório; coordenadas podem vir no endereço ou em coordinates. A ordem enviada define B, C e D. |
| dropoffs[].externalId | string | Recomendado | Identificador único do pedido no integrador para conciliação e auditoria. |
| dropoffs[].contacts | object | Não | Nome e telefone do recebedor. |
| orderPackages | array | Não | Descrição, altura, largura, comprimento, peso e quantidade dos volumes. |
| deliveryMode | string | Não | Modalidade operacional. Use DEFAULT no fluxo padrão, individual ou multiponto. |
Exemplo de entrega imediata
json{
"vehicleType": "MOTORCYCLE",
"pickup": {
"contacts": {
"name": "Loja Centro",
"phoneNumber": "11999999999"
},
"address": {
"city": "São Paulo",
"state": "São Paulo",
"street": "Avenida Paulista",
"number": "1000",
"zipcode": "01310-100",
"district": "Bela Vista",
"country": "Brasil",
"complement": "Loja 12",
"latitude": -23.561414,
"longitude": -46.655881
}
},
"dropoffs": [
{
"externalId": "PEDIDO-28383873",
"contacts": {
"name": "Destinatário",
"phoneNumber": "11988888888"
},
"coordinates": {
"latitude": -23.572001,
"longitude": -46.641078
},
"address": {
"city": "São Paulo",
"state": "São Paulo",
"street": "Rua Vergueiro",
"number": "500",
"zipcode": "01504-000",
"district": "Liberdade",
"country": "Brasil",
"complement": "Apto 42"
}
}
],
"orderPackages": [
{
"description": "Pacote",
"height": 16,
"width": 11,
"length": 4,
"weight": 1,
"quantity": 1
}
],
"deliveryMode": "DEFAULT"
}Referência
Os cinco endpoints abaixo estão protegidos pelo mesmo Bearer Token e operam no host de produção https://use.infiny.com.br.
POST
Cotar entrega
Calcula o valor da entrega com base no veículo, origem e destinos sem criar objetos operacionais.
/api/quotation-delivery
Parâmetros
| Campo | Tipo | Obrigatório | Descrição | Exemplo / default |
|---|---|---|---|---|
| body | DeliveryRequest | Sim | Payload completo descrito na seção anterior. | — |
Cotação
bashcurl -X POST "https://use.infiny.com.br/api/quotation-delivery" \
-H "Authorization: Bearer SEU_TOKEN_INFINY_NOW" \
-H "Content-Type: application/json" \
--data @delivery.json200 OK
json{
"shippingValue": 18.33
}Respostas
| Status | Quando acontece | Formato |
|---|---|---|
| 200 | Cotação calculada com sucesso. | — |
| 400 | Não foi possível obter preço para os dados enviados. | — |
| 401 | Bearer Token ausente ou inválido. | — |
| 422 | Payload inválido ou campo obrigatório ausente. | — |
POST
Solicitar entrega
Cria uma rota individual ou multiponto, gera o deliveryId e disponibiliza uma única oferta ao motorista.
/api/request-delivery
Parâmetros
| Campo | Tipo | Obrigatório | Descrição | Exemplo / default |
|---|---|---|---|---|
| body | DeliveryRequest | Sim | Use os mesmos dados enviados na cotação. | — |
Solicitação
bashcurl -X POST "https://use.infiny.com.br/api/request-delivery" \
-H "Authorization: Bearer SEU_TOKEN_INFINY_NOW" \
-H "Content-Type: application/json" \
--data @delivery.json201 Created
json{
"deliveryId": "366d4b54-8793-4f52-9918-4b2124cb56f4",
"shippingValue": 18.33,
"status": "PENDING",
"route": {
"routeId": "366d4b54-8793-4f52-9918-4b2124cb56f4",
"status": "AVAILABLE",
"pointsCount": 2,
"fixedValue": 18.33,
"totalDistanceKm": 2.41,
"vehicleType": "MOTORCYCLE",
"acceptMode": "WHOLE_ROUTE",
"immutable": true,
"points": [
{ "label": "A", "type": "pickup" },
{ "label": "B", "type": "dropoff" }
]
},
"driver": {
"name": "",
"phone": "",
"coordinates": {
"latitude": null,
"longitude": null
}
},
"orders": [
{
"status": "PENDING",
"externalId": "PEDIDO-28383873",
"point": "B",
"coordinates": {
"latitude": -23.572001,
"longitude": -46.641078
},
"address": {
"city": "São Paulo",
"state": "São Paulo",
"street": "Rua Vergueiro",
"number": "500",
"zipcode": "01504000",
"district": "Liberdade",
"country": "Brasil",
"complement": "Apto 42"
}
}
]
}Respostas
| Status | Quando acontece | Formato |
|---|---|---|
| 201 | Rota criada, deliveryId emitido e sequência A/B/C/D bloqueada na ordem do payload. | — |
| 400 | Preço indisponível para a solicitação. | — |
| 401 | Bearer Token ausente ou inválido. | — |
| 404 | Ponto de retirada não vinculado à conta da integração. | — |
| 422 | Payload inválido. | — |
POST
Cancelar entrega
Cancela os objetos ligados ao deliveryId. Depois da coleta, o fluxo pode ser convertido em retorno à origem.
/api/cancel-delivery/{deliveryId}
Parâmetros
| Campo | Tipo | Obrigatório | Descrição | Exemplo / default |
|---|---|---|---|---|
| deliveryId | string | Sim | Identificador recebido na criação e enviado na URL. | — |
| reason | string | Opcional | Motivo do cancelamento, limitado a 255 caracteres. | — |
Cancelamento
bashcurl -X POST "https://use.infiny.com.br/api/cancel-delivery/366d4b54-8793-4f52-9918-4b2124cb56f4" \
-H "Authorization: Bearer SEU_TOKEN_INFINY_NOW" \
-H "Content-Type: application/json" \
-d '{"reason":"CLIENT_NOT_FOUND"}'200 OK
json{
"deliveryId": "366d4b54-8793-4f52-9918-4b2124cb56f4",
"shippingValue": 18.33,
"driver": {
"name": "Nome do motorista",
"phone": "11999999999",
"coordinates": {
"latitude": -23.561414,
"longitude": -46.655881
}
},
"orders": [
{
"status": "FAILED",
"externalId": "PEDIDO-28383873",
"coordinates": {
"latitude": -23.572001,
"longitude": -46.641078
},
"address": {
"city": "São Paulo",
"state": "São Paulo",
"street": "Rua Vergueiro",
"number": "500",
"zipcode": "01504000",
"district": "Liberdade",
"country": "Brasil",
"complement": "Apto 42"
}
}
]
}Respostas
| Status | Quando acontece | Formato |
|---|---|---|
| 200 | Cancelamento processado. | — |
| 401 | Bearer Token ausente ou inválido. | — |
| 404 | deliveryId inexistente para este token. | — |
| 422 | Motivo ou deliveryId de corpo inválido. | — |
GET
Consultar entrega
Retorna valor, motorista e o status de cada objeto vinculado ao deliveryId.
/api/info-delivery/{deliveryId}
Parâmetros
| Campo | Tipo | Obrigatório | Descrição | Exemplo / default |
|---|---|---|---|---|
| deliveryId | string | Sim | Identificador recebido na criação e enviado na URL. | — |
Consulta
bashcurl "https://use.infiny.com.br/api/info-delivery/366d4b54-8793-4f52-9918-4b2124cb56f4" \
-H "Authorization: Bearer SEU_TOKEN_INFINY_NOW"200 OK
json{
"deliveryId": "366d4b54-8793-4f52-9918-4b2124cb56f4",
"shippingValue": 18.33,
"driver": {
"name": "Nome do motorista",
"phone": "11999999999",
"coordinates": {
"latitude": -23.561414,
"longitude": -46.655881
}
},
"orders": [
{
"status": "ACCEPT",
"externalId": "PEDIDO-28383873",
"coordinates": {
"latitude": -23.572001,
"longitude": -46.641078
},
"address": {
"city": "São Paulo",
"state": "São Paulo",
"street": "Rua Vergueiro",
"number": "500",
"zipcode": "01504000",
"district": "Liberdade",
"country": "Brasil",
"complement": "Apto 42"
}
}
]
}Respostas
| Status | Quando acontece | Formato |
|---|---|---|
| 200 | Entrega encontrada. | — |
| 401 | Bearer Token ausente ou inválido. | — |
| 404 | deliveryId inexistente para este token. | — |
GET
Acompanhar localização do motorista
Entrega a posição mais recente do motorista enquanto a corrida estiver ativa e atribuída a um único motorista.
/api/location-delivery/{deliveryId}
Parâmetros
| Campo | Tipo | Obrigatório | Descrição | Exemplo / default |
|---|---|---|---|---|
| deliveryId | string | Sim | Identificador recebido na criação e enviado na URL. | — |
Localização
bashcurl "https://use.infiny.com.br/api/location-delivery/366d4b54-8793-4f52-9918-4b2124cb56f4" \
-H "Authorization: Bearer SEU_TOKEN_INFINY_NOW"200 OK com rastreio disponível
json{
"deliveryId": "366d4b54-8793-4f52-9918-4b2124cb56f4",
"status": "ACCEPT",
"tracking": {
"available": true,
"reason": null,
"updatedAt": "2026-08-10T18:35:24-03:00",
"ageSeconds": 8,
"stale": false
},
"driver": {
"name": "Nome do motorista",
"coordinates": {
"latitude": -23.561414,
"longitude": -46.655881,
"accuracyMeters": 8.4
}
},
"orders": [
{
"externalId": "PEDIDO-28383873",
"status": "ACCEPT"
}
]
}Respostas
| Status | Quando acontece | Formato |
|---|---|---|
| 200 | Consulta processada, com tracking disponível ou motivo de indisponibilidade. | — |
| 401 | Bearer Token ausente ou inválido. | — |
| 404 | deliveryId inexistente para este token. | — |
Janela e atualização do rastreio
Trate indisponibilidade sem erro de integração
Eventos
A URL configurada no painel recebe um evento consolidado da rota com todos os destinos. A consulta por deliveryId deve ser usada para reconciliação e suporte.
Estados enviados
| Status | Significado |
|---|---|
| PENDING | Entrega criada e aguardando motorista. |
| ACCEPT | Motorista atribuído à entrega. |
| COLLECTED | Objeto coletado e em deslocamento. |
| DELIVERED | Entrega concluída. |
| FAILED | Entrega cancelada, falhou ou entrou em fluxo de devolução. |
Webhook de atualização da entrega
O Infiny Now envia POST para a URL cadastrada e autentica a chamada com o mesmo token no formato Authorization: Bearer <TOKEN>.
Campos enviados
| Campo | Tipo | Obrigatório | Descrição | Exemplo / default |
|---|---|---|---|---|
| deliveryId | string | Sim | Identificador da entrega emitido na criação. | — |
| status | string | Sim | Estado agregado da rota. | — |
| route | object | Sim | Metadados da rota, quantidade e sequência A/B/C/D, distância, valor fechado e modo de aceite integral. | — |
| driver | object | Sim | Nome, telefone e última coordenada disponível do motorista. | — |
| orders | array | Sim | Todos os destinos da rota, em ordem, com ponto, externalId, status, coordenadas e endereço. | — |
Evento ACCEPT
json{
"deliveryId": "366d4b54-8793-4f52-9918-4b2124cb56f4",
"status": "ACCEPT",
"route": {
"routeId": "366d4b54-8793-4f52-9918-4b2124cb56f4",
"status": "ACCEPTED",
"pointsCount": 2,
"fixedValue": 18.33,
"totalDistanceKm": 2.41,
"vehicleType": "MOTORCYCLE",
"acceptMode": "WHOLE_ROUTE",
"immutable": true,
"points": [
{ "label": "A", "type": "pickup" },
{ "label": "B", "type": "dropoff" }
]
},
"driver": {
"name": "Nome do motorista",
"phone": "11999999999",
"coordinates": {
"latitude": -23.561414,
"longitude": -46.655881
}
},
"orders": [
{
"status": "ACCEPT",
"externalId": "PEDIDO-28383873",
"point": "B",
"coordinates": {
"latitude": -23.572001,
"longitude": -46.641078
},
"address": {
"city": "São Paulo",
"state": "São Paulo",
"street": "Rua Vergueiro",
"number": "500",
"zipcode": "01504000",
"district": "Liberdade",
"country": "Brasil",
"complement": "Apto 42"
}
}
]
}Resposta rápida e idempotência
Multiponto
Cada solicitação gera uma única rota sem motorista atribuído. A oferta reúne uma coleta A e até três entregas B/C/D, aceitas e executadas como uma unidade.
Sequência apresentada no aplicativo
| Ponto | Função | Informação no card |
|---|---|---|
| A | Coleta | Endereço da origem, contato e instruções de retirada. |
| B | Entrega 1 | Primeiro destino e identificador do pedido. |
| C | Entrega 2 | Segundo destino, quando existir. |
| D | Entrega 3 | Terceiro destino, quando existir. |
Três destinos na ordem B/C/D
json{
"dropoffs": [
{
"externalId": "PEDIDO-B",
"coordinates": { "latitude": -23.572001, "longitude": -46.641078 },
"address": { "city": "São Paulo", "state": "SP", "street": "Rua B", "number": "100", "zipcode": "01504-000", "district": "Liberdade" }
},
{
"externalId": "PEDIDO-C",
"coordinates": { "latitude": -23.580112, "longitude": -46.632440 },
"address": { "city": "São Paulo", "state": "SP", "street": "Rua C", "number": "200", "zipcode": "04001-000", "district": "Paraíso" }
},
{
"externalId": "PEDIDO-D",
"coordinates": { "latitude": -23.589410, "longitude": -46.625701 },
"address": { "city": "São Paulo", "state": "SP", "street": "Rua D", "number": "300", "zipcode": "04101-000", "district": "Vila Mariana" }
}
]
}Regras ativas do aceite
- No máximo quatro pontos de atendimento: uma coleta A e até três entregas B/C/D.
- O card informa que se trata de uma rota, a quantidade de pontos, a distância total e o valor total fechado.
- Um único toque aceita todos os pontos dentro de uma transação com bloqueio concorrente.
- Depois do aceite, a composição e a ordem da rota ficam imutáveis; nenhum novo objeto pode ser adicionado.
- Enquanto tiver uma rota Infiny Now aberta, o motorista não pode aceitar outra rota nem adicionar entregas avulsas.
- Falha em um ponto não libera os demais: a rota continua vinculada ao mesmo motorista e segue a política de ocorrência ou retorno.
Suporte
Precisa validar um fluxo específico?
Se você estiver homologando uma integração ou precisar conferir um comportamento da API pública atual, fale com a equipe da Infiny antes de subir volume real.