Documentação do Mercado Livre

Confira todas as informações necessárias sobre as APIs Mercado Livre.
circulos azuis em degrade

Documentação do

Última atualização em 24/07/2024

Envios Flex

Importante:
Atualmente, esta modalidade de envio está disponível para vendedores da Argentina, Brasil, México, Chile, Colômbia, Uruguai, Peru e Equador.

Envios Flex é um serviço que permite aos vendedores realizarem envios por conta própria, os 7 dias da semana. Integra envios no dia ou no dia seguinte para melhorar os tempos de entrega e aumentar a penetração no mercado. Com Envios Flex, os vendedores podem ter maior controle e acompanhamento sobre seus envios, oferecendo um serviço mais rápido e eficiente aos seus clientes.


Saiba mais sobre:

Nota:
  • É fundamental respeitar o limite de 1000 rpm em todas as chamadas aos recursos do FLEX. Manter esse limite garante um uso eficiente e equitativo dos recursos disponíveis.
  • O aplicativo de entregas flex do Mercado Livre é necessário para escanear as entregas e fazer as rotas de entrega. No entanto, não está disponível para integrações, então as empresas de logística deverão se adaptar.

Visão do vendedor:




Áreas de cobertura por países

Para poder oferecer Envíos Flex, o endereço de envio do vendedor deve estar habilitado para alguma das áreas de cobertura conforme o país:

País Cobertura
Argentina AMBA (Área Metropolitana de Buenos Aires)
Córdoba
Brasil São Paulo
Rio de Janeiro
Brasília
Belo Horizonte
Porto Alegre
Salvador Bahia
Curitiba
México CDMX (Zona Metropolitana do Vale do México)
Mérida
Chile Santiago (Região Metropolitana)
Valparaíso
Colômbia Bogotá
Medellín
Cali
Uruguai Montevidéu
Canelones
Peru Lima (Área Metropolitana)
Equador Quito

Configurar um usuário de teste

Para configurar a funcionalidade de Envíos Flex para usuários de teste, leve em conta:

  1. Faça login na conta em que deseja habilitar o Envio Flex.
  2. Certifique-se de que a conta tenha publicações ativas no ME2.
  3. Verifique se sua conta possui uma reputação Amarela ou Verde.
  4. Certifique-se de ter um endereço de e-mail compatível com a área de cobertura do seu país.
  5. Configure o endereço de envio de acordo com as áreas de cobertura nos países correspondentes.
  6. Ative Envíos Flex na conta.

Depois de concluir essas etapas, você deve conseguir usar o Envíos Flex como um usuário de teste.


Nota:
É recomendável criar um novo user test com a nova configuração para testar este fluxo atualizado.

Consultar inscrições de um usuário

Este endpoint permite consultar as inscrições que um usuário possui.

  • Se o usuário ativou apenas Flex, ele terá uma única inscrição.
  • Se o usuário também ativou Turbo, ele terá duas inscrições, já que para ativar o Turbo, o usuário deve primeiro ter o Flex ativo.
Nota:
  • Uma inscrição é criada quando um vendedor começa a usar Envíos Flex em qualquer modalidade.
  • No contexto das inscrições, cada uma possui um identificador único chamado "service_id". Este identificador é essencial para acessar a configuração da inscrição e fazer alterações nela. Para este caso, será utilizado o service_id da modalidade Flex.

Chamada:

  curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shipping/flex/sites/$SITE_ID/users/$USER_ID/subscriptions/v1

Exemplo:

  curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shipping/flex/sites/MLA/users/1438865529/subscriptions/v1

Resposta:

  [
    {
        "id": 111181,
        "site_id": "MLA",
        "user_id": 1438865529,
        "mode": "FLEX",
        "configuration_type": {
        	"coverage": "zone",
        	"delivery": "custom"
        },       
        "service_id": 736230,
        "status": {
            "id": "in",
        },
        "creation_date": "2023-08-02T06:34:40Z"
    },
    {
        "id": 111183,
        "site_id": "MLA",
        "user_id": 1438865529,
        "mode": "TURBO",
        "configuration_type": {
        	"coverage": "radius",
        	"delivery": "accurate" 
        },  
        "service_id": 738216,
        "status": {
            "id": "in",
        },
        "creation_date": "2023-08-02T06:35:30Z"
    }
]

