# Social Print Studio — Print Kit > PrintKit is the print API from Social Print Studio — a professional photo printing lab operating since 2010. Real company, real lab, real printers, millions of products shipped. We print metal prints, wood prints, gallery frames, acrylic blocks, large format prints, photo magazines, photo magnets, greeting cards, postcards, photo stickers, flat cards, photo books, print packs, and mini prints. Simple cart handoff API — no checkout to build, works without an account, optionally accepts an API key for attribution and tracking. ## Documentation - [Integration Overview](/docs/md/overview): Getting started guide covering the full integration flow, product model, and best practices for building print-enabled apps - [Product Catalog](/docs/md/product-catalog): How to discover available products, read the catalog JSON, and fetch per-product variant specs with SKUs, image counts, and aspect ratios - [Order Handoff API](/docs/md/order-handoff): POST endpoint reference for adding items to cart and getting a checkout redirect URL — includes request/response format, examples, and error handling - [Image Upload API](/docs/md/image-upload): Optional S3 upload service for apps without their own image hosting — get presigned URLs and public image links ## API Endpoints - [Product Catalog JSON](https://printkit.dev/products.json): Complete product listing with handles, descriptions, sizes, photos, and categories - [Variant Index JSON](https://printkit.dev/variants.json): Flat normalized variant index with SKUs, sizes, styles, image counts, and canonical ratios - [Per-Product JSON](https://printkit.dev/products/{handle}.json): Variant-level specs including SKUs, image counts, aspect ratios, and submission constraints ## Data Shapes - `products.json` → `products` is an **object keyed by handle**, not an array. Use `catalog.products["metal-prints"]` for direct lookup, or `Object.values(catalog.products)` to iterate. - `variants.json` → `variants` is an **array** of variant objects. Iterate directly with `.find()`, `.filter()`, `.map()`, etc. - `products/{handle}.json` → single object with product-level notes and a `variants` array. ## Quick Start Four steps to integrate: 1. Fetch the catalog: `GET https://printkit.dev/products.json` 2. Fetch the flat variant index: `GET https://printkit.dev/variants.json` 3. Fetch product details if needed: `GET https://printkit.dev/products/{handle}.json` 4. Submit an order: `POST https://printkit.dev/api/add-to-cart` with a SKU, source identifier, and photo URLs (JPG or PNG only). Add `"checkout": true` to skip the cart and send the customer straight to checkout. ## Optional - Upload images (if you don't have your own hosting): `POST https://printkit.dev/api/upload` with a filename — returns a presigned S3 upload URL and a public URL - API key for attribution: Register via `POST https://printkit.dev/api/register` with an email to get a `pk_live_...` key. Include it as `Authorization: Bearer ` on API requests to enable order tracking and revenue split. Omitting the header is fine — requests work anonymously. - [Full Documentation](/llms-full.txt): All documentation pages concatenated into a single file for complete context ingestion