Documentación · API v1

Guía de uso API de encomiendas y tracking

Crea encomiendas con uno o varios bultos, consulta tracking y recibe eventos en tiempo real. Base URL productiva: https://api.helpcourierexpress.cl

01 · Auth

Autenticación

Las APIs de integración usan JWT Bearer. Primero debes obtener un token con un usuario que tenga el rol IntegrationApi y los permisos integration.shipments.write y integration.tracking.read.

POST https://api.helpcourierexpress.cl/api/v1/auth/integration-login

Request

{
  "tenantCode": "DEMO",
  "userNameOrEmail": "integracion@cliente.cl",
  "password": "tu-clave"
}
Campo Tipo Largo máximo Obligatorio Descripción
tenantCodestring50Código del courier/tenant entregado para la integración.
userNameOrEmailstring80 si es usuario, 200 si es emailUsuario o correo del usuario API.
passwordstringSegún política de claveClave del usuario API.

Response

{
  "tenantCode": "DEMO",
  "tenantName": "Courier Demo",
  "accessToken": "eyJhbGciOi...",
  "refreshToken": "token-refresh",
  "accessTokenExpiresAtUtc": "2026-04-22T20:30:00Z"
}

En los siguientes llamados agrega el header:

Authorization: Bearer {{accessToken}}
Content-Type: application/json

Renovar token

POST https://api.helpcourierexpress.cl/api/v1/auth/integration-refresh
{
  "tenantCode": "DEMO",
  "refreshToken": "{{refreshToken}}"
}
02 · Shipments

Crear encomienda

POST https://api.helpcourierexpress.cl/api/v1/integrations/shipments
Centro de costo opcional: si no envías centroCosto, la encomienda queda asociada automáticamente al centro de costo principal del cliente. También puedes indicar centroCosto a nivel de encomienda o por cada bulto.
Campo Tipo Largo máximo Obligatorio Descripción
codigoClientestring40Código del cliente/seller registrado en la plataforma.
centroCostonumberNo aplicaNoCódigo numérico del centro de costo. Si viene vacío usa el principal.
tipoServiciostring40 si es código, 120 si es nombreNoCódigo o nombre del tipo de servicio. Si viene vacío usa el primer servicio activo disponible.
fechaCompromisoUtcdatetimeNo aplicaNoFecha compromiso en UTC, formato ISO 8601. Puede ir null.
destinatarioobjectNo aplicaDatos de entrega. Nombre, dirección y comuna son obligatorios.
informacionAdicionalobjectNo aplicaNoCódigo externo, referencias y observaciones de la encomienda.
cantidadBultosnumberNo aplicaNoDebe coincidir con la cantidad de objetos enviados en bultos si se informa.
bultosarrayMáximo 200 ítemsUno o más bultos. Ver detalle de campos más abajo.

Detalle de destinatario

CampoTipoLargo máximoObligatorioDescripción
nombrestring180 recomendadoNombre de quien recibe.
identificacionstring40 recomendadoNoRUT, DNI u otra identificación.
emailstring200 recomendadoNoCorreo del destinatario.
telefonostring40 recomendadoNoTeléfono del destinatario.
direccionstring200Calle, número y dirección base de entrega.
complementostring200NoDepto, oficina, block u otra segunda línea de dirección.
comunastring120Comuna destino. Debe existir en la plataforma.
ciudadstring120NoSi viene vacía, se usa la comuna como ciudad.
regionstring120NoAyuda a desambiguar comunas con nombres repetidos.
codigoPostalstring20NoCódigo postal de destino.
referenciastring250NoReferencia para encontrar la dirección.
latituddecimal10,6NoLatitud con hasta 6 decimales.
longituddecimal10,6NoLongitud con hasta 6 decimales.

Detalle de informacionAdicional

