Ir al contenido principal

API de Sticker Mule

La API de Sticker Mule te permite repetir pedidos de productos y consultar tus artículos guardados, direcciones y métodos de pago desde tu propio código. Es una pequeña API REST autenticada con una clave de API personal.

Inicio rápido

1. Generar una clave de API

Abrí la configuración de tu cuenta y, en Configuración de tienda, generá una clave API. Copiala inmediatamente; solo se muestra una vez.

Abrir configuración de cuenta

2. Llamar la API

Enviá tu clave como un token Bearer. Este ejemplo realiza un pedido de un artículo guardado:

POST /api/orders
curl -X POST https://www.stickermule.com/api/orders \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [{ "id": "456", "quantity": 50 }],
    "addressId": "22",
    "paymentId": "7"
  }'

Autenticación

Cada solicitud debe incluir tu clave API como token Bearer en el encabezado de autorización.

Authorization: Bearer YOUR_API_KEY
  • La API está disponible solo en cuentas personales, no en cuentas de equipo.
  • Cada cuenta tiene una clave. Al generar una nueva clave, se sustituye la anterior.
  • Tratá la clave como una contraseña. Puede hacer pedidos y leer tus datos guardados.

URL base

Todos los puntos finales son relativos a esta URL base.

https://www.stickermule.com/api

Puntos finales

Devuelve los artículos que se pueden volver a pedir. El identificador de cada artículo es válido como items[].id al crear un pedido.

GET /api/items
curl "https://www.stickermule.com/api/items?limit=20" \
  -H "Authorization: Bearer YOUR_API_KEY"

Parámetros de consulta

ParámetroTipoPredeterminadoDescripción
limitnumber20Número de artículos a devolver, de 1 a 50.
offsetnumber0Número de artículos a omitir antes de devolver los resultados.
currencystringUSDCódigo de moneda ISO 4217 utilizado para los precios.
localestringenIdioma utilizado para los nombres y precios de los productos.

Respuesta

Los resultados se paginan con un límite y un desplazamiento, y canLoadMore es verdadero cuando hay más artículos disponibles. Dado que la paginación se basa en un desplazamiento, las páginas pueden cambiar a medida que llegan nuevos pedidos.

CampoTipoDescripción
idstringIdentificador del artículo. Usalo como items[].id al crear un pedido.
namestring | nullNombre personalizado que le hayas dado al artículo, si lo hubiera.
productIdnumberIdentificador de producto Sticker Mule.
productNamestring | nullNombre del producto, o nulo si el producto ya no está disponible.
quantitynumberCantidad del pedido original.
sizeRegularItemDimensions | TShirtDimensions | HoodieDimensionsTalle del artículo. Para remeras y remerass gruesas, un objeto de talle de prenda con el tipo __typename TShirtDimensions y un talle. Para buzos, el tipo __typename HoodieDimensions y un talle. Para cualquier otro producto, las dimensiones físicas en pulgadas con el tipo __typename RegularItemDimensions, además de la anchura y la altura.
isSizeRequiredbooleanVerdadero cuando el producto necesita un talle de ropa para repetir pedido (remeras, remeras gruesas y buzos). De lo contrario, falso.
buyingOptionsobject | nullCantidades de pedidos repetidos permitidas como mínimo, máximo e incremento. Nulo si el producto no está disponible.
retailPricenumber | nullPrecio por la cantidad mínima, o nulo si no hay precios disponibles.
artworkUrlsstring[]URL de las ilustraciones aprobadas para el artículo.
Ejemplo de respuesta
{
  "items": [
    {
      "id": "456",
      "name": "Logo stickers",
      "productId": 12,
      "productName": "Die cut stickers",
      "quantity": 50,
      "size": { "__typename": "RegularItemDimensions", "width": 3, "height": 3 },
      "isSizeRequired": false,
      "buyingOptions": {
        "quantity": { "min": 50, "max": 5000, "increment": 5 }
      },
      "retailPrice": 79,
      "artworkUrls": ["https://cdn.stickermule.com/artwork.png"]
    },
    {
      "id": "789",
      "name": "Team t-shirt",
      "productId": 34,
      "productName": "Custom t-shirts",
      "quantity": 25,
      "size": { "__typename": "TShirtDimensions", "size": "sizeL" },
      "isSizeRequired": true,
      "buyingOptions": {
        "quantity": { "min": 1, "max": 500, "increment": 1 }
      },
      "retailPrice": 18,
      "artworkUrls": ["https://cdn.stickermule.com/shirt.png"]
    },
    {
      "id": "812",
      "name": "Team hoodie",
      "productId": 56,
      "productName": "Custom hoodies",
      "quantity": 10,
      "size": { "__typename": "HoodieDimensions", "size": "sizeM" },
      "isSizeRequired": true,
      "buyingOptions": {
        "quantity": { "min": 1, "max": 500, "increment": 1 }
      },
      "retailPrice": 32,
      "artworkUrls": ["https://cdn.stickermule.com/hoodie.png"]
    }
  ],
  "canLoadMore": true
}