Parâmetros de resposta:

  • id: ID único da assinatura.
  • site_id: Identificador do país.
  • user_id: ID do usuário.
  • mode: Tipo de assinatura ("FLEX" neste caso).
  • configuration_type: Tipo de configuração da assinatura ("FLEX" neste caso).
  • configuration_type.coverage: Tipo de cobertura.
  • configuration_type.delivery: Tipo de entrega.
  • service_id: ID do serviço associado à assinatura.
  • status: Estado da assinatura.
  • status.id: Tipos de estados da assinatura:
    • in: A assinatura está ativa. Nesse estado, o usuário pode mudar sua configuração e receberá pedidos de envio para o modo de assinatura.
    • out: A assinatura não está ativa. Nesse estado, o usuário não pode mudar a configuração.
    • pending: A assinatura está pendente de ativação. Nesse estado, o usuário pode mudar sua configuração, embora não vá receber pedidos para realizar envios.
  • creation_date: Data de criação da assinatura.

Códigos de Estado de resposta:

Código Mensagem Descrição Recomendação
200 - OK - Configuração atualizada corretamente. -
400 - Bad Request empty site id O site_id está vazio Validar o site_id.
400 - Bad Request invalid site_id Site_id inválido Verificar se o site_id está habilitado para Envíos Flex.
400 - Bad Request can't access to resource Site_id inválido Verificar se o site_id está habilitado para Envíos Flex.
404 - Not Found user not found Usuário não encontrado Validar o user_id.

Consultar a configuração da assinatura

Este endpoint permite consultar a configuração das assinaturas que um usuário possui, neste caso para Flex.


Chamada:

  curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shipping/flex/sites/$SITE_ID/configuration/v3

Exemplo:

  curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shipping/flex/sites/MLA/configuration/v3

    {
      "query": "{ configuration (user_id: 1438865529, service_id: 736230) { address { id address_line city { id name } zip_code } subscription { site_id user_id service_id status { id } creation_date training_times { original { value unit } remaining { value unit } activation_date } } delivery_window is_moderated delivery_ranges { week { capacity type processing_time from to et_hour calculated_cutoff } saturday { capacity type processing_time from to et_hour calculated_cutoff } sunday { capacity type processing_time from to et_hour calculated_cutoff } } working_days zones { enabled id is_mandatory label neighborhoods price { cents currency_id decimal_separator fraction symbol } selected } availables { cutoff capacity_range { from to } ranges } disabled_features } }"
    }

