Ir para o conteúdo principal

API da Sticker Mule

A API da Sticker Mule permite repetir pedidos de produtos e ler seus itens salvos, endereços e formas de pagamento diretamente do seu código. É uma pequena API REST autenticada com uma chave de API pessoal.

Introdução rápida

1. Gerar uma chave de API

Abra as configurações da sua conta e gere uma chave de API nas configurações da loja. Copie-a imediatamente — ela é exibida uma só vez.

Abrir configurações da conta

2. Chamar a API

Envie sua chave como um token Bearer. Este exemplo cria um pedido para um item salvo:

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"
  }'

Autenticação

Cada solicitação deve incluir sua chave de API como um token Bearer na seção "Autorização".

Authorization: Bearer YOUR_API_KEY
  • A API está disponível apenas para contas pessoais, não para contas de equipe.
  • Cada conta possui uma chave. Gerar uma nova chave substitui a antiga.
  • Trate a chave como uma senha. Ela pode fazer pedidos e ler seus dados salvos.

URL base

Todos os endpoints são relativos a este URL base.

https://www.stickermule.com/api

Endpoints

Retorna os itens disponíveis para pedido repetido. O id de cada item é válido como items[].id ao criar um pedido.

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

Parâmetros de consulta

ParâmetroTipoPadrãoDescrição
limitnumber20Número de itens a retornar, de 1 a 50.
offsetnumber0Número de itens a ignorar antes de retornar os resultados.
currencystringUSDCódigo de moeda ISO 4217 usado para preços.
localestringenLocal usado para nomes de produtos e preços.

Resposta

Os resultados são paginados com limite e deslocamento (offset), e canLoadMore é verdadeiro quando há mais itens disponíveis. Como a paginação é baseada no offset, as páginas podem mudar conforme novos pedidos chegam.

CampoTipoDescrição
idstringIdentificador do item. Use-o como items[].id ao criar um pedido.
namestring | nullNome personalizado que você deu ao item, se houver.
productIdnumberIdentificador de produto Sticker Mule.
productNamestring | nullNome do produto ou vazio se o produto não estiver mais disponível.
quantitynumberQuantidade do pedido original.
sizeRegularItemDimensions | TShirtDimensions | HoodieDimensionsTamanho do item. Para camisetas e camisetas heavyweight, um objeto de tamanho de vestuário com __typename TShirtDimensions e um tamanho. Para moletons, __typename HoodieDimensions e um tamanho. Para qualquer outro produto, dimensões físicas em polegadas com __typename RegularItemDimensions e largura e altura.
isSizeRequiredbooleanVerdadeiro quando o produto precisa de um tamanho de vestuário para repetir pedido (camisetas, camisetas heavyweight e Moletons). Caso contrário, falso.
buyingOptionsobject | nullQuantidades permitidas para pedidos repetidos como: mínima, máxima e incremento. Deixe em branco se o produto estiver indisponível.
retailPricenumber | nullPreço na quantidade mínima ou vazio se o preço não estiver disponível.
artworkUrlsstring[]URLs da arte aprovada para o item.
Exemplo de resposta
{
  "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
}

Retorna seus endereços de frete salvos, com o padrão primeiro. Cada id é válido como addressId ao criar um pedido.

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

Resposta

CampoTipoDescrição
idstringIdentificador do endereço. Use-o como addressId ao criar um pedido.
namestring | nullNome completo do destinatário
firstNamestring | nullNome do destinatário
lastNamestring | nullSobrenome do destinatário
companyNamestring | nullNome da empresa, se houver.
addressLine1stringEndereço da rua
addressLine2string | nullLinha de endereço adicional, se houver.
cityNamestringCidade
stateNamestring | nullEstado ou nome da província, caso aplicável.
stateAbbreviationstring | nullEstado ou abreviação da província, caso aplicável.
zipCodestringCódigo postal.
countryIsostringCódigo de país ISO 3166, como por exemplo US (EUA).
countryNamestringNome do país.
phonestring | nullTelefone de contato, se houver.
isDefaultbooleanAplica-se a seu endereço de frete padrão.
Exemplo de resposta
{
  "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
    }
  ]
}

Retorna seus métodos de pagamento salvos, com o padrão em primeiro lugar. Cada ID é válido como o ID de pagamento ao criar um pedido.

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

Resposta

CampoTipoDescrição
idstringIdentificador do método de pagamento. Use-o como paymentId ao criar um pedido.
ccTypestringMarca do cartão, como Visa ou Mastercard.
lastDigitsstringÚltimos quatro dígitos do cartão.
expirationobjectValidade do cartão em mês e ano.
isDefaultbooleanIsso se aplica à sua forma de pagamento padrão.
Exemplo de resposta
{
  "payments": [
    {
      "id": "7",
      "ccType": "visa",
      "lastDigits": "1007",
      "expiration": { "month": 7, "year": 2028 },
      "isDefault": true
    }
  ]
}