Devuelve tus direcciones de envío guardadas, con la predeterminada primero. Cada id es válido como addressId al crear un pedido.

GET /api/addresses
curl https://www.stickermule.com/api/addresses \
  -H "Authorization: Bearer YOUR_API_KEY"

Respuesta

CampoTipoDescripción
idstringIdentificador de la dirección. Usalo como addressId al crear un pedido.
namestring | nullNombre completo del destinatario.
firstNamestring | nullNombre del destinatario
lastNamestring | nullApellido del destinatario.
companyNamestring | nullNombre de la empresa, si la hubiera.
addressLine1stringDirección de la calle
addressLine2string | nullLínea de dirección adicional, si la hubiera.
cityNamestringCiudad.
stateNamestring | nullNombre del estado o provincia, si corresponde.
stateAbbreviationstring | nullAbreviatura del estado o provincia, si corresponde.
zipCodestringCódigo postal.
countryIsostringCódigo de país ISO 3166, como por ejemplo EE. UU. (EUA).
countryNamestringNombre del país.
phonestring | nullNúmero de teléfono de contacto, si lo hubiera.
isDefaultbooleanEsto se aplica a tu dirección de envío predeterminada.
Ejemplo de respuesta
{
  "addresses": [
    {
      "id": "22",
      "name": "Jane Doe",
      "firstName": "Jane",
      "lastName": "Doe",
      "companyName": null,
      "addressLine1": "123 Main St",
      "addressLine2": null,
      "cityName": "Amsterdam",
      "stateName": null,
      "stateAbbreviation": null,
      "zipCode": "1000AA",
      "countryIso": "NL",
      "countryName": "Netherlands",
      "phone": "+31612345678",
      "isDefault": true
    }
  ]
}

Devolvé tus métodos de pago guardados, con el predeterminado primero. Cada id es válido como paymentId al crear un pedido.

GET /api/payments
curl https://www.stickermule.com/api/payments \
  -H "Authorization: Bearer YOUR_API_KEY"

Respuesta

CampoTipoDescripción
idstringIdentificador del método de pago. Usalo como paymentId al crear un pedido.
ccTypestringMarca de la tarjeta, como Visa o Mastercard.
lastDigitsstringÚltimos cuatro dígitos de la tarjeta.
expirationobjectVencimiento de la tarjeta en mes y año.
isDefaultbooleanVerdadero para tu método de pago predeterminado.
Ejemplo de respuesta
{
  "payments": [
    {
      "id": "7",
      "ccType": "visa",
      "lastDigits": "1007",
      "expiration": { "month": 7, "year": 2028 },
      "isDefault": true
    }
  ]
}

Muestra tus pedidos realizados, desde el más reciente al más antiguo. El número de cada pedido coincide con el que devuelve POST /api/orders.

GET /api/orders
curl "https://www.stickermule.com/api/orders?limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

Parámetros de consulta

ParámetroTipoPredeterminadoDescripción
limitnumber10Número de pedidos a devolver, de 1 a 50.
offsetnumber0Número de pedidos que se deben omitir antes de devolver los resultados.

Respuesta

Los resultados están paginados con límite y desplazamiento, y canLoadMore es verdadero cuando hay más pedidos disponibles. Dado que la paginación está basada en desplazamiento, las páginas pueden cambiar a medida que se realizan nuevos pedidos.

