API de canales de envío

GET /v1/fulfillment/shipping/channels enumera los canales de envío internacionales activos y con tarifa configurada disponibles a través del almacén vinculado a su app.

Utilice este endpoint para construir un selector de canal o inspeccionar las capacidades. Para la disponibilidad y los importes según el destino, llame a Cotizaciones de envío. Las tarifas de referencia solo explican el modelo de precios: nunca bloquean un precio.

GEThttps://open.hiobuy.com/v1/fulfillment/shipping/channels

Requiere fulfillment de almacén. Una app sandbox con una clave hio_test_* recibe datos mock deterministas.

Las cotizaciones son presupuestos, no precios bloqueados. El pesaje en almacén, la medición de volumen, el reembalaje y la revisión de servicios pueden cambiar el importe final.

Dinero y unidades {#units}

  • Todos los valores monetarios amount son enteros en fen de CNY (unidades menores). 1000 significa ¥10.00.
  • El monetary_unit de primer nivel es siempre CNY_minor.
  • Los objetos monetarios usan:
{
  "amount": 1000,
  "currency": "CNY"
}
  • KG = kilogramo, CM = centímetro, M3 = metro cúbico, KG_PER_M3 = kilogramo por metro cúbico.
  • Identifique canales, regiones y servicios por code estable, no por name.
  • La API pública no expone IDs de base de datos del almacén, códigos de desarrollador ni URL de proveedores.

Solicitud {#request}

GET /v1/fulfillment/shipping/channels?country_code=US&include=regions,services,rate_cards&page=1&page_size=20
Authorization: Bearer hio_live_xxx
Language: en

El idioma de visualización es únicamente el encabezado Language. Valores admitidos: en (predeterminado), en-US, zh, zh-CN, zh-TW, cn, hk. No coloque language en la cadena de consulta ni en el cuerpo JSON.

Parámetros de consulta

ParámetroObligatorioPredeterminadoDescripción
channel_codeNoCódigo de canal estable exacto (máximo 64 caracteres)
country_codeNoPaís de destino ISO 3166-1 alpha-2
includeNoExpansiones separadas por comas: regions, services, rate_cards
pageNo1Número de página, a partir de 1
page_sizeNo20Elementos por página; máximo 50

Expansiones include

Omita include para un resumen de canal ligero.

Valor includeCampo de respuestaÚselo cuando
regionsregionsCobertura, tipo de coincidencia y tiempo de tránsito de referencia
servicesvalue_added_servicesServicios de valor añadido del canal para las cotizaciones
rate_cardsrate_cardsFilas de precio de referencia que explican el modelo de facturación

Puede combinar valores, por ejemplo include=regions,services,rate_cards. Un valor desconocido devuelve 400 VALIDATION_ERROR.

Los rate_cards son reference_only. No deben sustituir POST /v1/fulfillment/shipping/quotes. Solo include=rate_cards solicita al almacén las filas de precio.

Solo se devuelven los canales habilitados y con una configuración de precio válida. Un array items vacío significa que ningún canal del catálogo coincide con los filtros actuales.

Respuesta {#response}

{
  "items": [
    {
      "code": "US-SEA",
      "name": "US Ocean",
      "description": "General cargo line",
      "status": "ACTIVE",
      "tags": [
        "GREAT_VALUE"
      ],
      "warehouse": {
        "code": "SZ",
        "name": "Shenzhen Warehouse"
      },
      "capabilities": {
        "delivery_methods": [
          "DOOR_DELIVERY"
        ],
        "multi_package_supported": true,
        "tracking_supported": true,
        "shipping_label_supported": false
      },
      "requirements": {
        "weight": "REQUIRED",
        "dimensions": "CONDITIONAL",
        "postal_code": "OPTIONAL",
        "declared_value": "OPTIONAL",
        "customs_code": "OPTIONAL",
        "personal_customs_code": "OPTIONAL",
        "recipient_identity": "OPTIONAL"
      },
      "attribute_matching": {
        "mode": "ANY_OF",
        "accepted_attributes": [
          {
            "code": "GENERAL",
            "name": "General cargo"
          }
        ]
      },
      "billing": {
        "basis": "WEIGHT",
        "calculation_model": "FIRST_NEXT_WEIGHT",
        "quantity_unit": "KG",
        "supported_range": {
          "minimum": {
            "value": 0.5,
            "unit": "KG"
          },
          "maximum": {
            "value": 30,
            "unit": "KG"
          },
          "out_of_range_behavior": "UNAVAILABLE"
        },
        "minimum": {
          "value": 0.5,
          "unit": "KG",
          "ceil_to_minimum": true
        },
        "rounding": {
          "single_package_step": {
            "value": 0.5,
            "unit": "KG"
          },
          "multi_package_step": {
            "value": 0.5,
            "unit": "KG"
          },
          "ignore_below": {
            "value": 0.05,
            "unit": "KG"
          }
        },
        "multi_package": {
          "mode": "PER_BOX",
          "calculation_scope": "PER_PACKAGE",
          "aggregation": "SUM_PACKAGE_CHARGES",
          "minimum_per_package": {
            "value": 0.5,
            "unit": "KG"
          },
          "minimum_total": {
            "value": 0,
            "unit": "KG"
          }
        },
        "volumetric_weight": {
          "enabled": true,
          "divisor": 6000,
          "average_with_actual": false,
          "exemption": null
        },
        "overweight_warning": {
          "enabled": false,
          "threshold": {
            "value": 0,
            "unit": "KG"
          },
          "notice": null
        }
      },
      "rule_summary": {
        "fee_aggregation": "SUM_ALL",
        "maximum_charge": {
          "amount": 0,
          "currency": "CNY"
        },
        "has_surcharges": true,
        "has_order_restrictions": false,
        "has_dispatch_restrictions": true,
        "evaluated_by_quote": true
      },
      "regions": [
        {
          "code": "US-WEST",
          "name": "US West",
          "status": "ACTIVE",
          "match_type": "COUNTRY_REGION",
          "countries": [
            "US"
          ],
          "postal_code_required": false,
          "reference_transit_time": {
            "text": "15-18 business days",
            "min_business_days": 15,
            "max_business_days": 18
          },
          "areas": []
        }
      ],
      "value_added_services": [
        {
          "code": "LINE_FUEL",
          "name": "Fuel surcharge",
          "request_mode": "MANDATORY",
          "pricing_type": "CALCULATED",
          "pricing_scope": "REGION",
          "pricing_basis": "BASE_FREIGHT_PERCENT",
          "region_prices": [
            {
              "region_code": "US-WEST",
              "value": 500,
              "value_unit": "BASIS_POINT",
              "fixed_charge": {
                "amount": 200,
                "currency": "CNY"
              }
            }
          ],
          "final_quote_required": true,
          "may_be_adjusted": true
        }
      ],
      "rate_cards": [
        {
          "region_code": "US-WEST",
          "billing_basis": "WEIGHT",
          "calculation_model": "FIRST_NEXT_WEIGHT",
          "quantity_unit": "KG",
          "currency": "CNY",
          "reference_only": true,
          "price_rows": [
            {
              "type": "FIRST_WEIGHT",
              "pricing_basis": "WEIGHT",
              "range": {
                "minimum": 0.5,
                "maximum": 0.5,
                "unit": "KG",
                "minimum_inclusive": true,
                "maximum_inclusive": false
              },
              "first_quantity": {
                "value": 0,
                "unit": "KG"
              },
              "step": {
                "value": 0,
                "unit": "KG"
              },
              "charge": {
                "amount": 8000,
                "currency": "CNY"
              }
            }
          ]
        }
      ],
      "service_policy": {
        "warehouse_may_add_services": true,
        "warehouse_may_remove_services": true,
        "prices_may_change_after_inspection": true
      },
      "final_quote_required": true,
      "config_updated_at": "2026-09-07T08:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "page_size": 20,
    "total": 1,
    "has_more": false
  },
  "monetary_unit": "CNY_minor",
  "generated_at": "2026-09-07T09:00:00Z",
  "request_id": "req_xxx"
}

regions, value_added_services y rate_cards aparecen solo cuando se envía el valor include correspondiente.

Campos de respuesta {#fields}

CampoDescripción
items[]Canales coincidentes. Vacío cuando ningún canal del catálogo coincide con los filtros.
items[].codeCódigo de canal estable. Úselo en channel_codes de las cotizaciones y al crear el envío.
items[].nameNombre de visualización localizado (encabezado Language).
items[].descriptionDescripción localizada.
items[].statusEstado del catálogo. Los canales devueltos son ACTIVE.
items[].tagsEtiquetas estables como GREAT_VALUE.
items[].warehouseAlmacén vinculado { code, name }. No es un ID de base de datos.
items[].capabilitiesMétodos de entrega, multi-paquete, tracking y soporte de etiquetas.
items[].requirementsIndicaciones de completitud de la entrada: REQUIRED · OPTIONAL · CONDITIONAL · NOT_SUPPORTED.
items[].attribute_matchingANY_OF o ALL_REQUIRED más accepted_attributes[].code.
items[].billingCómo el canal tarifica un envío. Véase más abajo.
items[].rule_summarySi existen recargos o restricciones; las cotizaciones evalúan las reglas.
items[].regionsPresente con include=regions.
items[].value_added_servicesPresente con include=services.
items[].rate_cardsPresente con include=rate_cards. Siempre reference_only.
items[].service_policyEl almacén puede añadir/quitar servicios y cambiar precios tras la inspección.
items[].final_quote_requiredtrue cuando aún se requiere una cotización específica del envío.
items[].config_updated_atHora de revisión del catálogo para este canal.
paginationpage, page_size, total, has_more.
monetary_unitSiempre CNY_minor.
generated_atMarca de tiempo de la respuesta (ISO 8601).
request_idCorrelacione con x-request-id.

Facturación {#billing}

CampoSignificado
basisWEIGHT, VOLUME, o DENSITY
calculation_modelModelo de precios usado por las filas tarifarias
quantity_unitKG, M3, o KG_PER_M3
supported_rangeCantidad facturable mínima y máxima
supported_range.out_of_range_behaviorUNAVAILABLE — el canal no puede transportar un paquete fuera del rango. No extrapole.
minimumCantidad facturable mínima y si los valores menores se redondean hacia arriba (ceil_to_minimum)
roundingPasos de redondeo para paquete único y multi-paquete
volumetric_weightDivisor volumétrico y regla de exención
multi_packageFacturación por paquete vs combinada y agregación
overweight_warningAviso opcional de sobrepeso

Los modelos de cálculo pueden incluir FIRST_NEXT_WEIGHT, TIERED_PRICE, UNIT_PRICE_PLUS_GRADE, MULTI_LEVEL_NEXT_WEIGHT y RANGE_FIRST_NEXT_WEIGHT. No reimplemente el motor de precios del almacén a partir de estas filas.

Regiones {#regions}

CampoSignificado
code / nameCódigo de región estable y nombre localizado
match_typeCOUNTRY_REGION o POSTAL_CODE
countriesCódigos de país ISO cubiertos por esta región
postal_code_requiredCuando es true, envíe postal_code a las cotizaciones
reference_transit_timeTexto de visualización más días hábiles mín./máx. opcionales
areasLista opcional de áreas más granulares. El catálogo no expone la base completa de reglas postales.

Servicios de valor añadido {#value-added-services}

Utilice value_added_services[].code en services.channel[] en Cotizaciones de envío.

CampoSignificado
codeCódigo de servicio estable
request_modeMANDATORY (siempre aplicado) o OPTIONAL (seleccionado por el desarrollador)
pricing_typePrecio fijo vs calculado (por ejemplo CALCULATED)
pricing_scopeDónde aplica el precio (por ejemplo REGION)
pricing_basisCómo se calcula el cargo

BASIS_POINT es un punto básico porcentual: 500 significa 5 %. El almacén puede añadir, quitar o ajustar servicios durante el procesamiento — véase service_policy y may_be_adjusted.

Tarifas de referencia {#rate-cards}

CampoSignificado
region_codeRegión a la que pertenece esta tarjeta
billing_basisMismo vocabulario que billing.basis
calculation_modelMismo vocabulario que billing.calculation_model
quantity_unitKG, M3, o KG_PER_M3
price_rowsBandas de referencia usadas para explicar el modelo
reference_onlySiempre true — no es una cotización en vivo

Caché {#caching}

config_updated_at cambia cuando cambian los detalles del canal, las regiones, las tarifas, las reglas o los servicios. Ponga en caché el catálogo ligero brevemente, vuelva a obtener las expansiones cuando cambie esta marca de tiempo y llame siempre a Cotizaciones de envío antes de crear un envío. No hay una versión de precios bloqueada.

Errores {#errors}

La inelegibilidad específica de un canal no es un error HTTP. Un array items vacío es un fallo de catálogo exitoso.

HTTPerror.codeCuándo
400VALIDATION_ERRORPaginación, sintaxis de país o valor include inválidos
401INVALID_API_KEYToken Bearer ausente o inválido
400INVALID_SHIPPING_CHANNELReservado para llamadas de cotización/envío que nombran un canal desconocido. Esta lista simplemente devuelve un array items vacío.
403FULFILLMENT_MODE_NOT_SUPPORTEDLa app usa self fulfillment
403WAREHOUSE_AUTH_INVALIDLa autorización del almacén falta, fue rechazada o expiró
422INVALID_COUNTRY_CODEEl país de destino es inválido o no admitido
502WAREHOUSE_UPSTREAM_ERROREl servicio del almacén falló; reintente con backoff

No hay un código público distinto AUTHENTICATION_ERROR, WAREHOUSE_AUTH_REQUIRED ni WAREHOUSE_SERVICE_UNAVAILABLE. Los fallos de autenticación usan 401 INVALID_API_KEY; la vinculación de almacén ausente usa 403 WAREHOUSE_AUTH_INVALID; las interrupciones del almacén usan 502 WAREHOUSE_UPSTREAM_ERROR.

Véase Errores y Autenticación.

Ejemplos {#examples}

Catálogo ligero:

curl "https://api.hiobuy.com/v1/fulfillment/shipping/channels?page=1&page_size=20" \
  -H "Authorization: Bearer hio_live_xxx" \
  -H "Language: en"

Canales que pueden servir a Estados Unidos, incluida la tarificación de referencia:

curl "https://api.hiobuy.com/v1/fulfillment/shipping/channels?country_code=US&include=regions,services,rate_cards" \
  -H "Authorization: Bearer hio_live_xxx" \
  -H "Language: zh-CN"

Siguiente: solicitar una cotización de envío específica de destino.

Get Support

Need integration help? Contact Developer Support at support@hiobuy.com · Response within 1–2 business days

Email support