Turboenvíos API

La API de Turboenvíos es una API REST que permite a los clientes cotizar y generar envíos de paquetes. Es necesario contar con un token de autenticación para poder utilizarla. Comunícate con el equipo de soporte para obtener más información.

Autenticación & Headers

Todas las peticiones a la API deben incluir un token de autenticación en la cabecera de la petición y especificar el tipo de contenido.

Ejemplo

Authorization: Bearer V1StGXR8_Z5jdHi6B-myT
Content-Type: application/json

Crear una cotización

Esta operación se utiliza para obtener el costo de envío de un paquete proporcionando la información del origen, destino y dimensiones. Es necesario contar con una cotización para poder generar un envío. La cotización solo es válida en el día que se generó y solo puede ser utilizada una vez.

POSThttps://app.turboenvios.mx/api/v1/quotations

Body

originstringCódigo postal de origen
destinationstringCódigo postal de destino
originCountrystringoptionalCódigo de país de origen en formato ISO-3166-1 alpha-2 (por ejemplo `MX`, `US`). Si se omite, se asume `MX`. Solo las paqueterías con cobertura internacional cotizan cuando el origen o destino no es `MX`.
destinationCountrystringoptionalCódigo de país de destino en formato ISO-3166-1 alpha-2. Por defecto `MX`.
weightintegerPeso masa del paquete en kilogramos
lengthintegerLongitud del paquete en centímetros
widthintegerAncho del paquete en centímetros
heightintegerAltura del paquete en centímetros
quantityintegeroptionalCantidad de paquetes iguales a cotizar. Si se omite, se usa 1.
insurePackagebooleanoptionalIndica si se desea asegurar el valor del paquete
packageValueintegeroptionalValor del paquete redondeado en pesos. Requerido si `insurePackage` es true.
satCategorystringoptionalCategoría SAT del contenido del paquete. Algunas paqueterías requieren este dato para cotizar y/o asegurar el paquete.
packageTypeenumoptionalTipo de embalaje: `box`, `envelope` o `pallet`. Si se omite, se usa `box` por defecto.
typeenumoptionalAlias de compatibilidad para `packageType`.

Ejemplo

{
  "origin": "64000",
  "destination": "64000",
  "weight": 1,
  "length": 10,
  "width": 20,
  "height": 10,
  "quantity": 3,
  "insurePackage": true,
  "satCategory": "53141600",
  "packageValue": 150,
  "packageType": "box"
}

Ejemplo (envío internacional)

{
  "origin": "66119",
  "destination": "56337",
  "originCountry": "MX",
  "destinationCountry": "US",
  "weight": 10,
  "length": 10,
  "width": 10,
  "height": 10,
  "packageType": "box"
}

Respuesta

{
  "quotations": [
    {
      "quotationId": "clsn08cqw0000maxbg761733a",
      "costCents": 12700,
      "costFormatted": "$127.00",
      "currency": "MXN",
      "provider": "FEDEX",
      "service": "Fedex Express Saver",
      "code": "FEDEX_EXPRESS_SAVER",
      "description": "3-7 días"
    },
    {
      "quotationId": "clsn0a5tq0000maxb9qtq0f2l",
      "costCents": 15600,
      "costFormatted": "$156.00",
      "currency": "MXN",
      "provider": "FEDEX",
      "service": "Standard Overnight",
      "code": "STANDARD_OVERNIGHT",
      "description": "1-2 días"
    }
  ]
}

Crear un envío

Esta operación se utiliza para generar un envío a partir de una cotización. Si la cotización se creó con quantity, el envío usará esa misma cantidad de paquetes.

POSThttps://app.turboenvios.mx/api/v1/shipment

Body

