Consultar solicitudes a proveedores

Tres endpoints de lectura, todos ellos requieren el ámbito supplier_inquiry:read. Las consultas están limitadas a la aplicación que las creó: el id de una consulta de otra aplicación devuelve 404 INQUIRY_NOT_FOUND, no 403.

Listar consultas

GET /v1/supplier-inquiries

ParámetroDescripción
statusUn estado de consulta (pending, processing, waiting_supplier, answered, completed, failed, cancelled)
channel1688 o taobao
source_product_idId exacto del producto en el marketplace
created_after / created_beforeMarcas de tiempo ISO 8601
pagePor defecto 1
limitPor defecto 20, máximo 100
GET /v1/supplier-inquiries?status=answered&channel=1688&limit=20
 
{
  "data": [
    {
      "id": "sinq_9f2c...",
      "status": "answered",
      "product": {
        "channel": "1688",
        "source_product_id": "554456348334",
        "product_url": "https://detail.1688.com/offer/554456348334.html",
        "canonical_product_url": "https://detail.1688.com/offer/554456348334.html",
        "title": "...", "image": "...", "shop_id": "...", "shop_name": "..."
      },
      "sku": { "id": "3245:12345", "label": "Negro / XL" },
      "message_count": 2,
      "last_message_at": "2026-05-20T10:02:00.000Z",
      "created_at": "2026-05-20T08:31:11.000Z",
      "updated_at": "2026-05-20T11:40:00.000Z"
    }
  ],
  "pagination": { "page": 1, "limit": 20, "total": 1, "total_pages": 1 },
  "request_id": "req_..."
}

Un status o channel desconocido se rechaza con 400, de modo que un error tipográfico nunca devuelve todo silenciosamente.

Detalle de la consulta

GET /v1/supplier-inquiries/{inquiry_id} devuelve el resumen más la conversación completa y una cronología compacta.

{
  "id": "sinq_9f2c...",
  "status": "answered",
  "product": {
    "channel": "1688",
    "source_product_id": "554456348334",
    "...": "..."
  },
  "sku": {
    "id": "3245:12345",
    "label": "Negro / XL"
  },
  "message_count": 2,
  "messages": [
    {
      "id": "smsg_1a4b...",
      "type": "initial",
      "status": "answered",
      "questions": [
        {
          "id": "sqst_...",
          "type": "packed_weight",
          "note": "Peso con la caja de venta al público",
          "question": null,
          "status": "answered",
          "answer": {
            "question_id": "sqst_...",
            "type": "packed_weight",
            "status": "answered",
            "value": 1250,
            "unit": "g",
            "provider_note": null,
            "answered_at": "2026-05-20T11:40:00.000Z"
          }
        }
      ],
      "attachments": [
        {
          "id": "satt_...",
          "type": "image",
          "url": "https://files.example.com/packaging.jpg",
          "filename": "supplier-packaging.jpg",
          "mime_type": "image/jpeg",
          "source": "supplier",
          "expires_at": null,
          "created_at": "2026-05-20T11:40:00.000Z"
        }
      ],
      "provider_note": null,
      "created_at": "2026-05-20T08:31:12.000Z",
      "answered_at": "2026-05-20T11:40:00.000Z"
    }
  ],
  "timeline": [
    {
      "message_id": "smsg_1a4b...",
      "type": "initial",
      "status": "answered",
      "created_at": "2026-05-20T08:31:12.000Z",
      "answered_at": "2026-05-20T11:40:00.000Z"
    }
  ],
  "request_id": "req_..."
}

question solo es distinto de null en las preguntas de tipo other. Una pregunta sin respuesta todavía tiene status: "pending" y answer: null.

attachments lista las referencias de archivos de ese mensaje: las que enviaste tú, más las que el lado del proveedor haya compartido contigo. source las distingue (developer, operator, supplier, system). Los archivos que el servicio de consultas mantiene internos nunca se devuelven aquí. HIOBuy no aloja estos archivos: url apunta al almacenamiento del proveedor del servicio o al tuyo, y un expires_at distinto de null es el momento a partir del cual esa URL puede dejar de resolver.

Solo mensajes

GET /v1/supplier-inquiries/{inquiry_id}/messages devuelve los mismos objetos de mensaje sin el bloque de producto: es la llamada más económica cuando ya tienes la consulta y solo quieres las respuestas nuevas.

{
  "inquiry_id": "sinq_9f2c...",
  "status": "answered",
  "data": [ /* mensajes, los más antiguos primero */ ],
  "request_id": "req_..."
}

Sondeo frente a webhooks

Es preferible el webhook supplier_inquiry.message_answered: su payload ya incluye el array answers completo, así que a menudo basta con la notificación. Si en su lugar haces sondeo, consulta el endpoint de mensajes con una frecuencia de minutos: las respuestas llegan a ritmo humano y sondear cada pocos segundos solo consume el límite de peticiones.

Get Support

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

Email support