Resposta:

  {
    "configuration": {
        "address": {
            "address_line": "Testing Street 1450",
            "city": {
                "id": "TUxBQlNBQTM3Mzda",
                "name": "Saavedra"
            },
            "id": "1316123989",
            "zip_code": "1430"
        },
        "availables": {
            "capacity_range":  {
               "from": 1,
               "to": 50
            },
            "cutoff": [
                12,
                13,
                14,
                15,
                16,
                17,
                18
            ],
            "ranges": [
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21
            ]
        },
        "delivery_ranges": {
            "saturday": null,
            "sunday": null,
            "week": [
                {
                    "calculated_cutoff": 14,
                    "capacity": 30,
                    "et_hour": 14,
                    "from": 12,
                    "processing_time": 0,
                    "to": 21,
                    "type": "cpt"
                }
            ]
        },
        "delivery_window": "same_day",
        "disabled_features": [
            "CUTOFF_BY_ZONE",
            "CAPACITY_BY_DAY"
        ],
        "is_moderated": false,
        "subscription": {
            "creation_date": "2023-08-02T06:34:40Z",
            "service_id": 736230,
            "site_id": "MLA",
            "status": {
                "id": "in"
            },
            "training_times": null,
            "user_id": 1438865529
        },
        "working_days": [
            "week"
        ],
        "zones": [
            {
                "enabled": true,
                "id": "Almirante_Brown",
                "is_mandatory": false,
                "label": "Almirante Brown",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "2409",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Avellaneda",
                "is_mandatory": false,
                "label": "Avellaneda",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "1769",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Berazategui",
                "is_mandatory": false,
                "label": "Berazategui",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "2409",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "CABA",
                "is_mandatory": false,
                "label": "CABA",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "1114",
                    "symbol": "$"
                },
                "selected": true
            },
            {
                "enabled": true,
                "id": "Esteban_Echeverria",
                "is_mandatory": false,
                "label": "Esteban Echeverría",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "2409",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Ezeiza",
                "is_mandatory": false,
                "label": "Ezeiza",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "2409",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Florencio_Varela",
                "is_mandatory": false,
                "label": "Florencio Varela",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "2409",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Hurlingham",
                "is_mandatory": false,
                "label": "Hurlingham",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "1769",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Ituzaingo",
                "is_mandatory": false,
                "label": "Ituzaingó",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "1769",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Jose_C_Paz",
                "is_mandatory": false,
                "label": "José C Paz",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "2409",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Lanus",
                "is_mandatory": false,
                "label": "Lanús",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "1769",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Lomas_de_Zamora",
                "is_mandatory": false,
                "label": "Lomas de Zamora",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "1769",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Malvinas_Argentinas",
                "is_mandatory": false,
                "label": "Malvinas Argentinas",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "2409",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "La_Matanza_1",
                "is_mandatory": false,
                "label": "La Matanza Norte",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "1769",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "La_Matanza_2",
                "is_mandatory": false,
                "label": "La Matanza Sur",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "2409",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Merlo",
                "is_mandatory": false,
                "label": "Merlo",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "2409",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Moreno",
                "is_mandatory": false,
                "label": "Moreno",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "2409",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Moron",
                "is_mandatory": false,
                "label": "Morón",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "1769",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Quilmes",
                "is_mandatory": false,
                "label": "Quilmes",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "2409",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "San_Fernando",
                "is_mandatory": false,
                "label": "San Fernando",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "1769",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "San_Isidro",
                "is_mandatory": false,
                "label": "San Isidro",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "1769",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "San_Martin",
                "is_mandatory": false,
                "label": "San Martín",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "1769",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "San_Miguel",
                "is_mandatory": false,
                "label": "San Miguel",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "2409",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Tigre",
                "is_mandatory": false,
                "label": "Tigre",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "2409",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Tres_De_Febrero",
                "is_mandatory": false,
                "label": "Tres de Febrero",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "1769",
                    "symbol": "$"
                },
                "selected": false
            },
            {
                "enabled": true,
                "id": "Vicente_Lopez",
                "is_mandatory": false,
                "label": "Vicente López",
                "neighborhoods": [],
                "price": {
                    "cents": "99",
                    "currency_id": "ARS",
                    "decimal_separator": ".",
                    "fraction": "1769",
                    "symbol": "$"
                },
                "selected": false
            }
        ]
    }
}

Parâmetros de resposta:

  • address: Informação sobre o endereço do usuário.
  • availables: Contém informações sobre capacidade, cortes e intervalos disponíveis para o serviço.
    • availables.capacity_range: Intervalo de valores para capacidade.
    • availables.cutoff: Detalhe dos cortes disponíveis.
    • availables.ranges: Detalhe dos intervalos disponíveis.
  • delivery_ranges: Informação sobre capacidade, cortes e intervalos disponíveis para os diferentes dias da semana.
    • delivery_ranges.saturday: Intervalos de entrega e capacidade para os sábados.
    • delivery_ranges.sunday: Intervalos de entrega e capacidade para os domingos.
    • delivery_ranges.week: Intervalos de entrega e capacidade para os dias da semana.
  • delivery_window: O tipo de serviço para a entrega. Os valores possíveis são "same_day" (entregas no mesmo dia) ou "next_day" (entregas no dia seguinte).
  • disabled_features: Características desabilitadas para o serviço, incluindo "CUTOFF_BY_ZONE" e "CAPACITY_BY_DAY".
  • is_moderated: Indica se o serviço está moderado (true/false).
  • subscription: Informação sobre a assinatura do usuário.
  • working_days: Dias úteis disponíveis.
  • zones: Informação sobre as zonas disponíveis para o serviço.
    • zones.selected: Indica se a zona está selecionada (true/false).

