Autorizaciones de Envíos Domésticos
Contenidos
Ten en cuenta que el Web Service del correo debe proporcionar un endpoint HTTP REST contra el que Mercado Libre pueda autorizar envíos.
Una vez que el envío se registra en Mercado Libre y está listo para ser despachado, se manda una solicitud POST de autorización al Web Service del correo utilizando la siguiente llamada:
POST /shipments/shipment_id/authorization- El identificador de envío (shipment_id) es único del lado de Mercado Envíos y deberá utilizarse para validar que no ha sido autorizado con anterioridad, teniendo en cuenta que existe un mecanismo de reintento en caso de que la llamada falle.
- Es posible que el identificador de envío esté asociado a más de un tracking number, pero en todo momento solo debe existir un único tracking number “activo” del lado del correo.
- Idempotencia: en caso de recibir un request con un envío previamente autorizado, el servicio deberá responder con un “HTTP Code” = 200 y con el mismo body y tracking number que se retornó al momento de la autorización original.
- Un envío cancelado podría volver a autorizarse en un futuro por lo que se debe tener en cuenta el siguiente flujo.
- Mercado Libre enviará en todos los campos datos con longitudes variables y que pueden cambiar con el tiempo, es responsabilidad del correo truncar los datos de acuerdo a sus requisitos de almacenamiento.