quotationIdstringEl identificador de la cotización seleccionada
senderLa dirección de origen del paquete
namestringNombre del remitente (3 a 30 caracteres)
phonestringTeléfono del remitente (10 dígitos)
emailstringEmail del remitente (Max 50 caracteres)
businessNamestringNombre de la empresa del remitente (Max 60 caracteres)
countrystringCódigo de país ISO-3166-1 alpha-2. Debe coincidir con el país de origen de la cotización.
statestringNombre del estado (3 a 60 caracteres)
citystringNombre de la ciudad (3 a 60 caracteres)
neighborhoodstringNombre de la colonia (3 a 60 caracteres)
streetstringNombre de la calle (1 - 60 caracteres)
numberstringNúmero del domicilio (1 - 60 caracteres)
referencesstring(Opcional) Referencias del domicilio (Max 80 caracteres)
recipientLa dirección de destino del paquete
namestringNombre del destinatario (3 a 30 caracteres)
phonestringTeléfono del destinatario (10 dígitos)
emailstringEmail del destinatario (Max 50 caracteres)
businessNamestringNombre de la empresa del destinatario (Max 60 caracteres)
countrystringCódigo de país ISO-3166-1 alpha-2. Debe coincidir con el país de destino de la cotización.
statestringNombre del estado (3 a 60 caracteres)
citystringNombre de la ciudad (3 a 60 caracteres)
neighborhoodstringNombre de la colonia (3 a 60 caracteres)
streetstringNombre de la calle (1 - 60 caracteres)
numberstringNúmero del domicilio (1 - 60 caracteres)
referencesstring(Opcional) Referencias del domicilio (Max 80 caracteres)
package.descriptionstringBreve descripción del contenido del paquete (1 a 50 caracteres)
package.satCategorystringNúmero de carta porte del SAT
package.type"envelope" | "box"Tipo de embalaje del paquete
package.insurePackagebooleanoptionalIndica si se desea asegurar el valor del paquete.
package.packageValueintegeroptionalValor del paquete en pesos mexicanos redondeado a pesos enteros. Requerido si `insurePackage` es true.

Ejemplo

{
  "quotationId": "clsn0o5v70000maxb509v80dy",
  "sender": {
    "name": "Juan Pérez",
    "phone": "8112345678",
    "email": "juanperez@ejemplo.com",
    "businessName": "Juan Pérez S.A. de C.V.",
    "country": "MX",
    "state": "Nuevo León",
    "city": "Monterrey",
    "neighborhood": "Santa María",
    "street": "Blvd. Antonio L. Rodríguez",
    "number": "1888",
    "references": "Frente a la Coca Cola"
  },
  "recipient": {
    "name": "María López",
    "phone": "8112345678",
    "email": "marialopez@ejemplo.com",
    "businessName": "María López S.A. de C.V.",
    "country": "MX",
    "state": "Nuevo León",
    "city": "Monterrey",
    "neighborhood": "Obispado",
    "street": "Av. Constitución",
    "number": "2050 P. 38",
    "references": "Letrero Hilton Garden Inn"
  },
  "package": {
    "description": "Cargador",
    "satCategory": "43211600",
    "type": "envelope"
  }
}

Respuesta

{
  "success": true,
  "data": {
    "orderId": "clsn19b1p0000maxb18vz7jov",
    "amountPaidCents": 18500,
    "trackingNumber": "1234567890",
    "trackingUrl": "https://www.fedex.com/track?tracknumbers=1234567890",
    "labelUrl": "https://app.turboenvios.mx/api/v1/shipment/clsn19b1p0000maxb18vz7jov/label",
    "labelBase64": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAB..."
  }
}

Solicitar una recolección

Esta operación crea una solicitud de recolección para un envío existente. El orderId se obtiene de la respuesta al crear un envío.

POSThttps://app.turboenvios.mx/api/v1/pickup

Body

orderIdstringID de la orden asociada al envío
pickupDatestringFecha en formato YYYY-MM-DD
startTimeHourintegerHora inicio (0-23)
startTimeMinuteintegerMinuto (0, 15, 30, 45)
endTimeHourintegerHora fin (0-23)
endTimeMinuteintegerMinuto (0, 15, 30, 45)
specialInstructionsstringoptionalMáximo 500 caracteres

Ejemplo

{
  "orderId": "clsn19b1p0000maxb18vz7jov",
  "pickupDate": "2026-01-22",
  "startTimeHour": 8,
  "startTimeMinute": 0,
  "endTimeHour": 18,
  "endTimeMinute": 0,
  "specialInstructions": "Tocar el timbre principal."
}

Respuesta

{
  "success": true,
  "data": {
    "pickupRequestId": "clsn1v2rm0000maxb1k5m3f8q",
    "status": "pending"
  }
}

Consultar una recolección

Obtén la información principal de una recolección existente.

GEThttps://app.turboenvios.mx/api/v1/pickup/<PICKUP_ID>

Respuesta