CampoTipoDescripción
numberstringNúmero de pedido. El mismo valor devuelto por POST /api/orders.
state"complete" | "canceled" | "gift_unclaimed" | "ready_for_production" | "in_production" | "ready_to_proof" | "awaiting_scheduled_date"El estado del pedido.
paymentState"paid" | "credit_owed" | "balance_due" | "failed" | "checkout" | "completed" | "pending" | "processing" | "void" | nullEl estado de pago del pedido, o nulo.
shipmentState"backorder" | "canceled" | "partial" | "pending" | "ready" | "shipped" | "returned_for_reship" | "reship" | "delivered"El estado de envío del pedido. El valor predeterminado es pendiente.
placedAtstringCuándo se realizó el pedido, como marca de tiempo ISO 8601.
currencystringMoneda ISO 4217 en la que se realizó el cobro del pedido.
itemTotalnumberSubtotal de los artículos, antes de envío, impuestos y descuentos.
totalnumberTotal general cobrado, incluyendo envío e impuestos, menos descuentos.
expectedDeliveryDatestring | nullFecha de entrega estimada como marca de tiempo ISO 8601, o nulo.
deliveredAtstring | nullCuándo se entregó el pedido, como marca de tiempo ISO 8601, o nulo.
Ejemplo de respuesta
{
  "orders": [
    {
      "number": "R286234605",
      "state": "complete",
      "paymentState": "paid",
      "shipmentState": "shipped",
      "placedAt": "2026-07-20T14:03:00.000Z",
      "currency": "USD",
      "itemTotal": 79,
      "total": 88.5,
      "expectedDeliveryDate": "2026-07-27T00:00:00.000Z",
      "deliveredAt": null
    }
  ],
  "canLoadMore": true
}

Realiza un pedido de uno o más artículos guardados, enviados a una dirección guardada y cargados a un método de pago guardado.

POST /api/orders
curl -X POST https://www.stickermule.com/api/orders \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [{ "id": "456", "quantity": 50 }],
    "addressId": "22",
    "paymentId": "7"
  }'

Cuerpo de la solicitud

CampoTipoRequeridoDescripción
itemsarrayArtículos a pedir. Debe contener al menos un artículo.
items[].idstringUn ID de elemento de GET /api/items.
items[].quantitynumberCantidad a pedir para el artículo.
items[].sizeTShirtSize | HoodieSize | nullNoTalle de prenda, requerida al pedir prendas (remeras, remeras gruesas y buzos). Utiliza los valores que se indican a continuación y que coincidan con el producto. Omitila para otros productos.
addressIdstringUn ID de dirección obtenido de GET /api/addresses.
paymentIdstringUn ID de método de pago obtenido de GET /api/payments.

Un pedido puede contener hasta 50 artículos. Cada cantidad debe respetar el mínimo, el máximo y el incremento del producto obtenidos en GET /api/items.

Talles de ropa

Los talles válidos dependen del corte del producto:

  • Remeras y remeras gruesas (TShirtSize): "sizeYS" | "sizeYM" | "sizeYL" | "sizeS" | "sizeM" | "sizeL" | "sizeXL" | "size2XL" | "size3XL" | "size4XL" | "size5XL" | "size6XL" | "size7XL"
  • Buzos (HoodieSize): "sizeS" | "sizeM" | "sizeL" | "sizeXL" | "size2XL"

Respuesta

Ejemplo de respuesta
{
  "order": { "number": "R286234605" }
}

Errores

Los errores devuelven el estado HTTP correspondiente y un cuerpo JSON con un tipo y un mensaje.

Ejemplo de respuesta
{
  "type": "UserInputError",
  "message": "items is required and must be a non-empty array"
}
EstadoTipoSignificado
400UserInputErrorLa solicitud no era válida, por ejemplo, faltaba un campo o el id era desconocido.
401UnauthorizedErrorEl encabezado de autorización falta o tiene un formato incorrecto.
403ForbiddenErrorLa clave de API no es válida.
500Algo salió mal de nuestro lado. Intentalo de nuevo más tarde.

Cómo encaja todo

  • Solo podés pedir artículos que hayas pedido anteriormente. Los artículos personalizados, la cinta de embalaje y los textos en vinilo no están disponibles a través de la API.
  • Primero lee tus artículos, direcciones y métodos de pago, luego pasa sus IDs a POST /api/orders.
  • GET /api/orders enumera los pedidos realizados, empezando por el más reciente. El número de cada pedido coincide con el que devuelve POST /api/orders.
  • La mayoría de los productos se repiten con sus dimensiones originales (ancho y alto en pulgadas). La ropa (remeras, remeras gruesas y buzos) tiene en su lugar un talle de prenda: GET /api/items la devuelve en size con isSizeRequired en true, y vos enviás items[].size para hacer el pedido. Los talles válidos dependen del producto y puedes cambiar la talla al repetir pedido; por ejemplo, repetir pedido de una remera talle M como talle L.
  • GET /api/items y GET /api/orders están paginados con límite y desplazamiento; los puntos finales de direcciones y pagos no lo están.