API da Sticker Mule
A API da Sticker Mule permite repetir encomendas e aceder, a partir do seu próprio código, aos seus itens guardados, moradas e formas de pagamento. É uma API REST simples, autenticada através de uma chave API pessoal.
Início rápido
1. Gerar uma chave API
Abra as definições da sua conta e, em Definições da loja, gere uma chave de API. Copie-o de imediato, pois só é apresentado uma vez.
Abrir as definições da conta2. Chamar a API
Envie a sua chave como um token Bearer. Este exemplo cria uma encomenda para um artigo guardado:
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
Todos os pedidos devem incluir a sua chave API como um token Bearer no cabeçalho Autorização.
Authorization: Bearer YOUR_API_KEY- A API está disponível apenas para contas pessoais, não para contas de equipa.
- Cada conta tem uma chave. Gerar uma nova chave substitui a antiga.
- Trate a chave como uma palavra-passe. Pode ser utilizada para fazer encomendas e aceder aos seus dados guardados.
URL base
Todos os endpoints são relativos a este URL base.
https://www.stickermule.com/apiEndpoints
Devolve os artigos que podem ser encomendados novamente. O ID de cada item é válido como items[].id ao criar uma encomenda.
GET /api/itemscurl "https://www.stickermule.com/api/items?limit=20" \ -H "Authorization: Bearer YOUR_API_KEY"Parâmetros de consulta
Parâmetro Tipo Predefinido Descrição limitnumber20Número de artigos a devolver, de 1 a 50. offsetnumber0Número de elementos a ignorar antes de devolver os resultados. currencystringUSDCódigo de moeda ISO 4217 utilizado para preços. localestringenConfiguração regional utilizada para os nomes e preços dos produtos. Resposta
Os resultados são paginados com limite (limit) e deslocamento (offset), e canLoadMore é verdadeiro quando existem mais elementos disponíveis. Como a paginação é baseada em offset, as páginas podem mudar de posição à medida que chegam novas encomendas.
Campo Tipo Descrição idstringIdentificador do artigo. Utilize-o como items[].id ao criar uma encomenda. namestring | nullNome personalizado que atribuiu ao artigo, se aplicável. productIdnumberIdentificador de produto Sticker Mule. productNamestring | nullNome do produto, ou nulo se o produto já não estiver disponível. quantitynumberQuantidade da encomenda original. sizeRegularItemDimensions | TShirtDimensions | HoodieDimensionsTamanho do artigo. No caso das t-shirts e das t-shirts heavyweight, um objeto de tamanho de vestuário com __typename igual a TShirtDimensions e um tamanho. No caso das sweats, __typename HoodieDimensions e um tamanho. Para todos os outros produtos, as dimensões físicas em polegadas, com __typename RegularItemDimensions e os campos largura e altura. isSizeRequiredbooleanVerdadeiro se o produto exigir a indicação de um tamanho de vestuário para uma nova encomenda (t-shirts, t-shirts heavyweight e sweats). Caso contrário, falso. buyingOptionsobject | nullQuantidades permitidas para novas encomendas: mínimo, máximo e incremento. Nulo se o produto não estiver disponível. retailPricenumber | nullPreço para a quantidade mínima, ou nulo se o preço não estiver disponível. artworkUrlsstring[]URLs da arte aprovada para o artigo. 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 }Devolve as moradas de envio guardadas, com a morada predefinida em primeiro lugar. Cada ID é válido como addressId ao criar uma encomenda.
GET /api/addressescurl https://www.stickermule.com/api/addresses \ -H "Authorization: Bearer YOUR_API_KEY"Resposta
Campo Tipo Descrição idstringIdentificador de morada. Utilize-o como addressId ao criar uma encomenda. namestring | nullNome completo do destinatário. firstNamestring | nullNome do destinatário. lastNamestring | nullApelido do destinatário. companyNamestring | nullNome da empresa, se aplicável. addressLine1stringMorada addressLine2string | nullLinha de morada adicional, se aplicável. cityNamestringCidade. stateNamestring | nullNome do estado ou província, se aplicável. stateAbbreviationstring | nullAbreviatura do estado ou província, se aplicável. zipCodestringCódigo postal. countryIsostringCódigo de país ISO 3166, como por exemplo, US (EUA). countryNamestringNome do país. phonestring | nullNúmero de telefone de contacto, se aplicável. isDefaultbooleanIsto aplica-se à sua morada de entrega predefinida. 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 } ] }Devolve as suas formas de pagamento guardadas, com a morada predefinida em primeiro lugar. Cada ID é válido como paymentId ao criar uma encomenda.
GET /api/paymentscurl https://www.stickermule.com/api/payments \ -H "Authorization: Bearer YOUR_API_KEY"Resposta
Campo Tipo Descrição idstringIdentificador da forma de pagamento. Utilize-o como paymentId ao criar uma encomenda. ccTypestringMarca do cartão, como Visa ou Mastercard. lastDigitsstringÚltimos quatro dígitos do cartão. expirationobjectData de validade do cartão (mês e ano). isDefaultbooleanIsto aplica-se ao seu método de pagamento predefinido. Exemplo de resposta{ "payments": [ { "id": "7", "ccType": "visa", "lastDigits": "1007", "expiration": { "month": 7, "year": 2028 }, "isDefault": true } ] }Lista as encomendas efetuadas, da mais recente para a mais antiga. O número de cada encomenda corresponde ao devolvido 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 Predefinido Descrição limitnumber10Número de encomendas a devolver, de 1 a 50. offsetnumber0Número de encomendas a ignorar antes de apresentar os resultados. Resposta
Os resultados são paginados com limit e offset, e canLoadMore é verdadeiro quando existem mais encomendas disponíveis. Como a paginação é baseada em offset, as páginas podem mudar de posição à medida que são efetuadas novas encomendas.
Campo Tipo Descrição numberstringNúmero da encomenda. O mesmo valor devolvido por POST /api/orders. state"complete" | "canceled" | "gift_unclaimed" | "ready_for_production" | "in_production" | "ready_to_proof" | "awaiting_scheduled_date"O estado da encomenda. paymentState"paid" | "credit_owed" | "balance_due" | "failed" | "checkout" | "completed" | "pending" | "processing" | "void" | nullO estado de pagamento da encomenda, ou nulo. shipmentState"backorder" | "canceled" | "partial" | "pending" | "ready" | "shipped" | "returned_for_reship" | "reship" | "delivered"O estado de envio da encomenda. O valor predefinido é pendente. placedAtstringData e hora em que a encomenda foi efetuada, no formato ISO 8601. currencystringMoeda, no formato ISO 4217, em que a encomenda foi cobrada. itemTotalnumberSubtotal dos artigos, antes dos portes de envio, impostos e descontos. totalnumberValor total cobrado, incluindo portes de envio e impostos, deduzidos os descontos. expectedDeliveryDatestring | nullData e hora estimadas de entrega, no formato ISO 8601 ou nulo. deliveredAtstring | nullData e hora em que a encomenda foi entregue, no formato de data e 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 }Efetua uma encomenda de um ou mais artigos guardados, com envio para uma morada guardada e pagamento através de um método de pagamento guardado.
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 Artigos a encomendar. Deve conter, pelo menos, um artigo. items[].idstringSim Um ID de um artigo proveniente de GET /api/items. items[].quantitynumberSim Quantidade a encomendar deste artigo. items[].sizeTShirtSize | HoodieSize | nullNão Tamanho da peça de vestuário, obrigatório ao encomendar vestuário (t-shirts, t-shirts heavyweight e sweats). Utilize os valores abaixo que correspondam ao produto. Omitir para outros produtos. addressIdstringSim Um ID de morada proveniente de GET /api/addresses. paymentIdstringSim Um ID de forma de pagamento proveniente de GET /api/payments. Uma encomenda pode conter até 50 artigos. A quantidade de cada artigo tem de respeitar os valores mínimo, máximo e o incremento definidos para o produto em GET /api/items.
Tamanhos de vestuário
Os tamanhos válidos dependem do corte do produto:
- T-shirts e t-shirts heavyweight (TShirtSize):
"sizeYS" | "sizeYM" | "sizeYL" | "sizeS" | "sizeM" | "sizeL" | "sizeXL" | "size2XL" | "size3XL" | "size4XL" | "size5XL" | "size6XL" | "size7XL" - Sweats (HoodieSize):
"sizeS" | "sizeM" | "sizeL" | "sizeXL" | "size2XL"
Resposta
Exemplo de resposta{ "order": { "number": "R286234605" } }- T-shirts e t-shirts heavyweight (TShirtSize):
Erros
Os erros devolvem o estado 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"
}| Estado | Tipo | Significado |
|---|---|---|
400 | UserInputError | O pedido não é válido, por exemplo, devido à falta de um campo ou a um ID desconhecido. |
401 | UnauthorizedError | O cabeçalho Autorização está em falta ou tem um formato inválido. |
403 | ForbiddenError | A chave da API não é válida. |
500 | — | Ocorreu um erro do nosso lado. Tente novamente mais tarde. |
Como tudo se encaixa
- Só é possível encomendar através da API artigos que já tenham sido encomendados anteriormente. Os artigos personalizados, a fita adesiva para embalagens e as letras em vinil não estão disponíveis através da API.
- Obtenha primeiro os seus artigos, moradas e métodos de pagamento e, em seguida, passe os respetivos IDs para POST /api/orders.
- O endpoint GET /api/orders lista as encomendas efetuadas, da mais recente para a mais antiga. O número de cada encomenda corresponde ao devolvido por POST /api/orders.
- A maioria dos produtos mantém as dimensões originais (largura e altura em polegadas) quando é encomendada novamente. No caso do vestuário (t-shirts, t-shirts heavyweight e sweats), é utilizado um tamanho de vestuário. O endpoint GET /api/items devolve esse tamanho no campo size, com isSizeRequired definido como verdadeiro, e deve enviar items[].size para efetuar a encomenda. Os tamanhos disponíveis dependem do produto e podem ser alterados ao encomendar novamente. Por exemplo, pode encomendar novamente uma t-shirt no tamanho sizeM como sizeL.
- Os endpoints GET /api/items e GET /api/orders utilizam paginação através dos parâmetros limit e offset; os endpoints de moradas e de pagamentos não.