Códigos de Estado de resposta:

Código Mensagem Descrição Recomendação
200 - OK - Configuração atualizada corretamente. -
400 - Bad Request empty site id O site_id está vazio. Validar o site_id.
400 - Bad Request invalid site_id Site_id inválido. Verificar se o site_id está habilitado para Envíos Flex.
400 - Bad Request can't access to resource Site_id inválido. Verificar se o site_id está habilitado para Envíos Flex.
400 - Bad Request invalid JSON body O JSON é inválido. Verificar o esquema da query estabelecida.
400 - Bad Request invalid query GraphQL inválida para o esquema definido. Verificar o esquema da query estabelecida.
404 - Not Found subscriptions not found Não há assinatura para Envíos Flex para a combinação de user_id e service_id enviada. Verificar o user_id e o service_id no endpoint.
404 - Not Found user not found Usuário não encontrado. Verificar o user_id.
Nota:
Este endpoint é usado para validar os atributos com seus valores possíveis. Se desejar alterar ou modificar algum desses atributos, recomenda-se usar os endpoints descritos em Configurar Prazo de Entrega e Limite de Envios ou Ampliar Área de Cobertura Flex.

Configurar Prazo de Entrega e Limite de Envios

Através deste endpoint, é possível configurar diferentes aspectos para Envios Flex como:

  • Janela de Entrega
  • Intervalos de Horário de Entrega
  • Horário de Corte
  • Limite de envios

Chamada:

curl -X PUT -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shipping/flex/sites/$SITE_ID/users/$USER_ID/services/$SERVICE_ID/configuration/delivery/custom/v3

Exemplo:

curl -X PUT -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shipping/flex/sites/MLA/users/1438865529/services/736230/configuration/delivery/custom/v3

    {
            "delivery_window": "same_day",
            "delivery_ranges": {
                "week": [
                    {   
                        "from": 12,
                        "to": 21,
                        "capacity": 44,
                        "cutoff": 16
                    }
                ],
                "saturday": [
                    {
                        "from": 12,
                        "to": 21,
                        "capacity": 33,
                        "cutoff": 14
                    }
                ],
                "sunday": [
                    { 
                        "from": 12,
                        "to": 21,
                        "capacity": 33,
                        "cutoff": 14
                    }
                ]
            }
    }

Considerações:


O delivery_window é sempre necessário ao alterar qualquer configuração.

Os Intervalos de Horário de Entrega para dias da semana, sábado e domingo indicam de que hora (from) e até que hora (to) as entregas são realizadas. Esses valores devem ser enviados em:

  • delivery_ranges.week.from e delivery_ranges.week.to
  • delivery_ranges.saturday.from e delivery_ranges.saturday.to (se trabalha aos sábados)
  • delivery_ranges.sunday.from e delivery_ranges.sunday.to (se trabalha aos domingos)

O from e o to são sempre necessários ao alterar qualquer configuração.

O valor da Capacidade (limite de envios) deve ser enviado em:

  • delivery_ranges.week.capacity
  • delivery_ranges.saturday.capacity (se trabalha aos sábados)
  • delivery_ranges.sunday.capacity (se trabalha aos domingos)

Atualmente, a API só suporta o mesmo valor para os 3 casos.

O valor do Cutoff Geral deve ser enviado em:

  • delivery_ranges.week.cutoff
  • delivery_ranges.saturday.cutoff (se trabalha aos sábados)
  • delivery_ranges.sunday.cutoff (se trabalha aos domingos)

O cutoff é sempre necessário ao alterar qualquer configuração.


Códigos de Estado de resposta:

