# FAQ > Short answers to the questions developers ask most. Source: https://swaglists.com/docs/faq ## Getting started ### Do I need to create products before I can order? No. You can order a catalog variant with inline designs ([personalized orders](https://swaglists.com/docs/personalized-orders.md)). For a regular store, creating products is easier: each variant gets a SKU your store sends with orders. ### Does test mode cost anything? No. Test keys use a separate wallet with free test credits, and production is simulated. See [Test mode](https://swaglists.com/docs/test-mode.md). ### Can I use the API from my storefront's JavaScript? No. Secret keys must stay on your server. Call the API from your backend and expose only what your frontend needs (for example shipping options). ### Is there an SDK? The API is plain JSON over HTTPS and works with any HTTP client; every page has cURL, Node.js and Python examples. You can generate a typed client from the [OpenAPI document](https://swaglists.com/api/v1/openapi.json). For webhooks, use the official Standard Webhooks libraries ([Webhooks](https://swaglists.com/docs/webhooks.md#verify-signatures)). ## Orders ### How do I avoid duplicate orders? Set `external_id` to your store's order id and send an `Idempotency-Key` derived from it. A duplicate returns `409 duplicate_external_id` with the `existing_id`. See [Idempotency](https://swaglists.com/docs/idempotency.md). ### When are credits taken? They are reserved when the order is confirmed and spent once it is accepted for production; canceled or failed orders give them back. See [Credits & billing](https://swaglists.com/docs/billing.md#order-flow). ### My order is `on_hold`. What do I do? Check `hold_reason`. `insufficient_funds` resolves automatically when you add credits; most other reasons are handled by our team. See [hold reasons](https://swaglists.com/docs/orders.md#hold-reasons). ### Can I change an order after creating it? Only drafts can be changed (`PATCH /orders/{id}`). A confirmed order can be canceled while it is not yet in production; create a corrected order afterwards. ### Can I cancel an order? Yes, while it is `draft`, `on_hold` or `processing`. Once it is `in_production` it can no longer be canceled. Credits are returned to your wallet immediately. ### How long does production and delivery take? Each catalog product lists `production_days`; shipping rates list transit time and `estimated_delivery_days` (production + transit, in business days). ### Which countries do you ship to? `POST /shipping/rates` tells you for any destination and set of items. If nothing can ship there, order creation fails with `shipping_method_unavailable`. ## Products & artwork ### What artwork resolution do I need? 300 DPI at the printed size is ideal; the placement's `recommended_width_px` × `recommended_height_px` covers the full area. Below 150 DPI you get a warning, below 75 DPI the artwork is rejected. See [Designs](https://swaglists.com/docs/designs.md#resolution). ### Which file formats are accepted? PNG (recommended, with transparency), JPEG, WebP, TIFF, GIF and SVG, up to 100 MB. ### Can I use my existing store SKUs? Yes — set `sku` on each variant when you create the product, or change it later. SKUs must be unique in your account. See [Products & SKUs](https://swaglists.com/docs/products.md#skus). ### Do my customers see your name anywhere? We never put our name in front of your customers: the tracking page and shipment emails use your branding, packing slips carry your brand wherever the product ships with one, and tracking links go to the carrier. ## Webhooks ### My webhook signatures do not verify. Almost always the body was parsed and re-serialized before verification. Verify the raw bytes, use the secret of the right endpoint and mode (test and live differ), and make sure your server clock is correct (5-minute tolerance). ### I missed webhooks while my server was down. We retry for about 28 hours. After that, list missed events with `GET /events` (30 days) or resend them from **Developers → Events**. ### Can events arrive twice or out of order? Yes. Deduplicate by event `id` and compare statuses/timestamps instead of assuming order. See [best practices](https://swaglists.com/docs/webhooks.md#best-practices). ## Account ### How do I go live? Verify your email, buy credits, create a live key and a live webhook endpoint, then follow the [going live checklist](https://swaglists.com/docs/going-live.md). ### Who can see or rotate API keys? Every member can see the list of keys (never the secrets) in **Developers → API keys**; owners, admins and developers can create, roll and revoke them. ### Where do I get help? Email support@swaglists.com and include the `request_id` of any failing request.