CampoTipoLargo máximoObligatorioDescripción
codigoExternostring60NoCódigo externo de la encomienda. Debe ser único por cliente. La API recorta a 60 caracteres.
referenciastring200 recomendadoNoPrimera referencia comercial.
referencia2string200 recomendadoNoSegunda referencia comercial.
observacionesstring300 recomendadoNoObservación general de la encomienda. Si referencia2 viene vacía, se usa como segunda referencia.

Detalle de bultos[]

CampoTipoLargo máximoObligatorioDescripción / regla
centroCostonumberNo aplicaNoCódigo numérico del centro de costo para este bulto. Si viene vacío, hereda el centro de costo de la encomienda; si la encomienda tampoco trae, usa el principal.
codigoExternostring60NoCódigo externo del bulto. La API recorta a 60 caracteres.
referenciastring200 recomendadoNoPrimera referencia del bulto.
referencia2string200 recomendadoNoSegunda referencia del bulto.
descripcionstring200 recomendadoNoDescripción del contenido o embalaje. Si viene vacía, se registra como Bulto.
pesoKgdecimal18,3Debe ser mayor a 0. Ejemplo: 1.5.
largoCmdecimal18,2Debe ser mayor a 0. Largo en centímetros.
anchoCmdecimal18,2Debe ser mayor a 0. Ancho en centímetros.
altoCmdecimal18,2Debe ser mayor a 0. Alto en centímetros.
valorDeclaradodecimal18,2NoValor declarado del bulto.
observacionesstring300 recomendadoNoObservación específica del bulto.
Nota de largos: los campos marcados como "recomendado" no tienen una validación estricta de largo en el contrato actual, pero se documentan con un máximo operativo para evitar textos excesivos en etiquetas, reportes y pantallas. Los campos de código opcional se normalizan y recortan a 60 caracteres.

Ejemplo: crear encomienda con 1 bulto

{
  "codigoCliente": "100",
  "centroCosto": null,
  "tipoServicio": "Same day",
  "fechaCompromisoUtc": null,
  "cantidadBultos": 1,
  "destinatario": {
    "nombre": "Juan Pérez",
    "identificacion": "11111111-1",
    "email": "juan.perez@correo.cl",
    "telefono": "+56912345678",
    "direccion": "Avenida Apoquindo 4500",
    "complemento": "Depto 1204",
    "comuna": "Las Condes",
    "ciudad": "Las Condes",
    "region": "Metropolitana",
    "codigoPostal": null,
    "referencia": "Recepción del edificio",
    "latitud": null,
    "longitud": null
  },
  "informacionAdicional": {
    "codigoExterno": "OC-10001",
    "referencia": "Pedido web 10001",
    "referencia2": "Canal ecommerce",
    "observaciones": "Entregar en horario oficina"
  },
  "bultos": [
    {
      "centroCosto": null,
      "codigoExterno": "BULTO-10001-1",
      "referencia": "SKU-A",
      "referencia2": null,
      "descripcion": "Caja pequeña",
      "pesoKg": 1.5,
      "largoCm": 30,
      "anchoCm": 20,
      "altoCm": 15,
      "valorDeclarado": 25000,
      "observaciones": "Frágil"
    }
  ]
}

Ejemplo: crear encomienda con más de 1 bulto

