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 conta2. Chamar a API
Envie sua chave como um token Bearer. Este exemplo cria um pedido para um item salvo:
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/apiEndpoints
Retorna os itens disponíveis para pedido repetido. O id de cada item é válido como items[].id ao criar um pedido.
GET /api/itemscurl "https://www.stickermule.com/api/items?limit=20" \ -H "Authorization: Bearer YOUR_API_KEY"Parâmetros de consulta
Parâmetro Tipo Padrão Descriçã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.
Campo Tipo Descriçã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/addressescurl https://www.stickermule.com/api/addresses \ -H "Authorization: Bearer YOUR_API_KEY"Resposta
Campo Tipo Descriçã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/paymentscurl https://www.stickermule.com/api/payments \ -H "Authorization: Bearer YOUR_API_KEY"Resposta
Campo Tipo Descriçã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/orderscurl "https://www.stickermule.com/api/orders?limit=10" \ -H "Authorization: Bearer YOUR_API_KEY"Parâmetros de consulta
Parâmetro Tipo Padrão Descriçã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.
Campo Tipo Descriçã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/orderscurl -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
Campo Tipo Obrigatório Descrição itemsarraySim Itens para pedir. Deve conter pelo menos um item. items[].idstringSim Um ID de item retornado por GET /api/items. items[].quantitynumberSim Quantidade a ser pedida para o item. items[].sizeTShirtSize | HoodieSize | nullNão Tamanho 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. addressIdstringSim Um ID de endereço obtido a partir de GET /api/addresses. paymentIdstringSim Um 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" } }- Camisetas e camisetas heavyweight (TShirtSize):
Erros
Erros retornam o status HTTP correspondente e um corpo JSON com um tipo e uma mensagem.
{
"type": "UserInputError",
"message": "items is required and must be a non-empty array"
}| Status | Tipo | Significado |
|---|---|---|
400 | UserInputError | A solicitação foi invalidada, por exemplo, devido a um campo ausente ou a um ID desconhecido. |
401 | UnauthorizedError | O cabeçalho de autorização está faltando ou malformado. |
403 | ForbiddenError | A chave de API é inválida. |
500 | — | Algo 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.