Lista seus pedidos realizados, com os mais recentes primeiro. O número de cada pedido corresponde ao retornado por 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âmetroTipoPadrãoDescrição
limitnumber10Número de pedidos a retornar, de 1 a 50.
offsetnumber0Número de pedidos a ignorar antes de retornar os resultados.

Resposta

Os resultados são paginados com limite e deslocamento (offset), e canLoadMore é verdadeiro quando há mais pedidos disponíveis. Como a paginação é baseada no offset, as páginas podem mudar conforme novos pedidos são feitos.

CampoTipoDescrição
numberstringNúmero do pedido. O mesmo valor retornado por POST /api/orders.
state"complete" | "canceled" | "gift_unclaimed" | "ready_for_production" | "in_production" | "ready_to_proof" | "awaiting_scheduled_date"O status do pedido.
paymentState"paid" | "credit_owed" | "balance_due" | "failed" | "checkout" | "completed" | "pending" | "processing" | "void" | nullO status de pagamento do pedido, ou nulo.
shipmentState"backorder" | "canceled" | "partial" | "pending" | "ready" | "shipped" | "returned_for_reship" | "reship" | "delivered"O status de envio do pedido. O padrão é pendente.
placedAtstringO momento em que o pedido foi feito, conforme registrado no formato ISO 8601.
currencystringMoeda em que o pedido foi cobrado, no formato ISO 4217.
itemTotalnumberSubtotal de itens, antes de frete, impostos e descontos.
totalnumberValor total cobrado, incluindo frete e impostos, menos descontos.
expectedDeliveryDatestring | nullData de entrega estimada como um carimbo de data/hora ISO 8601, ou nulo.
deliveredAtstring | nullQuando o pedido foi entregue, como um carimbo de data/hora ISO 8601, ou nulo.
Exemplo de resposta
{
  "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
}

Faz um pedido de um ou mais itens salvos, enviados para um endereço salvo e cobrados em um método de pagamento salvo.

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"
  }'

Corpo da solicitação

CampoTipoObrigatórioDescrição
itemsarraySimItens para pedir. Deve conter pelo menos um item.
items[].idstringSimUm ID de item retornado por GET /api/items.
items[].quantitynumberSimQuantidade a ser pedida para o item.
items[].sizeTShirtSize | HoodieSize | nullNãoTamanho de vestuário, obrigatório ao pedir roupas (camisetas, camisetas heavyweight e Moletons). Use os valores abaixo que correspondem ao produto. Omitir para outros produtos.
addressIdstringSimUm ID de endereço obtido a partir de GET /api/addresses.
paymentIdstringSimUm ID de método de pagamento obtido através da requisição GET para /api/payments.

Um pedido pode conter até 50 itens. Cada quantidade deve respeitar o mínimo, máximo e incremento do produto obtidos em GET /api/items.

Tamanhos de vestuário

Os tamanhos válidos dependem do corte do produto:

  • Camisetas e camisetas heavyweight (TShirtSize): "sizeYS" | "sizeYM" | "sizeYL" | "sizeS" | "sizeM" | "sizeL" | "sizeXL" | "size2XL" | "size3XL" | "size4XL" | "size5XL" | "size6XL" | "size7XL"
  • Moletons (HoodieSize): "sizeS" | "sizeM" | "sizeL" | "sizeXL" | "size2XL"

Resposta

Exemplo de resposta
{
  "order": { "number": "R286234605" }
}

Erros

Erros retornam o status HTTP correspondente e um corpo JSON com um tipo e uma mensagem.

Exemplo de resposta
{
  "type": "UserInputError",
  "message": "items is required and must be a non-empty array"
}
StatusTipoSignificado
400UserInputErrorA solicitação foi invalidada, por exemplo, devido a um campo ausente ou a um ID desconhecido.
401UnauthorizedErrorO cabeçalho de autorização está faltando ou malformado.
403ForbiddenErrorA chave de API é inválida.
500Algo deu errado do nosso lado. Tente novamente mais tarde.

Como tudo se encaixa

  • Você só pode pedir itens que já tenha solicitado antes. Itens personalizados, fita para embalagem e letras em vinil não estão disponíveis pela API.
  • Leia primeiro seus itens, endereços e formas de pagamento e, em seguida, passe seus IDs para o POST /api/orders.
  • GET /api/orders lista seus pedidos realizados, com os mais recentes primeiro. O número de cada pedido corresponde ao retornado por POST /api/orders.
  • A maioria dos produtos é repetida com suas dimensões originais (largura e altura em polegadas). Já os itens de vestuário (camisetas, camisetas heavyweight e moletons) usam um tamanho de vestuário: o endpoint GET /api/items retorna esse valor em size, com isSizeRequired definido como true, e você envia items[].size para fazer o pedido. Os tamanhos válidos dependem do produto, e você pode alterar o tamanho ao repetir o pedido — por exemplo, repetir pedido de uma camiseta sizeM como sizeL.
  • GET /api/items e GET /api/orders são paginados com limit e offset; os endpoints para endereços e pagamentos não são.