MakeItFun for AI agents

Print-on-demand merch (Printful) designed and ordered by software for your users: t-shirts, hoodies, caps, mugs, posters, bags, patches and more. MakeItFun is one of the seller networks of the APP v0 agent protocol; keys, sandbox, SDKs and the complete documentation live on the shared developer hub.

Developer hub: MakeItFun API Portal: keys and sandbox

What your agent can do for a linked user

DesignFrom a prompt (AI), exact text (fonts, colours, outline, arc), the user's own picture (upload) or a Design Curator look (22 curated styles with preview pictures, suggestions per occasion, vibe, city or event).
PreviewReal Printful mockups on the chosen product and colour in 30-120 s, multi-placement, extra lifestyle/flat/folded views, print specification with dpi check.
CatalogCategories, products with price from (CHF), colours and sizes with firm unit prices, size charts, shipping options before any quote.
Quote and orderUnits plus real shipping to the user's saved address; crew orders with a name, number and size per member; the user pays with one tap in the app (Stripe Checkout, 30 minutes).
After the orderStatus (paid, in production, shipped with tracking), cancellation until production starts, Stripe receipt, webhooks instead of polling.
Consent and limitsThe user links their MakeItFun account once (code in Profile, Connected apps, or the universal Connect with Okidooki page) and sets limits your orders must respect.

Endpoints

WhatWhere
Gateway (REST, APP v0)https://europe-west1-make-it-fun-app.cloudfunctions.net/a2aGateway/a2a/v0/{route} (also https://makeitfun.shop/a2a/v0/{route})
Agent card/a2a/v0/card
Google A2A card / JSON-RPC/.well-known/agent.json · /a2a
MCP serverhttps://makeitfun.shop/mcp
Health/a2a/v0/health · status page
Routesdiscover, categories, products, sizes, shipping, upload, preview, preview/status, mockups, mockups/status, designs, styles/feedback, quote, order, orders, status, cancel, receipt, link/start, link/status, link/revoke, sandbox/pay

First call

Every route is POST with a JSON body, signed with your key: Authorization: Bearer <key>, X-Timestamp (unix seconds) and X-Signature = hex(HMAC-SHA256(key, timestamp + "." + rawBody)). Test keys (mif_a2a_test_…) act only on sandbox accounts, generate real previews and settle orders with sandbox/pay, all free.

import { AppV0Client } from "https://okidooki.app/app-v0/sdk/app-v0.mjs";
const mif = new AppV0Client({ gateway: "https://europe-west1-make-it-fun-app.cloudfunctions.net/a2aGateway", key: process.env.MAKEITFUN_KEY });
const looks = await mif.call("discover", { suggest: { productType: "hoodie", occasion: "birthday", city: "Basel" } });
let p = await mif.call("preview", { userRef, sellerId: looks.recommendedProduct.sellerId, variantId: looks.recommendedProduct.variantId, design: { kind: "style", styleId: looks.styles[0].id, slots: { name: "LENA", year: "2026" } } });
while (p.status !== "done") { await new Promise((r) => setTimeout(r, 10000)); p = await mif.call("preview/status", { userRef, jobId: p.jobId }); }
const q = await mif.call("quote", { userRef, sellerId: looks.recommendedProduct.sellerId, variantId: looks.recommendedProduct.variantId, designId: p.designId, quantity: 1 });
const o = await mif.call("order", { userRef, quoteId: q.quoteId }, { idempotencyKey: crypto.randomUUID() }); // o.confirmUrl: the user pays in MakeItFun

Quickstart · Full route reference · OpenAPI · Postman · SDK JavaScript / Python · All networks

Rules that protect users

Operated by OKIDOOKI AG, Basel. Developer contact: support@okidooki.app.