Código Mensagem Descrição Recomendação
200 - OK - Configuração atualizada corretamente. -
400 - Bad Request invalid user_id User_id inválido. Validar o user_id (deve ser um número inteiro).
400 - Bad Request invalid service_id Service_id inválido. Validar o service_id (deve ser um número inteiro).
400 - Bad Request invalid JSON body O JSON é inválido. Validar o esquema de query estabelecida.
403 - Forbidden can't update delivery custom Não é possível atualizar a configuração porque o usuário está moderado ou intervenido. Não permitir mudar configurações de usuários moderados ou intervenidos.
404 - Not Found can't update delivery custom Não é possível atualizar a configuração porque não existe inscrição no Envíos Flex para a combinação de user_id e service_id enviada. Validar o user_id e service_id no endpoint.

Ampliar área de cobertura Flex

Este endpoint permite adicionar mais áreas de cobertura para Envíos Flex.


Chamada:

curl -X PUT -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shipping/flex/sites/$SITE_ID/users/$USER_ID/services/$SERVICE_ID/configuration/coverage/zone/v3

Exemplo:

curl -X PUT -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shipping/flex/sites/MLA/users/1438865529/services/736230/configuration/coverage/zone/v3

    {
      "zones": [
        {
          "id": "Almirante_Brown"
        },
        {
          "id": "Avellaneda"
        },
        {
          "id": "CABA" 
        }
      ]
    }

Códigos de Estado de resposta:

Código Mensagem Descrição Recomendação
200 - OK - Configuração atualizada corretamente. -
400 - Bad Request invalid user_id User_id inválido. Validar o user_id (deve ser um número inteiro).
400 - Bad Request invalid service_id Service_id inválido. Validar o service_id (deve ser um número inteiro).
400 - Bad Request invalid JSON body O JSON é inválido. Validar o esquema de query estabelecida.
403 - Forbidden can't update coverage zone Não é possível atualizar a configuração porque o usuário está moderado ou intervenido. Não permitir mudar configurações de usuários moderados ou intervenidos.
404 - Not Found can't update coverage zone Não é possível atualizar a configuração porque não existe inscrição no Envíos Flex para a combinação de user_id e service_id enviada. Validar o user_id e service_id no endpoint.
Nota:
Para adicionar ou remover zonas Flex, é necessário usar o método PUT e enviar a lista correspondente de zonas.

Consultar estado do item

Antes de ativar flex a um item, é necessário realizar uma validação para garantir que o item esteja no estado 'active'. Isso pode ser verificado por meio do endpoint para obter um item e depois consultar o atributo 'status'.

Chamada:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/items/$ITEM_ID?attributes=id,status,id,status,shipping.mode,shipping.logistic_type,shipping.tags,shipping.free_shipping

Exemplo:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/items/MLB4879366528?attributes=id,status,id,status,shipping.mode,shipping.logistic_type,shipping.tags,shipping.free_shipping

Resposta:


{
    "status": "active",
    "id": "MLB4879366528",
    "shipping": {
        "tags": [
            "self_service_in",
            "mandatory_free_shipping"
        ],
        "free_shipping": true,
        "logistic_type": "drop_off",
        "mode": "me2"
    }
}
Nota:
  • Este processo de validação é essencial para garantir que "flex" seja ativado corretamente quando o item estiver no estado adequado.
  • Para mais referência, confira Publicar produtos e Busca de itens.

Parâmetros de resposta:

  • id: ID da publicação
  • status: Status da publicação
  • shipping.mode: Modo de envio da publicação.
  • shipping.logistic_type: Tipo logístico da publicação
  • shipping.tags: Tags de shipping, incluindo a ativação do Flex.
    • self_service_in: Item com Flex ativado
    • self_service_out: Item não tem Flex ativado
    • self_service_available: Item é permitido enviar por Flex.

Consultar se a categoria permite Flex

Chamada:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/categories/MLB438794/shipping_preferences

Exemplo:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/categories/MLB438794/shipping_preferences

Resposta:

{
  ...
  "logistics": [
    ...
    {
      "types": [
        "drop_off",
        "xd_drop_off",
        "self_service",
        "cross_docking",
        "fulfillment"
      ],
      "mode": "me2"
    }
  ],
  ...
  "category_id": "MLB438794"
}