Dependiendo de si la autorización es satisfactoria o no, se espera que el servicio del correo devuelva un resultado de acuerdo a lo detallado en la sección “Status Codes”. En caso de error, se volverá a intentar la comunicación acorde al esquema de reintento definido en la integración.
Formato Request
Dentro del body se enviará un objeto JSON con los campos listados a continuación:
| Nombre | Tipo de dato | Descripción | Presencia del campo en el request |
|---|---|---|---|
| id | Long | Identificador único del envío usado por Mercado Libre que se requiere autorizar. Este ID servirá posteriormente para poder notificar las eventos que van ocurriendo en el flujo operativo del envío. | Siempre presente en el request |
| transport_order_id | String | Identificador único del tramo de transporte | Siempre presente en el request |
| direction | String | Indica la dirección del envío. Los valores permitidos son:
| Siempre presente en el request |
| carrier_information | Nodo | Contiene elementos relevantes para el carrier. | Siempre presente en el request |
| carrier_information.contract | String | Identifica el contrato/servicio definido por el carrier con el cual se va a autorizar el envío. Por ejemplo envío a domicilio desde el XD, envío a sucursal de DS, etc. | Opcional |
| carrier_information.agency | Nodo | Contiene información relacionada a la agencia de destino. Mandatorio solo cuando es un envío a sucursal. | Opcional |
| carrier_information.agency.id | String | Id que le da Mercado Libre a la agencia. | Siempre presente en el request |
| shipment_information | Nodo | Contiene toda la información que se considera relevante para la autorización del envío. Sender, receiver, item, etc. Las medidas son en centímetros y los pesos en gramos. | Siempre presente en el request |
| shipment_information.package | Nodo | Información relacionada al paquete. | Siempre presente en el request |
| shipment_information.package.items | Nodo | Información relacionada a los items. | Siempre presente en el request |
| shipment_information.package.items.item_id | String | Número identificatorio del item en Mercado Libre. | Siempre presente en el request |
| shipment_information.package.items.description | String | Descripción del item en Mercado Libre. | Siempre presente en el request |
| shipment_information.package.items.quantity | Numeric | Cantidad de unidades por item. | Siempre presente en el request |
| shipment_information.package.amount | Numeric | Monto abonado por el contenido del paquete. | Siempre presente en el request |
| shipment_information.package.dimensions | Nodo | Dimensiones y peso del paquete. | Siempre presente en el request |
| shipment_information.package.dimensions.height | Numeric | Alto del paquete en centímetros. | Siempre presente en el request |
| shipment_information.package.dimensions.length | Numeric | Largo del paquete en centímetros. | Siempre presente en el request |
| shipment_information.package.dimensions.width | Numeric | Ancho del paquete en centímetros. | Siempre presente en el request |
| shipment_information.package.dimensions.weight | Numeric | Peso del paquete en gramos. | Siempre presente en el request |
| shipment_information.receiver | Nodo | Información relacionada al receiver. | Siempre presente en el request |
| shipment_information.receiver.full_name | String | Nombre completo o Razón Social del receiver. | Siempre presente en el request |
| shipment_information.receiver.first_name | String | Nombre del receiver. | Siempre presente en el request |
| shipment_information.receiver.last_name | String | Apellido del receiver. | Siempre presente en el request |
| shipment_information.receiver.phone | Nodo | Información relacionada al teléfono del receiver. | Opcional |
| shipment_information.receiver.phone.number | String | Número telefónico. Sólo números. | Opcional |
| shipment_information.receiver.address | Nodo | Información relacionada a direccion del destino. | Siempre presente en el request |
| shipment_information.receiver.address.street_name | String | Nombre de la calle de destino. | Siempre presente en el request |
| shipment_information.receiver.address.street_number | String | Número de la calle de destino. | Opcional |
| shipment_information.receiver.address.intersection | String | Calle secundaria. | Siempre presente en el request (Ecuador) |
| shipment_information.receiver.address.address_line | String | Campo compuesto por los campos street_name y street_number del destino. | Siempre presente en el request |
| shipment_information.receiver.address.comment | String | Comentarios sobre la dirección del destino. | Opcional |
| shipment_information.receiver.address.zip_code | String | Código postal del destino. | Siempre presente en el request (Argentina, Brasil, México, Perú) |
| shipment_information.receiver.address.city | Node | Ciudad de destino. | Siempre presente en el request |
| shipment_information.receiver.address.city.id | String | Identificador único que le da Mercado Libre a la ciudad. | Siempre presente en el request (Colombia, Uruguay, Chile, Ecuador) |
| shipment_information.receiver.address.city.name | String | Nombre de la ciudad | Siempre presente en el request |
| shipment_information.receiver.address.state | Node | Estado, departamento o provincia de destino. | Siempre presente en el request |
| shipment_information.receiver.address.state.id | String | Identificador único que le da Mercado Libre al estado en Formato ISO 3166. | Siempre presente en el request |
| shipment_information.receiver.address.state.name | String | Nombre del estado. | Siempre presente en el request |
| shipment_information.receiver.address.country | Node | País de destino. | Siempre presente en el request |
| shipment_information.receiver.address.country.id | String | Identificador único que le da Mercado Libre al país en Formato ISO 3166. | Siempre presente en el request |
| shipment_information.receiver.address.country.name | String | Nombre del país. | Siempre presente en el request |
| shipment_information.receiver.address.neighborhood | Node | Barrio de destino. | Opcional |
| shipment_information.receiver.address.neighborhood.id | String | Identificador único del vecindario. | Opcional |
| shipment_information.receiver.address.neighborhood.name | String | Nombre del vecindario. | Opcional |
| shipment_information.receiver.address.municipality | Node | Municipalidad de destino. | Opcional |
| shipment_information.receiver.address.municipality.id | String | Identificador único que le da Mercado Libre al municipio. | Opcional |
| shipment_information.receiver.address.municipality.name | String | Nombre del municipio. | Opcional |
| shipment_information.receiver.address.geolocation | Node | Tiene la localización de la dirección. | Opcional |
| shipment_information.receiver.address.geolocation.geolocation_type | String | Puede ser alguno de los valores siguientes:
| Siempre presente en el request |
| shipment_information.receiver.address.geolocation.latitude | Numeric | Latitud de la localización en formato de número con 8 decimales. | Siempre presente en el request |
| shipment_information.receiver.address.geolocation.longitude | Numeric | Longitud de la localización en formato de número con 8 decimales. | Siempre presente en el request |
| shipment_information.receiver.identification | Nodo | Información relacionada a la identificación del receiver. | Siempre presente en el request (Chile y Brasil) |
| shipment_information.receiver.identification.type | String | Tipo de identificación del receiver. | Siempre presente en el request (Chile y Brasil) |
| shipment_information.receiver.identification.number | Numeric | Número de identificación del receiver. | Siempre presente en el request (Chile y Brasil) |
| shipment_information.sender | Nodo | Información relacionada al sender. | Siempre presente en el request |
| shipment_information.sender.full_name | String | Nombre completo o Razón Social del sender. | Siempre presente en el request |
| shipment_information.sender.first_name | String | Nombre del sender. | Siempre presente en el request |
| shipment_information.sender.last_name | String | Apellido del sender. | Siempre presente en el request |
| shipment_information.sender.phone | Nodo | Información relacionada al teléfono del sender. | Opcional |
| shipment_information.sender.phone.number | String | Número telefónico. Sólo números. | Siempre presente en el request |
| shipment_information.sender.address | Nodo | Información relacionada a la dirección de origen. | Siempre presente en el request |
| shipment_information.sender.address.street_name | String | Nombre de calle del origen. | Siempre presente en el request |
| shipment_information.sender.address.street_number | String | Número de calle del origen. | Optional |
| shipment_information.sender.address.intersection | String | Calle secundaria. | Siempre presente en el request (Ecuador) |
| shipment_information.sender.address.address_line | String | Campo compuesto por los campos street_name y street_number del origen. | Siempre presente en el request |
| shipment_information.sender.address.comment | String | Comentarios sobre la dirección del origen. | Opcional |
| shipment_information.sender.address.zip_code | String | Código postal del origen. | Siempre presente en el request (Argentina, Brasil, México, Perú) |
| shipment_information.sender.address.city | Node | Ciudad de origen. | Siempre presente en el request |
| shipment_information.sender.address.city.id | String | Identificador único que le da Mercado Libre a la ciudad. | Siempre presente en el request (Colombia, Uruguay, Chile, Ecuador) |
| shipment_information.sender.address.city.name | String | Nombre de la ciudad. | Siempre presente en el request |
| shipment_information.sender.address.state | Node | Estado, departamento o provincia de origen. | Siempre presente en el request |
| shipment_information.sender.address.state.id | String | Identificador único que le da Mercado Libre al estado en Formato ISO 3166. | Siempre presente en el request |
| shipment_information.sender.address.state.name | String | Nombre del estado. | Siempre presente en el request |
| shipment_information.sender.address.country | Node | País de origen. | Siempre presente en el request |
| shipment_information.sender.address.country.id | String | Identificador único que le da Mercado Libre al país en Formato ISO 3166. | Siempre presente en el request |
| shipment_information.sender.address.country.name | String | Nombre del país. | Siempre presente en el request |
| shipment_information.sender.address.neighborhood | Node | Barrio de origen | Opcional |
| shipment_information.sender.address.neighborhood.id | String | Identificador único del vecindario. | Opcional |
| shipment_information.sender.address.neighborhood.name | String | Nombre del vecindario | Opcional |
| shipment_information.sender.address.municipality | Node | Municipalidad de origen. | Opcional |
| shipment_information.sender.address.municipality.id | String | Identificador único del municipio. | Opcional |
| shipment_information.sender.address.municipality.name | String | Nombre del municipio. | Opcional |
| shipment_information.sender.address.geolocation | Node | Tiene la localización de la dirección | Opcional |
| shipment_information.sender.address.geolocation.geolocation_type | String | Puede ser alguno de los valores siguientes:
| Siempre presente en el request |
| shipment_information.sender.address.geolocation.latitude | Numeric | Latitud de la localización en formato de número con 8 decimales. | Siempre presente en el request |
| shipment_information.sender.address.geolocation.longitude | Numeric | Longitud de la localización en formato de número con 8 decimales. | Siempre presente en el request |
| shipment_information.sender.address.facility_id | String | Identifica una única instalación para la dirección | Opcional |
| shipment_information.sender.identification | Nodo | Información relacionada a la identificación del sender. | Siempre presente en el request (Chile y Brasil) |
| shipment_information.sender.identification.type | String | Tipo de identificación del sender. | Siempre presente en el request (Chile y Brasil) |
| shipment_information.sender.identification.number | Numeric | Número de identificación del sender. | Siempre presente en el request (Chile y Brasil) |
| test | Boolean | Indica que la request enviada es para pruebas. | Opcional |
| keyword | String | Es la Palabra Clave en formato HASH (SHA 256). El valor de este parámetro puede ser vacio. En caso de encontrarse un valor, el Carrier deberá solicitar la Palabra Clave al receptor del paquete. | Opcional |
- Contract: es el número que utiliza el correo para identificar el contrato (convenio) de precios establecidos con Mercado Libre. Lo usan para saber cómo deben cobrar esos envíos. Por ejemplo: El precio de un envío a domicilio por “drop_shipping” tiene un precio distinto al de “fulfillment” por alguna cuestión definida en un contrato. Es el campo más utilizado por los correos.
- Account: es el identificador que utiliza el correo para diferenciar las distintas áreas de Mercado Libre. Por ejemplo CBT y ME tienen diferente account id del lado del correo.
- User: es un usuario de sistema asignado al cliente de Mercado Libre.
- Password: es la contraseña asociada a ese usuario.
Formato Response
Dentro del body, el sistema devolverá todos los datos resultantes de la autorización, listados a continuación:
| Nombre | Tipo de dato | Descripción | Tipo |
|---|---|---|---|
| id | Long | Identificador único del envío usado por Mercado Libre que se requiere autorizar. | Mandatorio |
| status | String | Estado del pedido de autorización:
| Mandatorio |
| status_message | String | Cualquier detalle relevante del estado. | Mandatorio en caso de fallo (status = FAILED o status = ERROR). |
| tracking_number | String | Número de tracking. | Mandatorio en caso de que la autorización sea procesada con éxito (status = AUTHORIZED). |
| authorization_information | Nodo | Contiene información relativa a la fecha y hora de la actualización junto con cualquier información relevante para el armado de la etiqueta de envío. | |
| authorization_information.date | Date (ISO 8601) | Valores válidos: en UTC 2001-07-04T12:08:56.235Z o en hora local relativa 2001-07-04T12:08:56.235-07:00. | Mandatorio en caso de éxito (status = AUTHORIZED) |
| authorization_information.custom_data | Nodo | Contiene todos los datos necesarios para el armado de la etiqueta. Pueden ser tantos conjuntos de claves-valores como sean necesarios para el armado. | Opcional |
| authorization_information.custom_data.key | String|Long | “Key” hace referencia al nombre de la clave del conjunto clave-valor particular. El campo “valor” puede ser texto o numérico. | Mandatorio |
Performance
Status Codes
| Status | Código HTTP | Descripción | Acción |
|---|---|---|---|
| AUTHORIZED | 200 | Cuando la autorización fue procesada satisfactoriamente | El envío ya fue autorizado y no se volverá a reintentar. |
| FAILED | 400 | Cuando la autorización no pudo ser procesada por un error en el request. Se espera que se retorne “status”: “FAILED” junto con el “status_message” describiendo el motivo del error. | Dependiendo de la naturaleza del error, se intentarán corregir los datos, antes de volver a procesar la solicitud. Podrían existir reintentos periódicos. |
| ERROR | 500 | Cualquier error del lado del servidor. En este caso, status y status_message son opcionales. | Se volverá a intentar indefinidamente hasta obtener una respuesta satisfactoria de acuerdo al esquema de reintento definido. |
Formato Request OAuth
Para el mecanismo de autenticación a través de la generación de un token con OAuth, se debe agregar el siguiente encabezado a la petición:
--request POST 'https://hostname/shipments/{shiment_id}/authorization'
--header 'Authorization: Bearer + TOKEN'
--body 'Se mantiene lo descrito en cada integración'Una vez implementada la solución de OAuth, se deberá deprecar el uso de usuario y contraseña en las integraciones en favor del uso del token. Los campos a deprecar son los siguientes:
| Campo | Tipo | Descripción |
|---|---|---|
| carrier_information.user | String | Identifica un usuario de sistema del correo asignado al cliente de Mercado Libre. |
| carrier_information.password | String | Identifica la contraseña asociada al usuario del sistema. |
Ejemplos
Request:
POST https://hostName/shipments/26379079680/authorization{
"id":10101033319242,
"transport_order_id": "5c81e696e6d9183ea9190a58c13d4de71816b743",
"direction":"forward",
"carrier_information":{
"contract":"",
},
"shipment_information":{
"sender":{
"first_name":"PY",
"last_name":"S.A.",
"phone":{
"number":"522175123929",
},
"address":{
"address_line":"Calle 12",
"street_name":"Calle 12",
"street_number":"S/N",
"intersection":"Calle 21",
"comment":"",
"zip_code":"1870",
"city":{
"id":"TUxBQ0xBTWF0YW56",
"name":"La Matanza"
},
"state":{
"id":"AR-B",
"name":"Buenos Aires"
},
"country":{
"id":"AR",
"name":"Argentina"
},
"neighborhood":{
"id":null,
"name":"Villa Celina"
},
"municipality":{
"id":null,
"name":"Villa Celina"
},
"geolocation":{
"geolocation_type":"ROOFTOP",
"latitude":-14.10100206,
"longitude":-52.10104811
},
"facility_id":"101010"
},
"full_name":"GOLANDS",
},
"receiver":{
"first_name":"MEL",
"last_name":"PY",
"phone":{
"number":"10108508106",
},
"address":{
"address_line":"Calle 23",
"street_name":"Calle 23",
"street_number":"S/N",
"intersection":"Calle 32",
"comment":"",
"zip_code":"1625",
"city":{
"id":"TUxBQ0VTQzQ3YTc0",
"name":"Escobar"
},
"state":{
"id":"AR-B",
"name":"Buenos Aires"
},
"country":{
"id":"AR",
"name":"Argentina"
},
"neighborhood":{
"id":null,
"name":null
},
"municipality":{
"id":null,
"name":null
},
"geolocation":{
"geolocation_type":"RANGE_INTERPOLATED",
"latitude":-32.101012822,
"longitude":-52.10102059
},
"delivery_preference":"business"
},
"full_name":"Mel py",
"id":10010389392
},
"package":{
"items":[
{
"item_id":"MLA101010618394",
"description":"Lampara 100w",
"quantity":1
}
],
"dimensions":{
"height":15,
"width":25,
"length":70,
"weight":1900
},
"amount":2420,
},
"test":false,
"keyword": "3bc405c30cadb4e6eefdf0cff899abcf8234d761c9a3ea1b2f510601ae5fc504"
}Response:
Authorized (200 OK)
{
"id": "10101033319242",
"status":"AUTHORIZED",
"status_message":"OK",
"tracking_number": "ASDfgh123asd",
"authorization_information": {
"date": "2001-07-04T12:08:56.235-07:00",
"custom_data":{
"ruta_1":"RUTA"
}
}
}Failed (400 FAILED)
{
"error_code": "invalid_user_information.buyer",
"status_message":"Missing receiver information",
"status": "FAILED"
}Error (500 ERROR)
{
"status_message":"Internal server error",
"status": "ERROR"
}