{
  "codigoCliente": "100",
  "centroCosto": 101,
  "tipoServicio": "Same day",
  "fechaCompromisoUtc": null,
  "cantidadBultos": 2,
  "destinatario": {
    "nombre": "María González",
    "identificacion": "22222222-2",
    "email": "maria.gonzalez@correo.cl",
    "telefono": "+56987654321",
    "direccion": "Los Militares 5900",
    "complemento": "Oficina 802",
    "comuna": "Las Condes",
    "ciudad": "Las Condes",
    "region": "Metropolitana",
    "codigoPostal": null,
    "referencia": "Torre norte",
    "latitud": null,
    "longitud": null
  },
  "informacionAdicional": {
    "codigoExterno": "OC-10002",
    "referencia": "Pedido web 10002",
    "referencia2": "Marketplace",
    "observaciones": "Llamar antes de entregar"
  },
  "bultos": [
    {
      "centroCosto": 101,
      "codigoExterno": "BULTO-10002-1",
      "referencia": "SKU-B",
      "referencia2": null,
      "descripcion": "Caja 1",
      "pesoKg": 2.3,
      "largoCm": 40,
      "anchoCm": 30,
      "altoCm": 20,
      "valorDeclarado": 40000,
      "observaciones": null
    },
    {
      "centroCosto": 102,
      "codigoExterno": "BULTO-10002-2",
      "referencia": "SKU-C",
      "referencia2": null,
      "descripcion": "Caja 2",
      "pesoKg": 3.1,
      "largoCm": 45,
      "anchoCm": 35,
      "altoCm": 25,
      "valorDeclarado": 55000,
      "observaciones": "Mantener vertical"
    }
  ]
}

Response de creación

{
  "mensaje": "Registro exitoso.",
  "codigoEncomienda": "ENV2604221830451234",
  "codigoExterno": "OC-10001",
  "etiquetaFormato": "ZPL_BASE64",
  "etiquetaBase64": "Xlha...",
  "bultos": [
    {
      "codigoBulto": "PKG2604221830450015678",
      "trackingNumber": "PKG2604221830450015678",
      "etiquetaBase64": "Xlha..."
    }
  ]
}
03 · Tracking

Consultar estado y tracking

El código puede ser código de encomienda, código externo de encomienda, tracking del bulto, código interno PKG o código externo del bulto.

GET https://api.helpcourierexpress.cl/api/v1/integrations/tracking/{codigo}

Ejemplo

GET https://api.helpcourierexpress.cl/api/v1/integrations/tracking/PKG2604221830450015678

Response

{
  "codigoEncomienda": "ENV2604221830451234",
  "codigoExterno": "OC-10001",
  "cliente": "Cliente demo",
  "destinatario": "Juan Pérez",
  "destino": "Avenida Apoquindo 4500, Las Condes, Metropolitana",
  "fechaRegistroUtc": "2026-04-22T18:30:45Z",
  "totalBultos": 1,
  "bultos": [
    {
      "codigoBulto": "PKG2604221830450015678",
      "trackingNumber": "PKG2604221830450015678",
      "codigoExterno": "BULTO-10001-1",
      "estado": "PickupPending",
      "estadoDescripcion": "Pendiente de retiro",
      "pesoKg": 1.5,
      "eventos": [
        {
          "tipo": "Created",
          "titulo": "Creación de bulto",
          "descripcion": "Encomienda registrada por integración.",
          "fechaUtc": "2026-04-22T18:30:45Z"
        }
      ]
    }
  ]
}
04 · Estados

Códigos de estado frecuentes

Estado técnicoDescripción
LabelGeneratedEtiqueta generada
PickupPendingPendiente de retiro
PickedUpRetirado
AdmittedAtOriginHubAdmitido en origen
InLinehaulEn troncal
OutForDeliveryEn reparto
DeliveredEntregado
IncidentedIncidentado
05 · Errores

Errores comunes

Código HTTPCausa común
400Faltan campos obligatorios, comuna no reconocida, centro de costo inexistente o dimensiones inválidas.
401Token ausente, vencido o usuario sin rol de integración.
403Usuario sin permiso para crear encomiendas o consultar tracking.
404No se encontró tracking para el código consultado.
409Código externo de encomienda duplicado para el mismo cliente.
06 · Postman

Colección Postman

Importar colección: importa el archivo helpcourier-integracion-api.postman_collection.json, ajusta las variables tenantCode, username, password, codigoCliente y centroCostoPrincipal, ejecuta primero Obtener token y luego los ejemplos de creación/tracking.

Documento generado para la API de integración HelpCourier Express. Base URL: https://api.helpcourierexpress.cl.

An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.