Nota: Para saber que a categoria permite Flex, deve estar presente a opção self_service, dentro do array logistics.

Importante:
  • A ativação desta funcionalidade ocorrerá de forma progressiva e pode ser aplicada de maneira diferenciada por domínio e por país.
  • Os vendedores serão informados através de "Notificações", permitindo-lhes decidir se desejam optar pelo serviço Flex para os itens que possuem nesses domínios.

Consultar Flex no item

Este endpoint permite verificar se o item está atualmente sendo oferecido com Envios Flex ou não.


Chamada:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/sites/$SITE_ID/shipping/selfservice/items/$ITEM_ID

Exemplo:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/sites/MLB/shipping/selfservice/items/MLB1493119403

Resposta:

Status: 204 No Content

Códigos de Estado de resposta:

Código Mensagem Descrição Recomendação
204 - No Content - Item habilitado para Envios Flex. -
403 - Forbidden item down Item não oferece Envios Flex. Validar as modalidades de envio do item.
404 - Not Found item not found O país está desabilitado para Envios Flex. Validar os países com Envios Flex.

Nota:
  • O endpoint items oferece informações relevantes sobre o item, como:
  • O atributo tags que fornece detalhes adicionais sobre se o item tem Envios Flex ativo (self_service_in) ou não (self_service_out).

Ativar Flex no item

Este endpoint permite ativar a opção de Envios Flex no item.


Chamada:

curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/sites/$SITE_ID/shipping/selfservice/items/$ITEM_ID

Exemplo:

curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/sites/MLB/shipping/selfservice/items/MLB1493119403

Resposta:

Status: 204 No Content

Códigos de Estado de resposta:

Código Mensagem Descrição Recomendação
204 - No Content - Item habilitado para Envios Flex. -
400 - Bad request item is already in flex Item já tem Flex ativo Validar que o Item já possua Flex prévio a esta requisição
403 - Forbidden item down Item não oferece Envios Flex. Validar as modalidades de envio do item.
404 - Not Found item not found O país está desabilitado para Envios Flex. Validar os países com Envios Flex.

Desativar Flex no item

Este endpoint permite desativar a opção de Envios Flex no item.


Chamada:

curl -X DELETE -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/sites/$SITE_ID/shipping/selfservice/items/$ITEM_ID

Exemplo:

curl -X DELETE -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/sites/MLB/shipping/selfservice/items/MLB1493119403

Resposta:

Status: 204 No Content

Códigos de Estado de resposta:

Código Mensagem Descrição Recomendação
204 - No Content - Item desabilitado para envios Flex. -
403 - Forbidden item down Item não oferece Envios Flex. Validar as modalidades de envio do item.
404 - Not Found item not found O país está desabilitado para Envios Flex. Validar os países com Envios Flex.

Nota:
  • Lembre-se que a ativação ou desativação de um item no Flex deve ser realizada exclusivamente pelo vendedor. Para gerenciar essas mudanças, o vendedor deve usar os endpoints anteriores ou cancelar sua assinatura na logística Flex.
  • É importante evitar processos automáticos de ativação, pois podem interferir no fluxo operacional. A seleção dos itens a serem ativados no Flex deve ser uma decisão deliberada do vendedor, garantindo que os processos permaneçam controlados e eficientes.

Identificar Ordens Flex

Este endpoint determina se um envio será realizado pelo serviço Flex, permitindo concluir a transação de forma efetiva.


Chamada:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shipments/$SHIPMENT_ID

Exemplo:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shipments/42469883906

Resposta:

"tags": [
        "self_service"
    ]

Identificar o código do transportador

Este endpoint facilita a identificação do transportador atribuído a um envio, o que é útil para registrar alterações de transportador durante o processo de entrega.


Chamada:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/flex/sites/$SITE_ID/shipments/$SHIPMENT_ID/assignment/v1

Exemplo:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/flex/sites/MLA/shipments/40070866801/assignment/v1

Resposta:

{
    "driver_id": 1234
}

