# SudoMock > SudoMock is the mockup rendering API for developers, with official Node and Python SDKs. The documentation covers the REST API, PSD, photo and video mockups, text and fonts, webhooks, no-code integrations, the MCP server, and a two-request quickstart. > ## Agent Instructions > The base URL is https://api.sudomock.com. > Authenticate every request with the x-api-key header. Keys begin with sm_. > A render returns the finished image at data.print_files[0].export_path. A request sent with is_async true returns a job_id to poll at GET /api/v1/jobs/{job_id}. > Prefer the official SDKs over hand-written HTTP calls: npm install sudomock for Node, pip install sudomock for Python. - [SudoMock API](https://sudomock.com/docs/index.md): Render product mockups from PSD files and photos over HTTP. - [Quickstart](https://sudomock.com/docs/quickstart.md): From a Photoshop file to a rendered mockup in two requests. - [Authentication](https://sudomock.com/docs/authentication.md): How SudoMock identifies your requests. - [Render product mockups with Node.js](https://sudomock.com/docs/render-with-nodejs.md): Upload a PSD and render mockups from a Node.js service. - [Render product mockups with Next.js](https://sudomock.com/docs/render-with-nextjs.md): Render a PSD mockup from a Next.js route handler. - [Render mockups from an Express app](https://sudomock.com/docs/render-with-express.md): Upload a PSD and render it from one Express route. - [Render mockups in Cloudflare Workers](https://sudomock.com/docs/render-with-cloudflare-workers.md): Call the render API from a Worker with a stored API key. - [Render product mockups with Python](https://sudomock.com/docs/render-with-python.md): Upload a PSD and render artwork from a Python script. - [Render product mockups with Django](https://sudomock.com/docs/render-with-django.md): Call the mockup API from a Django view with the Python SDK. - [Render mockups from a FastAPI app](https://sudomock.com/docs/render-with-fastapi.md): Call the render API from an async FastAPI route. - [Render product mockups with Flask](https://sudomock.com/docs/render-with-flask.md): Upload a PSD once, then render it from a Flask route. - [Render mockups from a PHP backend](https://sudomock.com/docs/render-with-php.md): Call the SudoMock API from PHP with the curl extension. - [Render product mockups with Laravel](https://sudomock.com/docs/render-with-laravel.md): Render a PSD mockup from Laravel with the Http client. - [Render mockups from a Go service](https://sudomock.com/docs/render-with-go.md): Upload a PSD and render it with net/http and encoding/json. - [Render mockups with Ruby on Rails](https://sudomock.com/docs/render-with-rails.md): Upload a PSD and render artwork from a Rails controller. - [What you can do in the dashboard](https://sudomock.com/docs/dashboard/introduction.md): The seven areas of the SudoMock dashboard. - [Create a mockup in the browser](https://sudomock.com/docs/dashboard/create.md): Build a mockup without writing a request. - [The library of mockups you saved](https://sudomock.com/docs/dashboard/mockups.md): Find, rename and delete your saved mockups. - [Upload fonts for your text layers](https://sudomock.com/docs/dashboard/fonts.md): Add your own typefaces to the catalogue. - [Watch deliveries from the panel](https://sudomock.com/docs/dashboard/webhooks.md): Endpoints, deliveries and the event feed. - [Serve mockups from your own domain](https://sudomock.com/docs/dashboard/custom-domains.md): Put rendered images on a domain you own. - [Set up the editor your buyers see](https://sudomock.com/docs/dashboard/studio.md): Branding and controls for the embedded editor. - [Create and revoke your API keys](https://sudomock.com/docs/dashboard/api-keys.md): Issue keys, watch usage, bind a domain. - [Invite your shop and set their access](https://sudomock.com/docs/dashboard/members.md): Invite by email, pick a role, keep one balance. - [SDKs](https://sudomock.com/docs/sdks.md): Official client libraries for Node and Python. - [Connect an agent](https://sudomock.com/docs/connect-an-agent.md): Give an MCP client access to your SudoMock account. - [Guides for the tools you already run](https://sudomock.com/docs/guides/introduction.md): Integration walkthroughs, answers, migration notes. - [Render a PSD without Photoshop](https://sudomock.com/docs/psd-mockups/render-a-psd-without-photoshop.md): Turn Photoshop templates into finished images over HTTP. - [Preparing a PSD](https://sudomock.com/docs/psd-mockups/preparing-a-psd.md): Author a Photoshop template that renders as designed. - [Upload a PSD](https://sudomock.com/docs/psd-mockups/upload-a-psd.md): Register a template once and read back every slot in it. - [Smart objects](https://sudomock.com/docs/psd-mockups/smart-objects.md): How a PSD design area is described and addressed. - [PSD compatibility](https://sudomock.com/docs/psd-mockups/psd-compatibility.md): Which Photoshop features render, and what to send instead. - [Artwork placement](https://sudomock.com/docs/psd-mockups/artwork-placement.md): Place, size, rotate and recolour artwork in a design area. - [Smart filters](https://sudomock.com/docs/concepts/smart-filters.md): Photoshop smart filters render with Adobe-level fidelity. - [Photo mockups](https://sudomock.com/docs/photo-mockups/overview.md): How a product photo becomes a mockup you render onto. - [Print areas and surfaces](https://sudomock.com/docs/photo-mockups/print-areas.md): Where artwork can land on a photo mockup, and how to move it. - [Render artwork onto a photo mockup](https://sudomock.com/docs/photo-mockups/render-artwork.md): Place a design on a mockup target and get a finished image. - [Text layers](https://sudomock.com/docs/text/text-layers.md): Swap PSD wording, font, size and colour per render. - [Fitting and colour](https://sudomock.com/docs/text/fitting-and-color.md): Keep new text in its box and recolour it per render. - [Fonts](https://sudomock.com/docs/text/fonts.md): Browse the catalogue and upload your own typefaces. - [How to edit PSD text by API](https://sudomock.com/docs/text/how-to-edit-psd-text-by-api.md): Change the wording inside a Photoshop file over HTTP. - [Render mockups with n8n and SudoMock](https://sudomock.com/docs/integrations/n8n.md): Render PSD and photo mockups inside an n8n workflow. - [Render mockups with Make and SudoMock](https://sudomock.com/docs/integrations/make.md): Render PSD and photo mockups inside a Make scenario. - [Customize products with Shopify and SudoMock](https://sudomock.com/docs/integrations/shopify.md): Let shoppers personalise products in Shopify. - [Customize products with WooCommerce and SudoMock](https://sudomock.com/docs/integrations/woocommerce.md): Let shoppers personalise products in WooCommerce. - [Render mockups with Zapier and SudoMock](https://sudomock.com/docs/integrations/zapier.md): Call the SudoMock render API from Webhooks by Zapier. - [Render mockups with Airtable and SudoMock](https://sudomock.com/docs/integrations/airtable.md): Render mockups from Airtable records with a script automation. - [Render mockups with Google Sheets and SudoMock](https://sudomock.com/docs/integrations/google-sheets.md): Render a mockup for every row of a sheet with Apps Script. - [Render mockups with Adalo and SudoMock](https://sudomock.com/docs/integrations/adalo.md): Call the SudoMock render API from an Adalo Custom Action. - [Fit and blend modes](https://sudomock.com/docs/concepts/fit-and-blend-modes.md): How artwork meets an area, and how blend modes render. - [What PSD features are supported](https://sudomock.com/docs/faq/what-psd-features-are-supported.md): Check a Photoshop file against what renders today. - [Why did my hidden layer not render](https://sudomock.com/docs/faq/why-did-my-hidden-layer-not-render.md): How hidden text layers and smart objects differ. - [Why is my render showing old artwork](https://sudomock.com/docs/faq/why-is-my-render-showing-old-artwork.md): Why a changed design still renders the previous image. - [Webhooks](https://sudomock.com/docs/webhooks/overview.md): Get a signed HTTPS request the moment a job finishes. - [Verifying signatures](https://sudomock.com/docs/webhooks/verifying-signatures.md): Check the HMAC before you act on a webhook delivery. - [Legacy paths](https://sudomock.com/docs/changes/legacy-paths.md): What the older SudoMock paths map to, and what still works. - [Introduction](https://sudomock.com/docs/api-reference/introduction.md): Base URL, authentication, async renders and versioning. - [Pagination](https://sudomock.com/docs/api-reference/pagination.md): Walk long lists with offsets, cursors and page numbers. - [Rate limits and concurrency limits](https://sudomock.com/docs/api-reference/usage-limits.md): The request rate, the parallel ceiling, the headers. - [Error codes and how to retry them](https://sudomock.com/docs/errors.md): Status codes, error_code values and safe retries. - [Create a mockup from a PSD](https://sudomock.com/docs/api-reference/psd-mockups/create-a-mockup-from-a-psd.md): Ingests a PSD file from URL, extracts layers and smart objects, generates thumbnails. - [Retrieve a list of PSD mockups](https://sudomock.com/docs/api-reference/psd-mockups/retrieve-a-list-of-psd-mockups.md): List your mockups, with pagination, filtering and sorting. - [Retrieve a single PSD mockup](https://sudomock.com/docs/api-reference/psd-mockups/retrieve-a-single-psd-mockup.md): Read one mockup. The body matches what the upload endpoint returns. - [Update an existing PSD mockup](https://sudomock.com/docs/api-reference/psd-mockups/update-an-existing-psd-mockup.md): Rename a mockup, or set the colours it answers to by name. - [Remove an existing PSD mockup](https://sudomock.com/docs/api-reference/psd-mockups/remove-an-existing-psd-mockup.md): Delete a mockup and the files that belong to it. This cannot be undone. - [Render a PSD mockup](https://sudomock.com/docs/api-reference/psd-mockups/render-a-psd-mockup.md): Renders a mockup by compositing layers with user-provided images. - [Create a mockup from a product photo](https://sudomock.com/docs/api-reference/photo-mockups/create-a-mockup-from-a-product-photo.md): Turns one product photo into a reusable mockup. By default the request returns the ready mockup; set is_async=true to receive a job URL. Costs 25 credits. - [Retrieve a list of photo mockups](https://sudomock.com/docs/api-reference/photo-mockups/retrieve-a-list-of-photo-mockups.md): Returns a paginated list of the user's photo mockups with print area summaries. Each mockup includes its status, thumbnail, dimensions, and print area names/bboxes. Ordered by creation date (newest first). - [Retrieve a single photo mockup](https://sudomock.com/docs/api-reference/photo-mockups/retrieve-a-single-photo-mockup.md): Returns mockup metadata and print-area summaries. Use the mockup_id with POST /api/v1/photo-mockups/{mockup_id}/render to render artwork. - [Update an existing photo mockup](https://sudomock.com/docs/api-reference/photo-mockups/update-an-existing-photo-mockup.md): Rename a mockup and/or set the colours it answers to by name. A render may then send a name where it would send a hex code. - [Replace the print areas of a photo mockup](https://sudomock.com/docs/api-reference/photo-mockups/replace-the-print-areas-of-a-photo-mockup.md): Replaces a ready photo mockup's printable areas in the supplied order. Each area must be a convex four-point shape within the source image. - [Render a photo mockup](https://sudomock.com/docs/api-reference/photo-mockups/render-a-photo-mockup.md): Renders artwork onto a previously created photo mockup identified by the path mockup_id. Artwork can target a saved print area or a whole product surface, and a product offers both. The mockup must be in 'ready' status. Costs 5 credits. Returns CDN URL(s) of the rendered image. - [Remove an existing photo mockup](https://sudomock.com/docs/api-reference/photo-mockups/remove-an-existing-photo-mockup.md): Permanently deletes the mockup and its print areas. This action cannot be undone. - [Create a new font](https://sudomock.com/docs/api-reference/fonts/create-a-new-font.md): Upload a custom TTF or OTF font (Pro plan and above). Send either a multipart 'file' or a JSON body with a public 'url'. The font is validated and security-checked before it is stored. - [Retrieve a list of fonts](https://sudomock.com/docs/api-reference/fonts/retrieve-a-list-of-fonts.md): List available fonts for text layers: the shared system catalog plus your own uploaded fonts. Supports search, category filtering, and pagination. - [Retrieve a single font](https://sudomock.com/docs/api-reference/fonts/retrieve-a-single-font.md): Fetch a single font by id: a system font, or one of your own uploads. - [Remove an existing font](https://sudomock.com/docs/api-reference/fonts/remove-an-existing-font.md): Delete one of your own uploaded fonts. System fonts cannot be deleted. - [Render a video mockup](https://sudomock.com/docs/api-reference/video-mockups/render-a-video-mockup.md): Animates a mockup: produces a still render from the given smart objects, then animates it. Returns 202 with a job_id to poll (GET /api/v1/jobs/{job_id}). - [Remove the background from an image](https://sudomock.com/docs/api-reference/background-removal/remove-the-background-from-an-image.md): Isolates the subject of an image onto a transparent background and returns a clean PNG cutout URL, ready to use as render artwork. Costs 25 credits per image; credits are refunded automatically if processing fails. - [Create a new Studio session](https://sudomock.com/docs/api-reference/studio/create-a-new-studio-session.md): Generates an opaque session token for the Studio iframe. Requires x-api-key header (WooCommerce, custom) or Shopify App Proxy HMAC. No unauthenticated access. API key never leaves the server. - [Retrieve the Studio config](https://sudomock.com/docs/api-reference/studio/retrieve-the-studio-config.md): Returns the API key's complete effective Studio configuration. Requires the x-api-key header. - [Update the Studio config](https://sudomock.com/docs/api-reference/studio/update-the-studio-config.md): Merchant updates Studio branding/features. Requires x-api-key header. Header controls may all be turned off, showClose included; when no visible control remains the header is not shown at all, and closing the editor becomes the host page's responsibility. This is accepted on purpose and is not rejec… - [Consume a Studio action](https://sudomock.com/docs/api-reference/studio/consume-a-studio-action.md): Server-only exactly-once confirmation of a Studio action against its bound successful render. - [Create a new webhook endpoint](https://sudomock.com/docs/api-reference/webhook-endpoints/create-a-new-webhook-endpoint.md): Create an endpoint. The signing secret is returned in FULL here, once. - [Retrieve a list of webhook endpoints](https://sudomock.com/docs/api-reference/webhook-endpoints/retrieve-a-list-of-webhook-endpoints.md) - [Retrieve a single webhook endpoint](https://sudomock.com/docs/api-reference/webhook-endpoints/retrieve-a-single-webhook-endpoint.md) - [Update an existing webhook endpoint](https://sudomock.com/docs/api-reference/webhook-endpoints/update-an-existing-webhook-endpoint.md) - [Remove an existing webhook endpoint](https://sudomock.com/docs/api-reference/webhook-endpoints/remove-an-existing-webhook-endpoint.md): Hard delete (delivery log rows cascade). - [Rotate the signing secret](https://sudomock.com/docs/api-reference/webhook-endpoints/rotate-the-signing-secret.md): Generate a new secret, returned in FULL once. - [Send a test event](https://sudomock.com/docs/api-reference/webhook-endpoints/send-a-test-event.md): Enqueue a synthetic webhook.test event through the REAL signed delivery path. - [Retrieve the delivery overview](https://sudomock.com/docs/api-reference/webhook-deliveries/retrieve-the-delivery-overview.md): Window-scoped delivery rollup spanning every endpoint the caller owns: global total/failed COUNTs, a per-day sparkline, and a per-endpoint breakdown (total/failed/last_activity). The path is 'overview', not an endpoint id. - [Retrieve a list of events](https://sudomock.com/docs/api-reference/webhook-deliveries/retrieve-a-list-of-events.md): Reverse-chron delivery log spanning every endpoint the caller owns. The response groups rows by (job_id, event_type) into events. - [Retrieve a list of deliveries](https://sudomock.com/docs/api-reference/webhook-deliveries/retrieve-a-list-of-deliveries.md) - [Retrieve a single delivery](https://sudomock.com/docs/api-reference/webhook-deliveries/retrieve-a-single-delivery.md): Full single delivery row including the captured request body + headers (every attempt) and, for failed/dead attempts, the response body + headers. Fetched on demand, so the LIST endpoints stay lean and never carry these large fields. - [Replay a single delivery](https://sudomock.com/docs/api-reference/webhook-deliveries/replay-a-single-delivery.md): Re-send a single delivery. Replays are idempotent, so re-sending is always safe. - [Replay all failed deliveries](https://sudomock.com/docs/api-reference/webhook-deliveries/replay-all-failed-deliveries.md) - [Retrieve a list of jobs](https://sudomock.com/docs/api-reference/jobs/retrieve-a-list-of-jobs.md): List the caller's async jobs (render, video, upload, or 2D mockup creation), newest first and keyset-paginated. Optionally filter by kind and/or mockup_uuid (e.g. one mockup's videos). Each item has the SAME shape as GET /api/v1/jobs/{job_id} plus list display fields (duration_seconds/audio/mockup_n… - [Retrieve a single job](https://sudomock.com/docs/api-reference/jobs/retrieve-a-single-job.md): Poll an async render, video, upload, or 2D mockup creation job. Returns its current status and result when available. - [Retrieve the current account](https://sudomock.com/docs/api-reference/account/retrieve-the-current-account.md): Returns account details, subscription info, usage statistics, and API key metadata for the authenticated user. Requires x-api-key header authentication. - [Retrieve a list of plans](https://sudomock.com/docs/api-reference/account/retrieve-a-list-of-plans.md): Returns all available subscription plans with pricing and API limits ## OpenAPI Specs - [openapi](/docs/openapi.json)