{
  "success": true,
  "data": {
    "id": "clsn1v2rm0000maxb1k5m3f8q",
    "status": "pending",
    "providerConfirmationId": null,
    "pickupDateLocal": "2026-01-22",
    "preferredStartTimeLocal": "08:00:00",
    "preferredEndTimeLocal": "18:00:00",
    "orderShipment": {
      "externalTrackingId": "1234567890",
      "shippingServiceCarrier": "DHL",
      "shippingServiceName": "Express",
      "latestTrackingStatus": "GUIA_CREADA"
    }
  }
}

Consultar Saldo

Utiliza este servicio para consultar el saldo disponible para la cuenta asociada a la API key.

GEThttps://app.turboenvios.mx/api/v1/credits

Respuesta Exitosa (200 OK)

{
  "success": true,
  "data": {
    "credits": {
      "cents": 12345,
      "formatted": "$123.45"
    }
  }
}

Respuestas de Error Comunes

  • 401 Unauthorized: API key no proporcionada, inválida o deshabilitada.
  • 404 Not Found: Negocio asociado a la API key no encontrado (caso poco común si la API key es válida).
  • 500 Internal Server Error: Error inesperado en el servidor.

Rastrear un envío

Este servicio se utiliza para rastrear un envío a partir de su número de rastreo/tracking. El servicio tiene un cache de 4 horas por lo que se recomienda no solicitar el mismo número de tracking más de una vez en un lapso de tiempo menor a 4 horas ya que no se garantiza que la información sea actual.

GEThttps://app.turboenvios.mx/api/v1/tracking/<TRACKING_NUMBER>

Respuesta

Los posibles valores para el status son:

StatusDescripción
GUIA_CREADA

Guia Generada

RECOLECTADO

Recolectado

EN_TRANSITO

En Tránsito

INTENTO_DE_ENTREGA

Intento de Entrega

EN_OCURRE

En Ocurre

ENTREGADO

Entregado

INCIDENTE

Incidente

RETORNADO

Retornado

DESCONOCIDO

Estado Desconocido

{
  "orderId": "cma8ptth50000o3350xqmdmi1",
  "trackingNumber": "1234567890",
  "carrier": "DHL",
  "latestStatus": {
    "date": "2025-05-03 10:49:47",
    "status": "ENTREGADO",
    "carrierTrackingCode": "OK",
    "carrierDescription": "Envío entregado"
  },
  "history": [
    {
      "date": "2025-05-02 14:53:15",
      "status": "RECOLECTADO",
      "carrierTrackingCode": "PU",
      "carrierDescription": "Envío retirado/recolectado."
    },
    {
      "date": "2025-05-02 21:05:10",
      "status": "EN_TRANSITO",
      "carrierTrackingCode": "PL",
      "carrierDescription": "Procesado en MEXICO CITY-MEXICO"
    },
    {
      "date": "2025-05-02 21:05:58",
      "status": "EN_TRANSITO",
      "carrierTrackingCode": "DF",
      "carrierDescription": "El envío ha salido de un centro de DHL MEXICO CITY-MEXICO"
    },
    {
      "date": "2025-05-02 21:41:13",
      "status": "EN_TRANSITO",
      "carrierTrackingCode": "AF",
      "carrierDescription": "Llegada al centro de clasificación de DHL HANGARES-MEXICO"
    },
    {
      "date": "2025-05-03 00:44:42",
      "status": "EN_TRANSITO",
      "carrierTrackingCode": "PL",
      "carrierDescription": "Procesado en HANGARES-MEXICO"
    },
    {
      "date": "2025-05-03 01:12:58",
      "status": "EN_TRANSITO",
      "carrierTrackingCode": "DF",
      "carrierDescription": "El envío ha salido de un centro de DHL HANGARES-MEXICO"
    },
    {
      "date": "2025-05-03 09:08:19",
      "status": "EN_TRANSITO",
      "carrierTrackingCode": "AR",
      "carrierDescription": "Llegada al centro de entrega de DHL ACAPULCO-MEXICO"
    },
    {
      "date": "2025-05-03 10:28:08",
      "status": "EN_TRANSITO",
      "carrierTrackingCode": "WC",
      "carrierDescription": "El envío está en manos del courier para su entrega"
    },
    {
      "date": "2025-05-03 10:49:47",
      "status": "ENTREGADO",
      "carrierTrackingCode": "OK",
      "carrierDescription": "Envío entregado"
    }
  ]
}