Códigos de Estado de resposta:

Código Mensagem Descrição Recomendação
200 - OK - Transportador atribuído. -
404 - Not Found shipment_id not found Não possui transportador atribuído ou a rota não está aberta (envio pendente de ser entregue). Não existe (shipment inexistente). Validar o estado do envio ou shipment_id.

Nota:

Estados e subestados Flex

Este endpoint permite conhecer os estados e subestados do fluxo de envios Flex.


Chamada:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shipments/$SHIPMENT_ID

Exemplo:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shipments/43319685225

Respostas:

{
    ...
      "comments": null,
      "substatus": "receiver_absent",
      "date_created": "2024-04-23T10:48:51.245-04:00",
      "date_first_printed": "2024-04-23T13:14:16.093-04:00",
    ...
     "status": "shipped",
        }

Parâmetros de resposta:

  • status: O estado geral do pacote. Os valores possíveis são:
    • delivered: pacotes entregues.
    • ready_to_ship: pacotes prontos para despachar.
    • cancelled: pacotes cancelados.
    • not_delivered: pacotes rejeitados ou que não será possível entregá-los. Dentro deste status temos os seguintes substatus possíveis:
      • Rejeitado pelo comprador.
        • refused_delivery: O comprador rejeitou a entrega.
    • shipped: pacotes que estão a caminho do comprador.
      • Saída para rota: O pedido está a caminho.
        • out_for_delivery: O pacote está a caminho para ser entregue.
        • soon_deliver: O motorista notificou o comprador que seu pacote é o próximo na rota de entrega.
      • Endereço incorreto ou incompleto.
        • bad_address: O motorista registrou que o endereço fornecido está incorreto.
      • Não há ninguém no endereço.
        • receiver_absent: O motorista marcou que o comprador estava ausente no momento da entrega.
      • O comprador decide reprogramar a compra desde seu aplicativo.
        • buyer_rescheduled: O comprador solicitou reprogramar a entrega.
      • O motorista marcou como entregue longe do endereço do comprador.
        • delivery_blocked: O motorista indicou que o pacote foi entregue, mas longe do endereço do comprador. Solicita-se ao comprador que confirme se recebeu o envio.
      • O vendedor marca como entregue o envio desde seu aplicativo.
        • waiting_for_confirmation: O pacote foi marcado como entregue pelo vendedor após a data prometida. Solicita-se ao comprador que confirme se recebeu o envio.

Convivencia Full e Flex

Para gerenciar o estoque do Flex quando o vendedor tem Fulfillment ativo em sua publicação, disponibilizamos a funcionalidade de estoque distribuído.

Consulte a documentação para entender o funcionamento: Convivência Full e Flex


Convivencia Custom / Not_Specified e Flex

Com este desenvolvimento, os domínios que não utilizam Mercado Envios 2 (ME2) têm a opção de optar por uma logística particular, como Flex, sem que essa escolha seja obrigatória.

Quando um domínio sem ME2 é ativado, os itens desse domínio podem habilitar a opção de logística "self-service" sob o modelo ME2 como uma alternativa opcional. Isso permite que os vendedores ativem o Flex para esses itens, se assim o desejarem.

Para permitir essa coexistência de ME2 e Não ME2, foram feitos ajustes permitindo agora a venda dos seguintes produtos sob a logística Flex:

  • Inflamável: Produtos com risco de inflamação.
  • Pack 4 Pneus: Pacotes que contêm quatro pneus.
  • Não-Maquinável: Itens que não podem ser processados por máquinas.
  • Hazmat: Materiais perigosos.

Essas modificações asseguram maior flexibilidade e opções logísticas para os vendedores no Mercado Livre.


Categoria exemplo:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/categories/MLA45502/shipping_preferences

Resposta:

{
  ...
  "logistics": [
    ...
    {
      "types": [
        "self_service"
      ],
      "mode": "me2"
    }
  ],
  ...
  "category_id": "MLA45502"
}

Neste caso, permite apenas ME2 com o modo de envio self_service (Flex).

Vista do vendedor:


Próximo: Envios Turbo