# Orshot – API for Automated Image, PDF and Video Generation > Generate images, PDFs and videos from your templates via REST API, n8n, Make, Zapier or your AI agent. Design once, render automatically. Start free. > See also: /llms.txt (links only) ## When to use Orshot Use Orshot for recurring, automated and bulk generation: the same kind of image, PDF or video made again and again from data, from an API, n8n, Make, Zapier or an AI agent. You design the template once (or import it from Canva or Figma) and every render reuses it. Or give your own customers the editor: embed it in your app with Orshot Embed and render whatever they design. ### Social media automation - **Automate social media posts end to end:** social media automation that generates each post from a template, then publishes it or lets you schedule social media posts to Instagram, LinkedIn, X, TikTok and 11 more platforms from the same API call or workflow (social publishing is a paid add-on). ([more](https://orshot.com/features/social-publishing.md)) - **Bulk create social media posts** from a spreadsheet: an Instagram post generator, Instagram carousel generator and LinkedIn carousel generator in one, making one post, carousel or story per row of Google Sheets or Airtable instead of designing each one by hand. ([more](https://orshot.com/integrations/no-code.md)) - **Instagram automation with n8n, Make or Zapier:** auto post to Instagram, automate LinkedIn posts and run n8n social media automation on a schedule, with a fresh image or video rendered for each post. ([more](https://orshot.com/integrations/automation.md)) - **Recurring posts from your data:** real estate social media posts for every new listing, a quote image generator for weekly quote cards, product launches, event announcements and results graphics. ([more](https://orshot.com/templates.md)) ### Image generation - **Image generation API for templates:** an image API where you send the template ID and the values that change (text, photos, colors) and get back a PNG, JPG or WebP. For bulk image generation, render one image per row from a spreadsheet, a workflow, the CLI or an AI agent. ([more](https://orshot.com/solutions/image-generation-api.md)) - **OG image generator** for every blog post, docs page or product: render the Open Graph image automatically from your CMS, including Framer, Webflow and WordPress. ([more](https://orshot.com/integrations/automation.md)) - **Banner generator, YouTube thumbnail generator and ad creatives in every size:** design once and Smart Resize re-lays out the same design for each format, so ad creative automation does not mean redrawing each size. ([more](https://orshot.com/solutions/banner-generation-api.md)) - **Ecommerce product images and personalized images:** promo banners for every product in your Shopify catalog, or a personalized image per contact for email and CRM campaigns. ([more](https://orshot.com/integrations/e-commerce.md)) ### PDF generation - **PDF generation API:** automate PDF generation for invoices, reports, proposals and one-pagers from a template, multi-page. It works as an invoice generator API without maintaining an HTML to PDF API and its print CSS. ([more](https://orshot.com/solutions/pdf-generation-api.md)) - **Bulk certificate generator and Google Sheets to PDF:** one certificate, badge or ticket per attendee row, from Google Sheets or Airtable. ([more](https://orshot.com/integrations/no-code.md)) ### Video generation - **Video generation API and automated video creation:** video automation for listing videos, faceless videos, personalized video and short social clips, rendered from a template with your data as MP4 (paid plans). ([more](https://orshot.com/solutions/video-generation-api.md)) ### Designs you already have - **Canva bulk create, through an API:** import a Canva design as a template and generate every variation from your data, so Canva automation runs from your own code or workflow with no Canva API integration to build. ([more](https://orshot.com/solutions/canva-template-to-api.md)) - **Figma automation:** import a Figma design and render it with data through the Orshot REST API, no Figma API code needed. ([more](https://orshot.com/solutions/figma-automation-via-rest-api.md)) ### Design editor inside your own app - **White-label design editor for your app (Orshot Embed):** every paid workspace can embed the Orshot editor in its own product with an iframe or the React and Vue components, so your customers edit templates right inside your app. It works as a design editor SDK, photo editor SDK and white label video editor in one, instead of building a Canva clone (from $39 a month). ([more](https://orshot.com/features/orshot-embed.md)) - **Programmatic control of the embedded editor:** listen to editor events for every save and download, get webhooks when users create, update or delete templates, drive the editor from your code, add your own toolbar buttons, and render every design through the API. Each end user gets a private template library behind JWT sessions, locked to your domains (from $160 a month, up to 1,500 end users). Teams use it as an IMG.LY alternative or Polotno alternative. ([more](https://orshot.com/features/orshot-embed.md)) ### AI agents - **Content automation with AI agents:** Claude, ChatGPT or Cursor generate images, PDFs and videos from your templates over MCP, so automated content creation stays on brand. ([more](https://orshot.com/agents.md)) ## Traction & Trust - Founded: March 2025 by Rishi Mohan (Berlin, Germany) - Bootstrapped and profitable, team of 1 - 25.8k+ users, 170+ paying customers - 1.3M+ renders (images, PDF pages and video seconds), 0.08% error rate over the last 90 days - 27.9k+ templates across library and user-created designs - 99.98% uptime. Sub-2-second image renders; ~3.1s average across all requests, including multi-page PDFs and video - 96 product updates in the changelog since November 2025 - Used by teams at Elgato, Plex, Incubeta, CentroBill, CreatorCore, Cotera, Kortix AI, and more - About: https://orshot.com/about - G2 reviews: https://www.g2.com/products/orshot/reviews - Open startup metrics: https://orshot.com/open - Founder's note: https://orshot.com/founders-note ### Integrations & Ecosystem - Zapier: https://zapier.com/apps/orshot/integrations - Make: https://www.make.com/en/integrations/orshot - Pipedream: https://pipedream.com/apps/orshot - WordPress plugin: https://wordpress.org/plugins/orshot - Agent Skill (skills.sh): https://skills.sh/orshot-hq/orshot-agent-skills/orshot - Remote MCP server: https://mcp.orshot.com/mcp - Claude connector: https://claude.ai/directory/orshot - ChatGPT plugin: https://chatgpt.com/plugins/plugin_asdk_app_6a79affedd808191b69f2e62014b8235?q=orshot - n8n: https://n8n.io/integrations/orshot/ - Figma plugin: https://www.figma.com/community/plugin/1521226770376707744/orshot - Airtable, Google Sheets, Slack, Shopify, Dropbox, Google Drive, S3 ### SDKs & Open Source - Node.js SDK: https://github.com/rishimohan/orshot-nodejs-sdk (npm: orshot) - Python SDK: https://github.com/rishimohan/orshot-python-sdk (pip: orshot) - PHP SDK: https://github.com/rishimohan/orshot-php-sdk (composer: rishimohan/orshot) - Ruby SDK: https://github.com/rishimohan/orshot-ruby-gem (gem: orshot) - Embed SDK (React & Vue): https://github.com/rishimohan/orshot-embed-sdk - CLI: https://www.npmjs.com/package/orshot-cli - Agent Skills: https://github.com/orshot-hq/orshot-agent-skills - REST API documentation: https://orshot.com/docs ### Social & Community - Twitter: https://x.com/orshotapp - LinkedIn: https://linkedin.com/company/orshot - Reddit: https://www.reddit.com/r/orshot - GitHub: https://github.com/orshot-hq ## Pricing - [Pricing – Orshot](https://orshot.com/pricing): Start with Image and PDF generation. Start free, scale up to automate more All plans include: Image + PDF generation, REST API, SDKs, Integrations (Zapier, Make, n8n, Pipedream), Dynamic URLs, Signed URLs, Webhooks, Orshot Studio Editor. Video generation and pay-as-you-go overages are available on supported plans. Annual billing gives 2 months free. ### Free – 100 render credits every month - Price: Free - 100 credits/month, 50 AI Credits (one-time) - 1 Workspace, 1 Team Member ### #Launch39 – For early products and side projects - Monthly: $39/mo | Annual: $390/yr - 1,500 credits/month (1 credit = 1 image, 1 PDF page, or 1 video second) - Overage: $0.036/credit if enabled - AI Credits: 300/month - 1 Workspace, 2 Team Members - Video: max 3 min per video ### #Launch99 – For early products and side projects - Monthly: $99/mo | Annual: $990/yr - 5,000 credits/month (1 credit = 1 image, 1 PDF page, or 1 video second) - Overage: $0.036/credit if enabled - AI Credits: 750/month - 2 Workspaces, 4 Team Members - Video: max 3 min per video ### #Grow160 – For growing teams and products - Monthly: $160/mo | Annual: $1600/yr - 20,000 credits/month (1 credit = 1 image, 1 PDF page, or 1 video second) - Overage: $0.03/credit if enabled - AI Credits: 1,200/month - 4 Workspaces, 6 Team Members - Video: max 5 min per video ### #Grow280 – For growing teams and products - Monthly: $280/mo | Annual: $2800/yr - 40,000 credits/month (1 credit = 1 image, 1 PDF page, or 1 video second) - Overage: $0.03/credit if enabled - AI Credits: 1,700/month - 5 Workspaces, 8 Team Members - Video: max 5 min per video ### #Scale349 – For teams and pipelines at scale - Monthly: $349/mo | Annual: $3490/yr - 75,000 credits/month (1 credit = 1 image, 1 PDF page, or 1 video second) - Overage: $0.024/credit if enabled - AI Credits: 2,100/month - 10 Workspaces, 14 Team Members - Video: max 10 min per video ### #Scale480 – For teams and pipelines at scale - Monthly: $480/mo | Annual: $4800/yr - 150,000 credits/month (1 credit = 1 image, 1 PDF page, or 1 video second) - Overage: $0.024/credit if enabled - AI Credits: 2,900/month - 15 Workspaces, 18 Team Members - Video: max 10 min per video ### #Scale600 – For teams and pipelines at scale - Monthly: $600/mo | Annual: $6000/yr - 300,000 credits/month (1 credit = 1 image, 1 PDF page, or 1 video second) - Overage: $0.024/credit if enabled - AI Credits: 3,600/month - 18 Workspaces, 24 Team Members - Video: max 10 min per video Enterprise plans with custom volume and dedicated support are also available. Contact sales at https://orshot.com/enterprise ## Features - [Orshot Features – Image, PDF & Video Automation](https://orshot.com/features): Every Orshot feature for automated image, PDF and video generation: the studio editor, image, PDF and video generation APIs, workflows, integrations, signed URLs and team controls. - [AI Voiceover Generator for Video Templates and API](https://orshot.com/features/ai-audio-generation): Generate AI voiceovers and ambient sound for video templates, sync captions to the voice, change the script per render and call it all from the API. - [Orshot – AI Template Generator for Visual Content Creation](https://orshot.com/features/ai-template-generator): Generate dynamic visuals using AI-generated customizable templates for free. Use API and Integrations to automate image generation from those templates - [AI Video Generator for Templates, API and AI Agents](https://orshot.com/features/ai-video-generation): Generate AI video from text, an image or a talking photo, place the clip in a template and render it through the Orshot API, Studio or an AI agent. - [Approval Flows for Template Automation – Orshot](https://orshot.com/features/approval-flows): Brand, legal and client sign-off before the Orshot API renders a template. Stages, reviewers and rules, with every unapproved render refused. - [Automated Creative Translation API – Orshot](https://orshot.com/features/automated-creative-translation): Generate images, PDFs and videos in any language. Translate every text layer of an Orshot template on each API render, for 1 AI credit per 100 words. - [Brand Assets Library – Orshot](https://orshot.com/features/brand-assets-library): Generate Branded Images at Scale with Orshot. Store, manage and use your brand assets for consistent and on-brand renders - [Bring your own Storage – Orshot](https://orshot.com/features/bring-your-own-storage): Generate dynamic images from customizable templates and store them in your own Cloud Storage like Amazon S3 or Cloudflare R2 - [White-label Video, Image & PDF Editor SDK](https://orshot.com/features/orshot-embed): Embed a full design and video editor in your product. White-label, domain-locked and multi-tenant, with React and Vue SDKs. - [Orshot Studio – Design and Automate Marketing Images](https://orshot.com/features/orshot-studio): Design and generate marketing images from templates at scale. Make it dynamic and use it via Rest API and integrations and automate your marketing - [Generate Dynamic Images using Signed URLs – Orshot](https://orshot.com/features/signed-url): Generate dynamic images from customizable templates on the fly using Orshot's Signed URLs - [Smart Resize – design once, render any size](https://orshot.com/features/smart-resize): Take one Orshot template and render it at any size — Story, Square, OG image, thumbnail. The layout adapts automatically; reuse sizes as pages or render any size on demand from the API. - [Social Media Analytics with API & AI Agents](https://orshot.com/features/social-analytics): Impressions, engagement and follower growth for every account in one social media analytics dashboard. Find your best time to post, your top posts, and get yesterday's numbers in your inbox each morning. - [Social Publishing – post to 15+ platforms via API](https://orshot.com/features/social-publishing): Add a publish object to your render call and Orshot posts to Twitter, Instagram, LinkedIn, TikTok and more. Schedule or draft. - [Team Collaboration – Orshot](https://orshot.com/features/team-collaboration): Invite designers to design custom templates and engineers to collaborate on API or SDK integrations. Orshot is built for teams of all sizes - [Workflow Automation Builder for Creatives & Social Media](https://orshot.com/features/workflow-automation-builder): Build automations in a no-code workflow builder. Connect a Google Sheet, Airtable, or webhook, render on-brand images, PDFs and videos, then deliver them. ## Solutions - [Image, PDF & Video Automation Solutions – Orshot](https://orshot.com/solutions): Browse every Orshot solution: image, PDF, video and banner generation APIs, social media content automation, for marketing teams, agencies and developers. - [AI-driven Marketing Automation Platform for Agencies](https://orshot.com/solutions/ai-marketing-automation-for-agencies): AI-enabled content generation, social publishing and marketing automation, all in one platform. Manage multiple clients, give them an editor, collaborate seamlessly - [Banner Generation API for Ads & Social Creative](https://orshot.com/solutions/banner-generation-api): Turn one design into every banner your campaign runs — Instagram, LinkedIn, Facebook and display — on-brand, in one click. The banner generation API that scales ad creative. - [Get REST API for your Canva Templates & Designs](https://orshot.com/solutions/canva-template-to-api): Import any Canva design into Orshot to get a dynamic template with API for automated image generation. Parameterize layers, render images and PDFs at scale via API - [Automate Figma Designs via REST API](https://orshot.com/solutions/figma-automation-via-rest-api): Import your Figma Designs as Templates in Orshot using Figma Plugin and automate it with powerful Rest API and No-code Integrations - [Image Generation API for Templates & Designs](https://orshot.com/solutions/image-generation-api): Rest API, SDKs and No-Code Integrations for Auto-Generating Images for Social Media, Marketing, eCommerce and more from Templates - [PDF Generation API for Invoices & Reports](https://orshot.com/solutions/pdf-generation-api): Auto-generate PDF using Rest API, n8n, Zapier etc. for invoices, certificates and more with customizable templates and custom designs using dynamic data - [Video Generation API for Templated Videos](https://orshot.com/solutions/video-generation-api): Render MP4, WebM, MOV and GIF from video templates with one API call. Voiceovers, auto captions, AI footage, page transitions and posting to socials. - [WordPress Featured & OG Image Automation](https://orshot.com/solutions/wordpress): Auto-generate featured images and Open Graph images for every WordPress post from your own templates. Free plugin, connects in one click, no API keys. ## Tools - [Free Design Tools & Template Generators](https://orshot.com/tools): Free online tools to generate certificates, App Store screenshots, Twitter carousels, and more. Use 100+ template generators powered by Orshot's image and PDF generation API. - [Free Tool to Generate App Store Screenshots](https://orshot.com/tools/app-store-screenshot-generator): Bulk generate customizable App Store Screenshots from pre-designed templates for free. Add text, emojis and add your screenshot to get started - [Free Certificate Generator – No Sign-Up Needed](https://orshot.com/tools/certificate-generator): Generate professional certificates online for free. No sign-up required. Download as PDF, PNG, JPG or WebP. Perfect for courses, awards, training and recognition. Bulk generate via API. - [Free HTML to PDF Converter – No Sign-Up Needed](https://orshot.com/tools/html-to-pdf): Convert HTML to PDF free. Paste code, upload a file, or fetch a URL, and download instantly. Real browser rendering keeps fonts, layout, and styling exact. - [Twitter Carousel Generator for Instagram, LinkedIn, Tiktok](https://orshot.com/tools/twitter-carousel-generator): Free tool to generate carousel post images and PDF from Twitter threads, ready to be posted on social media platforms like Instagram, LinkedIn, and Tiktok - [Free Webpage to PDF Converter – From Any URL](https://orshot.com/tools/webpage-to-pdf): Turn any website into a PDF. Paste a URL and download instantly, with the page's real layout, fonts, and styling intact. No browser extension, no sign-up. ## Integrations - [Integrations – Orshot](https://orshot.com/integrations): Connect Orshot with Zapier, Make, n8n, Airtable, Google Sheets, Slack, MCP for Claude/Cursor, and every stack you ship in. Render images, PDFs and videos from any tool. ## Studio - [Free Online Template Editor with an API – Orshot](https://orshot.com/studio): A free online template editor in your browser. Design a template, then generate images, PDFs and videos from it with the API, n8n, Make or Zapier. ## Enterprise - [Image, PDF & Video Generation API for Enterprises – Orshot](https://orshot.com/enterprise): Image, PDF and video generation at enterprise volume. Custom plans, dedicated support, priority infrastructure and white-glove onboarding for teams rendering at scale. ## Agencies - [Image, PDF & Video Automation for Agencies – Orshot](https://orshot.com/agencies): Run creative production for 10 or 100 clients the same way. Isolated workspaces, white-label embed, partner pricing. ## Customers - [Customer Stories – Orshot](https://orshot.com/customers): See how teams and companies use Orshot to automate marketing visuals at scale. Read customer stories and testimonials ## Affiliate-Program - [Affiliate Program – Orshot](https://orshot.com/affiliate-program): Earn 30% commission for every sale you refer to Orshot. Join our affiliate program and start earning today! ## Partner-Program - [Apply for Agency Partner Program – Orshot](https://orshot.com/partner-program): Join Orshot's Agency Partner Program to automate image, PDF and video generation for your clients, with dedicated workspaces and exclusive benefits ## Open - [Open Startup – Orshot](https://orshot.com/open): Track Orshot's growth metrics including users, conversions, and renders over time with our transparent Open Startup dashboard ## Brand - [Brand Assets – Orshot logos, icons and favicons](https://orshot.com/brand): Download or copy the official Orshot brand assets — logos, icons and favicons — for press, partnerships and integrations. ## Founders-Note - [Founder's Note – Orshot](https://orshot.com/founders-note): The who, what and why of Orshot from the founder, Rishi Mohan ## Contact - [Contact – Orshot](https://orshot.com/contact) ## Signup - [Signup – Orshot](https://orshot.com/signup): Create a free Orshot account to generate images, PDFs and videos from templates via API, n8n, Make, Zapier or an AI agent ## About - [About Orshot](https://orshot.com/about): Orshot is a bootstrapped, profitable image, PDF and video generation API founded in March 2025. 25.8k+ users, 1.3M+ renders, 99.98% uptime. ## Agents - [Marketing Automation for Agents – Orshot](https://orshot.com/agents): Connect Claude, ChatGPT or Cursor to Orshot and your agent designs, renders, schedules and posts on-brand images, PDFs and videos from your templates. - [Orshot Agent Skill & MCP Server for AI Coding Agents](https://orshot.com/agents/orshot-skills): Install the Orshot agent skill and connect the hosted MCP server so Claude Code, Cursor, Codex and 30+ agents write correct Orshot calls and render images, PDFs and video from your templates. - [AI Design Prompts for Agents – Orshot](https://orshot.com/agents/prompt-gallery): Copy 20 tested prompts into Claude, ChatGPT or Cursor and get editable templates back. Reels, carousels, ads and certificates you can render via API. ## Migrate - [Migration Guides – Orshot](https://orshot.com/migrate): Move templates and automations from Bannerbear, Templated, Placid, Canva and more to Orshot. Import them yourself, or we do it for you. - [Migrate from Abyssale to Orshot – Orshot](https://orshot.com/migrate/from-abyssale): Bring Abyssale designs into Orshot with your API key. Every format becomes a page and layer names stay as API parameters for your calls and workflows. - [Migrate from Bannerbear to Orshot – Orshot](https://orshot.com/migrate/from-bannerbear): Import Bannerbear templates into Orshot with layer names kept as API parameters, then swap the API call or Zapier, Make or n8n step. - [Migrate from Canva to Orshot – Orshot](https://orshot.com/migrate/from-canva): Import Canva designs into Orshot from a public link, every page and text box as an API parameter, then automate what Bulk Create made you do by hand. - [Migrate from IMG.LY CE.SDK to Orshot Embed – Orshot](https://orshot.com/migrate/from-imgly): Migrate from IMG.LY CE.SDK to Orshot Embed for a faster white-label editor with lower pricing, an API, programmatic control and template import. - [Migrate from Placid to Orshot – Orshot](https://orshot.com/migrate/from-placid): Import Placid templates into Orshot with layer names kept as API parameters, then swap the API call, URL API links or Zapier, Make or n8n step. - [Migrate from Polotno Editor SDK to Orshot Embed – Orshot](https://orshot.com/migrate/from-polotno): Migrate from Polotno Editor SDK to Orshot Embed for a hosted white-label editor with lower pricing, an API, programmatic control and Polotno template import. - [Migrate from Templated to Orshot – Orshot](https://orshot.com/migrate/from-templated): Import Templated templates into Orshot with layer names kept as API parameters, then swap the render call or Zapier, Make or n8n step. ## Open-Source - [Colorshot – React Color Picker and Gradient Picker](https://orshot.com/open-source/colorshot): Open source React color picker and gradient picker: linear, radial and conic gradients, swatch groups and a Vue version. Works with shadcn/ui. MIT licensed. ## Subprocessors - [Sub-processors – Orshot](https://orshot.com/subprocessors): The third-party service providers Orshot uses to process customer data, grouped by what they do. ## Use-Cases - [Use Cases & Guides – Orshot](https://orshot.com/use-cases): Guides on automating image and pdf generation from social media, certificate, marketing and more templates with REST API, Zapier, Make, n8n ## Workflows - [Automation Workflows for Images, PDFs and Videos – Orshot](https://orshot.com/workflows): Ready-made automation workflows. Connect Google Sheets, Airtable or a webhook to auto-generate on-brand certificates, invoices, social graphics and OG images. ## Terms - [Terms of Service – Orshot](https://orshot.com/terms): The terms for using Orshot, the API for automated image, PDF and video generation, including Studio, Embed, integrations and AI features. ## Privacy - [Privacy Policy – Orshot](https://orshot.com/privacy): How Orshot collects, uses and protects your data across the image, PDF and video generation API, Studio, integrations and AI features. ## Refund-Policy - [Refund Policy – Orshot](https://orshot.com/refund-policy): Orshot refund and cancellation policy. Refunds within 1 day of a new subscription if no more than 50% of the plan's credits are used. Cancel any time. ## Dpa - [Data Processing Agreement – Orshot](https://orshot.com/dpa): The Orshot Data Processing Agreement (DPA): how we process personal data for customers under the UK GDPR and EU GDPR. ## Accessibility - [Accessibility Statement – Orshot](https://orshot.com/accessibility): Orshot's commitment to digital accessibility, conformance status, and how to report accessibility issues. ## Blog > 115 blog posts Categories: - [Automation Tutorials](https://orshot.com/blog/category/automation-tutorials): Step-by-step tutorials for automating your templates with Google Sheets, Airtable, n8n, Make and Zapier. - [Comparisons](https://orshot.com/blog/category/alternatives): Side-by-side comparisons of Orshot and other template and rendering tools, with prices checked on each vendor's site. - [AI Agents and MCP](https://orshot.com/blog/category/ai-agents): How to use Orshot from Claude, ChatGPT and Cursor through the MCP server, and what we learned building for agents. - [API and Developers](https://orshot.com/blog/category/developers): Code guides for the Orshot API, SDKs, webhooks and the embeddable editor. - [Customer Stories](https://orshot.com/blog/category/customer-stories): How agencies, SaaS teams and marketers use Orshot, in their own numbers. - [Product Updates](https://orshot.com/blog/category/product-updates): What we shipped in Orshot Studio, the API and the MCP server. ### [1 Year of Orshot! 350k+ Renders and 100+ Customers Later](https://orshot.com/blog/1-year-orshot) > Been 1 year since I'm building Orshot! What started as a project, has now turned into a infrastructure platform for automating visual content Hi 👋 ! I'm [Rishi](https://orshot.com/founders-note), founder of Orshot It's been 1 year now that I've been solo building this platform and within one year, not only the product has been validated, but with the help of customers it has grown from just a product, to a mature platform Here's a quick recap: - Grew from 0 to **4,000+ users** and **100+ customers** - **Rendered over 3,50,000+ visuals**, each taking less than **3.5 seconds** on average - Users collectively have designed **7,000+ templates** across all workspaces - Less than 1% of error rate - **98%+ service uptime** The business is running profitable at **$5,000+ in monthly recurring revenue**, and I want to thank all of the customers for giving Orshot a try and using it, and sharing their feedback. Without the feedback, it wouldn't have been possible to build and grow Orshot All of these metrics are open at our [Open Startup page](https://orshot.com/open) ## Learnings so far - **You have the right to your deeds, but never the fruits of outcome** - I couldn't have come this far if I wasn't **passionate about solving the problem** - **Talking to customers** and solving their issues grows your business - **Learn to say no** when you get customers whose use case don't align with your vision - **Experiment** at all levels, product, marketing etc. - **Use AI** to empower and outsource boring tasks - **Be close with family, friends**, they'll indirectly help you being grounded and be sane - Give yourself chances, **take risks** while you can - **Think big**, no limits, universe meets you at the audacity of your thoughts I'll also take this time to reflect on my vision for the product ## Orshot Studio It started as a very basic design editor, which now has grown to a multi-format full-fledged design platform. Orshot's Studio has most features from modern day design tools we use like Figma and Canva, and can help design beautiful marketing visuals to be rendered in Image, PDF or Video format As a designer myself, I have moved designing from Figma to Orshot and use it primarily now. This switch helped building the Studio a lot because not only I implemented all the features from Figma, but I have made upgrades for improving UX specially because the Studio's main use to design for scale via API Features like auto-scaling text, multiple styles in same text layer, animations etc. are tricky on the API side, but to give the control and creative freedom to the users, it was important to build these, and in a way that they get exactly what they design I'm very happy with the growth of Studio The goal now is to make it work really well with AI Agents. We already have Orshot's Design Agent which can be used to offload design work, it works really well already. I want to extend this and make it more useful, with a goal that for users it can design very personalized designs in seconds or minutes, ready to be integrated I've already started working on it and might get it ready very soon :) ## Posting to Socials Connecting social accounts and directly posting to them from Orshot's API was an inevitable feature. It fit naturally I want to grow this more and have more integrated solution. It already handles posting, scheduling and managing posts in a calendar format, but there's more control to give to users This feature completes the full circle of creating and presenting, and hence very important ## Scaling the API Orshot's already handling thousands of requests every day and doing pretty fine. The infrastructure is setup for easy scaling, we're also already serving enterprise customers The API is mostly in good place, I've recently improved the Orshot documentation pages for easy navigation, readability and organization of different areas The next step for the API would be to be more faster, at least sub 2 second on average for Image and PDF formats, and specially for video generation which has lots of improvement areas ## Business ![Orshot customers after one year in business](https://orshot.com/blog/orshot-1-year-customers.webp) From the start, Orshot is planned to be a long-term platform. It started small, still is small, but it has always been profitable I've focussed mainly on talking with customers to help their use cases, and learn more from them so I could simplify their use case. It has worked well, and so I'll keep doing it Will be expanding marketing efforts in other formats as well in coming months and see what works. The goal is to reach the ideal customers, provide them with a solution that works well for them, and help them growing their business ## Thank you! It's been a pleasure building Orshot so far! The whole of last year I have been very content and passionate with the direction of the platform. Have worked on it days and nights, weekdays and more on weekends, and out of passion and interest, and that's all I want from it --- ### [10 Best AI Tools for Graphic Design with MCP(2026)](https://orshot.com/blog/ai-tools-for-graphic-design-with-mcp) > The best AI graphic design tools that support MCP and work with AI agents like Claude and Cursor for templates, banners, and content at scale. Most AI tools for graphic design stop at image generation — you type a prompt, get a one-off output, and still have to manually adjust layouts, fonts, and brand colors every time. That works for quick mockups, but not when you need consistent visuals at scale. The AI design tools that actually save time in 2026 are the ones that connect to AI agents through MCP (Model Context Protocol). MCP is an open standard that lets agents like Claude or Cursor talk directly to design tools — pull your templates, swap in real data, [generate hundreds of on-brand graphics](https://orshot.com/solutions/image-generation-api), and export them, all from a single conversation. No browser, no manual tweaking, and every output follows your design system. Here are 10 AI tools for graphic design that support MCP, ranked by how well they handle templates, automation, and agent-driven creative work. For the broader marketing stack, see the [AI marketing platforms guide](https://orshot.com/blog/best-ai-marketing-platforms) and the [best MCP servers for marketing](https://orshot.com/blog/best-mcp-servers-for-marketing). | Tool | Best For | MCP Support | | :------------------------------------------------------------------------ | :--------------------------------------------------- | :----------------- | | [**Wonder**](#1-wonder--ai-native-design-canvas-that-ships-code) | AI-native design canvas | Yes (Built-in) | | [**Orshot**](#2-orshot--automated-graphic-design-from-templates-at-scale) | Template-based image, PDF, video generation at scale | Yes (Official) | | [**Pencil**](#3-pencil--design-canvas-inside-your-ide) | Design-to-code on canvas | Yes (Claude Code) | | [**Figma**](#4-figma--the-industry-standard-now-with-mcp) | Collaborative UI/UX design | Yes (Official) | | [**Canva**](#5-canva--ai-powered-design-with-mcp-connector) | Quick social graphics | Yes (AI Connector) | | [**Scenario**](#6-scenario--ai-creative-generation-for-agents) | Game art and creative assets | Yes (Official) | | [**AIDesigner**](#7-aidesigner--lightweight-ui-design-via-mcp) | UI generation in IDE | Yes (MCP Server) | | [**Adobe Creative Cloud + Firefly**](#8-adobe-creative-cloud--firefly) | Professional creative suite | Community MCP | | [**Kittl**](#9-kittl--ai-first-graphic-design-for-print-and-branding) | Print, logos, merchandise | No (API only) | | [**Recraft**](#10-recraft--ai-native-vector-graphics) | Vector and SVG generation | No (API only) | --- ## 1. Wonder — AI-Native Design Canvas That Ships Code _Best for: product designers, frontend developers, and design engineers_ ![Wonder](https://orshot.com/blog/ai-tools-graphic-design/wonder.webp) [Wonder](https://wonder.design "target=_blank nofollow") is an AI-native design tool where you describe what you need, generate it on the canvas, and ship the React + Tailwind code directly. It has a built-in MCP server, so AI agents can read the canvas, create artboards, update elements, and take screenshots — all from your coding environment. ### What makes it stand out - **Built-in MCP server**: agents can create and modify designs, read element trees, and take screenshots - **Design-to-code**: everything on the canvas exports as React + Tailwind — no handoff needed - **AI-first workflow**: chat with the AI, describe what you want, and it generates layouts and flows right on the canvas - **Design system aware**: can match your existing design patterns and components - **Canvas + Code connected**: start from what's already built, iterate freely, and ship straight back to production ### MCP setup **MCP URL**: `https://mcp.wonder.so/mcp` ```bash # Claude Code claude mcp add --transport http wonder https://mcp.wonder.so/mcp ``` ### Where it falls short Wonder is focused on UI/product design rather than marketing graphics or template-based content. It's a design tool, not an automation platform — so it's great for building interfaces, less so for generating 500 banner variations. --- ## 2. Orshot — Automated Graphic Design from Templates at Scale _Best for: agencies, developers, and automation engineers_ ![Orshot](https://orshot.com/blog/ai-tools-graphic-design/orshot.webp) [Orshot](https://orshot.com) sits in a different category from the others on this list. It's not just a design canvas — it's an **API for automated image, PDF and video generation**. You design a template once (or generate one with AI), mark elements as dynamic, and then render thousands of on-brand variations via API, Zapier, n8n, or directly from an AI agent. This is the tool for when you need 500 product banners, 2,000 personalized certificates, or daily social posts across 12 client accounts — and you need it done without a designer touching each one. [Orshot MCP Server Tutorial](https://www.youtube.com/watch?v=OhgdZtqEQK0) ### What makes it stand out - **MCP server for AI agents** — go from a text prompt to a finished graphic via Claude Code, Cursor, or ChatGPT - **Design once, render thousands** — parameterize any element and generate variations via API, Zapier, or n8n - **8 output formats** — PNG, JPEG, WebP, AVIF, PDF, MP4, WebM, GIF from one template - **AI Design Agent** — describe a template in plain English and it gets built with your brand kit - **Batch rendering** — thousands of variants in a single API call, no queuing headaches - **Publish to 15+ social platforms** — push graphics directly to Instagram, TikTok, LinkedIn, X, and more - **Multi-tenant workspaces** — sealed brand kit per client with scoped OAuth for agencies - **Import from Canva and Figma** — bring existing templates and make them API-callable - **50+ template categories** — social media, ads, e-commerce, certificates, invoices, and more ### MCP setup **MCP URL**: `https://mcp.orshot.com/mcp` ```bash # Claude Code claude mcp add orshot --transport http https://mcp.orshot.com/mcp ``` That one command is the whole setup for [Orshot in Claude](https://orshot.com/agents/claude) in Claude Code. In Claude Desktop and claude.ai, add it from the [Claude connectors directory](https://claude.ai/directory/orshot) instead. Auth happens over OAuth either way, so there's no key to paste. Cursor, VS Code, Copilot, Windsurf and ChatGPT take the same MCP URL in their own settings. See the full list of [AI agents that work with Orshot](https://orshot.com/agents). **Try the MCP with your own templates** — Connect Claude or Cursor and render your first graphic. 100 credits a month, no card. [Start free](https://orshot.com/pricing?via=blog-ai-mcp-orshot) ### Where it falls short Orshot isn't a freeform design canvas. If you need to design a one-off poster from scratch with full creative control, you'd start in Figma or Canva and then import the template into Orshot for automation. --- ## 3. Pencil — Design Canvas Inside Your IDE _Best for: developers, vibe coders, and indie hackers_ ![Pencil.dev](https://orshot.com/blog/ai-tools-graphic-design/pencil.webp) [Pencil](https://pencil.dev "target=_blank nofollow") is a design canvas that lives inside VS Code or Cursor. You describe a UI, and an AI agent builds it visually on an infinite canvas — component by component. Then you copy the React + Tailwind code and ship it. The key differentiator: designs are stored as `.pen` files (JSON) in your `/design` folder. They're version-controlled with Git, readable by AI agents, and exported as pixel-perfect code via MCP. ### What makes it stand out - **Design-as-code**: no cloud lock-in, designs live in your repo - **MCP integration**: Claude Code can read your visual layout and generate matching code - **Familiar canvas**: layers panel, properties, padding controls — like Figma, but inside your IDE - **Early access and free** (requires Claude Code subscription) ### MCP setup Pencil integrates directly as a VS Code / Cursor extension with built-in MCP support. Install the Pencil extension, and Claude Code can read `.pen` design files and generate matching code automatically. ### Where it falls short Pencil generates fixed-dimension designs, so responsive behavior needs to be added manually. It's also focused on UI design rather than marketing graphics or templates. --- ## 4. Figma — The Industry Standard, Now With MCP _Best for: product teams, UI/UX designers, and design systems engineers_ ![Figma](https://orshot.com/blog/ai-tools-graphic-design/figma.webp) [Figma](https://figma.com "target=_blank nofollow") needs no introduction. It's the default tool for UI/UX design, and in 2026 it's also one of the first major design tools to ship an official MCP server. With the Figma MCP server, AI agents can pull design context, extract variables and components, and even write back to the canvas — creating frames, components, and auto layouts using your design system as the source of truth. ### What makes it stand out - **Official MCP server**: works with Claude Code, Cursor, VS Code Copilot, Windsurf, and more - **Write access**: agents can build and update frames, components, and variables directly on canvas - **Figma Make**: text-to-design generation for rapid prototyping - **Ecosystem**: plugins, community files, and dev mode for handoff ### MCP setup **MCP URL**: `https://mcp.figma.com/mcp` ```bash # Claude Code claude mcp add --transport http figma https://mcp.figma.com/mcp ``` Free during beta. Works with Claude Code, Cursor, VS Code Copilot, Windsurf, and other MCP clients. ### Where it falls short Figma is an interactive design tool — it's not built for automated, high-volume image generation. You can design a template in Figma, but you can't call an API to render 10,000 variations of it. For that, you'd pair it with a tool like [Orshot](https://orshot.com) (which supports Figma template imports). --- ## 5. Canva — AI-Powered Design With MCP Connector _Best for: marketers, solo creators, and small business owners_ ![Canva](https://orshot.com/blog/ai-tools-graphic-design/canva.webp) [Canva](https://canva.com "target=_blank nofollow") is the go-to for non-designers who need to create social posts, presentations, and marketing materials quickly. In 2026, Canva shipped an MCP-compatible AI Connector that lets agents create and edit designs, manage brand assets, search the template library, and export in multiple formats. ### What makes it stand out - **MCP AI Connector**: agents can create designs, edit them, manage brand kits, and export — all via MCP - **250,000+ templates**: the largest template library of any design tool - **Magic Studio**: text-to-design, background remover, Magic Write for copy, one-click resize - **Bulk Create**: generate variations from CSV data (limited compared to API-first tools) ### MCP setup **MCP URL**: `https://mcp.canva.com/mcp` ```bash # Claude Code (via mcp-remote) claude mcp add canva -- npx -y mcp-remote@latest https://mcp.canva.com/mcp ``` Also configurable in Cursor and other MCP clients using the URL directly. ### Where it falls short Canva's MCP integration is relatively new and focused on interactive editing via agents, not high-volume automated rendering. Bulk Create works for small batches, but it's not designed for generating 10,000+ images programmatically. The API is also less developer-friendly compared to tools built API-first. --- ## 6. Scenario — AI Creative Generation for Agents _Best for: game studios, creative teams, and concept artists_ ![Scenario](https://orshot.com/blog/ai-tools-graphic-design/scenario.webp) [Scenario](https://scenario.com "target=_blank nofollow") connects AI agents to 500+ models for image, video, 3D, and audio generation via an MCP server. It's aimed at game studios and creative teams who need consistent character art, environment designs, and asset variations. ### What makes it stand out - **Official MCP server**: 19 tools accessible from Claude, Cursor, VS Code - **500+ AI models**: image, video, 3D, and audio generation - **Custom model training**: train on your own art style for consistent outputs - **Game-ready assets**: focused on production-quality creative work ### MCP setup **MCP URL**: `https://mcp.scenario.com/mcp` ```bash # Claude Code claude mcp add --transport http scenario https://mcp.scenario.com/mcp ``` Supports OAuth (browser-based login) or API key authentication. Works with 11 AI coding platforms. ### Where it falls short Overkill for simple social media graphics or template-based content. Pricing can get steep for high-volume generation. --- ## 7. AIDesigner — Lightweight UI Design via MCP _Best for: developers, full-stack engineers, and rapid prototypers_ ![AIDesigner](https://orshot.com/blog/ai-tools-graphic-design/aidesigner.webp) [AIDesigner](https://aidesigner.ai "target=_blank nofollow") is a lightweight MCP server that lets coding agents generate and refine production-ready UI designs inside your IDE. It outputs Tailwind CSS with proper hierarchy and real typography. ### What makes it stand out - **MCP-native**: works directly with Claude Code, Cursor, Copilot, and Windsurf - **Tailwind output**: designs come out as usable Tailwind components - **Fast iteration**: generate, refine, and adopt designs without leaving the IDE ### MCP setup **MCP URL**: `https://api.aidesigner.ai/api/v1/mcp` ```bash # Quick setup npx -y @aidesigner/agent-skills init ``` Or add the URL directly to your MCP client config. ### Where it falls short UI-focused only — no template rendering, no image export, no marketing graphics. --- ## 8. Adobe Creative Cloud + Firefly _Best for: professional designers, photographers, and creative agencies_ ![Adobe](https://orshot.com/blog/ai-tools-graphic-design/adobe.webp) [Adobe Firefly](https://firefly.adobe.com "target=_blank nofollow") is the AI engine powering Photoshop, Illustrator, and the rest of Creative Cloud. Generative Fill, text-to-image, and vector generation are baked into the tools professionals already use. MCP support is available through a community-maintained server ([adb-mcp](https://github.com/mikechambers/adb-mcp "target=_blank nofollow")) that exposes Photoshop, Premiere Pro, and InDesign functionality to AI agents. ### What makes it stand out - **Integrated into pro tools**: Generative Fill in Photoshop, vector generation in Illustrator - **IP-safe training data**: trained on Adobe Stock and licensed content - **Community MCP server**: agents can control Photoshop, Premiere, InDesign (unofficial) ### MCP setup No official MCP server. Community server available at [adb-mcp on GitHub](https://github.com/mikechambers/adb-mcp "target=_blank nofollow") — requires local Adobe apps running. ### Where it falls short No official MCP server yet. The community server requires local Adobe apps running. Pricing is steep ($23+/month per app or $60+/month for the full suite). --- ## 9. Kittl — AI-First Graphic Design for Print and Branding _Best for: graphic designers, merch creators, and brand studios_ ![Kittl](https://orshot.com/blog/ai-tools-graphic-design/kittl.webp) [Kittl](https://kittl.com "target=_blank nofollow") is a browser-based design platform that leans heavily into typography, logo creation, and print-ready graphics. It ships with multiple AI models (OpenAI, Flux, Ideogram, Google) and supports vector generation, which most AI tools don't. ### What makes it stand out - **Multiple AI models**: choose between different generators for different styles - **Vector generation**: AI-generated vectors for logos and illustrations - **10,000+ templates**: focused on print, merchandise, and branding - **Creative Flows**: workflow automation for repetitive design tasks ### MCP setup No MCP server available. Kittl works as a standalone browser-based tool. ### Where it falls short No MCP server — you can't connect it to an AI agent. Automation is limited to in-app workflows rather than API-driven pipelines. --- ## 10. Recraft — AI-Native Vector Graphics _Best for: icon designers, brand designers, and illustrators_ ![Recraft](https://orshot.com/blog/ai-tools-graphic-design/recraft.webp) [Recraft](https://recraft.ai "target=_blank nofollow") generates native SVG vectors, not raster images — which makes it unique among AI design tools. You get editable paths, not bitmaps. It also handles raster images, 3D generation, and style training. ### What makes it stand out - **Native SVG output**: AI-generated vectors you can actually edit in Illustrator or Figma - **Custom styles**: create and reuse styles without model training - **Background removal and upscaling**: built-in post-processing - **Generous free tier**: 30 daily credits on free plan ### MCP setup No MCP server available. API access is offered for automation, but no native agent integration. ### Where it falls short No MCP support. API is available for automation, but there's no way for an AI agent to connect natively. Limited template or batch capabilities. --- ## How to Choose the Right AI Graphic Design Tool The right tool depends on what you're actually trying to do: **If you're designing UIs and want AI to speed up the process**, Wonder or Pencil gives you AI-native canvases with design-to-code workflows. Figma with MCP brings the same agent power to the tool your team already uses. **If you need to generate hundreds or thousands of on-brand graphics automatically**, [Orshot](https://orshot.com/pricing?via=blog-ai-mcp-choose) is the clear pick. It's the only tool on this list that combines template design, API rendering, AI agent integration, and social publishing in one platform. **If you're a solo creator making social posts and presentations**, Canva's Magic Studio and MCP connector will get you there fastest. **If you need AI-generated art or game assets**, Scenario's MCP server gives agents access to 500+ models. The bigger trend here is that [design tools](https://orshot.com/blog/free-canva-alternatives) are becoming agent-accessible. The days of switching between your IDE, a browser-based editor, and an export pipeline are numbered. The best AI tools for graphic design in 2026 aren't just the ones with the best AI models — they're the ones that let your AI agent do the work for you. Add mcp.orshot.com/mcp to Claude or Cursor. 100 credits a month, no card. [Try Orshot free](https://orshot.com/pricing?via=blog-ai-mcp-footer) --- ### [10 Best Free Canva Alternatives for 2026](https://orshot.com/blog/free-canva-alternatives) > Tired of Canva's price hikes? Here are 10 free Canva alternatives, including GIMP, Orshot, Figma, sorted by what each one does best, with the free-plan catches Canva is great until it isn't. After the last round of price increases, a lot of people (myself included) started asking whether they really need to pay for a tool they open a few times a month. If that's you, the good news is there are plenty of free Canva alternatives that handle most of what people actually use Canva for, from quick social graphics to logos, presentations, and print. This is a hands-on rundown of the 10 best free Canva alternatives in 2026. Some are full Canva-style editors, some are open-source tools the design crowd swears by, and one (Orshot) adds an API so you can generate designs in bulk instead of one at a time. I've sorted them by what each one is genuinely good at, so you can skip straight to the job you're trying to get done. ## Quick Comparison | Tool | Starting Price | API / Automation | Open Source | AI Agent | Best For | | :-- | :-: | :-: | :-: | :-: | :-: | | [GIMP](#1-gimp---the-powerhouse-open-source-alternative-but-also-old-school) | Free | No | Yes | No | Photo editing | | [Orshot](#2-orshot---canva-like-editor-with-api-automation) | Free / $9 | Yes | No | Yes | Canva + Canva Autofill API Alternative | | [Figma](#3-figma---collaborative-design-platform) | Free / $12 | No | No | Yes | UI/UX & teams | | [Inkscape](#4-inkscape---vector-graphics-specialist) | Free | No | Yes | No | Vector graphics | | [Adobe Express](#5-adobe-express) | Free / $10 | No | No | No | Adobe ecosystem | | [Pixlr](#6-pixlr---budget-friendly-alternative) | Free / $2.49 | No | No | No | Budget all-in-one | | [Snappa](#7-snappa---simplicity-first) | Free / $15 | No | No | No | Social media | | [VistaCreate](#8-vistacreate---print-focused-design) | Free | No | No | No | Print materials | | [BeFunky](#9-befunky---photo-centric-design) | Free | No | No | No | Photo & collage | | [Piktochart](#10-piktochart---data-visualization-expert) | Free | No | No | No | Infographics | ## Why Users Are Switching from Canva Most people don't quit Canva because they dislike it. They quit because something specific pushed them out. The same handful of complaints come up again and again in r/canva and r/freesoftware threads: ### What's actually pushing people off Canva: 1. **The price hikes.** This is the number one trigger. Folks who open Canva two or three times a month don't want to pay roughly double for the privilege. One long-time Pro user summed it up: they only use it a few times a month and aren't about to pay double for a tool they barely touch, [[ref]](https://www.reddit.com/r/content_marketing/comments/1fl6adl/best_alternative_for_canva/ "target=\_blank nofollow") ↗ 2. **Forced per-seat Teams billing.** The Teams plan that used to cover a small group for a flat fee now bills per person, and people report surprise charges and a confusing Pro-versus-Teams upgrade path, [[ref]](https://www.reddit.com/r/freesoftware/comments/1djzr45/free_canva_alternatives/ "target=\_blank nofollow") ↗ 3. **Lock-in and access worries.** Sharing links, downloading finished work, even getting at your own files can hit a paywall right when you need them. A recurring fear in these threads is simple: "can I actually get my designs out if I leave?", [[ref]](https://www.reddit.com/r/graphic_design/comments/zwn9vf/hello_everyone_just_wanted_to_ask_is_there_any/ "target=\_blank nofollow") ↗ 4. **No real API or automation.** If you need to generate hundreds of designs from a spreadsheet, Canva's manual "Bulk Create" isn't built for it, and there's no proper REST API, [[ref]](https://www.reddit.com/r/canva/comments/1m6qc63/has_anyone_successfully_used_canvas_api_to/ "target=\_blank nofollow") ↗ or native hook into n8n, Zapier, or Make, [[ref]](https://www.reddit.com/r/zapier/comments/1o2ejt5/how_to_create_a_zapier_automation_that_updates_an/ "target=\_blank nofollow") ↗ 5. **Features creeping behind Pro.** Handy things like the background remover are now Pro-only, so free users get nudged toward point tools like remove.bg instead. So where do you go instead? Here are the ten free Canva alternatives I'd actually recommend, grouped loosely by the kind of work you're doing. ## 1. GIMP - The Powerhouse Open Source Alternative, but also old-school ![GIMP](https://orshot.com/blog/canva-alternative-tools/gimp.webp) [Link to GIMP ↗](https://www.gimp.org/ "target=_blank") ### Best for: - Advanced users comfortable with complex interfaces - Professional photo editing and retouching - Users transitioning from expensive software - Complex graphic design projects GIMP (GNU Image Manipulation Program) has been the go-to free Photoshop substitute for over two decades. To be clear, it's a photo editor, not a Canva-style template tool, and nobody will tell you the interface is friendly. But if you need serious image editing without a subscription, nothing free gets closer. - **Professional photo editing**: Advanced tools for retouching, color correction, and manipulation - **Layer-based editing**: Complex compositions with full layer support - **Plugin ecosystem**: Extensive third-party plugins and scripts - **Format support**: Works with virtually every image format including PSD files - **Customizable interface**: Tailor the workspace to your workflow - Completely free and open source - Professional-grade features - Active community and extensive tutorials - Cross-platform compatibility (Windows, Mac, Linux) - No subscription fees ever Cons: - Steep learning curve for beginners - Interface can feel dated compared to modern tools - Limited template selection - More complex than needed for simple tasks ### AI Features: GIMP has limited built-in AI features, though community plugins offer some AI-powered filters and enhancement tools for basic image processing tasks. --- ## 2. Orshot - Canva-like Editor with API Automation This [LinkedIn carousel](https://orshot.com/blog/how-to-automatically-create-linkedin-carousels) was designed and generated in Orshot. Flip through it, or copy the template and make it your own: [Document Design in Orshot Studio](https://orshot.com/templates/shared/kt8j29wx/embed?view=play) Orshot is what you get when you combine Canva's editor with Canva's Autofill API, minus the Enterprise plan and the approval queue. You design a template in a familiar drag-and-drop editor, mark any element as dynamic, then autofill it with data and render unlimited variations through a single REST API. That covers both jobs at once: a Canva alternative when you just want to design, and a Canva Autofill API alternative when you need to generate designs at scale. **And you don't have to start from scratch. Bring your existing Canva designs with you.** Paste a public Canva share link below and see your design as an API-ready Orshot template, right here: Read more about [how the Canva import works](https://orshot.com/solutions/canva-template-to-api), and once your designs are in, you can even [automate publishing to your social accounts](https://orshot.com/blog/social-media-automation-tools) via Orshot - **Visual Drag-and-Drop Editor**: Canva-like interface with text, images, shapes, and rich formatting options - **Template Parameterization**: Make any element dynamic: text, images, colors, and styling properties - **REST API Generation**: Generate thousands of design variations with simple API calls - **Multi-format Output**: Export as PNG, JPG, AVIF, PDF, MP4, WebM, or GIF - **Video Generation**: Create videos with per-layer trim, mute, and loop controls via API - **Integration-Ready**: Works with n8n, Zapier, Make, and custom applications - **Works With AI Agents**: A hosted MCP server lets Claude, Cursor, ChatGPT and 7 more render your templates on request - **Publish to 10+ Socials Sites**: Supports posting to Instagram, LinkedIn etc. via API ### How Orshot Works: 1. **Design in Studio:** Use the visual editor to create your template with text, images, and shapes 2. **Set Parameters:** Mark elements as dynamic (e.g., `{{name}}`, `{{company}}` 3. **Generate via API:** Send data through REST API to create personalized versions ```javascript // Example: Generate a certificate with custom data await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer YOUR_API_KEY", }, body: JSON.stringify({ templateId: 12345, modifications: { recipientName: "John Smith", courseName: "Advanced JavaScript", completionDate: "October 2025", certificateColor: "#4F46E5", }, response: { type: "base64", format: "png", }, }), }); ``` **Pricing:** Free tier available with API access, paid plans start at $9/month ### AI Features: The AI here isn't a text-to-image button. It's two separate things: an agent that builds templates for you, and an MCP server that lets your own AI agent drive Orshot. - **AI Design Agent** — describe the template you want and it builds an API-ready one in Studio, with the dynamic fields already parameterized - **Remote MCP server** — connect Orshot to [Claude, Cursor, ChatGPT, Codex and six more clients](https://orshot.com/agents), then have them generate templates and set up your workflows for you. No local install, OAuth per workspace - **Agent skill** — a skill file teaches your agent the API, the `page1@` prefix for carousels, and Smart Resize, so it stops guessing at the request shape Here's the MCP setup and a template being generated from a prompt, end to end: [Orshot MCP Server Tutorial](https://www.youtube.com/watch?v=OhgdZtqEQK0) This is the part none of the other tools on this list really do. Figma ships an MCP server, but it's aimed at design-to-code handoff, not at generating finished assets. If you want to say "make me 200 branded certificates from this spreadsheet" and get files back, that's the gap Orshot fills. --- ## 3. Figma - Collaborative Design Platform ![GIMP](https://orshot.com/blog/canva-alternative-tools/figma.webp) [Link to Figma ↗](https://www.figma.com/ "target=_blank") ### Best for: - UI/UX designers and product teams - Teams requiring real-time collaboration - Web and app design projects - Design system creation and management Figma is where most product teams design these days, and its free tier is genuinely generous. Fair warning, redditors will tell you it's overkill for a quick Instagram post (one called it "using a screwdriver to hammer a nail"). But for UI, web work, and anything collaborative, it's hard to beat for free. - **Real-time collaboration**: Multiple designers can work simultaneously - **Component systems**: Reusable design elements and design systems - **Prototyping tools**: Interactive mockups and user flow testing - **Version control**: Track changes and revert to previous versions - **Plugin marketplace**: Thousands of community-created plugins ### What sets it apart: - **Browser-based**: No software installation required - **Team features**: Comments, feedback, and approval workflows - **Developer handoff**: Generate code snippets and design specs automatically - **Free tier**: Robust functionality without cost for small teams ### AI Features: Figma offers AI-powered features like auto-layout suggestions, design system recommendations, and smart component detection through various plugins and beta features. **Pricing:** Free for up to 3 projects, paid plans from $12/month per editor --- ## 4. Inkscape - Vector Graphics Specialist [Link to Inkscape ↗](https://inkscape.org/ "target=_blank") ### Best for: - Logo design and brand identity work - Vector illustrations and artwork - Scalable graphics for web and print - SVG graphics for websites Inkscape is the free, open-source answer to Illustrator. If you're making logos or anything that needs to scale cleanly, this is the one. It works nothing like Canva and takes some getting used to, but you'll own clean SVGs at the end of it. - **SVG-native**: Built around the SVG standard for web-compatible graphics - **Bezier tools**: Professional path editing and manipulation - **Text support**: Advanced typography tools and text-along-path features - **Object manipulation**: Clone, align, and distribute tools for precise layouts - **Extensions**: Python-based plugins for specialized functions - Free and open source with no limitations - Excellent for logos and scalable graphics - Professional vector editing tools - Strong community support - Regular updates and improvements Cons: - Limited bitmap editing capabilities - Smaller template ecosystem - Learning curve for vector graphics newcomers ### AI Features: Inkscape currently has minimal AI integration, though some community extensions provide basic automated tracing and path optimization features. --- ## 5. Adobe Express ![GIMP](https://orshot.com/blog/canva-alternative-tools/adobe-express.webp) [Link to Adobe Express ↗](https://www.adobe.com/express/ "target=_blank") ### Best for: - Users already in the Adobe ecosystem - Quick design creation with premium assets - Professional brand consistency - Teams needing Adobe integration Adobe Express (formerly Adobe Spark) is probably the closest free Canva-like on this list, and it's the tool redditors name most often when they want a near drop-in swap. The free plan leans on Adobe Stock assets and Firefly AI. - **Adobe integration**: Seamless access to Adobe Stock and Creative Cloud assets - **AI-powered tools**: Firefly integration for AI-generated content - **Brand management**: Upload logos, fonts, and maintain brand consistency - **Quick actions**: One-click background removal and image enhancement - **Multi-format export**: Optimized exports for different platforms ### Why consider it: - **Quality templates**: Professionally designed starting points - **Adobe ecosystem**: If you use other Adobe tools, integration is seamless - **AI features**: Latest generative AI capabilities built-in - **Mobile apps**: Full-featured iOS and Android applications ### AI Features: Adobe Express integrates Adobe Firefly for AI image generation, text effects, and background removal, plus smart resize and auto-animation features. **Pricing:** Free plan available, premium plans from $9.99/month --- ## 6. Pixlr - Budget-Friendly Alternative ![Pixlr](https://orshot.com/blog/canva-alternative-tools/pixlr.webp) [Link to Pixlr ↗](https://pixlr.com/ "target=_blank") ### Best for: - Casual designers on a budget - Users needing both photo editing and templates - Small businesses with limited design resources - Beginners looking for an all-in-one solution Pixlr quietly does a lot: photo editing, a Canva-style template editor, and AI tools, all with a genuinely usable free tier. It comes up often when people want one cheap app that covers both photos and graphics instead of juggling two. - **Multiple apps**: Photo Editor, Designer, and Express for different needs - **AI-powered features**: Background removal, image enhancement, and filters - **Template library**: Thousands of templates for various purposes - **Batch processing**: Edit multiple images simultaneously - **Cloud storage**: Access your work from anywhere ### Value proposition: - **Affordable pricing**: Starting at just $2.49/month - **All-in-one solution**: Photo editing plus design templates - **User-friendly**: Intuitive interface for beginners - **Mobile compatibility**: Work on desktop or mobile devices ### AI Features: Pixlr includes AI-powered background removal, image enhancement, style transfer filters, and an AI image generator with monthly credit limits. --- ## 7. Snappa - Simplicity First ![Snappa](https://orshot.com/blog/canva-alternative-tools/snappa.webp) [Link to Snappa ↗](https://snappa.com/ "target=_blank") ### Best for: - Occasional designers with infrequent needs - Users who prefer transparent pricing - Social media content creators - Simple design tasks without complexity Snappa keeps things refreshingly simple. Every feature is available on the free plan; you're just capped on how many downloads you get per month. If your design needs are occasional, that trade is easy to live with. - **No feature restrictions**: All tools available on free plan - **Social media focus**: Pre-sized templates for every platform - **Background removal**: One-click AI-powered background removal - **Graphics library**: Thousands of photos, graphics, and fonts - **Simple workflow**: Streamlined design process ### Unique approach: - **Transparent freemium**: No locked features, only usage limits - **Quick results**: Optimized for fast design creation - **Platform-specific**: Templates designed for specific social media dimensions ### AI Features: Snappa offers basic AI-powered background removal but lacks advanced AI features like image generation or smart design suggestions. **Pricing:** Free with 3 downloads/month, Pro at $15/month for unlimited usage --- ## 8. VistaCreate - Print-Focused Design ![VistaCreate](https://orshot.com/blog/canva-alternative-tools/vista-create.png) [Link to VistaCreate ↗](https://create.vista.com/ "target=_blank") ### Best for: - Small businesses needing print materials - Users requiring seamless printing integration - Marketing teams creating offline campaigns - Companies wanting design-to-print workflow VistaCreate (formerly Crello) is backed by VistaPrint, so it really shines when your design needs to end up on actual paper: business cards, flyers, posters, and the like. - **Print integration**: Direct connection to VistaPrint's printing services - **Animation tools**: Create animated social media posts and ads - **Brand kit**: Maintain consistent branding across materials - **Video templates**: Short video creation for social media - **Collaboration tools**: Team features for feedback and approval ### Print advantage: - **Print-ready templates**: Designs optimized for physical printing - **Material variety**: Business cards, flyers, posters, and merchandise - **Quality assurance**: Professional printing standards built-in ### AI Features: VistaCreate includes AI background removal, image upscaling, and basic AI-powered design suggestions for layout optimization. --- ## 9. BeFunky - Photo-Centric Design ![BeFunky](https://orshot.com/blog/canva-alternative-tools/befunky.webp) [Link to BeFunky ↗](https://www.befunky.com/ "target=_blank") ### Best for: - Photography enthusiasts and professionals - Users needing advanced photo editing - Collage creators and scrapbook designers - Social media content with heavy photo focus BeFunky sits somewhere between a photo editor and a design tool. If your work is photo-heavy (collages, photo-led social posts), it handles that better than most template-first apps. - **Photo editor**: Professional-grade photo editing tools - **Collage maker**: Advanced collage creation with smart layouts - **Artistic effects**: AI-powered filters and style transfers - **Background replacement**: Sophisticated background editing - **Batch processing**: Apply effects to multiple photos ### Photo focus: - **Advanced editing**: More powerful photo tools than typical design platforms - **Creative filters**: Unique artistic effects and enhancements - **Collage specialist**: Industry-leading collage creation tools ### AI Features: BeFunky provides AI-powered artistic filters, style transfers, background removal, and smart photo enhancement tools for automatic image improvement. --- ## 10. Piktochart - Data Visualization Expert ![Piktochart](https://orshot.com/blog/canva-alternative-tools/piktochart.webp) [Link to Piktochart ↗](https://piktochart.com/ "target=_blank") ### Best for: - Data analysts and researchers - Professionals creating infographics - Educational content creators - Business presentation designers Piktochart is the one to reach for when you're turning data into something people will actually read: infographics, reports, and charts. One redditor mentioned switching from Canva to Piktochart purely for its AI. - **Infographic templates**: Professionally designed data visualization layouts - **Chart tools**: Interactive charts and graphs - **Map visualizations**: Geographic data representation - **Presentation mode**: Create slide-based presentations - **Data import**: Direct integration with spreadsheets and databases ### Data strength: - **Visualization focus**: Purpose-built for data storytelling - **Professional templates**: Business-ready infographic designs - **Interactive elements**: Engaging data presentations ### AI Features: Piktochart offers limited AI capabilities, primarily focusing on smart chart recommendations based on data types and automated color scheme suggestions. --- ## How to Choose the Right Canva Alternative ### For Marketers, Agencies & Small Teams: **Choose Orshot** if you need to generate high volumes of personalized images and [PDFs from templates](https://orshot.com/solutions/pdf-generation-api). Perfect for marketing teams creating hundreds of social media posts with client branding, agencies producing custom certificates for multiple clients, or small teams generating personalized product mockups at scale, all without manual work. ### For Professional Design Work: **Choose GIMP or Inkscape** if you need powerful editing capabilities without subscription costs. GIMP for photo manipulation, Inkscape for vector graphics. ### For Team Collaboration: **Choose Figma** if your team needs to work together on designs in real-time, especially for web and app interfaces. ### For Budget-Conscious Users: **Choose Pixlr or Snappa** for cheap, capable options that still cover the basics without a subscription. ### For Specific Use Cases: - **Print materials**: VistaCreate - **Photo-heavy designs**: BeFunky - **Data visualization**: Piktochart - **Adobe ecosystem users**: Adobe Express ## Frequently Asked Questions **Q: Is there a completely free alternative to Canva?** Plenty. GIMP, Inkscape, Photopea, and Krita are 100% free and open-source, with no plan and no catch. Among the Canva-style editors, Adobe Express, Pixlr, VistaCreate, and [Orshot's](https://orshot.com/studio) free tier all let you design and export without paying, though each caps something (downloads, AI credits, or premium assets), so check the free-tier limits before you commit. **Q: Is there a Canva Autofill API alternative?** If you want to populate a template with data and render it at scale, that job points you at Canva's Autofill API, and it's where most people get stuck: it only works with brand templates on Canva Enterprise, and the Connect API needs app review before you can ship. [Orshot is the self-serve alternative to both Canva and its Autofill API](https://orshot.com/solutions/canva-template-to-api): design a template in a Canva-style editor, mark any element dynamic, then hit one REST endpoint to autofill it and render hundreds of variations as PNG, PDF, or video. No Enterprise plan, no approval queue, and a free tier with API access to get started. **Q: What's the best free Canva alternative?** It depends on the job, which is exactly why this list is sorted that way. For a near drop-in Canva feel, try Adobe Express. For photo editing, Photopea or GIMP. For logos and vector work, Inkscape. For designs you want to automate or generate in bulk, [Orshot](https://orshot.com/studio). There's no single winner here, and anyone who insists otherwise is usually selling one of them. **Q: Is there an open-source Canva alternative?** A few good ones. GIMP for photo editing, Inkscape for vector, Krita for illustration, Scribus for print and page layout, and Penpot for UI design (it's closer to Figma than Canva). None are a pixel-perfect Canva clone, but they're free forever and you genuinely own your files. **Q: What about Affinity now that Canva owns it?** Worth knowing about. Canva acquired Affinity, and Affinity Photo, Designer, and Publisher are now free with no subscription. They're more powerful (and steeper to learn) than Canva, and they've quietly become a favorite for people who want out of the subscription model without giving up capability. **Q: Will I get a watermark on the free plan?** On most tools here, no. GIMP, Inkscape, Photopea, Krita, and Adobe Express all export clean on their free plans. Snappa gives you every feature free but caps how many downloads you get each month. As always, confirm a tool's current free-tier terms before you rely on it for client work. **Q: Is there an AI alternative to Canva?** Yes. Adobe Express (via Firefly), Pixlr, Piktochart, and Orshot all bake in AI, from background removal to layout suggestions to full generation. A few redditors mentioned getting more usable results out of these than out of Canva's own AI. **Q: Is Canva still worth paying for?** Honestly, for a lot of people, yes. Canva's whole advantage is ease of use, and just about every alternatives thread has someone pointing out that the free tools come with a learning curve. If you live in Canva every day, paying may still be the rational call. If you open it a few times a month and the price jump stung, one of the free options above will almost certainly do the job. ## Conclusion Look, [Canva](https://canva.com "target=_blank") is genuinely great. There's a reason millions of people use it, and for sheer ease of use it's hard to beat. But if the price jump pushed you out, or you've hit one paywall too many, you've got real options. Maybe you want API automation like [BannerBear](https://orshot.com/blog/bannerbear-api-alternative) offers, or you're tired of subscription fees and prefer free tools like GIMP The truth is, there's no single "best" design tool. It all depends on what you're actually trying to do and how much you want to spend. Try a couple from this list and see what clicks for you --- ### [10 Best Tools to Automate Content Creation](https://orshot.com/blog/automated-content-creation-tools) > Spending hours on posts every week? Here are 10 tools that automate content creation from the first draft to the scheduled post. Tested with real numbers. Automated content creation means software does the repeat work of making content. AI drafts the copy, templates generate the images and a scheduler posts them, while you pick the ideas and check the output. The 10 best tools to automate content creation, grouped by step, are Google Sheets, ChatGPT, Claude, Jasper, Orshot, Canva Bulk Create, n8n, Make, Zapier and Buffer. ![Four Instagram posts for a sample coffee shop, Monday to Thursday, each generated by Orshot from one row of a Google Sheet with a day, headline, offer and photo](https://orshot.com/blog/automated-content-creation-tools/week-of-posts.webp) How fast is it? In my test on October 10, 2026, seven sheet rows became seven finished Instagram posts in 72 seconds. Claude wrote the copy and built the template through Orshot, and each post took a median 3.26 seconds to render. **TL;DR** — Which content automation tool do you need? Pick the step you're on: - **1. Plan the content**: [Google Sheets](#1-plan-your-content-in-google-sheets) — One row per post. Every other tool on this list can read it. - **2. Write the copy**: [ChatGPT, Claude or Jasper](#2-write-the-copy-with-chatgpt-claude-or-jasper) — Give it your past posts, ask for a week of rows, then check every fact. - **3. Generate the images**: [Orshot or Canva Bulk Create](#3-generate-on-brand-images-with-orshot) — A design template filled from each row. Orshot runs by API, Canva by hand. - **4. Connect the steps**: [n8n, Make or Zapier](#4-connect-the-steps-with-n8n-make-or-zapier) — Watch the sheet, call the image API, pass the result on. - **5. Schedule and publish**: [Buffer or Orshot publishing](#5-schedule-and-publish-with-buffer) — Queue posts per channel, or post straight from the render call. - **6. Review before it posts**: [Drafts and approval flows](#6-keep-a-human-review-step) — Hold posts as drafts and lock the design until someone signs off. ## The 10 Tools at a Glance These are the 10 content creation automation tools in this post, the step each one covers and what it costs to start. Prices were checked on October 10, 2026. ![The automated content creation pipeline in six steps: plan in Google Sheets, write with Claude or ChatGPT, generate with Orshot, connect with n8n, Make or Zapier, publish with Buffer or Orshot, and review with drafts and approvals](https://orshot.com/blog/automated-content-creation-tools/pipeline.webp) | Tool | Step | Free plan | Paid per month | | :--- | :--- | :--- | :--- | | Google Sheets | 1. Plan | Yes | Free | | ChatGPT | 2. Write | Yes | Plus plan | | Claude | 2. Write | Yes | $20 | | Jasper | 2. Write | Trial | $69 per seat | | Orshot | 3. Images | 100 credits | $39 | | Canva Bulk Create | 3. Images | No | Canva Pro | | n8n | 4. Connect | Self-host | €20 | | Make | 4. Connect | 1,000 credits | $9 | | Zapier | 4. Connect | 100 tasks | $19.99 | | Buffer | 5. Publish | 3 channels | $5 per channel | Free plan limits are per month. The n8n and Zapier prices are for yearly billing. ## What Is Automated Content Creation? Automated content creation is the use of software to produce, format and publish content from a plan and your data, with a person deciding what to say. "Content automation" usually means the same thing, often stretched to cover tagging and distribution too. The repeat work automates well. Writing seven captions in one voice, laying out seven posts in one design and posting each at 9am are all rules a tool can follow. Judgment doesn't automate well: the idea, the facts, the offer and the reply to a customer. Every step below keeps a person on those. ## 1. Plan Your Content in Google Sheets Google Sheets is the free content calendar every other tool here can read. Put one post in each row and one field in each column: day, headline, offer, photo URL and caption. ![Google Sheet rows for a sample coffee shop week next to the Orshot post generated from row 3, Wednesday, with the headline Midweek double shot and the offer Espresso plus cookie $5](https://orshot.com/blog/automated-content-creation-tools/sheet-to-post.webp) **Pick this if** you don't have a content plan yet, or yours lives in someone's head. These are two rows of the sheet from my test, a week of posts for a sample coffee shop called Northside Coffee: ```csv day,headline,offer,photo,caption Monday,Start the week slow,Oat flat white $4.50,https://images.unsplash.com/photo-1564327367919-cb377ea6a88f,"Mondays need a soft start." Wednesday,Midweek double shot,Espresso + cookie $5,https://images.unsplash.com/photo-1530174883092-c2a7aa3f1cfe,"Halfway there." ``` ### Step 1: Make one column per changing part Look at the post you make every week and list what changes: the headline, the price, the photo. Each of those becomes a column. Anything that never changes, like the logo, stays in the design. ### Step 2: Keep photos as links Image tools read a photo from a public URL, so store links in the sheet, not pasted pictures. A Google Drive or Dropbox share link works if the file is public. Airtable and Notion do the same job with more structure, and Orshot, n8n, Make and Zapier read them too. - Free, and n8n, Make, Zapier and Orshot all have a Google Sheets trigger - Teammates can add next week's posts without touching the automation Cons: - No field types, so a typo in a price goes straight into the post - Pictures pasted into cells don't travel to other tools; use links **Best for:** Google Sheets suits any team starting content automation, because it is free and every tool on this list reads it. ## 2. Write the Copy with ChatGPT, Claude or Jasper ChatGPT and Claude write a week of headlines and captions in seconds, and both have free plans. Jasper adds brand voice settings and team workflows for marketing departments, at $69 per seat a month. ![A prompt to Claude or ChatGPT asking for 7 Instagram posts for Northside Coffee, filling the headline and caption columns of the Google Sheet](https://orshot.com/blog/automated-content-creation-tools/write-copy.webp) **Pick this if** writing captions is the part of the week you put off. ### Step 1: Give it five posts in your voice Paste five past posts you liked and say who reads them. An answer in a Reddit thread on automating content as a solo creator gives the same advice: example captions in your voice beat a long style guide. ### Step 2: Ask for rows, not prose Ask for a table with the exact columns of your sheet, plus limits: "headline under 25 characters, one offer per row". For the test, Claude wrote all seven rows straight into a CSV with the five columns above. ### Step 3: Check every fact before it renders AI invents prices, dates and opening hours with total confidence. Read the offer column against reality before anything is generated. ### What to Watch For - **Headline length.** A long headline shrinks or wraps in the design. Put a character limit in the prompt. - **Same opener.** Captions drift toward the same first words. Ask for varied openers by name. **Pricing:** ChatGPT and Claude both have free plans. [Claude Pro](https://claude.com/pricing "target=_blank rel=nofollow") is $20 a month, or $17 a month billed yearly. [Jasper Pro](https://www.jasper.ai/pricing "target=_blank rel=nofollow") is $69 per seat a month, or $59 billed yearly, with a 7-day trial and no free plan. Checked October 10, 2026. - A week of on-voice drafts takes seconds instead of an afternoon - Output drops straight into sheet columns Cons: - Invents facts like prices and dates, so a person must check them - Captions drift toward the same phrasing without examples **Verdict:** Start with ChatGPT or Claude on a free plan. Jasper earns its seat price only when several marketers share one brand voice. ## 3. Generate On-Brand Images with Orshot Orshot is an API that turns your design templates into images, PDFs and videos. For content automation, Orshot generates one finished post per sheet row, so only the words and photo change. ![Four Google Sheet columns, photo, day, headline and offer, each connected to the matching layer of the Wednesday Instagram post that Orshot generated](https://orshot.com/blog/automated-content-creation-tools/map-fields.webp) Disclosure: I built Orshot. **Pick this if** you post the same kind of graphic every week and redesign it by hand each time. ### Step 1: Design the template once Build the post in [Orshot Studio](https://orshot.com/features/orshot-studio) and mark the layers that change as dynamic fields. In the test, Claude built it through [Orshot for agents](https://orshot.com/agents): a 1080 × 1350 Instagram post with `day`, `headline`, `offer` and `photo` fields. ![Screenshot of template 23867 in Orshot Studio with the headline layer selected and its dynamic field toggle on, with callouts for the day, headline and toggle](https://orshot.com/blog/automated-content-creation-tools/studio-dynamic-field.webp) ### Step 2: Map your sheet columns to the fields Each column fills the field with the same name. The headline column fills the headline layer, the photo column swaps the image, and the layout, fonts and colours stay put. ### Step 3: Render each row through the API Send one render request per row. This is the request for row 3 of the test sheet: ```js const res = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer ", }, body: JSON.stringify({ templateId: 23867, modifications: { day: "Wednesday", headline: "Midweek double shot", offer: "Espresso + cookie $5", photo: "https://images.unsplash.com/photo-1530174883092-c2a7aa3f1cfe", }, response: { type: "url", format: "png" }, }), }); ``` The same render step runs in n8n, Make or Zapier without code. Rendered files are kept for at least a year, so the link in the response can go straight back into the sheet. ### Things That Bit Me - **A label colour that didn't show.** The day label's pill colour was missing on the first render. A separate shape behind the text fixed it. - **Text that grows.** Set headline boxes to shrink to fit, so a long row can't spill out of the design. **Generate a week of posts from your sheet** — Design the template once, then generate a post per row by API, n8n, Make or Zapier. 100 free credits a month. [Start free](https://orshot.com/pricing?via=blog-automated-content-orshot) **Pricing:** Orshot's free plan includes 100 credits a month, and paid plans start at $39 a month for 1,500 credits, per the live pricing page on October 10, 2026. An image or PDF page costs 1 credit, so a week of 7 posts uses 7. - Every post comes from your own design, so text and layout never come out garbled - The same template renders from REST, n8n, Make, Zapier or an AI agent - Also generates PDFs and videos from the same data Cons: - You design the template first, which takes longer than the renders - Video rendering needs a paid plan - Orshot fills your design; it doesn't invent photos you don't have **Best for:** Orshot suits teams that publish the same kind of post, carousel or PDF every week and want it generated from data by API. ### Canva Bulk Create If You Already Use Canva Canva Bulk Create fills a Canva design from a table of data, one page or design per row. It is the closest option if your team already designs in Canva. The limits, per [Canva's help page](https://www.canva.com/help/bulk-create/ "target=_blank rel=nofollow") on October 10, 2026: - Pro, Teams, Business, Enterprise, Education or Nonprofit plan, desktop only - up to 300 rows from a Canva Sheet and up to 150 data fields - image URLs are read as plain text, so photos must be embedded in the sheet - each batch is started by hand in the editor That last point is the catch for content automation: nothing runs while you sleep. The [Canva Bulk Create alternative](https://orshot.com/blog/canva-bulk-create-alternative) post covers moving a Canva design to an API. **Best for:** Canva Bulk Create suits occasional batches made by hand inside Canva. ## 4. Connect the Steps with n8n, Make or Zapier n8n, Make and Zapier watch the sheet for new rows, call the image API, then pass the result to a scheduler or back into the sheet. They are the glue in automated content workflows. ![The images-from-sheet-to-social workflow as four nodes: new or updated row in Google Sheets, render the post template in Orshot, post to Instagram and post to LinkedIn, with the same chain available in n8n, Make and Zapier](https://orshot.com/blog/automated-content-creation-tools/connect-steps.webp) **Pick this if** you want the pipeline to run on its own when a row is added. | Tool | Free plan | Paid from (Oct 10, 2026) | | :--- | :--- | :--- | | [Zapier](https://zapier.com/pricing "target=_blank rel=nofollow") | 100 tasks, two-step Zaps only | $19.99/mo yearly, 750 tasks | | [Make](https://www.make.com/en/pricing "target=_blank rel=nofollow") | 1,000 credits, 2 active scenarios | $9/mo for 5,000 credits | | [n8n](https://n8n.io/pricing/ "target=_blank rel=nofollow") | Self-hosted Community Edition | Cloud from €20/mo yearly | ### Zapier for a Straight Line of Steps Zapier runs a straight line of steps, one app after another. The free plan only runs two-step Zaps, and sheet, image and post is three steps, so a real pipeline starts on a paid plan. ### Make for Visual Multi-Step Flows Make shows every step on a canvas, with filters and routers between them. At $9 a month for 5,000 credits, Make is the cheapest paid entry of the three. ### n8n for Self-Hosting and Code n8n runs on your own server for free and lets you drop code into any step. The public [n8n workflow 3066](https://n8n.io/workflows/3066 "target=_blank rel=nofollow") writes posts with AI and asks reviewers to approve them by Gmail before it publishes. My [n8n social media automation tutorial](https://orshot.com/blog/n8n-marketing-automation-tutorial) builds the image side step by step. ### Or Skip the Third Tool Orshot has the same sheet-to-post loop built in as a workflow. You connect the sheet and your accounts, and each new row renders and posts: [Auto-post images to social media from a Google Sheet, an Orshot workflow](https://orshot.com/workflows/images-from-sheet-to-social/embed) **Verdict:** Use Make for the cheapest visual start, n8n if you self-host, and Zapier if your team already lives there. ## 5. Schedule and Publish with Buffer Buffer queues finished posts and publishes them to each channel at the times you set. The free plan covers 3 channels with 10 scheduled posts each, and Essentials costs $5 per channel a month ([Buffer pricing](https://buffer.com/pricing "target=_blank rel=nofollow"), October 10, 2026). ![An Orshot render request with a publish object set to status draft, next to Instagram, LinkedIn and X cards each showing the drafted status](https://orshot.com/blog/automated-content-creation-tools/publish-draft.webp) **Pick this if** someone still uploads each finished image to each app by hand. ### Buffer or Orshot Publishing [Orshot social publishing](https://orshot.com/features/social-publishing) posts the image from the render call itself, to 15 platforms. It is a $12 per account a month add-on on paid plans, so Buffer is cheaper per channel. Orshot publishing wins when you'd rather not run a scheduler at all. Add a `publish` object to the render request, and `status: "draft"` holds the post for a person to check: ```js publish: { accounts: [YOUR_ACCOUNT_ID], content: "Halfway there. Espresso and a cookie for $5 until 3pm.", status: "draft", } ``` The response then reports `"status": "drafted"` for each account. My test stopped before this step: I connected no social account, so nothing was posted live. The fields are in the [publish API docs](https://orshot.com/docs/publish/publish-from-api). For a wider comparison of schedulers, see my list of [social media automation tools](https://orshot.com/blog/social-media-automation-tools). **Verdict:** Buffer is the cheaper scheduler per channel. Orshot publishing saves a tool when the post is generated by API anyway. ## 6. Keep a Human Review Step A human review step stops a wrong price or a broken layout from reaching your followers. Put it in two places: on the design before it goes live, and on the posts before they publish. ![Orshot approval flow in three stages: in review with the template_not_approved refusal, approved by brand, legal or client, then every row renders again](https://orshot.com/blog/automated-content-creation-tools/approval-flow.webp) **Pick this if** more than one person touches your brand, or a client signs off on what you post. ### Review the Design with Approval Flows [Orshot approval flows](https://orshot.com/features/approval-flows) gate the template, not each post. Until brand, legal or the client approves a template, the Orshot API refuses to render it: ```json { "error": "This template is waiting for approval in 'Spring campaign' and can't be rendered through the API yet.", "code": "template_not_approved" } ``` Approval flows are available on specific plans. ### Review Each Post as a Draft For post-by-post review, publish as drafts and have someone release them. In n8n, a Gmail or Slack step that waits for approval does the same job before the post goes out. **Verdict:** Lock the design once with an approval flow, then spot-check drafts for the first few weeks. ## What Generating a Week of Posts from a Sheet Took The test turned 7 sheet rows into 7 Instagram posts with Orshot on October 10, 2026. It took 72 seconds from an empty sheet to finished files, and nothing was posted to social media. | Step | What happened | Result | | :--- | :--- | :--- | | Copy | Claude wrote 7 rows: day, headline, offer, photo, caption | 1 CSV | | Template | Claude built the post design through Orshot, with one fix | Template 23867 | | Batch render | All 7 rows in one call | 72 s from the start | | Timing run | Each row rendered again from a URL, timed with curl | Median 3.26 s per post | | Credits | 7 for the batch, 7 for the timing run | 14 credits | ![Render time per post for the seven test rows, from 2.58 seconds on Tuesday to 4.48 seconds on Monday, with a median of 3.26 seconds](https://orshot.com/blog/automated-content-creation-tools/render-times.webp) The first request was the slowest at 4.48 seconds. Each time includes fetching the photo from Unsplash and downloading a 1080 × 1350 PNG of 0.6 to 1.1 MB. The 72 seconds is the time an AI agent took. Reading the copy and checking the design yourself takes longer, and it should. On the free plan, this week of posts uses 7 of the 100 monthly credits. Posting it needs either Buffer's free plan or the Orshot publishing add-on. ## What Not to Automate Not every part of content work should run without a person. A Reddit thread titled "AI Content Automation is a waste of time" shows up on Google's first page for this search, and the title has a point when the ideas get automated too. - **The idea.** Decide what the week is about yourself. - **Facts and offers.** Prices, dates and claims need a human check. - **Replies.** Comments and DMs are where people decide whether you are real. Google takes the same line. Its [guidance on AI content](https://developers.google.com/search/blog/2023/02/google-search-and-ai-content "target=_blank rel=nofollow") rewards original, helpful content however it is made, and treats content made mainly to manipulate rankings as spam. ## Can ChatGPT Automate Social Media Posts? ChatGPT can write social media posts, but writing is one step. To post on a schedule, send ChatGPT's output to a scheduler like Buffer, or run it through Zapier, Make or n8n with an image step in between. ## How I Picked and Checked These Tools I picked tools per step from the pages ranking for "automated content creation" and from the stack I run. I opened each pricing and help page on October 10, 2026. OpenAI's pricing page didn't load for me, so the table names the ChatGPT plan without a price. Canva's pricing page showed my local currency, so Canva Pro has no dollar price either. I ran the sheet test in Orshot myself and posted nothing live. ## Automated Content Creation FAQ **Q: What is automated content creation?** Automated content creation is using software to produce and publish content from a plan and your data. AI drafts the copy, templates generate the images, and a scheduler posts them, while a person picks the ideas and checks facts before anything goes live. **Q: Can AI content make money?** Yes, when the content sells something real. AI content that promotes a product, service or offer can drive revenue like any other post. AI content made only to fill a feed rarely earns anything, because readers and Google both reward posts with real information. **Q: Can I use AI to create content?** Yes. ChatGPT and Claude write drafts and captions, and template tools like Orshot generate the images from your design. Google says its ranking systems reward original, high-quality content however it is produced, so check facts and add what only you know. **Q: What are the top 5 marketing automation tools?** For content work, Zapier, Make, n8n, Buffer and Orshot cover the most steps. Zapier, Make and n8n connect apps, Buffer schedules posts, and Orshot generates the images from templates. Email-led marketing automation, like HubSpot, is a separate category. **Q: Is Canva Bulk Create automated?** Partly. Canva Bulk Create fills a design from up to 300 rows, but a person starts each batch in the Canva editor on desktop. Canva Bulk Create needs a Pro or higher plan and reads image URLs as plain text. **Q: Does Google penalize AI-generated content?** No, not for being AI-made. Google's guidance says its systems reward original, high-quality content however it is produced. Google's spam policies do cover content generated mainly to manipulate search rankings. **Q: What is Orshot?** Orshot is an API for automated image, PDF and video generation from templates. You design a template in Orshot Studio, mark the parts that change, and generate a post, PDF or video per row from the REST API, n8n, Make, Zapier or an AI agent. ## Automate Your First Week of Posts Pick one post you make every week, put next week's versions in a sheet, and generate them from your design. Add the scheduler and the review step once the posts look right. [Sign up](https://orshot.com/pricing?via=blog-automated-content-footer) to generate them; you get 100 free credits a month, no card needed. If you get stuck, hit the chat button. I'm usually the one on the other end. --- ### [11 Best Creative Automation Platforms in 2026](https://orshot.com/blog/best-creative-automation-platforms) > Compare The Brief with Orshot and Rocketium plus 8 more creative automation platforms on pricing and AI agent support to generate on-brand ads at scale I researched the creative automation tools marketing teams actually compare, from enterprise ad suites to small template APIs. Most roundups name the same five enterprise tools, and most of those say "custom" where the price should be. ![The 11 creative automation platforms in this post: The Brief, Orshot, Rocketium, Bannerwise, ImageKit, Imejis, Superscale, Tempo, Plainly, Smartly and Celtra](https://orshot.com/blog/best-creative-automation-platforms/lineup.webp) Reddit is blunter. One commenter in r/PPC wrote that Smartly _"starts around $5k/month on their lower tier."_ So I built a different list of creative automation platforms. I opened every pricing page in October 2026 and gave most of the slots to newer tools the usual roundups skip. I also checked what no other list covers: whether an AI agent like Claude or ChatGPT can actually drive each platform over MCP. One disclosure up front: **Orshot is my product.** It sits at #2, and I'll say plainly what it doesn't do (HTML5 display ads, for one). ## What is a creative automation platform? A creative automation platform turns a master design plus data into many finished assets. The design is a template with locked brand elements and a few fields that change. The data is a product feed, a spreadsheet row, an API call or a prompt. You change the data, and the platform produces every size, language and product variant. Designers build the system once, and the volume comes from software instead of from redoing the same layout 200 times. ## The 11 at a glance | Platform | Best for | Starting price | API | MCP | | :-- | :-: | :-: | :-: | :-: | | [The Brief](#t-thebrief) | Hand-built HTML5 and display ads | $29/mo yearly | Enterprise only | No | | [Orshot](#t-orshot) | Images, PDFs and video from templates via API | Free, then $39/mo | Yes | Yes | | [Rocketium](#t-rocketium) | Managed AI production for consumer brands | Quote only | Legacy | No | | [Bannerwise](#t-bannerwise) | HTML5 and dynamic display ads | €275/mo yearly | Enterprise only | No | | [ImageKit](#t-imagekit) | Banner variants inside a DAM | Free, then $9/mo | No | Yes | | [Imejis](#t-imejis) | A low-cost image API | Free, then $14.99/mo | Yes | Yes | | [Superscale](#t-superscale) | An AI agent for Meta, Google and TikTok ads | $99/mo | No | Yes | | [Tempo](#t-tempo) | Weekly Meta ads for Shopify stores | $99/mo | No | No | | [Plainly](#t-plainly) | After Effects video at scale | $69/mo | Yes | Yes | | [Smartly](#t-smartly) | Paid social plus media buying | Quote only | No | No | | [Celtra](#t-celtra) | Enterprise HTML5 and rich media | Quote only | Add-on | No | Prices are the lowest paid plan on each vendor's own pricing page, checked October 1, 2026. --- ## 1. The Brief: ad design for teams that build by hand _Best for: marketing teams and agencies that design display ads in a browser and need HTML5_ ![The Brief homepage, an AI ad creation platform formerly called Creatopy](https://orshot.com/blog/best-creative-automation-platforms/shot-thebrief.webp) [The Brief](https://www.thebrief.ai "target=_blank rel=nofollow") is the tool many people still know as Creatopy, and before that as Bannersnack. It rebranded in October 2025, and creatopy.com now redirects there. It covers ad generation, resizing, an ad server and publishing to 40+ ad networks. It's the cheapest self-serve entry on this list for HTML5 work. A designer builds the master ad, then sizes and feed-driven variants come out of the editor. I wrote up how it compares to an API workflow in the [Creatopy alternative](https://orshot.com/blog/creatopy-api-alternative) post. ### What it does - Exports JPG, PNG, WebP, GIF, HTML5, MP4 and PDF on every plan - Publishes to Meta and Google Ads from the Ultra plan up, with CM360 and DV360 on Enterprise - Reads product data from Shopify, Google Sheets and CSV or XML feeds - Imports PSD and Figma files on every plan - Connects to DAMs like Bynder, Frontify and Orange Logic on Enterprise ### AI agent readiness - **MCP server:** no. The "Connect with MCP" button on its docs site only searches the documentation. - **API:** REST and GraphQL on the Enterprise plan, plus a Zapier app from the Ultra plan up. - **What an agent can do:** nothing directly yet. An agent would have to go through Zapier or the Enterprise API. ### Where it falls short Self-serve plans cap product feeds at 1 to 2 MB, and the API gate makes it hard to plug into n8n or your own backend. The product has also shifted a lot since the rename toward an "AI agency" pitch. **Pricing:** $29/mo for one seat, $79/mo for the larger single-seat plan and $49 per seat for teams of 2 to 10, all billed annually. Monthly billing is $39, $99 and $59. Seven-day trial, no card. --- ## 2. Orshot: creative automation via API and agents _Best for: teams who want on-brand images, PDFs and video generated from their own workflows_ I built Orshot for the second group: teams who want on-brand creative generated by a workflow, not booked through an account manager. You design a template once, mark the fields that change, then generate images, PDFs and video from it through the API, n8n, Make, Zapier or an AI agent. 100 free credits / month [Try Orshot](https://orshot.com/pricing?via=blog_creative_automation_orshot) Here's what that looks like with a [product feed](https://orshot.com/blog/meta-catalog-ads). Three rows of data, three ads, no designer in the loop: ![Product ad for Daily Glow Lotion at $24, generated by the Orshot API from a product feed row](https://orshot.com/blog/best-creative-automation-platforms/feed-lotion.webp) ![The same product ad design filled with Studio Wireless headphones at $249 from the next feed row](https://orshot.com/blog/best-creative-automation-platforms/feed-headphones.webp) ![The same product ad design filled with Citrus Body Wash at $18 from a third feed row](https://orshot.com/blog/best-creative-automation-platforms/feed-body-wash.webp) Each one is a single request. The `modifications` object carries the row, and the response is a hosted file URL: ```bash curl -X POST https://api.orshot.com/v1/studio/render \ -H "Authorization: Bearer $ORSHOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "templateId": "", "modifications": { "product_name": "Citrus Body Wash", "price": "$18", "product_image": "https://example.com/feed/body-wash.jpg" }, "response": { "type": "url", "format": "png", "extraSizes": ["instagram-story", "1080x1080"] } }' ``` That `extraSizes` line is [Smart Resize](https://orshot.com/features/smart-resize). The same design is re-laid-out for each canvas in that call, so the 4:5 feed ad also comes back as a story and a square: ![Product ad rendered at 1080x1350 for the Instagram feed](https://orshot.com/blog/best-creative-automation-platforms/resize-feed.webp) ![The same product ad re-laid-out by Smart Resize to a 1080x1920 story](https://orshot.com/blog/best-creative-automation-platforms/resize-story.webp) ![The same product ad re-laid-out by Smart Resize to a 1080x1080 square](https://orshot.com/blog/best-creative-automation-platforms/resize-square.webp) Change `"format"` to `"mp4"` and the same template comes back as a video. I added entrance timing as render-time parameters for this one, without touching the saved design: [Watch the video](https://orshot.com/blog/best-creative-automation-platforms/demo-ad.mp4) Templates can start in Orshot Studio, from a prompt, or from a design you already have: [import a Canva template](https://orshot.com/solutions/canva-template-to-api) or [turn a Figma frame into an API](https://orshot.com/solutions/figma-automation-via-rest-api). PDFs support CMYK for print. If a brand team or an agency has to sign off before anything goes out, Scale plans add [approval flows](https://orshot.com/features/approval-flows). Each template moves through stages like brand review and legal review, and the API, n8n, Make, Zapier and AI agents can't render it until it's approved. Designers can still preview and download in the studio the whole time. ![Orshot approval flows board with templates in Draft, Brand review, Legal review and Automation approved columns](https://orshot.com/help/approval-flows/first-flow-3-board.webp) - **Price:** free plan with 100 credits a month. Launch is $39/mo for 1,500 credits (about 1,500 images or PDFs, or 25 minutes of video). Grow is $160/mo, Scale $349/mo. - **Output:** PNG, JPG, WebP, AVIF, multi-page PDF (with CMYK), MP4, WebM, MOV and GIF. - **Integrations:** REST API and SDKs on every plan, plus [n8n](https://orshot.com/docs/integrations/n8n), Make, Zapier, Airtable and Google Sheets. - **What it doesn't do:** HTML5 display ads, media buying or ad serving. You push the files into your ad manager, or post them with the social publishing add-on. ### AI agent readiness - **MCP server:** yes, official and hosted at `https://mcp.orshot.com/mcp` - **Tools:** 103, covering templates, rendering, brand assets, workflows and social publishing - **What an agent can do:** design a template from a brief, edit it, render images, PDFs and video, resize to any format, pull your brand kit, publish to 15+ social platforms and read post analytics - **Sign-in:** OAuth, so there's no API key to paste - **Works in:** Claude, ChatGPT, Cursor, VS Code, Codex, Windsurf and other MCP clients. See [Orshot for agents](https://orshot.com/agents). ```bash # Claude Code claude mcp add orshot --transport http https://mcp.orshot.com/mcp ``` Every visual in this post came out of that MCP server. While I wrote it, Claude took the 10 homepage screenshots, built the cover and the two graphics, and rendered the product ad above as a PNG and an MP4. No design tool was opened for any of it. --- ## 3. Rocketium: AI production with human review _Best for: consumer brands that want to hand off production and review the results_ ![Rocketium homepage for AI Studio, on-brand creative for consumer brands](https://orshot.com/blog/best-creative-automation-platforms/shot-rocketium.webp) [Rocketium](https://rocketium.ai "target=_blank rel=nofollow") sells "AI Studio" to e-commerce and consumer brands. AI agents produce the assets, human designers check them, and the stated turnaround is under 24 hours for paid social, product page and retail media assets. It's closer to a managed service than to software you run yourself. You send a brief, and finished files come back with brand-compliance checks already done. ### What it does - Outputs PNG, JPEG, WebP, PDF and PSD - Checks assets against brand and retailer rules before delivery - Figma plugin and Photoshop support for source files - Connects to Bynder, Box, Google Drive, Workfront, Monday and Asana ### AI agent readiness - **MCP server:** no. - **API:** a legacy REST API from its earlier product, not documented for AI Studio. - **What an agent can do:** nothing directly. Work runs through briefs and the review queue. ### Where it falls short There are no public prices. Rocketium's own comparison article puts AI Studio at $50K+ a year, which rules out small teams. You also don't own a template you can call yourself. **Pricing:** request a quote on rocketium.ai. --- ## 4. Bannerwise: HTML5 and dynamic ads without code _Best for: brands and agencies running display and social ads across many networks_ ![Bannerwise homepage, a creative management platform for digital advertising](https://orshot.com/blog/best-creative-automation-platforms/shot-bannerwise.webp) [Bannerwise](https://www.bannerwise.io "target=_blank rel=nofollow") was started by a marketer and a developer from a digital agency who were tired of spending days on a single HTML5 ad set. It's a creative management platform: you build an ad once in the browser and export it to every network and format. It covers similar ground to the enterprise suites at the bottom of this list, but it's a much smaller name, with public prices and a free trial. ### What it does - Exports HTML5, AMP, GIF, MP4, JPG and PNG, downloadable as a ZIP - Publishes to Google Ads, Campaign Manager, Facebook, Instagram, Pinterest, AdRoll and premium DSPs - Feed-based dynamic ads for social and display on the Professional plan - Unlimited creatives on every plan ### AI agent readiness - **MCP server:** no. - **API:** full API access on Enterprise, plus ad-network API connections as a €49/mo add-on. - **What an agent can do:** nothing directly. Work happens in the browser editor. ### Where it falls short Every plan is a yearly commitment, and Standard includes one user (extra users are €49/mo). Feed-based dynamic ads start on Professional and allow only one published feed-based ad. **Pricing:** Standard €299/mo, or €275/mo paid yearly. Professional €499/mo, or €459/mo paid yearly. Both need a yearly commitment. Seven-day free trial. --- ## 5. ImageKit Creative Automation: templates inside your DAM _Best for: teams that already store and deliver their images with ImageKit_ ![ImageKit Creative Automation page, design a banner template once and generate variations](https://orshot.com/blog/best-creative-automation-platforms/shot-imagekit.webp) [ImageKit](https://imagekit.io/creative-automation/ "target=_blank rel=nofollow") is an image CDN and DAM that added Creative Automation in late June 2026. You build a layered banner template inside the asset library, lock the brand layers, and let marketers change the rest. Each row of a CSV becomes a finished creative, and the output lands back in the same library with a CDN URL. For teams already on ImageKit, it removes a whole export-upload step. ### What it does - Locks chosen layers so only approved fields can change - Turns CSV rows into banner, social, catalog and promo variants - AI Assist translates copy and writes CTA and A/B variants - Stores every output in the DAM with delivery URLs ### AI agent readiness - **MCP server:** yes, three official servers (DAM, Admin and DevTools) - **What an agent can do:** search and manage the media library and build resize and crop URLs. None of the tools touch Creative Automation templates yet. - **Sign-in:** OAuth - **Works in:** Claude, Cursor, VS Code, Windsurf and Codex - **API:** no documented API for generating creatives ### Where it falls short Template layers are limited to canvas, image and text. There's no video or PDF output, and the docs note the feature "may not be enabled on every account." **Pricing:** included on all ImageKit plans. Free and Lite ($9/mo) have limited exports; Pro is $89/mo with unlimited exports. --- ## 6. Imejis: a small, cheap image API _Best for: developers who need template images from an API on a small budget_ ![Imejis image generation API page, one call in and a finished image out](https://orshot.com/blog/best-creative-automation-platforms/shot-imejis.webp) [Imejis](https://www.imejis.io "target=_blank rel=nofollow") is a small template image API, credited on its site to a solo maker. You design in a drag-and-drop editor, mark fields as editable, then POST JSON and get the image back in the same response. It's one of the cheapest paid plans on this list, and it adds specialty endpoints for charts, KPI cards and tables that most template tools don't have. ### What it does - Returns PNG, JPEG, WebP or a single-page PDF synchronously, no webhooks needed - Chart, KPI card, table and heatmap endpoints for data visuals - Endpoints in the US, EU, Singapore and Australia - Zapier, Make, n8n, Airtable, Google Sheets, Webflow and WordPress ### AI agent readiness - **MCP server:** yes, official, at `https://api.imejis.io/api/mcp`, on every plan including free - **What an agent can do:** create and edit designs, start from a template, preview, and export a PNG, JPEG, WebP or single-page PDF. It can't resize, publish or read results. - **Sign-in:** OAuth - **Works in:** Claude, ChatGPT and Cursor - **API:** `POST render.imejis.io/v1/{templateId}` on every plan ### Where it falls short Images only: no video, and PDFs are single-page. It's a very small company, which matters if you're building something that needs a long support runway. **Pricing:** free for 100 renders a month. Basic is $14.99/mo for 1,000, Pro $24.99/mo for 10,000, Unlimited $69.99/mo for 100,000. --- ## 7. Superscale: an AI agent that runs your paid ads _Best for: performance marketers who want research, creative and launch handled by an agent_ ![Superscale homepage, marketing built by AI and judged by profit](https://orshot.com/blog/best-creative-automation-platforms/shot-superscale.webp) [Superscale](https://superscale.ai "target=_blank rel=nofollow") is a Berlin startup that raised a $5M pre-seed in June 2025. Give it a product URL and it researches competitors, writes copy, generates static ads and AI UGC videos, then publishes and iterates on Meta, Google and TikTok. It sits at the "agent" end of creative automation: you approve direction, and it handles production and testing. ### What it does - Builds a whole campaign from a product URL - Benchmarks competitor ads before generating - Static ads, AI UGC video, product demos and voiceover in 20+ languages - Flags weak creatives and pauses them through the Meta connection once you approve ### AI agent readiness - **MCP server:** yes, added as a Claude connector. The pricing page lists it on Advanced ($99/mo), while the docs say it starts on Pro ($199/mo), and one docs page still calls it "coming soon." - **What an agent can do:** generate copy, static ads and UGC video, resize to 9:16, 1:1 and 16:9, launch to Meta, TikTok, Instagram and Google Ads after approval, and read performance back. It can't edit a template you designed. - **Works in:** Claude - **API:** no public REST API found ### Where it falls short Ad-account connections start on the $199 Pro plan. Video uses credits quickly, every regeneration spends credits, and most video formats default to 15 seconds. **Pricing:** Advanced is $99/mo (8,000 credits, up to 250 generations), Pro $199/mo, Scale $399/mo, Enterprise from $799. Free credits and a 5-day trial. --- ## 8. Tempo: weekly Meta ads for Shopify stores _Best for: Shopify brands that advertise on Meta and want new ads every week_ ![Tempo homepage, an agentic growth engine for ecommerce brands](https://orshot.com/blog/best-creative-automation-platforms/shot-tempo.webp) [Tempo](https://withtempo.ai "target=_blank rel=nofollow") plugs into your Shopify store and Meta ad account. It learns from your catalog, reviews, competitors and ad performance, then puts a fresh batch of ads in an approval queue every week. You approve or reject, and it launches the approved ones. Its Shopify app went live in October 2024, so it's one of the newer names here. ### What it does - Plans and creates static ads, light-motion video and email hero images - Publishes approved ads straight to Meta - Pulls catalog and sales data from Shopify and connects to Klaviyo - Weekly review queue instead of one-off generation ### AI agent readiness - **MCP server:** no. - **API:** none. - **What an agent can do:** nothing directly. Tempo is itself the agent, working inside its own app. ### Where it falls short It only works for Shopify stores, and Meta is the only ad platform. The Shopify App Store listing has 3.6 stars from 6 reviews, including one about a charge after cancelling (later refunded) and another saying there was no way to cancel. **Pricing:** Starter $99/mo for 10 ads a week, Growth $250/mo for 30 ads plus 10 video ads a week, Scale on request. Seven-day trial. --- ## 9. Plainly: After Effects templates rendered from data _Best for: video teams that already design in After Effects_ ![Plainly homepage, create data-driven videos on autopilot from After Effects templates](https://orshot.com/blog/best-creative-automation-platforms/shot-plainly.webp) [Plainly](https://www.plainlyvideos.com "target=_blank rel=nofollow") renders After Effects projects in the cloud. You upload a template, it detects the editable layers, and every row of data becomes a new video. It's an official Adobe Video Technology Partner. In September 2026 it launched Plainly Flows, a request-form workflow so non-designers can order variants without touching the template. If you'd rather [skip After Effects entirely](https://orshot.com/blog/plainly-videos-alternative), Orshot's video templates are built in the browser instead. ### What it does - MP4 by default, plus MOV with alpha, ProRes and GIF - Scans projects and finds editable parameters automatically - Zapier, Airtable, Google Sheets, Excel, Typeform, Jotform and RSS triggers - Open-source After Effects plugin ### AI agent readiness - **MCP server:** yes, an official open-source package (`@plainly-videos/mcp-server`), free on every plan - **Tools:** 4, for listing templates, reading their parameters, rendering and checking render status - **What an agent can do:** render After Effects templates with new data. It can't edit templates, resize or publish. - **Sign-in:** API key, running locally on Node 18+ - **Works in:** Claude, Cursor, VS Code and other MCP clients that run local servers - **API:** REST on every plan ### Where it falls short Someone on the team needs After Effects skills, and reviewers mention a steep learning curve. Finished videos are kept only 24 hours on Starter. **Pricing:** Starter $69/mo ($48 annually) for 50 render minutes, Explorer $134/mo, Team $259/mo, Pro $649/mo. 14-day trial. --- ## 10. Smartly: creative automation tied to paid media _Best for: brands with large paid social budgets that want creative and buying in one tool_ ![Smartly homepage, Smartly powers better ads](https://orshot.com/blog/best-creative-automation-platforms/shot-smartly.webp) [Smartly](https://www.smartly.io "target=_blank rel=nofollow") is one of the two names on almost every creative automation list. It combines creative templates, media buying and measurement, and runs feed-driven variants across Meta, TikTok, Snap, Pinterest, Google Ads and DSPs like DV360 and The Trade Desk. In May 2026 it closed its acquisition of INCRMNTAL, an incrementality measurement company. ### What it does - Feed-driven image and video templates for catalog and social ads - Media buying and creative in the same platform - Programmatic through DV360, The Trade Desk and Yahoo ### AI agent readiness - **MCP server:** no. Search results for "Smartly MCP" point to Smartly.ai, a different company. - **API:** no public render API found. - **What an agent can do:** nothing directly. Its AI layer works inside the platform. ### Where it falls short There's no pricing page (smartly.io/pricing returns a 404). Third-party comparisons describe a fee tied to ad spend plus a monthly minimum, which rules out smaller budgets. **Pricing:** quote only. Vendr lists a median contract of $90,000 a year. --- ## 11. Celtra: enterprise HTML5 and rich media _Best for: large brands and media owners running rich media across many ad networks_ ![Celtra homepage, where creative becomes a performance system](https://orshot.com/blog/best-creative-automation-platforms/shot-celtra.webp) [Celtra](https://celtra.com "target=_blank rel=nofollow") is the other name every list includes. It covers ad production, rich media, dynamic product ads and ad serving across 100+ media platforms. Private equity firm STG has held a majority stake since 2021. ### What it does - Static, video and HTML5 output - Live banners that update from market data - Integrations with Figma, Adobe, DAMs and ad platforms ### AI agent readiness - **MCP server:** only an AdCP creative agent at `adcp-mcp.celtra.com/mcp`. Celtra co-develops AdCP, an ad-industry protocol built on MCP for agent-to-agent ad buying. - **API:** yes, with custom API integrations sold as an add-on. - **What an agent can do:** list creative formats and previews. It's built for ad-tech agents and can't use or render your own templates. ### Where it falls short No tiers and no trial. Reviewers mention cost for small teams and slow loading, and there's no native PDF output. **Pricing:** a "bespoke package" priced on team size, volume and ad impressions. Vendr lists a median contract of $54,500 a year. --- ## Which creative automation platforms work with AI agents? As of October 1, 2026, 5 of these 11 creative automation platforms run an official MCP server you can connect to Claude, ChatGPT or Cursor: Orshot, ImageKit, Imejis, Superscale and Plainly. Only Orshot covers all six jobs an agent needs for creative work. | Tool | MCP | Create | Design | Resize | Publish | Results | Brand | | :-- | :-: | :-: | :-: | :-: | :-: | :-: | :-: | | Orshot | Yes | Yes | Yes | Yes | Social | Yes | Yes | | Superscale | Yes | Yes | No | Yes | Ads | Yes | Yes | | Imejis | Yes | Yes | Yes | No | No | No | No | | Plainly | Yes | Yes | No | No | No | No | No | | ImageKit | Yes | No | No | Yes | No | No | DAM | | The Brief | No | No | No | No | No | No | No | | Bannerwise | No | No | No | No | No | No | No | | Rocketium | No | No | No | No | No | No | No | | Tempo | No | No | No | No | No | No | No | | Smartly | No | No | No | No | No | No | No | | Celtra | AdCP | No | No | No | No | No | No | "Create" means the agent can render or generate a finished asset. "Design" means it can build or change the template itself, not just fill in fields. "Results" means post or ad performance comes back to the agent, and "Brand" means it can use your saved brand assets. Each entry above has the details and the MCP URL. ### Pair it with an ads MCP Creative tools make the asset, and the ad platforms now have their own MCP servers to launch it. - **Meta Ads MCP:** official, run by Meta at `https://mcp.facebook.com/ads`. It can create campaigns, ad sets, creatives and ads, and new entities start paused so a person reviews them first. Access is still a gated beta on many ad accounts. - **Google Ads MCP:** official and open source ([googleads/google-ads-mcp](https://github.com/googleads/google-ads-mcp "target=_blank rel=nofollow")), but read-only. It's for reporting, not launching. Connect Orshot and the Meta Ads MCP to the same agent, and it can render the ad set from your template, then build the campaign and paused ads around it. Check how your setup handles image uploads first; the community Pipeboard server for Meta has an upload tool that takes an image URL. ## How to choose a creative automation platform The tools above fall into two groups, and most buying mistakes come from shopping in the wrong one. ![Diagram comparing ad suites, which are quote only and publish into ad platforms, with template plus API platforms, which have public pricing and return files from an API call](https://orshot.com/blog/best-creative-automation-platforms/diagram-two-kinds.webp) **Ad suites and managed services** (Smartly, Celtra, Rocketium) start with a demo and an annual contract, and publish straight into ad platforms. **Template, design and agent tools** (Orshot, Imejis, Plainly, Bannerwise, Superscale, Tempo) have a signup button and a public price. Then work through these: 1. **Where does the output go?** If it's only Meta and Google, Superscale or Smartly publish there for you, and Tempo covers Meta. If it's also emails, PDFs, product pages, social posts or your own app, you want files back from an API. 2. **Template or generation?** Templates (Orshot, Imejis, Plainly, ImageKit, Bannerwise) keep layouts exact. AI generation (Superscale, Tempo) gives more variety but less control over the final layout. 3. **What starts a render?** A product feed, a spreadsheet row, a CMS publish, an order. Check the tool can be triggered by it through an API, a webhook, or n8n, Make and Zapier. 4. **Which formats?** HTML5 points to The Brief, Bannerwise or Celtra. Most tools here make video, but only Orshot and Plainly offer a self-serve API that renders video from a template. Print PDF with CMYK points to Orshot. 5. **What does one asset cost?** Divide the plan price by what it includes. Superscale's Advanced plan is $99 for up to 250 AI generations, about 40 cents each. Plainly's Starter plan is $69 for 50 render minutes. 6. **Can an AI agent drive it?** If your team works in Claude, ChatGPT or Cursor, check for an official MCP server and what it actually exposes. Rendering alone is common; editing templates, publishing and reading results back are rare. 7. **Can you leave?** Annual contracts and ad-spend fees make switching hard. Monthly billing and templates you control keep your options open. Quality control belongs here too. If brand rules live in the template (locked fonts, colors, safe areas, text that shrinks to fit), each new asset doesn't need a full design review. If they don't, the platform just moves the bottleneck. ## Common questions **Q: What is a creative automation platform?** It's software that turns a design template plus data (a product feed, a spreadsheet row or an API call) into many on-brand assets: every size, language and product variant. Orshot does this through an API, so the same template can generate images, PDFs and video from n8n, Make, Zapier or your own code. **Q: Which creative automation platforms have an MCP server?** As of October 2026, Orshot, ImageKit, Imejis, Superscale and Plainly have official MCP servers. The Brief, Rocketium, Bannerwise, Tempo and Smartly don't, and Celtra only supports AdCP for ad-tech systems. Orshot's MCP server has 103 tools, so an agent can design templates, render images, PDFs and video, resize, use your brand kit, publish to social and read post analytics. **Q: Can Claude or ChatGPT create ads with a creative automation platform?** Yes, if the platform has an MCP server. Connect Orshot to Claude or ChatGPT over OAuth and you can ask for an ad in your brand style, get it rendered in every size, and publish it. Add Meta's official Ads MCP, where your ad account has access, and the same agent can build paused campaigns and ads around the creative for you to review. **Q: How much does a creative automation platform cost?** Enterprise suites like Smartly and Celtra are quote only, with Vendr medians between about $55,000 and $90,000 a year. Newer agent tools like Superscale and Tempo start at $99 a month. Orshot has a free plan with 100 credits a month and paid plans from $39 a month. **Q: What's the difference between AI ad generators and template-based creative automation?** AI generators like Superscale and Tempo invent new visuals each time, which gives variety but less control over layout. Template-based tools fill a fixed design with your data, so every output matches the brand exactly. Orshot is template-based, and it can also add AI-generated images or copy into specific fields at render time. **Q: What's the difference between creative automation and DCO?** Creative automation produces the variants: every size, product and language from a template. Dynamic creative optimization (DCO) decides which variant to show each viewer when the ad is served. Celtra and Smartly bundle both. Orshot handles the production side and returns files you can load into any ad platform or DCO tool. **Q: Can I use a creative automation platform with n8n, Make or Zapier?** Many enterprise tools don't offer these connectors. Orshot has nodes for n8n, Make and Zapier, plus Airtable and Google Sheets, so a new row or a webhook can generate the asset and pass the file URL to the next step. **Q: Do I need designers if I use creative automation?** You need design once, not every time. Someone builds the template and decides what can change. After that, the data fills it in. With Orshot you can start from a prompt, the editor, or a Canva or Figma import, and lock the brand elements so generated assets stay on-brand. **Q: What is Orshot?** Orshot is an API for automated image, PDF and video generation from templates. You design or import a template, then generate assets through the REST API, SDKs, n8n, Make, Zapier or an AI agent. There's a free plan with 100 credits a month. ## The bottom line If you spend heavily on paid media and want someone else to run production, Smartly, Celtra and Rocketium are built for that, at enterprise prices. If you want an agent to make and launch Meta ads for a store, Superscale and Tempo are the newer, cheaper route. If you want creative generated inside the workflows you already run, start with a template API. You can have a template rendering from n8n or a curl command on the day you sign up, and you'll know what each asset costs before you commit to anything. --- ### [11 Best Social Media Automation Tools for 2026](https://orshot.com/blog/social-media-automation-tools) > Looking for the best social media automation tools? Compare 11 platforms for automated social media posting, visual content generation, and scheduling — from free tools to enterprise solutions. You're running a brand, an eCommerce store, or a growing startup. You know you need to be on Instagram, X, LinkedIn, TikTok, Facebook, Pinterest — probably all of them. The problem isn't knowing what to post. It's the sheer volume of work: designing visuals, resizing for each platform, writing captions, scheduling, tracking what worked, and doing it all over again tomorrow. That's where [social media automation](https://orshot.com/solutions/ai-marketing-automation-for-agencies) comes in. Not just scheduling posts (every tool does that). The real bottleneck is **creating the content itself** — the banners, carousels, product shots, and promo graphics that actually get engagement. Then getting them published without opening six different tabs. After testing dozens of social media automation tools, here are 11 that actually save time in 2026 — starting with the one that handles both creation and posting. ### What Can You Automate on Social Media? - **Post scheduling** — Queue posts days or weeks in advance and publish at optimal times - **Cross-platform publishing** — Post to multiple social networks simultaneously - **Visual content generation** — Create branded graphics, banners, and carousels from templates [at scale](https://orshot.com/solutions/image-generation-api) - **Analytics and reporting** — Track engagement, reach, and follower growth automatically - **Social inbox management** — Centralize comments, DMs, and mentions from all platforms - **Content recycling** — Automatically reshare evergreen posts that performed well - **Chatbot responses** — Set up auto-replies for common questions and comments ### Benefits of Social Media Automation - **Save time** — Batch your content creation and scheduling instead of posting manually every day — for most teams that's hours back every week. - **Stay consistent** — Automation ensures your accounts are active even during weekends, holidays, or busy periods. - **Post at peak times** — Tools analyze when your audience is most active and schedule posts automatically for maximum reach. - **Scale your output** — Go from posting once a day to multiple times across platforms without adding headcount. - **Make data-driven decisions** — Built-in analytics show what's working so you can double down on high-performing content. - **Maintain brand consistency** — Templates and approval workflows keep every post on-brand across all channels. | Tool | Category | Best For | | :------------------------------------------------------------------------ | :------------------------------- | :----------------------------------------------------------------- | | [**Orshot**](#1-orshot--automate-visual-creation--social-posting) | Visual Creation + Social Posting | Generating marketing visuals at scale and posting to 15+ platforms | | [**Buffer**](#2-buffer--simple-social-media-scheduling) | Scheduling | Clean, no-fuss scheduling across platforms | | [**Hootsuite**](#3-hootsuite--enterprise-social-media-management) | Social Management | Large teams managing multiple brand accounts | | [**Later**](#4-later--visual-first-social-media-scheduler) | Visual Scheduling | Instagram-focused visual content planning | | [**Sprout Social**](#5-sprout-social--social-media-analytics--engagement) | Analytics + Engagement | Brands that need detailed reporting and social listening | | [**SocialBee**](#6-socialbee--content-category-based-scheduling) | Category Scheduling | Recycling evergreen content automatically | | [**Publer**](#7-publer--bulk-scheduling-and-automation) | Bulk Automation | Scheduling hundreds of posts via CSV upload | | [**Pallyy**](#8-pallyy--affordable-social-media-scheduler) | Budget Scheduling | Small businesses and creators on a budget | | [**Loomly**](#9-loomly--collaborative-social-media-calendar) | Team Collaboration | Teams with approval workflows for social content | | [**Sendible**](#10-sendible--agency-focused-social-media-tool) | Agency Management | Agencies managing multiple client accounts | | [**Metricool**](#11-metricool--social-media-analytics-and-scheduling) | Analytics + Scheduling | Data-driven marketers who want scheduling plus deep analytics | | [**HubSpot**](#bonus-hubspot--omnichannel-social-media-management) | Omnichannel Marketing | Large teams running social inside one marketing ecosystem | --- ## 1. Orshot — Automate Visual Creation + Social Posting ![Orshot social media automation](https://orshot.com/blog/social-media-automation-tools/orshot.webp) **Best for:** Generating on-brand marketing visuals at scale and publishing them to 15+ social platforms — all in one workflow Here's the thing most social media automation tools get wrong: they assume you already have your content ready. They'll schedule your posts, sure. But who's creating the 15 different banner sizes, the product promo graphics, the quote cards, and the carousel slides? That's the actual time sink. [Orshot](https://orshot.com/solutions/ai-marketing-automation-for-agencies) solves both problems. Design your templates once in Orshot Studio, then generate hundreds of variations automatically by swapping in different data — product names, prices, images, headlines, whatever changes. Then publish those renders directly to your social accounts. No exporting, no uploading, no switching tools. ### How It Works for Social Media Automation 1. **Design once** — Build a template in [Orshot Studio](https://orshot.com/studio) (or let the [Design Agent](https://orshot.com/blog/introducing-design-agent) create one from a text prompt). Set dynamic parameters for anything that changes between posts. 2. **Generate at scale** — Feed in your data via spreadsheet, [REST API](https://orshot.com/solutions/image-generation-api), or no-code tools like Make and n8n. Orshot renders every variation instantly. 3. **Publish everywhere** — Use [Orshot Publish](https://orshot.com/blog/introducing-orshot-publish) to post directly to 15+ platforms. Publish now, schedule for later, or save as draft. 100 credits a month, no card needed. Design, generate and post from one place. [Try Orshot free](https://orshot.com/pricing?via=blog-smat-orshot) ### Supported Platforms for Automated Social Media Posting Orshot Publish connects to **15 platforms** out of the box: Twitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, Pinterest, Reddit, Bluesky, Threads, Telegram, Snapchat, Discord, WhatsApp, and Google Business. Connect your accounts ($12/mo per account, unlimited posts), generate a render, and it goes straight to your audience. No Buffer subscription on top. No Zapier glue. Just one tool. ### Automate the Full Pipeline via API If you're already generating visuals programmatically, you can publish them in the same API call: ```javascript await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer YOUR_API_KEY", }, body: JSON.stringify({ templateId: "your-template-id", modifications: { productName: "Summer Collection 2026", price: "$49.99", productImage: "https://your-cdn.com/product.jpg", }, response: { type: "url", format: "png" }, publish: { accounts: [1, 2], // your connected account ids content: "New drop 🔥 Summer Collection is here. Shop now →", schedule: { scheduledFor: "2026-08-15T10:00:00Z" }, }, }), }); ``` One API call. Generates the visual, schedules it across every account you listed. That's automated social media posting done right — the [publish API docs](https://orshot.com/docs/publish/publish-from-api) cover drafts, per-platform settings, and carousels. - **Visual Template Editor**: Design social media graphics with a drag-and-drop editor. Set dynamic parameters for text, images, colors, and sizing. - **Bulk Visual Generation**: Generate hundreds of on-brand social media graphics from a single template — via spreadsheet, API, or no-code integrations. - **Built-in Social Publishing**: Post to 15+ platforms directly from Orshot. Schedule, draft, or publish instantly — no third-party scheduler required. - **Platform-Aware Publishing**: One publish action posts to every selected account, with per-platform settings (first comment, board, visibility) handled per network. - **API-First Automation**: Generate and publish visuals in a single API call. Build end-to-end social media automation pipelines. - **Multi-Format Output**: Export as PNG, JPG, PDF, MP4, WebM, or GIF — optimized for every social platform. Video outputs support per-layer animations for professional motion graphics. - Create and publish social media visuals from a single platform — no tool juggling - Generate hundreds of design variations from one template automatically - Post to 15+ social platforms with scheduling, drafts, and per-platform settings - API-first: build fully automated social media posting pipelines - 100% brand consistency across every visual and every platform **Pricing:** 100 free credits a month, no credit card required. Paid plans from $39/mo; connecting a social account is a flat $12/mo per account with unlimited posts. --- ## 2. Buffer — Simple Social Media Scheduling ![Buffer social media scheduling](https://orshot.com/blog/social-media-automation-tools/buffer.webp) **Best for:** Solo creators and small teams who want clean, straightforward social scheduling [Buffer](https://buffer.com/ "target=_blank nofollow") has been around since the early days of social media automation, and it's stayed relevant by keeping things simple. You queue up your posts, set a schedule, and Buffer sends them out to Instagram, X, LinkedIn, Facebook, Pinterest, and TikTok. The AI assistant helps with caption ideas, and the analytics dashboard shows you what's performing. No steep learning curve, no feature bloat. If you already have your visuals ready and just need to schedule them, Buffer gets the job done. **Where it falls short:** Buffer is a scheduler, not a content creation tool. You still need to design every graphic somewhere else before uploading it. If you're producing visual content at scale, that's a separate workflow entirely. Here's our full [Buffer alternative breakdown](https://orshot.com/blog/buffer-alternative) if that's the wall you're hitting. - Extremely clean and simple interface - AI assistant for caption suggestions - Supports all major social platforms - Generous free plan for up to 3 channels **Pricing:** Free for 3 channels. Paid plans from $5/mo per channel (Essentials). --- ## 3. Hootsuite — Enterprise Social Media Management ![Hootsuite social media management](https://orshot.com/blog/social-media-automation-tools/hootsuite.webp) **Best for:** Large teams and enterprises managing multiple brand accounts across social platforms [Hootsuite](https://www.hootsuite.com/ "target=_blank nofollow") is the heavyweight of social media management tools. It handles scheduling, monitoring, social listening, team collaboration, and reporting — all from one dashboard. If you're an enterprise managing 20+ social accounts across multiple brands, Hootsuite has the infrastructure for it. The OwlyWriter AI generates captions and content ideas, and the social listening tools track brand mentions, competitor activity, and trending topics in real time. It's powerful, but it's also complex and expensive. **Where it falls short:** Overkill for small teams. The pricing starts high and ramps up quickly. And like Buffer, it doesn't create your visuals — you bring those yourself. - Comprehensive social media management for large teams - Social listening and brand monitoring built in - Advanced analytics and custom reporting - Handles dozens of accounts across platforms **Pricing:** From $99/mo (Standard plan); Professional is $199/mo. Enterprise pricing on request. --- ## 4. Later — Visual-First Social Media Scheduler ![Later social media scheduler](https://orshot.com/blog/social-media-automation-tools/later.webp) **Best for:** Instagram-first brands and creators who plan content visually [Later](https://later.com/ "target=_blank nofollow") is built around a visual calendar — you drag and drop your images onto the schedule and see exactly how your Instagram grid will look before anything goes live. It supports other platforms too (TikTok, Facebook, LinkedIn, Pinterest, X), but Instagram is its home turf. The Linkin.bio feature creates a mini landing page from your Instagram posts, turning your feed into a shoppable storefront. For brands and creators where Instagram is the primary channel, Later's visual-first approach makes planning way more intuitive than spreadsheet-style schedulers. - Visual drag-and-drop calendar with Instagram grid preview - Linkin.bio for shoppable Instagram feeds - Best-time-to-post suggestions based on your audience - Supports all major platforms beyond Instagram **Pricing:** No free plan — 14-day trial. Paid plans from $18.75/mo billed yearly ($25 month-to-month). --- ## 5. Sprout Social — Social Media Analytics + Engagement ![Sprout Social analytics](https://orshot.com/blog/social-media-automation-tools/sprout-social.webp) **Best for:** Brands that prioritize social listening, analytics, and customer engagement alongside scheduling [Sprout Social](https://sproutsocial.com/ "target=_blank nofollow") goes deeper on the analytics and engagement side than most social media automation tools. The Smart Inbox unifies all your messages, comments, and mentions across platforms into one stream. The reporting is thorough — competitor analysis, sentiment tracking, audience demographics, and custom report builders. If your social media strategy is data-driven and you need to prove ROI to stakeholders, Sprout Social gives you the data to back it up. The scheduling and publishing features are solid, but the real value is in the insights and engagement tools. - Unified Smart Inbox for all social engagement - Deep analytics with competitor benchmarking - Social listening and sentiment analysis - Professional reporting for stakeholder presentations **Pricing:** From $79/seat/mo billed annually ($99 monthly) on Essentials; Standard is $199. 30-day free trial available. --- ## 6. SocialBee — Content Category-Based Scheduling ![SocialBee content scheduling](https://orshot.com/blog/social-media-automation-tools/socialbee.webp) **Best for:** Marketers who want to recycle evergreen content and maintain a balanced content mix [SocialBee](https://socialbee.com/ "target=_blank nofollow") takes a different approach to automated social media posting. Instead of scheduling individual posts, you organize content into categories — promotional posts, educational content, testimonials, behind-the-scenes, etc. Then SocialBee rotates through them automatically, maintaining the content mix you set. The evergreen recycling feature is the standout: your best-performing posts get reshared automatically so they don't just disappear after one publish. For anyone struggling to keep their feed active consistently, this category-based system takes the guesswork out of what to post next. - Category-based posting for a balanced content mix - Evergreen content recycling — set and forget - AI content generation for captions and hashtags - Canva integration for quick visual edits **Pricing:** From $29/mo. 14-day free trial. **Still making every graphic by hand?** — Every scheduler on this list assumes the content already exists. Orshot generates it from a template and posts it — 100 free credits a month to try. [Start free](https://orshot.com/pricing?via=blog-smat-mid) --- ## 7. Publer — Bulk Scheduling and Automation ![Publer bulk social scheduling](https://orshot.com/blog/social-media-automation-tools/publer.webp) **Best for:** Marketers who need to schedule hundreds of posts at once via bulk upload [Publer](https://publer.io/ "target=_blank nofollow") is built for volume. If you have a month's worth of social content sitting in a spreadsheet and want to schedule it all in one go, Publer's bulk scheduling via CSV upload handles it cleanly. You can also set up recurring posts, auto-schedule based on best times, and use the browser extension to share content as you browse. The watermark feature is handy for agencies — auto-add brand watermarks to visuals before they're posted. And the workspace system keeps multiple brands organized without switching between accounts. - Bulk schedule via CSV for high-volume posting - Recurring posts and auto-scheduling - Built-in link shortening and UTM tracking - Multi-workspace support for managing multiple brands **Pricing:** Free plan for 3 accounts. Paid plans start around $5/mo per account. --- ## 8. Pallyy — Affordable Social Media Scheduler ![Pallyy social media scheduler](https://orshot.com/blog/social-media-automation-tools/pallyy.webp) **Best for:** Small businesses and solo creators who want premium scheduling features at a fraction of the cost [Pallyy](https://pallyy.com/ "target=_blank nofollow") offers most of what the expensive tools do — visual calendar, Instagram grid preview, auto-posting, analytics, bio link page — but at a price that doesn't hurt. If you're a creator or small business that doesn't need enterprise-grade social listening or team workflows, Pallyy covers the essentials without the bloated pricing. The interface is clean and modern, and it supports Instagram, Facebook, X, LinkedIn, TikTok, Pinterest, and Google Business. For budget-conscious social media automation, it's hard to beat the value. - Very affordable for what you get - Visual planning calendar with grid preview - Bio link page builder included - Supports all major social platforms **Pricing:** Free plan for 1 social set (15 posts/mo). Starter from $15/mo; Pro at $25/mo is unlimited posts on 1 set, +$10/mo per extra set. --- ## 9. Loomly — Collaborative Social Media Calendar ![Loomly social media calendar](https://orshot.com/blog/social-media-automation-tools/loomly.webp) **Best for:** Marketing teams that need approval workflows and structured collaboration for social content [Loomly](https://www.loomly.com/ "target=_blank nofollow") is designed around team workflows. Every post goes through a structured flow — idea, draft, pending approval, scheduled, published. Managers can review, comment, and approve before anything goes live. Post ideas and trending topic suggestions keep your calendar full. If you have multiple people touching social content and need guardrails so nothing goes out without sign-off, Loomly's approval system is one of the best. It also includes basic asset management, so your team's images and brand files live alongside the content calendar. - Built-in approval workflows with comments and review - Post idea suggestions based on trends and events - Asset library for team brand files - Clean calendar view with status tracking **Pricing:** From $65/mo month-to-month ($49/mo billed yearly), includes 3 users. --- ## 10. Sendible — Agency-Focused Social Media Tool ![Sendible agency social media tool](https://orshot.com/blog/social-media-automation-tools/sendible.webp) **Best for:** Agencies managing social media for multiple clients from a single dashboard [Sendible](https://www.sendible.com/ "target=_blank nofollow") is built specifically for agencies. Each client gets their own dashboard with custom branding, separate reporting, and dedicated content queues. The bulk import, content suggestions, and a unified inbox for client engagement make managing 10+ clients more manageable than juggling separate logins. The reporting is presentation-ready — automated reports go out to clients on a schedule, so you're not manually pulling data every month. If you're an agency doing social media management at scale, Sendible's multi-client architecture saves a lot of administrative overhead. - White-label dashboards for each client - Automated reporting sent directly to clients - Unified inbox for managing all client engagement - Content suggestion engine for filling gaps in the calendar **Pricing:** 14-day free trial; pricing is gated behind signup (third-party sources commonly quote around $29/mo). --- ## 11. Metricool — Social Media Analytics and Scheduling ![Metricool social media analytics](https://orshot.com/blog/social-media-automation-tools/metricool.webp) **Best for:** Data-driven marketers who want scheduling, analytics, and competitor tracking in one tool [Metricool](https://metricool.com/ "target=_blank nofollow") combines scheduling with surprisingly deep analytics. Beyond the standard engagement metrics, it tracks competitor performance, hashtag analytics, and best posting times for your specific audience. The SmartLinks feature (similar to Later's Linkin.bio) gives you a link-in-bio page with analytics baked in. What sets Metricool apart is the ad analytics — it pulls in performance data from your Google Ads and Meta Ads alongside your organic social metrics. If you're running both paid and organic social, having everything in one dashboard saves a lot of tab-switching. - Combined organic and paid social analytics - Competitor tracking and benchmarking - SmartLinks for link-in-bio with built-in analytics - Very generous free plan for individuals **Pricing:** Free plan for 1 brand (20 posts/mo). Paid from around $18/mo. --- ## Bonus: HubSpot — Omnichannel Social Media Management ![HubSpot Social Media Management](https://orshot.com/blog/social-media-automation-tools/hubspot.webp) **Best for:** Large teams and full-stack marketing agencies managing strategies across multiple marketing touchpoints [HubSpot](https://www.hubspot.com/products/marketing/social-inbox "target=_blank") Social Media Management is part of HubSpot's omnichannel marketing solution, Marketing Hub. That means you get social media tools plus automation features that span email, ad networks, websites, and more, all within the same tool suite. On the social side, HubSpot includes an AI toolset that helps with content generation and editing, recommends ideal posting times, content types and formats based on your existing social performance, and suggests replies for incoming messages. **Where it falls short:** You can't use the social media tool on its own. It requires a Marketing Hub Professional or Enterprise subscription. - Full omnichannel marketing automation solution - Social inbox management with CRM built in - Social listening for all popular networks + Reddit - Revenue attribution reports **Pricing:** $800/mo with 3 users (Marketing Hub Professional); $3,600/mo with 5 users (Marketing Hub Enterprise). --- ## Free Social Media Automation Tools for Content Creators (2026) If you're a content creator testing the waters — or you just don't have budget yet — several of the tools above have genuinely usable free tiers. Here's exactly what each free plan includes, verified against the vendors' pricing pages in July 2026: | Tool | Free plan | The catch | | :------------ | :----------------------------------------------------------------- | :---------------------------------------------------- | | **Buffer** | 3 channels, 10 scheduled posts per channel | Fine for one brand; multi-brand needs paid | | **Metricool** | 1 brand, 20 posts/month, analytics included | Post cap arrives fast if you post daily | | **Pallyy** | 1 social set, 15 posts/month | One set = one group of connected accounts | | **Publer** | 3 accounts | Bulk CSV scheduling is paid | | **Postiz** | Open source and self-hostable — free forever, 30+ platforms | You run the server; cloud plans start at $29/mo | | **Orshot** | 100 credits a month, full design studio + API, no card | Credits refill monthly; publishing accounts are paid | Two things worth knowing before you pick a free plan. First, **Later no longer has one** — it's a 14-day trial now, despite what most 2025-era listicles still say. Second, if you want a fully **open source social media automation** setup, Postiz is the one to look at: self-host it and the scheduling side costs nothing, then pair it with whatever creates your content. The free-plan trap for content creators is that every one of these caps the *scheduling*, but none of them help with the part that actually eats your week — making the graphics. That's the workflow Orshot's free tier covers: generate the visuals from a template, then post them wherever your scheduler (or ours) lives. ## What to Look For in Social Media Automation Software Not all automation software is built the same. Here's what actually matters when choosing a platform for automating social media: ### Multi-Platform Support Make sure the tool supports every platform you're active on — Instagram, Facebook, X, LinkedIn, TikTok, YouTube, Pinterest, and emerging networks like Threads and Bluesky. Managing everything from one dashboard is the whole point. **Tools that support this:** [Orshot](#1-orshot--automate-visual-creation--social-posting) (15+ platforms), [Hootsuite](#3-hootsuite--enterprise-social-media-management), [Buffer](#2-buffer--simple-social-media-scheduling), [Later](#4-later--visual-first-social-media-scheduler), [Sprout Social](#5-sprout-social--social-media-analytics--engagement), [Metricool](#11-metricool--social-media-analytics-and-scheduling) ### Content Creation, Not Just Scheduling Most tools handle scheduling well. The differentiator is whether the tool helps you **create** the content too. Look for built-in design tools, template systems, or AI-powered content generation that reduces the time between idea and published post. If creation is the bottleneck, our roundup of [tools to automate content creation](https://orshot.com/blog/automated-content-creation-tools) goes deeper. AI generators like Predis.ai sit at the other extreme — they write and design the post for you, but you give up control of the layout and end up hand-fixing every batch. Our [Predis.ai alternative breakdown](https://orshot.com/blog/predis-ai-alternative) covers that trade-off. **Tools that support this:** [Orshot](#1-orshot--automate-visual-creation--social-posting) (template-based visual generation + API), [SocialBee](#6-socialbee--content-category-based-scheduling) (AI captions + Canva integration), [Buffer](#2-buffer--simple-social-media-scheduling) (AI assistant), [Hootsuite](#3-hootsuite--enterprise-social-media-management) (OwlyWriter AI) ### Analytics and Reporting You need to know what's working. Look for engagement metrics, best-time-to-post suggestions, competitor benchmarking, and exportable reports you can share with clients or stakeholders. **Tools that support this:** [Sprout Social](#5-sprout-social--social-media-analytics--engagement), [Hootsuite](#3-hootsuite--enterprise-social-media-management), [Metricool](#11-metricool--social-media-analytics-and-scheduling), [Sendible](#10-sendible--agency-focused-social-media-tool), [Later](#4-later--visual-first-social-media-scheduler), [HubSpot](#bonus-hubspot--omnichannel-social-media-management) ### Team Collaboration and Approvals If multiple people touch your social content, you need approval workflows, role-based permissions, and shared content calendars. This prevents off-brand posts from going live and keeps everyone aligned. **Tools that support this:** [Loomly](#9-loomly--collaborative-social-media-calendar), [Sprout Social](#5-sprout-social--social-media-analytics--engagement), [Hootsuite](#3-hootsuite--enterprise-social-media-management), [Sendible](#10-sendible--agency-focused-social-media-tool), [Publer](#7-publer--bulk-scheduling-and-automation) ### API and Integration Support For advanced automation, check whether the tool offers a REST API, webhook support, or integrations with tools you already use — CRMs, eCommerce platforms, no-code tools like Make and Zapier, or custom internal systems. **Tools that support this:** [Orshot](#1-orshot--automate-visual-creation--social-posting) (REST API + Make/n8n integrations), [Hootsuite](#3-hootsuite--enterprise-social-media-management), [Sprout Social](#5-sprout-social--social-media-analytics--engagement), [Buffer](#2-buffer--simple-social-media-scheduling) --- ## The Real Problem with Most Social Media Automation Tools Here's what none of the scheduling tools on this list solve: **creating the visuals**. Every social media automation platform assumes you show up with finished graphics. But the actual bottleneck for most teams isn't scheduling — it's producing the content in the first place. You need: - Product banners resized for Instagram, Facebook, LinkedIn, and Pinterest - Quote graphics for X and Threads - Promo carousels for Instagram and TikTok - Event announcements across every channel - Seasonal campaign creatives — new versions every week Doing this manually in Canva or Figma doesn't scale. Hiring a designer for every variation gets expensive fast. And generic AI image generators produce outputs that don't match your brand. That's exactly why [Orshot](https://orshot.com/) combines **design automation** with **social publishing**. Instead of using one tool to create visuals and another to schedule them, the entire pipeline runs in one place: 1. Design a template once 2. Generate hundreds of variations from your data 3. Publish directly to 15+ platforms No exporting. No uploading. No separate scheduler subscription — accounts connect inside Orshot at a flat $12/month each, unlimited posts. **If your biggest social media problem is producing enough on-brand content** — not just scheduling what you already have — that's the pipeline Orshot was built for. **Automate the content, not just the calendar** — Design a template once, generate every variation from your data, and post to 15+ platforms. 100 free credits a month, no card. [Start free](https://orshot.com/pricing?via=blog-smat-bottom) --- **Q: What is the best social media automation tool?** The best platform for automating social media depends on your specific needs. For teams that need both visual content creation and social posting in one place, Orshot is the most complete solution — it generates on-brand marketing visuals at scale and publishes them to 15+ platforms. For pure scheduling, Buffer is the simplest option. For enterprise teams needing analytics and social listening, Sprout Social or Hootsuite are strong choices. **Q: How do I automate my social media?** Start by choosing an automation tool that supports your platforms. Then: (1) create or upload your content, (2) schedule posts for optimal times using the tool's recommendations, (3) set up cross-platform publishing so one post goes to multiple networks, and (4) use analytics to track what's working. For fully automated pipelines, tools like Orshot let you generate visuals from templates via API and publish them — all in a single step. **Q: Can I post to all social media platforms at once?** Yes. Most social media automation tools support cross-platform publishing: you write one post and the tool publishes it to all selected networks simultaneously, applying each platform's settings. Orshot supports 15+ platforms including Instagram, Facebook, X, LinkedIn, TikTok, YouTube, Pinterest, Reddit, Threads, Bluesky, Telegram, Snapchat, Discord, WhatsApp, and Google Business. **Q: What's the difference between social media automation and social media management?** Social media management is the broader discipline — strategy, content creation, community management, reporting, and advertising. Social media automation is a subset focused on using tools to handle repetitive tasks like scheduling posts, recycling evergreen content, generating reports, and auto-responding to common messages. Automation handles the execution so you can focus on strategy. **Q: Are social media automation tools worth it?** Yes, if you're posting on more than one platform or publishing more than a few times per week. Scheduling alone gives most teams hours back every week. Tools that also handle content creation — like generating visual variations from templates — multiply those savings significantly. Even free-tier plans from tools like Buffer, Pallyy, and Metricool provide enough value to justify the setup. **Q: Is there a free social media automation tool?** Several tools offer free plans: Buffer (3 channels), Pallyy (1 social set, 15 posts/mo), Metricool (1 brand, 20 posts/mo), and Publer (3 accounts). Postiz is open source, so self-hosting it is free. Later discontinued its free plan — it's a 14-day trial now. Orshot offers 100 free credits a month with no card required, so you can generate and publish visuals before committing to a paid plan. Generate the visuals, post to 15+ platforms. 100 credits a month, no card. [Try Orshot free](https://orshot.com/pricing?via=blog-smat-footer) --- ### [12 Best AI Marketing Platforms in 2026 (Tested by Use Case)](https://orshot.com/blog/best-ai-marketing-platforms) > The lesser-known AI marketing tools I actually use, like Clay, Firecrawl and Orshot, wired to Claude into one marketing automation brain I've lost whole afternoons to the question every marketer eventually asks: _which AI marketing platform is actually worth it?_ On Reddit it shows up the same way every time. Someone lists Ocoya, SocialBee, Hootsuite, Bannerbear, AdCreative, then asks, _"they all do parts, but not all, am I wrong?"_ Another marketer posts: _"I have 35 social media post topics and I want to create 220 designs from those in different formats."_ Two real problems hide in those threads: - **Tool fragmentation.** Every tool does a slice, and nothing does the whole job. - **The volume bottleneck.** Turning ideas into on-brand assets at scale is still mostly manual. Most "best AI marketing tools" lists don't help here, because they all name the same ten tools (ChatGPT, Jasper, Surfer, Canva) and skip the part that actually moves the needle: **connecting those tools so they run without you.** So I built this list differently. ## How I picked these Four rules: - **Useful right now in 2026.** No dead tools, no "AI" sticker on a 2019 product. - **Has an API or an MCP server,** so it can be automated and wired into an AI agent, not just clicked. - **Lesser-known where it earns it.** Fewer ChatGPT clones, more tools you'll be glad someone told you about. - **A real credibility signal:** funding, usage, or ratings. No vaporware. One disclosure up front: **Orshot is my product,** and I build it. That's exactly why it sits at #2 and not #1, and why I'll be straight about where it fits and where it doesn't. Honest framing matters more than the ranking. The thread running through the whole list is **MCP**, the Model Context Protocol. It's the open standard that lets [Claude](https://claude.com "target=_blank rel=nofollow") connect to a tool, read its data, and act on it. Nine of these twelve expose an MCP server, which is what turns a pile of point tools into something that behaves like one platform. For just the MCP side, here are the [best MCP servers for marketing](https://orshot.com/blog/best-mcp-servers-for-marketing). ## The 12 at a glance | Tool | What it does | MCP | Free tier | | :-- | :-: | :-: | :-: | | [Claude](#t-claude) | Orchestrator / reasoning | Yes | Yes | | [Orshot](#t-orshot) | Image, PDF & video automation | Yes | Yes | | [Peec AI](#t-peec) | AI-search (GEO) visibility | Yes | No | | [Clay](#t-clay) | Lead data enrichment | Yes | Yes | | [AirOps](#t-airops) | AI content & SEO workflows | Yes | Yes | | [Firecrawl](#t-firecrawl) | Web data for AI | Yes | Yes | | [Blotato](#t-blotato) | Social & video automation | Yes | Yes | | [Autosend](#t-autosend) | Email + lifecycle automation | Yes | No | | [PostHog](#t-posthog) | Product & marketing analytics | Yes | Yes | | [Creatify](#t-creatify) | AI video ad creative | Community | Yes | | [Common Room](#t-commonroom) | Buyer-signal intelligence | Yes | No | | [Gumloop](#t-gumloop) | No-code AI workflows | Yes | Yes | --- ## 1. Claude: the orchestrator that runs the rest [Link ↗](https://claude.com "target=_blank rel=nofollow") ![Claude homepage by Anthropic](https://orshot.com/blog/best-ai-marketing-platforms/shot-claude-app.webp) Most lists treat Claude as "an AI writing assistant." That undersells it badly. The reason Claude is #1 is **MCP**. Connect it to your tools and it stops being a chatbot and starts being the brain of your stack. It reads your real data and acts on it. A few things I actually do with it: - _"Why did signups dip last week?"_ → it queries my **PostHog** analytics over MCP, pulls the keywords that lost rank in **Ahrefs**, and writes the brief. - _"Draft the launch announcement and the three ad headlines"_ → done, in my voice. - _"Render the launch creative in five sizes"_ → it hands that job to Orshot (more on that next). Not just that, you can use it via the Claude Desktop app, as well as Claude Code in the CLI, which is my favourite. That's the shift: one tool that _decides_, plugged into many tools that _do_. - MCP client that connects to almost every tool on this list - Genuinely strong reasoning and long-form writing - Claude Code automates multi-step marketing workflows - Reads live data (analytics, SEO, CRM) and acts on it Cons: - It's the brain, not the hands, so it needs other tools to ship assets - Wiring up MCP servers has a small learning curve - Best results come from clear, well-specified prompts - **Agentic reasoning**: Extended thinking for multi-step tasks and research - **MCP client**: Connects out to PostHog, Ahrefs, Orshot, and hundreds more - **Claude Code**: Agentic, automatable workflows from the terminal - **Web search + memory**: Pulls current data and remembers context across chats - **Code execution & files**: Runs code and creates documents inline **MCP role:** Claude is the MCP _client_. It connects out to other tools' servers, so there's no URL to plug in; you add connectors inside Claude or Claude Code. **Best for:** Anyone who wants one AI to plan, analyze, and trigger the rest of their stack instead of bouncing between ten dashboards. **Entry price:** Free; Pro $20/mo. --- ## 2. Orshot: the visual layer most lists skip Almost every "AI + visuals" pick out there means _generating_ a picture (Midjourney, DALL·E, [Canva](https://orshot.com/blog/free-canva-alternatives "target=_blank")). None of them solve the _"35 topics → 220 designs"_ problem from that Reddit thread: turning content into hundreds of on-brand, format-correct assets, automatically. That's exactly what Orshot does. You design once, then render every variation through an API, or let Claude do it for you over MCP. This is one ad template, rendered into three sizes in a single call. No redesign, no re-spend: ![Coaching ad designed in Orshot, rendered as a 1080x1080 square Instagram post](https://orshot.com/blog/best-ai-marketing-platforms/orshot-ad-square.webp) ![The same ad template auto-resized to a 1080x1920 Instagram Story via Orshot Smart Resize](https://orshot.com/blog/best-ai-marketing-platforms/orshot-ad-story.webp) ![The same ad template auto-resized to a 1200x630 Open Graph image via Orshot Smart Resize](https://orshot.com/blog/best-ai-marketing-platforms/orshot-ad-og.webp) Swap the headline and product, and that's your next campaign: image, PDF, or video, from the same design. The AI Template Generator even builds the starting template from a prompt, and you can turn a [Figma file into an API endpoint](https://orshot.com/solutions/figma-automation-via-rest-api "target=_blank") if you've already designed it. Built it in Canva instead? You can [bring a Canva template in via API](https://orshot.com/solutions/canva-template-to-api "target=_blank") too. The Claude connection is the fun part: connect [Orshot's MCP server](https://orshot.com/agents "target=_blank") and you can tell Claude _"render the spring sale ad in five sizes and drop them in our bucket"_, and it does, on a webhook or a schedule, no clicks. - Design once, render thousands of on-brand variants via API - One design → every size automatically (Smart Resize) - Image, PDF, and video from a single template - Connects to Claude (MCP), Zapier, Make, and n8n - Free tier with no credit card Cons: - Not a generative idea tool; you bring the design direction - Built for teams who value brand control over one-click magic - Most powerful once you're automating, not for a single one-off graphic - **AI Template Generator**: Describe a design and get an editable, on-brand template - **Design Agent**: AI builds and edits designs for you in Studio - **Smart Resize**: One design deterministically re-laid-out to any canvas - **Multi-format output**: PNG, PDF, MP4, WebM, GIF from the same template - **MCP + API + automation nodes**: Wire it into Claude, Zapier, Make, or n8n **MCP server:** `https://mcp.orshot.com/mcp` **Best for:** Marketing and content teams who already know their look and need on-brand creative produced at scale, automatically. It's the design layer Claude can drive, the [graphic design tool](https://orshot.com/blog/ai-tools-for-graphic-design-with-mcp) to scale your marketing on autopilot. **Workflow:** A row lands in Airtable → Claude (or n8n) calls Orshot → the on-brand ad renders in every size → it's posted. No designer in the loop. [**See Orshot pricing →**](https://orshot.com/pricing "target=_blank"). 100 free credits every month, no card. --- ## 3. Peec AI: get your brand cited inside ChatGPT and Perplexity [Link ↗](https://peec.ai "target=_blank rel=nofollow") ![Peec AI homepage, AI search visibility tracking](https://orshot.com/blog/best-ai-marketing-platforms/shot-peec.webp) This is the "oh, I hadn't heard of that" pick, and the category (**GEO**, generative engine optimization) is the fastest-moving one in marketing right now. Your buyers increasingly ask ChatGPT, Perplexity, and Gemini for recommendations. Peec AI tracks whether _your_ brand shows up in those answers, who's beating you, and which sources the models cite. - Tracks brand share-of-voice across ChatGPT, Perplexity, Gemini - Shows which sources LLMs cite so you can earn placements - The affordable alternative to enterprise GEO tools Cons: - No public free tier; it's a paid product - GEO is new; you're measuring a moving target **MCP server:** `https://api.peec.ai/mcp` **Best for:** Teams who want to start ranking in AI answers before their competitors notice the channel exists. **Workflow:** Have Claude pull your weekly Peec share-of-voice over MCP and draft the content brief to close the biggest citation gap. **Entry price:** Paid plans only (no public free tier). --- ## 4. Clay: the enrichment brain for outbound [Link ↗](https://www.clay.com "target=_blank rel=nofollow") ![Clay homepage, GTM data enrichment](https://orshot.com/blog/best-ai-marketing-platforms/shot-clay.webp) Clay is getting well-known now ($3.1B valuation will do that), but the way it pairs with Claude still feels like a secret. It takes a thin list of leads and enriches it through 150+ data providers, then runs AI research agents ("Claygent") to answer questions a human SDR would have to dig for. - Waterfall enrichment across 150+ providers in one row - Claygent AI agents research accounts automatically - Natural-language search across 50M+ companies Cons: - Genuinely powerful means a real learning curve - Costs add up fast once you scale enrichment credits **MCP server:** Official, via the Claude connector directory (note: `mcp.clay.earth` is a _different_ company, so don't use it). **Best for:** B2B teams whose outbound lives or dies on data quality. **Workflow:** Claude reads an enriched Clay table over MCP and writes a personalized first line per account, with no copy-paste between tools. **Entry price:** Free plan (500 actions/mo); paid from $167/mo. --- ## 5. AirOps: AI content and SEO workflows that actually ship [Link ↗](https://www.airops.com "target=_blank rel=nofollow") ![AirOps homepage, AI content and SEO workflows](https://orshot.com/blog/best-ai-marketing-platforms/shot-airops.webp) AirOps is the one content-ops tool I found with a real, native MCP server, which is why it's here over the usual Surfer/Jasper picks. It chains LLMs, your data, and SEO steps into repeatable workflows: think "research → outline → draft → optimize → publish," running as a grid instead of a chat. - Multi-step AI content + SEO workflows, not one-off prompts - Tracks visibility across ChatGPT, Perplexity, Gemini (AEO) - RAG over your own knowledge base for on-brand output Cons: - Overkill if you just need a single blog draft - Most valuable for teams publishing at volume **MCP server:** `https://app.airops.com/mcp` **Best for:** Content and SEO teams scaling [automated content creation](https://orshot.com/blog/automated-content-creation-tools "target=_blank") without losing brand voice. **Workflow:** Trigger an AirOps content workflow from Claude, then route the finished post's social cards to Orshot for the visuals. **Entry price:** Free "Insights" tier (1,000 tasks). --- ## 6. Firecrawl: clean web data your AI can actually read [Link ↗](https://www.firecrawl.dev "target=_blank rel=nofollow") ![Firecrawl homepage, web scraping API for AI](https://orshot.com/blog/best-ai-marketing-platforms/shot-firecrawl.webp) Firecrawl is infrastructure, but it sits under a huge amount of marketing AI. It turns any URL or whole site into clean, LLM-ready markdown. Why a marketer cares: it's how you feed Claude real competitor pages, pricing tables, or research, without copy-pasting messy HTML. - Any site → clean markdown or structured JSON - Full-site crawl with depth and filters - 43k+ GitHub stars; powers tools you already use Cons: - It's a building block, not a finished marketing app - Credit tiers shift, so check current pricing **MCP server:** `https://mcp.firecrawl.dev/v2/mcp` **Best for:** Anyone using Claude for competitor research, content repurposing, or programmatic SEO. **Workflow:** Ask _"Scrape these 10 competitor pricing pages and summarize how we compare."_ Claude calls Firecrawl over MCP, and you read the answer instead of the HTML. **Entry price:** Free (1,000 credits/mo). --- ## 7. Blotato: the auto-publish layer for short-form [Link ↗](https://www.blotato.com "target=_blank rel=nofollow") ![Blotato homepage, social and video automation](https://orshot.com/blog/best-ai-marketing-platforms/shot-blotato.webp) Blotato is the hidden "publish" endpoint of the faceless-video and short-form scene. It generates posts and pushes them to 9+ platforms. It pairs naturally with Orshot: **render the creative in Orshot, publish it through Blotato.** That combination solves the fragmentation complaint by wiring design and distribution together. - Auto-publish to 9+ social platforms - AI post generation trained on 1M+ viral posts - Repurposes one video into tweets, carousels, blogs Cons: - Newer and smaller than the big schedulers - AI-generated copy still needs a human pass **MCP server:** `https://mcp.blotato.com/mcp` **Best for:** Solo marketers and creators running high-volume social without a full social team. **Workflow:** Orshot renders the carousel → Blotato schedules it across [tweet-to-Instagram](https://orshot.com/blog/automate-tweet-to-instagram "target=_blank") style cross-posting → Claude writes the captions. **Entry price:** $29/mo (7-day trial). --- ## 8. Autosend: email marketing an AI agent can run [Link ↗](https://autosend.com "target=_blank rel=nofollow") ![Autosend homepage, email marketing automation](https://orshot.com/blog/best-ai-marketing-platforms/shot-autosend.webp) This is the one I actually use for Orshot's email, so call my bias upfront. It still belongs here. Autosend handles transactional _and_ marketing email, and it's built to be driven by an AI agent. Here's the part that makes it click in a Claude-centred stack: its **MCP server lets you create email templates and even send test emails** straight from a prompt. You draft, preview, and QA a whole campaign in plain language before a single real send goes out, which makes it genuinely good for handling email marketing end to end. - MCP lets Claude create templates and send test emails - Transactional + marketing email in one tool - Markdown templates with variables and conditional logic - Indie-friendly, volume-based pricing Cons: - Newer and leaner than the big ESPs - Lighter on drag-and-drop visual campaign building **MCP server:** `https://mcp.autosend.com` **Best for:** Teams who want email marketing (templates, test sends, and campaigns) handled end-to-end by an AI agent. **Workflow:** Claude drafts a re-engagement campaign, generates the header in Orshot, then builds the template and fires a test email in Autosend, and only sends for real once I approve it. **Entry price:** Hobby from $1/mo (3,000 transactional emails); $5/mo adds marketing + 1,000 contacts. --- ## 9. PostHog: the analytics Claude reads to make decisions [Link ↗](https://posthog.com "target=_blank rel=nofollow") ![PostHog homepage, product and marketing analytics](https://orshot.com/blog/best-ai-marketing-platforms/shot-posthog.webp) I'll be transparent: we use PostHog ourselves. It belongs here anyway, because of the MCP server. Claude can query your product and marketing data in plain English. This is what closes the loop with #1: Claude doesn't guess what's working, it _asks your data_. - Natural-language analytics over your real data (MCP) - Product analytics, session replay, and flags in one - Genuinely generous free tier Cons: - Broad surface area can feel like a lot at first - Marketing attribution isn't its primary focus **MCP server:** `https://mcp.posthog.com/mcp` **Best for:** Builder-led teams who want analytics an AI can actually interrogate. **Workflow:** Ask _"Which landing page converts best this month, and why?"_ Claude queries PostHog over MCP and writes the takeaway. **Entry price:** Free tier (1M events/mo, no card). --- ## 10. Creatify: AI video ads from a product URL [Link ↗](https://creatify.ai "target=_blank rel=nofollow") ![Creatify homepage, AI video ad creative](https://orshot.com/blog/best-ai-marketing-platforms/shot-creatify.webp) The ad-creative category is wide open for automation, and Creatify is the strongest pick in it. Drop in a product link and it returns a ready UGC-style video ad. This is also where I keep my promise to be honest about MCP: Creatify's is **community-built**, not official. Useful, but don't treat it as first-party. - URL → finished video ad - 800+ AI avatars, plus cloning - Batch up to 50 ad variations Cons: - MCP is community-built, not official - AI avatars still read as AI to some audiences **MCP server:** `npx -y creatify-mcp` (community-built) **Best for:** Performance marketers who need a constant stream of video ad variations to test. **Workflow:** Creatify generates the video hooks; Orshot renders the matching static and Story versions so every format is covered. **Entry price:** Free (10 watermarked credits/mo); paid from ~$33/mo. --- ## 11. Common Room: know who's ready to buy [Link ↗](https://www.commonroom.io "target=_blank rel=nofollow") ![Common Room homepage, buyer-signal intelligence](https://orshot.com/blog/best-ai-marketing-platforms/shot-commonroom.webp) Common Room is the lesser-known pick for the "signals" category. It captures buying signals from 50+ sources and enriches them, so you act on intent instead of cold lists. - Buyer-signal intelligence across 50+ sources - Query your buyer data via AI assistants (MCP) - Differentiated 'signals + enrichment' angle Cons: - Enterprise-priced, with no free tier - Overkill for very small teams **MCP server:** `https://mcp.commonroom.io/mcp` **Best for:** Revenue teams who want to reach accounts at the moment they show intent. **Workflow:** Claude pulls fresh buying signals from Common Room and drafts the right outreach for each account. **Entry price:** Enterprise (no free tier). --- ## 12. Gumloop: the no-code glue for the whole stack [Link ↗](https://www.gumloop.com "target=_blank rel=nofollow") ![Gumloop homepage, no-code AI workflows](https://orshot.com/blog/best-ai-marketing-platforms/shot-gumloop.webp) Gumloop is where you wire the rest together without writing code. It's a node-based canvas to chain LLMs, scrapers, and tools, with a meta-agent ("Gummie") that builds the workflow from a prompt. If Claude is the brain and the others are the hands, Gumloop is the nervous system for the no-code crowd. - No-code canvas to chain AI, data, and tools - Pick the model per node (Claude, GPT, Gemini) - 'Gummie' builds workflows from a description Cons: - Its MCP URL is per-account (not a public endpoint) - Power-user features take time to master **MCP server:** Per-account URL from your dashboard (not public). **Best for:** Teams who want automation power without living in code. **Workflow:** A Gumloop flow watches a form, enriches the lead in Clay, generates the welcome graphic in Orshot, and emails it via Autosend. **Entry price:** Free (5,000 credits); Pro from $37/mo. --- ## How they fit together Notice the pattern: this isn't twelve separate subscriptions you babysit. It's a **stack with a brain.** - **Claude** decides and orchestrates. - **Orshot** produces the visuals. - The other ten feed it data, content, distribution, and signals, most over the same MCP standard. That's the answer to the Reddit complaint that started this post. You don't find one tool that "does it all." You wire best-of-breed tools together so they behave like one, and Claude is what makes that practical in 2026. If you run this for clients, it's the backbone of [AI marketing automation](https://orshot.com/solutions/ai-marketing-automation-for-agencies "target=_blank"), with one operator driving many accounts. With the right tools, and a brain that connects them and automates the busywork, you can scale in pretty much any marketing vertical. ## Common questions **Q: What is an AI marketing platform, really?** In 2026 it's less a single all-in-one app and more an orchestration layer. The most capable setup is an AI like Claude that connects to specialized tools (analytics, SEO, creative, email) over MCP, and runs workflows across them. That beats any single suite that tries to do everything at a mediocre level. **Q: What is MCP and why does it matter here?** MCP (the Model Context Protocol) is an open standard that lets an AI assistant connect to an external tool, read its data, and take actions. It's why Claude can pull your PostHog analytics, scrape with Firecrawl, or render in Orshot from a single prompt. Nine of the twelve tools on this list expose an MCP server. **Q: Why is Orshot ranked #2 and not #1?** Because I build Orshot, and putting your own product first reads as exactly what it is. Claude is genuinely the better #1, since it's the orchestrator the rest plug into. Orshot is the visual-automation arm it drives, and that's the slot most 'AI marketing' lists leave empty. **Q: Do I need all twelve?** No. Start with Claude plus the two or three tools that match your biggest bottleneck: creative (Orshot), analytics (PostHog), or data (Clay/Firecrawl). The point is wiring a few great tools together, not collecting subscriptions. **Q: How does Orshot fit a Claude-centred stack?** Connect Orshot's MCP server and Claude can render on-brand images, PDFs, and video on command, with one design resized to every format, triggered by a webhook, a schedule, or a sentence. It's the design layer that turns 'we have 35 topics' into 220 finished assets without a designer in the loop. ## Bottom line The best AI marketing platform in 2026 isn't a single app. It's **Claude orchestrating a handful of sharp, MCP-connectable tools.** Pick your brain (Claude), wire in the tools that fix your worst bottleneck, and let them run. If that bottleneck is visual creative, the one almost every list ignores, that's the exact job Orshot was built for. [**Get started with Orshot →**](https://orshot.com/pricing "target=_blank"). 100 free credits every month, no credit card. --- ### [8 Best Image Generation APIs Compared](https://orshot.com/blog/template-based-image-generation-tools) > A side-by-side comparison of 8 image generation APIs for template automation. Compare pricing, video support and embeddable editors to pick the right one. If you need to generate images programmatically — social graphics, certificates, product banners, OG images — you need an [image automation API](https://orshot.com/solutions/image-generation-api) built for template automation. Not an AI art generator. Not Midjourney. A system where you design a template once, then call an API with dynamic data and get a pixel-perfect image back every time. I've used most of these tools while building [Orshot](https://orshot.com), and I've talked to enough teams making the switch to know what actually matters: editor quality, per-image pricing, integration options, and whether the thing works reliably at scale. **TL;DR** — No single best image API. Pick what matters most and I'll point you to the right one: - **Images, PDFs and video in one plan**: [Orshot](#2-orshot) — $39/mo for 1,500 credits, and one credit pool covers images, PDF pages and video seconds from the same template. Embeddable editor, social publishing and an MCP server included. - **Ad creatives in many sizes**: [Abyssale](#1-abyssale) — A multi-format editor built for adapting one campaign across many ad sizes. The $15/mo Start plan is for in-app generation; API access starts on Pro at $45/mo ($36/mo billed annually). - **Switching from Bannerbear**: [Orshot](https://orshot.com/migrate/from-bannerbear) — A step-by-step migration guide moves your templates and API calls over. 1,500 credits for $39/mo, against Bannerbear's 1,000 renders for $49/mo. - **Video is the primary output**: [Creatomate](#5-creatomate) — Video-first with a timeline editor; images are the secondary format. Pick it when most of what you render is MP4. - **HTML/CSS template control**: [RenderForm](#6-renderform) — Visual and HTML/CSS template editors, plus a free API tier for 50 watermarked renders. No video generation. Pricing changes often, so confirm each vendor's current plan before you commit. 100 credits a month, no card needed. [Try Orshot free](https://orshot.com/pricing?via=blog-image-api-tools-top) Here are the 8 best image generation APIs for template automation worth considering. ## Quick Comparison | Tool | API Price | Included Usage | Video | Multi-page | Embed Editor | Social Publish | AI | MCP | | :-- | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | | [Abyssale](#1-abyssale) | $45/mo | 450 credits | MP4/GIF | Yes | No | No | Yes | No | | [Orshot](#2-orshot) | $39/mo | 1,500 credits | MP4/WebM/GIF | Yes | Yes | 15+ platforms | Yes | Yes | | [Bannerbear](#3-bannerbear) | $49/mo | 1,000 | Basic | No | No | No | No | No | | [Placid](#4-placid) | $19/mo | 500 | Yes | No | Yes | No | No | Yes | | [Creatomate](#5-creatomate) | $54/mo | 2,000 credits | Primary | No | No | No | No | No | | [RenderForm](#6-renderform) | $9/mo | 250 credits | Yes | No | No | No | Yes | No | | [DynaPictures](#7-dynapictures) | ~$29/mo | 250 | Yes | Yes | No | No | No | No | | [Contentdrips](#8-contentdrips) | $35/mo | 6,000 API calls | No | Carousels | Yes | LinkedIn, IG | Yes | No | **1,500 credits for $39, covering images, PDFs and video** — Test it against your own volume before you move anything. [Start free](https://orshot.com/pricing?via=blog-image-api-tools-comparison) ## 1. Abyssale ![Abyssale website screenshot](https://orshot.com/blog/image-api-tools/abyssale-screenshot.webp) [Abyssale](https://www.abyssale.com/ "target=_blank nofollow") focuses on ad creative automation — generating hundreds of banner variations across sizes and formats for paid campaigns. Their dynamic layout engine automatically adapts content to different aspect ratios, which is genuinely useful when you're running campaigns across Google, Meta, and display networks simultaneously. Abyssale's focus is multi-size generation: you design one base creative and it outputs every format you need. They also support video output (MP4, GIF, HTML5) and multi-page documents for print. The in-app Start plan costs $15/mo for 150 credits ($12/mo billed annually), while API and no-code automation require Pro at $45/mo for 450 credits ($36/mo billed annually). Their AI ("Abyssale Intelligence") auto-adapts designs to different formats. The platform is built for ad creative teams, and that focus shows in both the features and the limitations. No embeddable editor, no social publishing, no MCP server. Abyssale is built around "design one banner, output 20 sizes." For general-purpose template automation beyond ad creatives, you'll need something more flexible. **Pricing:** API access from $45/mo for 450 credits ($36/mo billed annually). The app-only Start plan is $15/mo for 150 credits ($12/mo annually). 14-day free trial with 30 credits, no card required. No permanent free tier. **Best for:** Performance marketing teams generating ad creatives across multiple sizes and platforms. [Read the full Abyssale comparison →](https://orshot.com/blog/abyssale-api-alternative) ## 2. Orshot ![Orshot website screenshot](https://orshot.com/blog/image-api-tools/orshot-screenshot.webp) Orshot is a template-based image, PDF and video generation API that pairs a visual editor (Orshot Studio) with a REST API. It's what I built after hitting limitations with the other tools on this list, so take this section with a grain of salt. Orshot is $39/month for 1,500 credits as of August 2026, roughly $0.026 per image. One credit is one image, one PDF page, or one second of video, all from the same pool. No separate video plan, no per-format add-on. The free tier is 100 credits a month with every feature unlocked, no card needed. - **Image, PDF and video from one template** — PNG, JPG, WebP, PDF, MP4, WebM and GIF, all covered by the same credit pool. - **Multi-page templates** — carousels and multi-page PDFs, with configurable margins, DPI and color modes. - **[Embeddable editor](https://orshot.com/features/orshot-embed)** — white-label Studio via React and Vue SDKs, so your users design inside your product on your domain. - **[Social publishing](https://orshot.com/features/social-publishing)** — post to 15+ platforms including Instagram, X, LinkedIn, TikTok and YouTube, so generate and publish happen in one workflow. - **[Social analytics](https://orshot.com/features/social-analytics)** — engagement and follower metrics per account and per post, and the best time to post, in the same place the content is made. - **[Built for AI agents](https://orshot.com/agents)** — a hosted MCP server that works with Claude, Cursor, ChatGPT and 30+ other agent clients, so an agent can render from your templates directly. An AI Design Agent generates new templates from a text prompt. - **No-code automation** — Make, Zapier, n8n, and Dynamic URLs that generate an image from a plain URL with query parameters and no API call at all. - **Template imports** — bring existing designs from [Canva](https://orshot.com/solutions/canva-template-to-api) and [Figma](https://orshot.com/solutions/figma-automation-via-rest-api) rather than rebuilding them by hand. A render is one POST: send a `templateId` plus your `modifications`, and get back a hosted URL to the image. Here's what that looks like for the images people generate most: A branded social post, rendered at 2x and published to Instagram and LinkedIn in the same call. The `publish` object takes the IDs of your connected accounts and a caption. ```bash curl -X POST https://api.orshot.com/v1/studio/render \ -H "Authorization: Bearer $ORSHOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "templateId": "", "modifications": { "headline": "Summer Sale: 30% off everything", "image": "https://example.com/products/summer-hero.jpg", "logo": "https://example.com/brand/logo.png" }, "response": { "type": "url", "format": "png", "scale": 2 }, "publish": { "accounts": [101, 102], "content": "Summer Sale is live: 30% off everything this week." } }' # 101 = your Instagram account ID, 102 = your LinkedIn account ID # (find them with GET /v1/social/accounts) ``` A multi-page template renders every slide in one call. Prefix a field with its page number to fill that slide, and `includePages` renders only the slides you need. ```js const res = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${process.env.ORSHOT_API_KEY}`, }, body: JSON.stringify({ templateId: "", modifications: { "page1@title": "5 myths about cold brew", "page2@headline": "Myth: it has more caffeine", "page2@text": "It depends on the ratio, not the method.", "page3@headline": "Myth: it has to steep for 24 hours", "page3@text": "12 to 18 hours is plenty for most beans.", }, response: { type: "url", format: "png", includePages: [1, 2, 3] }, }), }); const { data } = await res.json(); console.log(data.content); // one image URL per slide ``` Render the same design for the feed, a square post and a story in one call. `extraSizes` adds each size beside your main render. ```js const res = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${process.env.ORSHOT_API_KEY}`, }, body: JSON.stringify({ templateId: "", modifications: { headline: "New drop this Friday", cta: "Shop now" }, response: { type: "url", format: "png", size: "1080x1350", extraSizes: { square: "1080x1080", story: "1080x1920" }, }, }), }); const { data } = await res.json(); console.log(data.content, data.extraSizes); // feed image + square + story ``` Change colors and fonts per render, not just text. Add a style property after the field name, like `headline.color`, to restyle that layer for each brand or client. ```python import os, requests res = requests.post( "https://api.orshot.com/v1/studio/render", headers={"Authorization": f"Bearer {os.environ['ORSHOT_API_KEY']}"}, json={ "templateId": "", "modifications": { "headline": "Ship small, ship often", "headline.color": "#e11d48", "headline.fontFamily": "Inter", "cta.backgroundColor": "#0f172a", }, "response": {"type": "url", "format": "png"}, }, ) image_url = res.json()["data"]["content"] ``` An Open Graph image for every blog post or product page, at the standard 1200x630. JPEG keeps the file small for fast link previews. ```bash curl -X POST https://api.orshot.com/v1/studio/render \ -H "Authorization: Bearer $ORSHOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "templateId": "", "modifications": { "title": "How we cut our image costs in half", "author": "Dana Whitfield" }, "response": { "type": "url", "format": "jpeg", "size": "1200x630" } }' ``` See more request examples on the [image generation API](https://orshot.com/solutions/image-generation-api) page. **Pricing:** $39/mo for 1,500 credits (1 credit = 1 image, 1 PDF page, or 1 video second), verified August 2026. Free tier with 100 credits a month, all features unlocked. **Best for:** Teams that need multi-format output (images, PDFs, videos) and integrations beyond just the REST API. **Build your first template in about two minutes** — 100 free credits a month, no card. Bring a Canva or Figma design, or start blank. [Open Studio](https://orshot.com/pricing?via=blog-image-api-tools-orshot) ## 3. Bannerbear ![Bannerbear website screenshot](https://orshot.com/blog/image-api-tools/bannerbear-screenshot.webp) [Bannerbear](https://www.bannerbear.com/ "target=_blank nofollow") has been around since 2019. You design templates in their editor, expose dynamic fields, then hit the API to generate images with your data. The editor is functional but feels dated compared to newer tools. Where Bannerbear shows its age is pricing: $49/month gets you 1,000 renders, which gets expensive at volume. No multi-page templates, no video beyond basic overlays, no embeddable editor. Some users on Indie Hackers have noted it can feel "overkill" for single use cases like certificates when you're paying for features you don't use, [[ref]](https://www.indiehackers.com/post/whats-your-review-of-bannerbear-d34c397757 "target=\_blank nofollow") ↗ If you're starting fresh, compare per-render cost first: $49/month buys 1,000 renders on Bannerbear, while $39/month on Orshot covers 1,500 credits across images, PDFs and video. **Pricing:** $49/mo for 1,000 renders. One-time trial with 30 API credits, no card required. **Best for:** Teams with an existing Bannerbear setup that isn't ready to move yet. [Read the full Bannerbear comparison →](https://orshot.com/blog/bannerbear-api-alternative) ## 4. Placid ![Placid website screenshot](https://orshot.com/blog/image-api-tools/placid-screenshot.webp) [Placid](https://placid.app/ "target=_blank nofollow") has a clean visual editor with good template defaults and a Figma import. It connects to Zapier, Make and Airtable. Placid is particularly popular for automating OG images and WordPress social graphics. The trade-off is pricing. $19/month sounds cheap until you realize that only gets you 500 credits. They've added video automation and an embeddable Editor SDK for white-labeling, plus an MCP server for AI agent integration. No multi-page templates though. Placid fits low-volume teams who mostly make OG images and social cards. Do the math on credits before committing. **Pricing:** From $19/mo for 500 credits. Free trial, no permanent free tier. **Best for:** Marketing teams generating low-to-medium volume visuals who want a polished design experience. [Read the full Placid comparison →](https://orshot.com/blog/placid-api-alternative) ## 5. Creatomate ![Creatomate website screenshot](https://orshot.com/blog/image-api-tools/creatomate-screenshot.webp) [Creatomate](https://creatomate.com/ "target=_blank nofollow") is built video-first, with a timeline editor for motion design and keyframing. It also generates images and PDFs, so it's not video-only. The learning curve is steeper for simple image templates. Pricing uses a credit system ($54/mo for 2,000 credits) where video renders cost more credits than images, so your effective cost depends heavily on your output mix. Creatomate fits teams where most renders are video. If you mostly render images, you're paying for a timeline editor you won't use. For [video from the same templates](https://orshot.com/solutions/video-generation-api) as your images, Orshot bills 1 credit per second of video. For the full picture, see [video generation APIs compared](https://orshot.com/blog/ai-video-generation-api). **Pricing:** From $54/mo for 2,000 credits. Full-featured trial with 50 API credits, no card required. **Best for:** Teams whose primary need is automated video generation, with images as secondary output. [Read the full Creatomate comparison →](https://orshot.com/blog/creatomate-api-alternative) ## 6. RenderForm ![RenderForm website screenshot](https://orshot.com/blog/image-api-tools/renderform-screenshot.webp) [RenderForm](https://renderform.io/ "target=_blank nofollow") offers both a visual editor and HTML/CSS templates, giving developers more control over output than purely visual editors. The API is straightforward, and they have a decent free tier to test with. Over 500 bundled fonts is a nice touch. The visual editor is basic, fine for simple layouts but not where you'd design anything complex. The HTML/CSS option is the real draw for developer teams who want pixel-perfect control without fighting a WYSIWYG editor. Worth noting: images generated on the free tier include a watermark, and render URLs expire after a set period on lower plans. **Pricing:** Free plan with 50 watermarked credits, paid from $9/mo for 250 credits. **Best for:** Developer teams comfortable with HTML/CSS who want a hybrid visual + code approach to template creation. [Read the full RenderForm comparison →](https://orshot.com/blog/renderform-api-alternative) ## 7. DynaPictures ![DynaPictures website screenshot](https://orshot.com/blog/image-api-tools/dynapictures-screenshot.webp) [DynaPictures](https://dynapictures.com/ "target=_blank nofollow") is the simplest tool on this list. The value prop is straightforward: create a template, connect your data, generate images. It integrates with HubSpot, Mailchimp, and marketing automation platforms that the developer-focused tools often ignore. DynaPictures claims batch generation speeds of 200-300 milliseconds per image, [[ref]](https://dynapictures.com/blog/10-top-bannerbear-alternatives/ "target=\_blank nofollow") ↗ The editor is basic, and they support multi-page templates and PDF output, useful for LinkedIn carousels and batch documents. If you're a marketing team that needs personalized email banners or social graphics from CRM data, DynaPictures connects to your stack without requiring a developer to set up the API integration. Not the most feature-rich, but does one thing well and keeps it simple. **Pricing:** From about $29/mo for 250 renders (listed in INR on its site). 14-day free trial. **Best for:** Marketing teams using HubSpot or Mailchimp who need personalized visuals without touching code. [Read the full DynaPictures comparison →](https://orshot.com/blog/dynapictures-api-alternative) ## 8. Contentdrips ![Contentdrips website screenshot](https://orshot.com/blog/image-api-tools/contentdrips-screenshot.webp) [Contentdrips](https://contentdrips.com/ "target=_blank nofollow") started as a social media content tool and added an API later. The templates are specifically designed for LinkedIn, Twitter/X, and Instagram — carousels, quote cards, thread screenshots. It also has built-in scheduling and publishing to LinkedIn and Instagram, which most image generation APIs don't offer. They've added AI-powered design (generates carousels from prompts, matches your writing style) and a white-label Embed API for platforms that want to offer design tools to their users. The limitation is flexibility — the editor is opinionated about layout and styling, which makes it fast for social content but limiting for anything else. No certificate templates, no product banners, no general-purpose image automation. Good for social-first teams. Not a general-purpose image generation API. **Pricing:** REST API from $35/mo on the Pro plan. The separate Contentdrips app starts at $15/mo; the API has a 10-call free tier. **Best for:** Content creators and social media managers who need quick, branded social graphics without design work. [Read the full Contentdrips comparison →](https://orshot.com/blog/contentdrips-api-alternative) --- ## When to Use What - **You need the cheapest API entry point** → RenderForm (50 free watermarked renders; paid credits from $9) - **You need breadth at the price** → Orshot ($39/mo for 1,500 credits covering images, PDFs, and video) - **Video is your primary output** → Creatomate - **You mostly make OG images and social cards at low volume** → Placid - **You're moving off Bannerbear** → Orshot, with a [step-by-step migration guide](https://orshot.com/migrate/from-bannerbear) - **You want HTML/CSS template control** → RenderForm - **You're in HubSpot/Mailchimp and need personalized banners** → DynaPictures - **You only make social content** → Orshot or Contentdrips - **You need images, PDFs, videos, carousels and social publishing from one tool** → [Orshot](https://orshot.com/pricing) **Not sure yet? Run your real templates through it** — 100 free credits a month is enough to rebuild a template and compare the output. [Start free](https://orshot.com/pricing?via=blog-image-api-tools-decision) **Q: What is the best image API for automation?** For automation you want a template-based image API: design the layout once, then send data and get a finished image back every time. Look for a visual editor your team can edit without code, SDKs for your language, no-code connectors (Zapier, Make, n8n), and output in the formats you need. Orshot covers all of these and renders images, PDFs and video from the same template on one credit pool, starting with 100 free credits every month. **Q: What is an image generation API for template automation?** It's an API that creates images by filling a template with your data. You design a template once with dynamic fields (text, images, colors), then call the API with different values to get a new image each time. Teams use it for social graphics, certificates, product banners, OG images and any visual they need at scale without manual design work. **Q: What software is best for dynamic image generation?** Dynamic images, where the text, photos or colors change per customer or per record, are what template APIs are built for. With Orshot you mark any layer as dynamic in the Studio editor, then change it through the API, a spreadsheet, Zapier, Make or n8n, or a Dynamic URL that renders an image from query parameters with no API call at all. **Q: How do I generate an image from a template with an API?** Design the template, mark the fields that change, then send one POST request with the template ID and your values. With Orshot that's a call to /v1/studio/render with a templateId, a modifications object like { "headline": "Summer Sale" } and the format you want (PNG, JPG, WebP, PDF or MP4). The response is a hosted URL to the finished image. **Q: Which image generation API should I use for my app?** For a production app, check four things: SDKs for your stack, predictable pricing at your volume, async rendering with webhooks for long jobs, and whether non-developers can edit templates without a deploy. Orshot has SDKs for Node, Python, Ruby and PHP, sync and async rendering, webhooks, and multiple output sizes in a single call. **Q: Is there a free image generation API?** Orshot's free plan gives 100 credits every month, with the editor and API included, and no credit card. Most template image APIs instead offer a one-time trial or watermarked free renders, so check whether the free credits renew before you build on them. **Q: Can one API generate images, PDFs and video?** Yes. Orshot renders PNG, JPG, WebP, PDF, MP4, WebM and GIF from the same template, and every format draws from one credit pool: one credit per image, per PDF page or per second of video. That means one integration and one bill instead of separate image, document and video tools. **Q: Is there an image API with an embeddable, white-label editor?** Orshot Embed puts the Studio editor inside your own product, on your domain, with your branding. Your users design or edit templates in your app, and you render them through the same API, which suits SaaS platforms, agencies and B2B2C products. **Q: Can I generate social media graphics and publish them automatically?** Yes. Orshot generates the graphic and can publish it to 15+ platforms, including Instagram, X, LinkedIn, TikTok and YouTube, in the same workflow. Pair it with a data source like Google Sheets, Airtable or a CRM, and a new row becomes a published post without anyone opening a design tool. **Q: Can I import my existing Canva or Figma templates?** Yes. Orshot imports Canva designs and Figma frames as editable templates, so you don't rebuild them by hand. The Canva migration guide at orshot.com/migrate/from-canva walks through it step by step. **Q: How is a template image API different from AI image generators?** Template APIs give you the same layout, fonts and colors every time, with only your data changing, which keeps visuals on brand at scale. AI image generators create a new picture from a text prompt, so results vary and are hard to keep on brand. Use a template API for recurring branded visuals and an AI generator for one-off illustrations. **Q: What about self-hosting or open-source alternatives?** Puppeteer or Playwright can render HTML and CSS to images with a headless browser, and Satori (by Vercel) turns JSX into images with a subset of CSS. They're free, but you own the servers, scaling and font handling. A hosted API trades a monthly fee for no infrastructure to run. --- ### [A 2x cheaper Bannerbear Alternative with 10x more features](https://orshot.com/blog/bannerbear-api-alternative) > Switch from Bannerbear to Orshot. Save up to 50% on image generation. Multi-page Videos, PDFs, Canva/Figma import, native workflows. 100 free credits a month. Bannerbear more or less created this category — automated image generation via API — and it's still a solid product. If you're on it today, though, you've probably noticed the pricing adds up fast, and there are features you keep wishing it had. I built Orshot because I ran into these exact limitations. Started as a side project, turned into something that actual teams use daily. Same core idea as Bannerbear (turn templates into API endpoints), but with the stuff I wish Bannerbear had. 100 credits a month, no card needed. [Try Orshot free](https://orshot.com/pricing?via=blog-bannerbear-top) ![Orshot Studio: layers panel, canvas, styles sidebar, and a video timeline, with Automate, Publish and Smart Resize in the toolbar](https://orshot.com/home/new/orshot-studio-new.webp) ## What's Different If you're already on Bannerbear, here's what changes when you switch: | Feature | Orshot | Bannerbear | | :------------------------------ | :------------------------------------------------------------------------ | :--------------------- | | **Starting price** | \$39/month for 1,500 credits (~25 video mins) | \$49/month for 1,000 | | **Cost per image, base plan** | \$0.026 | \$0.049 | | **Next tier up** | \$99/month for 5,000 credits (~83 video mins) | \$149/month for 10,000 | | **Free tier** | 100 credits a month, resets monthly, no card | One-time 30-credit trial, features limited | | **Native automation workflows** | [Built in](https://orshot.com/workflows), with triggers and destinations | Through Zapier or Make | | **Social publishing** | [Built in, 15+ platforms](https://orshot.com/docs/publish/introduction) | No | | **Carousels & multi-page** | Yes, one template exports carousel, PDF or video | No | | **Video generation** | Timeline, per-layer animation, audio tracks, auto-subtitles, MP4/WebM/GIF | Basic | | **Template creation** | [Clone from Canva](https://orshot.com/solutions/canva-template-to-api), Figma import, or AI | Manual | | **White-labeled editor** | Yes, embed it in your own product | No | | **Integrations** | n8n, Zapier, Make, Pipedream, MCP server, Dynamic URLs | Zapier, Make, n8n | ## Bannerbear Pricing in 2026 (and How Orshot Compares) Bannerbear runs three plans — Automate, Scale and Enterprise — all billed monthly, with no annual option. Here's their ladder against the closest Orshot plan (they also sell 30,000 credits at \$247 and a 500,000-credit Enterprise tier at \$617, which I've left out for space). Prices checked against bannerbear.com/pricing in July 2026: | Bannerbear plan | Bannerbear | Closest Orshot plan | Orshot | Orshot video | | ----------------------------- | ---------- | ----------------------- | ---------- | ------------ | | Automate · 1,000 credits | \$49 | Launch · 1,500 credits | **\$39** | ~25 mins | | Scale · 10,000 credits | \$149 | Grow · 20,000 credits | \$160 | ~333 mins | | Scale · 20,000 credits | \$198 | Grow · 20,000 credits | **\$160** | ~333 mins | | Scale · 40,000 credits | \$296 | Grow · 40,000 credits | **\$280** | ~666 mins | | Enterprise · 50,000 credits | \$299 | Scale · 75,000 credits | \$349 | ~1,250 mins | | Enterprise · 100,000 credits | \$458 | Scale · 150,000 credits | \$480 | ~2,500 mins | On Orshot 1 credit is 1 image, 1 PDF page or 1 second of video, so the video column is just the credit allowance expressed in minutes. Bannerbear draws video from the same credit pool but bills it differently — their help docs put it at one credit per five seconds of processing plus one per overlay — and they don't publish a per-plan video figure. Read the table honestly: in the 10,000-credit row and the last two, **the Orshot bill is higher**, because our nearest tier carries more credits than you asked for — \$160 for 20,000 against their \$149 for 10,000, \$349 for 75,000 against their \$299 for 50,000. Per credit Orshot stays cheaper (\$0.008 against \$0.015 at 10,000; \$0.0047 against \$0.006 at 50,000), but if those volumes really are your ceiling, their monthly number is the smaller one. Bandwidth is 10 GB on Automate, 50 GB on Scale and 100 GB on Enterprise. Simple URLs, Signed URLs and team members aren't on the \$49 plan — those start at Scale. **Where the 2x holds:** on the base plan. \$39 buys 1,500 credits against Bannerbear's 1,000 for \$49 — \$0.026 an image versus \$0.049, so roughly half the unit cost. Higher up the ladder the gap narrows: at 20,000 credits it's \$160 against \$198, and at 40,000 it's \$280 against \$296. Still cheaper, not half. Also worth noting: - 100 free credits a month to test with, and they come back every month (Bannerbear's trial is one-time) - Nothing is plan-gated — the one thing priced separately is social publishing, a flat \$12/month per connected account on any plan - Overages are pay-as-you-go, so renders never stop [Full pricing details here](https://orshot.com/pricing) **1,500 credits for $39, not 1,000 for $49** — Test it against your own volume before you move anything. [Start free](https://orshot.com/pricing?via=blog-bannerbear-pricing) ## The Editor [Open the embed](https://orshot.com/templates/shared/d5jjcv9r/preview?view=play) [Orshot Studio](https://orshot.com/studio) is the part people notice first. Clean interface, less clicking around, more visual. If you've used Bannerbear's editor, the difference is obvious in about a minute. You don't have to start from a blank canvas either. Bring a design over from Canva or Figma, or screenshot something and let AI rebuild it as a template. **What you get in the editor:** - **[Smart Stacking](https://orshot.com/blog/smart-stacking)** - Position elements relative to each other. They auto-adjust when content changes - **Brand Assets** - Save your logos, colors and fonts, then reuse them across every template - **Custom Fonts** - Upload any font. No limits on typography - **Personalization** - Make any element dynamic: text, images, colors, styling - **Studio Embed** - Put the editor inside your own product with your branding - **Multi-page Support** - One template exports as an Instagram carousel, a multi-page PDF, or a video That last one is worth dwelling on, because Bannerbear can't do it. A multi-page template gives you a full video timeline: per-layer animations, page-level audio tracks, auto-generated subtitles, and trim, mute and loop controls you can drive from the API. Export to MP4, WebM or GIF. Whatever you build, every template becomes an API endpoint you can call directly, bulk-render in parallel, or hit through [Dynamic URLs](https://orshot.com/docs/integrations/dynamic-urls) with no API call at all. **Build your first template in about two minutes** — 100 credits free a month. Bring a Canva or Figma design, or start blank. [Open Studio](https://orshot.com/pricing?via=blog-bannerbear-editor) ## Automate the Whole Loop, Not Just the Render This is the part that changed most since I first wrote this page. A render API gives you one endpoint. Something still has to decide when to call it, where the data comes from, and what happens to the file afterwards. Usually that's Zapier or Make - a second subscription, a second thing to break, and a task bill that grows with your volume. [Orshot Workflows](https://orshot.com/workflows) put that inside the product: - **Trigger** from Google Sheets, Airtable, Notion, Google Forms, HubSpot, Shopify, Drive or a plain webhook - **Render** one template or a whole batch - **Send** it to social, storage, email or your own endpoint - **Repeat** on a schedule, without you ![An Orshot workflow: a daily schedule trigger, a Google Sheets source, a render step mapping columns to template fields, and a URL destination](https://orshot.com/blog/bannerbear-alternative/workflow-builder.webp) That one runs daily, reads a sheet, renders a row per asset, and keeps each result at a URL. Four steps, no second subscription. There are ready-made presets for the common ones — [Instagram carousels from a sheet](https://orshot.com/workflows/instagram-carousels-from-sheet), [OG images from your CMS](https://orshot.com/workflows/dynamic-og-webhook), [YouTube thumbnails at scale](https://orshot.com/workflows/youtube-thumbnails-at-scale). Bannerbear has no equivalent. Scheduling and orchestration happen in Zapier, Make or n8n on their side. ### Publishing Without a Third Tool Once the render exists, [Orshot Publish](https://orshot.com/docs/publish/introduction) posts it to 15+ platforms - Instagram, LinkedIn, X, TikTok, Facebook, Pinterest, YouTube, Threads, WhatsApp, Discord and more. Post immediately, schedule it, or save it as a draft for someone to approve. So the full chain - trigger, data, render, post - lives in one place with one bill. On their side that's Bannerbear plus Zapier plus Buffer. If you'd rather keep orchestration where it already lives, that works too. Orshot has a first-party [n8n node](https://orshot.com/docs/integrations/n8n), plus Zapier, Make, Pipedream and an [MCP server](https://orshot.com/docs/integrations/mcp-server) so Claude or Cursor can drive it directly. If something you use is missing from the [full list](https://orshot.com/integrations), just ask. We'll probably add it. ## When Bannerbear Is Still the Right Call I'd rather you pick the right tool than switch and regret it. Two honest reasons to stay put: - **You've already sunk real work into it.** Templates built and tuned, API calls wired into production, Zapier and Make scenarios running, teammates who know where everything lives. That's a genuine cost, and no price table cancels it out. - **It works and you're not annoyed.** If Bannerbear is quietly doing its job and nothing on this page describes a problem you actually have, stay. A migration you didn't need is worse than a slightly higher bill. ## Switching from Bannerbear Honestly, it's not that hard. Below is the short version; the full walkthrough with screenshots lives on its own page. ### Step 1: Recreate Your Templates (15-30 min) You have a few options: **Just rebuild it** - Open your Bannerbear template, rebuild it in Orshot Studio. The editor's actually easier to use, so it usually goes faster than you think. **Use AI** - Screenshot your Bannerbear output, drop it into the [AI Template Generator](https://orshot.com/features/ai-template-generator). It'll recreate it, you fine-tune. **Import existing designs** - If you have the original in [Canva](https://orshot.com/solutions/canva-template-to-api) or [Figma](https://orshot.com/solutions/figma-automation-via-rest-api), import it directly. Try it now, paste a public Canva share link and see it as an Orshot template: ### Step 2: Update Your API Calls (10 min) The APIs are pretty similar. Here's what changes. **Bannerbear API Call:** ```javascript const response = await fetch("https://api.bannerbear.com/v2/images", { method: "POST", headers: { Authorization: "Bearer YOUR_BB_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ template: "bb_template_uid", modifications: [ { name: "title", text: "Hello World", }, { name: "image", image_url: "https://example.com/photo.jpg", }, ], }), }); ``` **Orshot API Call (Nearly Identical):** ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "orshot_template_id", modifications: { title: "Hello World", image: "https://example.com/photo.jpg", // Dynamic parameters - override any style property "title.fontFamily": "Space Mono", "image.borderRadius": "32px", }, response: { type: "url", // url, base64, binary format: "png", // png, jpg, webp, avif, pdf, mp4, webm, gif }, }), }); ``` **Main differences:** - Modifications are an object instead of an array (cleaner IMO) - You specify response format explicitly - Auth is the same Bearer token pattern **Helpful docs:** - [API Reference](https://orshot.com/docs/api-reference) - Complete API documentation - [Render from Template](https://orshot.com/docs/api-reference/render-from-studio-template) - Main endpoint you'll use - [SDKs](https://orshot.com/docs/sdks) - Node, Python, Ruby, PHP libraries - [Style Parameters](https://orshot.com/docs/orshot-studio/style-parameters) - Override styles you set in Studio from your API requests ### Step 3: Test It (5 min) Every template has a connect sheet: your API key, an editable request body you can run right there, a live preview of the result, and one-click setup for Workflows, n8n, Make, Zapier, Airtable or Pipedream. ![The Orshot connect sheet open beside a template: API status, template ID and API key, tabs for API, Workflows, AI, n8n, Make, Zapier, Airtable and Pipedream, an editable request body, and a live preview](https://orshot.com/blog/bannerbear-alternative/connect-sheet.webp) Hit Run on the prefilled request body and put the output next to your old Bannerbear render. If the fonts look off, it's almost always a missing font file — upload it under Brand Assets and re-render. You can run both Bannerbear and Orshot in parallel for as long as you like — there's no cutover moment you have to get right. ### Need Help? Just hit the chat button on bottom right. I or someone from the team will help you migrate templates, check your API calls, whatever you need. Usually takes about 2 hours total for a complete workflow. ## Examples and Tutorials ### Video Generation using Orshot Demo of Orshot's Video Generation API: [Watch the video](https://www.youtube.com/watch?v=RQPHJY3bkZk) ### Import from Canva Clone your existing Canva designs and turn them into API endpoints: [Watch the video](https://www.youtube.com/watch?v=P4AHj3dpJXw) ### Import from Figma Use the Figma plugin to import your designs directly: [Watch the video](https://www.youtube.com/watch?v=ggvLR0HLJ7Q) ### eCommerce Automation Example workflow, [automating product images](https://orshot.com/blog/automate-ecommerce-product-images) from your data sources: [Watch the video](https://www.youtube.com/watch?v=S5qNb4mmUdc) ## Common Questions **Q: How much cheaper is Orshot compared to Bannerbear?** About half the unit cost on the base plan: $39/mo buys 1,500 credits on Orshot ($0.026 an image) against Bannerbear's 1,000 credits for $49 ($0.049 an image). The gap narrows further up the ladder — 20,000 credits is $160 on Orshot against $198 on Bannerbear, and 40,000 is $280 against $296. Still cheaper, but not half. See the [pricing page](https://orshot.com/pricing). **Q: How much does Bannerbear cost in 2026?** Bannerbear has three plans, all billed monthly — there is no annual option. Automate is $49/mo for 1,000 API credits and 10 GB bandwidth. Scale starts at $149/mo for 10,000 credits and 50 GB, then $198 for 20,000, $247 for 30,000 and $296 for 40,000. Enterprise is $299/mo for 50,000 credits and 100 GB, rising to $458 for 100,000. Simple URLs, Signed URLs and team members are not included on the $49 Automate plan — those start at Scale. Prices checked against bannerbear.com/pricing in July 2026. **Q: How much does Bannerbear's video API cost?** Bannerbear doesn't publish a per-plan video allowance — video draws on the same API credit pool as images. Their help documentation describes video as one credit per five seconds of processing plus one credit per overlay, so a 10-second video with a single overlay costs 3 credits. On Orshot 1 credit is 1 second of output video, so 1,500 credits is roughly 25 minutes and 20,000 credits is roughly 333 minutes. Orshot handles both jobs: generate a video from a template with a full timeline, per-layer animation, audio tracks and auto-subtitles, or swap in your own footage via the video URL and control trim, mute and loop per element. **Q: Does Bannerbear have a free plan?** No. Bannerbear offers a one-time free trial of 30 API credits with no credit card required, but there is no permanent free tier — once those credits are used you need a paid plan. Orshot's free plan gives 100 credits a month, renews every month and no card is required. **Q: What does Bannerbear charge per image?** $0.049 per image on the $49 Automate plan, falling to about $0.015 at 10,000 credits and $0.006 at 50,000. Bannerbear bills 1 credit for a standard image up to 3000x3000, 3 credits for a hi-res image above that, 2 credits with face detection and 3 credits per PDF. Orshot is a flat 1 credit per image at any size, which is $0.026 on the base plan and $0.008 at 20,000 credits. **Q: Can I import my designs from Canva or Figma to Orshot?** Yes. Instead of rebuilding from scratch, you can use our [Figma plugin](https://orshot.com/solutions/figma-automation-via-rest-api) or [Canva import tool](https://orshot.com/solutions/canva-template-to-api) to bring your existing templates directly into Orshot. **Q: Does Orshot support multi-page PDFs and carousels?** Yes, Orshot has native support for [multi-page templates](https://orshot.com/blog/introducing-carousel-templates), making it easy to generate Instagram carousels and multi-page PDF documents. Bannerbear does not support this. **Q: Does Orshot support video generation?** Yes. Orshot supports advanced video generation (MP4/WebM/GIF) with per-layer controls like trim, loop, mute, and animations such as fade, slide and scale with staggered choreography. Bannerbear has basic video support but Orshot offers more flexibility. **Q: Can Orshot replace my Zapier or Make setup?** Often, yes. [Orshot Workflows](https://orshot.com/workflows) handle the trigger, the data source, the render and the destination on a schedule, with connectors for Google Sheets, Airtable, Notion, Google Forms, HubSpot, Shopify and webhooks. If you'd rather keep orchestration in n8n, Zapier or Make, all three are fully supported. **Q: How do I migrate templates from Bannerbear to Orshot?** Save each template from the Bannerbear editor and upload it under New Template, then the Bannerbear tab. Layers, images and layer names come across, and the layer names become your API parameters. Prefer we do it? We import up to 5 templates free on any paid plan. **Q: Is there an agency partner program?** Yes. Our [Agency Partner Program](https://orshot.com/partner-program) is free to join and includes unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools for agencies managing multiple clients. **Q: Does Orshot support webhooks?** Yes, Orshot supports webhooks to notify your application when renders are complete. Read our [Webhooks documentation](https://orshot.com/docs/integrations/webhooks) for setup details. ## Bottom Line One thing that doesn't show up in a feature table: I answer the chat myself, usually within the hour, and I'll hop on a call if something's genuinely stuck. When users need something specific we tend to build it. Ivan wanted automated cross-posting for Twitter threads, so we shipped it. ![Mihai Cirstea, Founder of SitePixel: "I had been using Bannerbear before but Orshot quickly stood out as the better option thanks to its richer features and user friendly design"](https://orshot.com/blog/mihai-testimonial.webp) Bannerbear works, but it's expensive and missing some stuff. Orshot does the same core thing (turn templates into API endpoints) but costs less and has the features people keep asking for: multi-page templates, scheduled workflows, social publishing, better integrations, easier editor. The switch is four steps: 1. [Sign up](https://orshot.com/pricing?via=blog-bannerbear-footer): 100 free credits every month, no card needed 2. Recreate one of your templates (or use AI to do it) 3. Test with your actual data 4. See if it works for you Building image, PDF or video automation for multiple clients? The [Agency Partner Program](https://orshot.com/partner-program) is free to join, with unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools. If you're also comparing [Placid](https://orshot.com/blog/placid-api-alternative) or [Contentdrips](https://orshot.com/blog/contentdrips-api-alternative), the short version: Placid is cheaper per raw credit but multiplies credits once a render passes 4000px; Contentdrips outputs PNG and PDF only, with no video. [Abyssale](https://orshot.com/blog/abyssale-api-alternative) is covered separately. Each page runs the same verified-pricing format as this one. If you get stuck, hit the chat button. I'll help you out. --- ### [A Better Priced Templated.io Alternative with No Template Limits](https://orshot.com/blog/templated-io-alternative) > Switch from Templated.io to Orshot. Get 50% more output at the same price, unlimited templates, better editor with carousel support and video editing. 100 free credits a month to start Templated.io is a solid tool — good editor, clean API, great support team. If you're just starting with automated image generation, it gets the job done. But once you start scaling — more templates, more team members, video renders eating through credits — the limits show up. That's usually when people start looking for a Templated.io alternative. Template caps, unpredictable billing, and missing features like multi-page support or built-in social publishing become real blockers. I built [Orshot](https://orshot.com/) because I kept running into these exact walls. Unlimited templates on every paid plan, predictable pricing, multi-page templates, a full video editor with API controls, and a white-label editor — all from $39/mo. [**Try Orshot Free**](https://orshot.com/pricing) **— 100 credits a month, no card — Image + PDF + Video Generation** Here's a live demo of a template in Orshot's Studio. You can try playing the animation right here. This same template can generate an image, PDF, or a video. [Open the embed](https://orshot.com/templates/shared/6xu2fq2a/preview?view=play) ## What's different | Feature | Orshot | Templated.io | | :---------------------------- | :------------------------------------------------------------------------------------------------ | :-------------------------------------------------- | | **Free Tier** | 100 free credits a month, resets monthly | 50 credits, trial only | | **Starting Price** | $39/mo for 1,500 credits (1 credit = 1 image) | $39/mo for 1,000 credits | | **Templates** | Unlimited on every paid plan | 15 on Starter, 100 on Scale | | **Multi-page Templates** | Yes — carousels, PDFs, multi-page video | Limited | | **Video Editor** | Full video timeline with per-layer animations, audio tracks, subtitles — all controllable via API | Editor-only animation controls, not exposed via API | | **White-label Editor** | Full editor with React & Vue SDKs, every paid plan | Basic iframe embed | | **AI Features** | AI Design Agent, background removal, variant generation | AI template generator | | **Social Publishing** | Built-in — 15+ platforms | No | | **Canva/Figma Import** | Canva clone + Figma plugin | Canva import only | | **Own Storage** | S3, R2, Google Drive, Dropbox | No | | **Multi-tenant / Workspaces** | Yes — isolated workspaces per client with separate templates, brand kits, and billing | No | | **Integrations** | Zapier, Make, n8n, MCP Server, Dynamic URLs | Zapier, Make, n8n, Airtable | ## Where Templated.io falls short - **Template caps.** 15 on Starter, 100 on Scale. Agencies and SaaS teams hit this fast. Orshot is unlimited on every plan. - **Unpredictable video billing.** Video credits use a formula (resolution x FPS x duration) — a 10-second 1080p clip burns ~13 credits. Orshot charges 1 credit per image or page and 1 credit per second of video — no resolution math, a 10-second clip is always 10 credits. - **No multi-page templates.** Carousels, invoices, multi-page PDFs — you're assembling them yourself. Orshot does it in one API call. - **Video animations locked in the editor.** You can set them visually, but can't override them via API. Orshot has a full video timeline with per-layer animations, page-level audio tracks, and auto-generated subtitles — all controllable via API. - **Basic embed.** Templated.io has an iframe embed, but no dedicated SDKs or deep customization. Orshot's Studio Embed is a full white-label editor with React and Vue SDKs on every paid plan. - **No multi-tenant workspaces.** Everything lives in one pool — templates, brand assets, API keys. Orshot gives each client their own workspace with separate templates, brand kits, members, and billing. - **No own storage.** Renders stay on their CDN. Orshot lets you push renders to Google Drive, Dropbox, S3, or R2 automatically. ## Pricing comparison | Monthly volume | Templated.io | Orshot | You get | | -------------- | ------------------------------------ | ------------------------------------- | -------------------------- | | Free tier | 50 credits (one-time trial) | **100 credits a month, resets monthly** | Test month after month | | ~1,000 | $39/mo (1,000 credits, 15 templates) | $39/mo (1,500 credits) | 50% more output, no caps | | 5,000 | $99/mo (100 templates, 5 members) | $99/mo (5,000 credits) | Unlimited templates | | 25,000+ | $229/mo (25,000 credits, 20 members) | $280/mo (40,000 credits) | 60% more output | _On both platforms 1 credit = 1 image. Annual plans give you 2 months free. See [full pricing](https://orshot.com/pricing)._ At scale the difference is caps, not stickers. Templated.io's Enterprise plan ($229/mo) gives you 25,000 credits and caps the team at 20 members. Orshot's $280/mo plan gives you 40,000 credits with unlimited templates and unlimited team members — and the per-credit price keeps dropping on bigger plans. ## What Orshot adds on top Things Orshot does that Templated.io doesn't: - **AI Design Agent** — Describe what you need or paste a screenshot, and get a working template draft - **Variant Generation** — Auto-resize one design into every standard aspect ratio instantly - **Studio Embed** — White-label the full editor inside your own app, every paid plan - **Template Forms** — Turn any template into a public, self-serve form for lead magnets or internal tools - **Brand Kit** — Centralize your colors, fonts, logos, and videos in one place - **Own storage** — Pipe renders into Drive, Dropbox, S3, or R2 automatically - **Social publishing** — Render and post to 15+ platforms in one API call - **MCP Server** — Use Orshot inside Claude, Cursor, and Windsurf for AI-driven design - **OAuth 2.0 apps** — Build and distribute your own apps on top of Orshot ![Automating template image generation with Orshot](https://orshot.com/home/new/automate-templates.png) ## When Templated.io is still the right call If you're under 15 templates, on a tight budget, and the credit system works for your volume — Templated.io's $39/mo Starter is reasonable. Their customer support is genuinely excellent (Pedro and team are responsive), and the Canva import feature is handy if Canva is your primary design tool. But if you're hitting template limits, need multi-page support, want video with API-controllable animations, want to embed the editor in your product, or just want predictable pricing as you scale — Orshot is the better fit. ## Switching Most people are done in an afternoon. The short version is below; the full walkthrough with screenshots has its own page. ### 1. Recreate templates Three options, fastest first: - **Import from Templated** — Save each template from the Templated editor and upload it; layer names come across as API parameters - **AI Design Agent** — Describe the template or paste a screenshot, and get a working draft - **Import from Canva or Figma** — If you have the source files, bring them straight in - **Build in Orshot Studio** — Drag-and-drop editor with Smart Stacking and your Brand Kit Have a Canva design handy? Paste a public share link and see it as an Orshot template: ### 2. Swap the API call The APIs follow the same pattern. Here's what changes. **Templated.io:** ```javascript const response = await fetch("https://api.templated.io/v1/render", { method: "POST", headers: { Authorization: "Bearer YOUR_TEMPLATED_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ template: "templated_template_id", layers: { title: { text: "Hello World" }, image: { image_url: "https://example.com/photo.jpg" }, }, }), }); ``` **Orshot:** ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "orshot_template_id", modifications: { title: "Hello World", image: "https://example.com/photo.jpg", "title.fontFamily": "Space Mono", "image.borderRadius": "32px", }, response: { type: "url", format: "png", }, }), }); ``` Flat key-value modifications instead of nested layer objects, dot notation for style overrides, and explicit output format. Check the [API docs](https://orshot.com/docs/api-reference) for more. Here's a live playground for the same template — you can try different content and see the API output in real-time: [Open the embed](https://orshot.com/templates/shared/nl2w1ihk/playground) ### 3. Run both in parallel Compare outputs side-by-side, tweak styling in Studio, and cut over when you're ready. If anything's off, hit the chat button — I'll help you migrate. ## Common questions **Q: Is Orshot really cheaper than Templated.io?** You get more for the same money. Orshot's $39/mo plan gives you 1,500 credits (1 credit = 1 image) with unlimited templates and team members. Templated.io's $39/mo Starter gives you 1,000 credits and caps you at 15 templates and 2 team members. At scale their $229/mo Enterprise still caps the team at 20 — Orshot stays unlimited and the per-credit price keeps dropping. **Q: Does Orshot have a full video editor?** Yes. You get a visual video editor with per-layer animations (fade, slide, scale, stagger), trim, loop, and mute controls. The key difference from Templated.io: every animation property is controllable via the API too. Design it visually, override it programmatically. Output as MP4, WebM, or GIF. **Q: Can I embed the editor in my own app?** Yes. Studio Embed gives you a full white-label editor on every paid plan ($39/mo+) with React and Vue SDKs. Templated.io has a basic iframe embed, but it doesn't come with dedicated SDKs or deep customization. **Q: Does Orshot support carousels and multi-page PDFs?** Yes. Multi-page templates handle Instagram carousels, invoices, reports, and multi-page videos — all in a single API call. **Q: What about no-code integrations?** Native nodes for Zapier, Make, and n8n. Plus Dynamic URLs for zero-code image generation and an MCP server for AI agent workflows with Claude, Cursor, and Windsurf. **Q: How long does it take to migrate?** Most people finish in an afternoon. Recreate templates with the AI Design Agent or import from Canva/Figma, swap the API call (same Bearer token pattern), and test. **Q: Is there an agency partner program?** Yes. The [Agency Partner Program](https://orshot.com/partner-program) is free to join — unlimited sandbox workspaces, pooled credits up to 100k/mo, and client handoff tools. ## Useful tutorials ### Designing Templates with Claude [Watch the video](https://www.youtube.com/watch?v=OhgdZtqEQK0) ### Video Generation flow [Watch the video](https://www.youtube.com/watch?v=RQPHJY3bkZk) ### Designing Carousel Templates [Watch the video](https://www.youtube.com/watch?v=EXJoMeGyEhM) ## Bottom line Templated.io works, but the template caps, resolution-based credit math, and missing features add up. Orshot does the same core thing — turn templates into API endpoints — with more output per dollar, no artificial limits, and features like multi-page templates, a full video editor, and multi-tenant workspaces that Templated.io doesn't offer. If you're also comparing [Bannerbear](https://orshot.com/blog/bannerbear-api-alternative), [Placid](https://orshot.com/blog/placid-api-alternative), [Creatomate](https://orshot.com/blog/creatomate-api-alternative), [Abyssale](https://orshot.com/blog/abyssale-api-alternative), [APITemplate.io](https://orshot.com/blog/apitemplate-io-alternative), or [Contentdrips](https://orshot.com/blog/contentdrips-api-alternative), the same advantages apply — simpler pricing, no feature gating, and multi-page support that most competitors lack. ## Try it [Sign up](https://orshot.com/pricing), recreate one template (or let AI do it), and run a few real renders. You get 100 free credits a month — no card needed. If you need help migrating, hit the chat button. I'll generally be the one on the other end. ## For agencies Building [image, PDF or video automation](https://orshot.com/blog/automated-content-creation-tools) for multiple clients? Check out the [Agency Partner Program](https://orshot.com/partner-program) — free to join, unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools. --- ### [A Buffer Alternative for Automated Content Posting via AI](https://orshot.com/blog/buffer-alternative) > Buffer schedules content. Orshot automates creation and posting to 15+ platforms from templates, API, workflows, or Claude via MCP. 100 free credits a month Buffer is a good scheduler. The queue is simple, the apps are clean, and if all you need is "post this at 9am tomorrow", it does the job. But scheduling was never the hard part. Every Buffer alternative thread on Reddit repeats the same complaints: per-channel pricing that compounds, hitting a wall with multiple brands, and still having to make the content somewhere else. As one commenter put it, a design tool matters because then "scheduling becomes the easy part" ([r/MarketersSuccessClub](https://www.reddit.com/r/MarketersSuccessClub/comments/1p16du5/whats_the_best_buffer_alternative_for_social/ "target=_blank nofollow")). ## Meet Orshot, create content + automate to 15+ platforms ![Designing a social carousel in Orshot Studio and posting it to social accounts](https://orshot.com/blog/buffer-alternative/studio-social-carousel-post.webp) I built [Orshot](https://orshot.com/) to make the rest of the pipeline that easy too. It does three things: - **Visual content from templates.** Design your posts, carousels, and reels once in a Canva-like editor (or [import straight from Canva](https://orshot.com/solutions/canva-template-to-api)), then generate every variation by swapping text and images. - **Automated posting via API and MCP.** One request renders the visual and [publishes it to 15+ platforms](https://orshot.com/features/social-publishing). Call it from your code, your no-code stack, or ask Claude over MCP. - **[Workflows](https://orshot.com/features/workflow-automation-builder) that connect all of it.** Template + data source (Google Sheets, Airtable, a webhook) + your social accounts, and posts ship themselves on a schedule. 100 credits a month, no card. Design + publish + automate. [Try Orshot free](https://orshot.com/pricing?via=blog-buffer-top) ## What's different | Feature | Orshot | Buffer | | :--------------------------- | :------------------------------------------------------------------------- | :---------------------------------- | | **Publishing platforms** | 15+ (Instagram, X, LinkedIn, TikTok, YouTube, Pinterest, and more) | ~11 channels | | **Publish from** | Dashboard, API, scheduled workflows, MCP (Claude, Cursor) | Dashboard and apps, rate-capped API | | **Posting modes** | Instant, draft, scheduled, recurring | Queue-based scheduling | | **Content creation** | Design studio, 1,000+ templates, AI Design Agent, auto-resize per platform | Canva import, AI caption assistant | | **Carousels** | Rendered and posted automatically | Manual upload | | **Automation** | Workflows (Sheets, Airtable, webhooks), Zapier, Make, n8n | Publish-only API with request caps | | **Multi-brand** | Separate workspace per brand: templates, brand kit, accounts, billing | Channel groups | | **Social inbox & analytics** | No, Orshot is creation + publishing | Yes | | **Pricing** | From $39/mo (1,500 credits) + $12/mo per account, unlimited posts | $5 to $10 per channel per month | If your main need is replying to comments and DMs from one inbox, Buffer is the right category of tool. Orshot replaces the creation and posting half of your stack, not community management. ## Where Buffer falls short - **It only schedules.** The banner, carousel, or product graphic still has to be made somewhere else. Orshot generates it from a template, AI, or a spreadsheet, then posts it. - **Per-channel pricing compounds.** Six accounts on Buffer Team is $60/mo, and you still haven't created a single graphic. - **Automation is publish-only.** Buffer's API can't generate an image from data, and it's capped by monthly request limits. - **Multiple brands strain it.** "You hit a wall pretty fast" ([r/MarketersSuccessClub](https://www.reddit.com/r/MarketersSuccessClub/comments/1p16du5/whats_the_best_buffer_alternative_for_social/ "target=_blank nofollow")). Orshot gives each brand its own workspace. - **The free plan is a trial in practice.** 3 channels, 10 scheduled posts per channel. ## Publish from wherever you work Anything Orshot can render, it can post: instantly, as a draft, or scheduled in any timezone. ### From the dashboard Pick a template, edit the content, choose accounts, post. No code. Everything (published, scheduled, failed) shows up in the Posts Log, so you keep the visibility you're used to from Buffer's queue. ![Connecting social accounts in Orshot](https://orshot.com/blog/orshot-publish-social-accounts.webp) ### From the API One request creates the visual from your data and publishes it. This is the part Buffer can't do: ```javascript await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_template_id", modifications: { title: "Summer sale: 40% off everything", image: "https://example.com/product.jpg", }, response: { type: "url", format: "png" }, publish: { accounts: [1, 2], content: "Our summer sale is live! 🌞", schedule: { scheduledFor: "2026-07-20T14:00:00Z" }, }, }), }); ``` Multi-page templates post as carousels automatically. Under the hood, publishing runs on Zernio's [unified social media APIs](https://zernio.com "target=_blank"), which take care of the platform-specific plumbing (carousel uploads, per-platform settings, token refreshes) so posts don't quietly fail. See the [publish API docs](https://orshot.com/docs/publish/publish-from-api) for drafts, scheduling, and platform options. ### From a workflow ![An Orshot workflow posting Instagram carousels from Google Sheets rows](https://orshot.com/blog/buffer-alternative/instagram-posting-workflow-orshot.webp) Workflows run the loop on autopilot: trigger, data, template, post. Copy one into your workspace and turn it on. This one turns Google Sheets rows into Instagram carousels: [Turn spreadsheet rows into Instagram carousels workflow on Orshot](https://orshot.com/workflows/instagram-carousels-from-sheet/embed) And this one posts a random Google Drive photo to TikTok on a schedule: [Random Drive photo to TikTok workflow on Orshot](https://orshot.com/workflows/random-drive-photo-to-tiktok/embed) More ready-made setups: [real estate listings to Instagram and Facebook](https://orshot.com/workflows/real-estate-listing-cards), [product images from your catalog](https://orshot.com/workflows/product-marketing-images), and [daily quote graphics](https://orshot.com/workflows/daily-quote-graphics). ### From Claude, via MCP Connect the [Orshot MCP server](https://orshot.com/blog/orshot-remote-mcp-server) to Claude, Cursor, or Windsurf and publishing becomes a prompt: "Render the weekly promo template with this headline and post it to Instagram and LinkedIn tomorrow at 9am." ## The honest math If all you do is schedule posts you already have, Buffer is cheaper. Full stop. Three channels on Buffer Essentials is $15/mo; Orshot with three connected accounts starts at $75/mo ($39 plan + 3 x $12). The math flips when you count the whole stack Orshot replaces: | Your stack today | Cost | With Orshot | | ------------------------------------------ | ---------------- | --------------------------------------- | | Buffer Team, 3 channels | $30/mo | Included ($12/account, unlimited posts) | | Canva Pro for the actual designs | $15/mo | Included (studio, 1,000+ templates, AI) | | Zapier for the automation glue | $20 to $50/mo | Included (workflows, API, integrations) | | Your time designing + resizing + exporting | Hours every week | Automated | Publishing doesn't cost extra credits, and every paid plan has unlimited templates and team members. See [full pricing](https://orshot.com/pricing). ## Switching from Buffer Most people are set up in an afternoon. **1. Bring your templates.** Describe your post style to the AI Design Agent, import from Canva or Figma, or start from the [template library](https://orshot.com/templates). Have a Canva design handy? Paste a public share link: **2. Connect your social accounts.** OAuth from the dashboard. Each account is $12/mo, unlimited posts. **3. Post something real.** From the dashboard, the API, or a workflow. Check the Posts Log before switching anything off on the Buffer side. ## When Buffer is still the right call - You only schedule content that's already made, and the per-channel price works for you - You need a social inbox or engagement analytics in the same tool - You love the queue model and don't want to change how you plan But if making the visuals is where your time goes, or you're gluing Canva to Buffer with Zapier, a scheduler swap won't fix that. ## Other Buffer alternatives, honestly sorted Orshot only makes sense as a Buffer alternative if content *creation* is your bottleneck. If it isn't, one of these is probably the better swap: - **Hootsuite** — the enterprise pick: social listening, team roles, dozens of accounts. From \$99/mo (Standard). - **Later** — visual-first planning with an Instagram grid preview. No free plan anymore (14-day trial); from \$18.75/mo billed yearly. - **SocialBee** — category-based queues that recycle evergreen posts automatically. From \$29/mo. - **Pallyy** — the budget pick; most of the scheduler feature set from \$15/mo. - **Postiz** — the **open source Buffer alternative**: self-host it and scheduling costs nothing, or take their cloud from \$29/mo. Pair it with Orshot's API if you want generated visuals in the same pipeline. - **[Predis.ai](https://orshot.com/blog/predis-ai-alternative)** — writes the caption and designs the post from a prompt, then schedules it. Good if you don't know what to post; the catch is you can't lock the layout. From \$19/mo, though auto-posting starts at \$40. Full breakdowns, verified pricing and free-tier details for all of these are in our [11 best social media automation tools](https://orshot.com/blog/social-media-automation-tools) comparison. ## Common questions **Q: Is Orshot a cheaper alternative to Buffer?** Not per channel, and we won't pretend otherwise. Buffer Essentials is $5/channel/mo; Orshot is $12 per connected account on top of a plan from $39/mo. Orshot is cheaper as a stack: the plan includes the design studio, 1,500 credits of image and video generation, and workflow automation, which usually replaces separate Canva and Zapier subscriptions. Publishing itself costs no extra credits. **Q: Can Orshot schedule posts like Buffer?** Yes. Post instantly, save as a draft, or schedule for a specific time in any timezone, from the dashboard or the API. Workflows post on a recurring schedule automatically. The Posts Log shows everything published, scheduled, or failed. **Q: Can I publish without writing code?** Yes. Pick a template in the dashboard, edit the content, select accounts, and post or schedule. Workflows are no-code too: copy a ready-made one and connect your data source. **Q: Does Orshot have a social inbox or analytics?** No. Orshot focuses on creating and publishing content. If a unified inbox and engagement reports are your main need, Buffer or Sprout Social fits better. **Q: Which platforms can Orshot publish to?** Instagram, X (Twitter), Facebook, LinkedIn, TikTok, YouTube, Pinterest, Reddit, Bluesky, Threads, Telegram, Snapchat, Google Business, Discord, and WhatsApp. Carousels post automatically on platforms that support them. **Q: Is there a free plan?** Yes, 100 credits a month with the full design studio and API, no card needed. Social publishing itself is a paid addon ($12/mo per connected account, unlimited posts) on any paid plan. **Q: What about an AI alternative to Buffer?** Orshot's AI Design Agent builds working templates from a description or screenshot, and the MCP server lets Claude or Cursor render and publish posts for you. Buffer's AI writes captions; it doesn't create visuals. ## See it in action ### Publishing to your social accounts from Orshot [Orshot Publish demo: post to your social accounts from Orshot](https://www.youtube.com/watch?v=ec05xj2sXp8) ### Auto-posting tweets to Instagram [Automatically post tweets to Instagram with Orshot](https://www.youtube.com/watch?v=J9yL16C7dCE) ### Designing carousel templates [Designing carousel templates in Orshot Studio](https://www.youtube.com/watch?v=EXJoMeGyEhM) ## Bottom line Buffer schedules content you've already made. Orshot makes the content and posts it to 15+ platforms, on one bill. [Sign up](https://orshot.com/pricing?via=blog-buffer-footer), recreate one recurring post as a template, connect an account, and publish something real with your 100 free credits for the month. Comparing more tools? See [11 social media automation tools](https://orshot.com/blog/social-media-automation-tools). If you need help migrating, hit the chat button. I'll generally be the one on the other end. --- ### [A Contentdrips Alternative for Social Media Content Automation](https://orshot.com/blog/contentdrips-api-alternative) > Switch from Contentdrips to Orshot. Post to 15+ platforms, not two. Carousels, video with audio and subtitles, and native workflows. Start free. Contentdrips has built something cool - an AI-powered content creation tool focused on LinkedIn and social media. The carousel generators, AI post writers and scheduling features are genuinely useful for personal branding. Where it runs out is scope. Contentdrips posts to two platforms, LinkedIn and Instagram, and its API returns PNG and PDF — so no Reels, no TikToks, no audio, no subtitles. If your content plan is wider than carousels on two networks, you end up bolting a scheduler and a video tool onto the side. I built Orshot to do the whole loop: design the template once, then render carousels, video or stills from your own data and post them to 15+ platforms — from the editor or the API, on a schedule, without a second subscription. 100 credits a month, no card needed. [Try Orshot free](https://orshot.com/pricing?via=blog-contentdrips-top) **Migrate from Contentdrips to Orshot quickly with AI** Install the Orshot agent skill in Claude Code, Cursor, or Windsurf to automatically translate your Contentdrips API calls to Orshot. The skill knows both APIs and handles the mapping for you. ```bash npx skills add orshot-hq/orshot-agent-skills ``` [Learn more about the agent skill](https://orshot.com/agents/orshot-skills) This is Orshot Studio, live. It's a four-page animated carousel template — click through the pages, change the text, and see what the API would render: [Open the embed](https://orshot.com/templates/shared/muzkxu0y/preview?view=play) ## What's Different If you're looking at Contentdrips' API, here's how Orshot compares: | Feature | Orshot | Contentdrips | | :-------------------------- | :--------------------------------------------------------- | :-------------------------------------------- | | **Social publishing** | 15+ platforms, instant/scheduled/draft | LinkedIn and Instagram | | **Carousels** | Native LinkedIn PDF and Instagram multi-slide | Yes — their core product | | **Video** | Full timeline, audio tracks, auto-subtitles — MP4/WebM/GIF | None — PNG and PDF only | | **Scheduling** | Built in, plus drafts for approval | Built in | | **Template editor** | Orshot Studio — any dimension, any use case | Social media sizes only | | **Template import** | Canva, Figma, or AI from a screenshot | Social templates only | | **Brand assets** | Logos, colours and custom fonts across every template | Brand profiles (1 on free, 3 on Starter) | | **Core focus** | API-first image/video generation | Social media tool, API came later | | **Free tier** | 100 credits a month, resets monthly | 10 API calls, one-time | | **Entry plan** | \$39/mo — 1,500 credits (~25 video mins) | \$39/mo — 1,000 API calls (Basic) | | **Mid plan** | \$99/mo — 5,000 credits (~83 video mins) | \$149/mo — 6,000 API calls (Advanced) | | **Pricing ladder** | \$39 → \$99 → \$160 → \$280 → \$349 → \$480 → \$600 | \$39 → \$149 → \$359 (unlimited) | | **Webhooks** | Every plan | Advanced (\$149) and above | | **Commercial use** | Every plan, including free | Listed as a Pro (\$359) feature | | **Native workflows** | Trigger, render and publish on a schedule | Make, Zapier or n8n | | **Embed editor in your app**| White-label Studio Embed | Embed SDK in their docs | | **MCP server** | Yes | Yes — 24 tools, basic access on the free plan | | **SDKs** | Node, Python, PHP, Ruby | None | | **Own storage** | AWS S3, Cloudflare R2, Google Drive, Dropbox | Not documented | [See the full integrations list →](https://orshot.com/integrations) ## Post to 15+ Platforms, Not Two Contentdrips schedules to LinkedIn and Instagram. That's the list, and it's the half of the job they do well. Orshot renders _and_ posts — Instagram, LinkedIn, X, TikTok, Facebook, Pinterest, YouTube, Threads, WhatsApp, Discord and more — and it isn't API-only. Pick the accounts, write the caption, choose Now, Schedule or Draft, and publish straight out of Studio: ![Publishing from Orshot Studio: connected LinkedIn and Instagram accounts selected, a caption, Now/Schedule/Draft publish modes, LinkedIn first-comment options, and a Generate & Publish button](https://orshot.com/home/connect-post-to-socials.png) The per-platform details come with it — LinkedIn first comment, drafts for someone to approve, per-account platform settings, scheduled posting — so there's no separate [scheduler subscription](https://orshot.com/blog/buffer-alternative) sitting between the design and the post. ## Carousels, Video and Audio From One Template Contentdrips' API outputs PNG and PDF. That's the whole list. If the brief is a Reel, a TikTok or an animated LinkedIn post, there's nothing to call. One Orshot template covers all of it: - **Carousels** — a multi-page design posts as a native LinkedIn PDF carousel or an Instagram multi-slide, from one call - **Video** — MP4, WebM or GIF straight to Reels, TikTok or YouTube, with a real timeline and per-layer animation - **Audio** — page-level audio tracks, trimmed, muted or looped from the API - **Subtitles** — auto-generated and burned into the render, not a separate captioning step - **Any size** — not locked to social presets, so the same design becomes a story, a square and a thumbnail Brand assets — logos, colours, custom fonts — are saved once and reused across every template, so the output stays on-brand whoever triggers it. **Use case:** a sheet of quotes becomes [a new quote video posted to TikTok every day](https://orshot.com/workflows/quote-videos-to-tiktok), on a schedule, with nobody opening an editor. ## Automate the Whole Loop, Not Just the Render Contentdrips will render the carousel and it will schedule to LinkedIn and Instagram. The gap is the middle: pulling this week's copy out of wherever you write it, and getting the finished slides anywhere else. That part is Make, Zapier or n8n — a second subscription, a second thing to break, and a task bill that grows with your posting cadence. [Orshot Workflows](https://orshot.com/workflows) put that inside the product: - **Trigger** from Google Sheets, Airtable, Notion, Google Forms, HubSpot, Shopify, Drive or a plain webhook - **Render** one template or a whole batch - **Publish** straight to Instagram, LinkedIn, X, TikTok, Facebook, Pinterest, YouTube, Threads and more - **Repeat** on a schedule, without you ![An Orshot workflow: a daily schedule trigger, a Google Sheets source, a render step mapping columns to template fields, and a URL destination](https://orshot.com/blog/bannerbear-alternative/workflow-builder.webp) Once the render exists, [Orshot Publish](https://orshot.com/docs/publish/introduction) posts it to 15+ platforms — immediately, on a schedule, or as a draft for someone to approve. So the full chain (trigger → copy → design → post) lives in one place with one bill. Contentdrips covers the scheduling half for LinkedIn and Instagram, but the render and the orchestration stay in separate tools. ### Social Workflows You Can Copy Here's the one that maps most directly onto what Contentdrips is used for — LinkedIn carousels. Write the slides as spreadsheet columns, and Orshot renders a native LinkedIn PDF carousel and posts it on schedule. Copy it into your workspace and turn it on: [Turn spreadsheet rows into LinkedIn carousels workflow on Orshot](https://orshot.com/workflows/linkedin-carousels-from-sheet/embed) Same idea for Instagram, where each row becomes a multi-slide post: [Turn spreadsheet rows into Instagram carousels workflow on Orshot](https://orshot.com/workflows/instagram-carousels-from-sheet/embed) The rest, all working presets rather than concepts: - **[LinkedIn carousels from Notion](https://orshot.com/workflows/linkedin-carousels-from-notion)** — add a page to your content calendar, get a carousel posted and the post link written back onto the page - **[LinkedIn carousels from Airtable](https://orshot.com/workflows/linkedin-carousels-from-airtable)** — same idea, driven from a base - **[One row, a post on every channel](https://orshot.com/workflows/images-from-sheet-to-social)** — render a branded image per row and push it to Instagram, LinkedIn and X - **[Quote videos to TikTok](https://orshot.com/workflows/quote-videos-to-tiktok)** — a sheet of quotes becomes a daily short video - **[Pinterest pins from a spreadsheet](https://orshot.com/workflows/pinterest-pins-from-sheet)** — branded pins on a schedule, instead of an afternoon in Canva - **[Tweets into visuals](https://orshot.com/workflows/tweet-to-visual)** — turn a post into a shareable graphic **Run one of these on your own data** — Pick a workflow, connect your sheet, and watch it post. 100 free credits a month. [Start free](https://orshot.com/pricing?via=blog-contentdrips-workflows) ## The Real Problems with Contentdrips API Based on what teams switching from it tell us: ### 1. It's a Social Media Tool First Contentdrips built their API on top of a LinkedIn content creation tool. The templates are optimized for carousels and social posts. If you need OG images, product mockups, certificates, or anything that isn't social media content, you're bending the tool. Orshot is API-first. Every feature is built around programmatic image generation, not tacked on to a social media scheduler. ### 2. Awkward Pricing Tiers Their API has four tiers: - Free: 10 API calls, one-time - Basic ($39/month): 1,000 calls - Advanced ($149/month): 6,000 calls - Pro ($359/month): unlimited The gaps are the problem. Basic to Advanced is a 282% price rise for 6x the calls. Advanced to Pro is another 141%. Need 8,000 images a month? You're on the $359 plan, paying the same as someone rendering half a million. Orshot moves in smaller steps: $39 for 1,500 credits, $99 for 5,000, $160 for 20,000, $280 for 40,000, $349 for 75,000, $480 for 150,000, $600 for 300,000. ### 3. Fewer Places to Plug It In Credit where it's due: Contentdrips ships native Make, Zapier and n8n nodes, and they launched an MCP server that works with Claude and Cursor, with basic access on their free plan. That's a real integration story and I'm not going to pretend otherwise. What they don't have is a dedicated integrations page (contentdrips.com/integrations returns a 404), SDKs in any language, spreadsheet import, design-tool import, or storage you control. Orshot has 15+ purpose-built integrations, and the ones that matter for social are first-party: native workflows with a publish step, Google Sheets, Airtable and Notion as triggers, plus n8n, Make, Zapier and Pipedream if you would rather orchestrate elsewhere. > I am glad to quit Canva, they make it difficult to use API. > I really want to use Orshot in my content production app. Orshot is perfect product to fit my needs. > > — Francesca Olinga, Founder, Experience Care ## Contentdrips API Pricing in 2026 (and How Orshot Compares) Contentdrips runs four API tiers, all billed monthly — there's no annual option on the API. Here's each one against the closest Orshot plan. Prices checked against contentdrips.com/api in July 2026: | Contentdrips plan | Contentdrips | Closest Orshot plan | Orshot | Orshot video | | ----------------------------- | ------------ | ---------------------- | --------- | ------------ | | Free · 10 API calls, one-time | \$0 | Free · 100 credits/mo | **\$0** | ~100 secs | | Basic · 1,000 calls/mo | \$39 | Launch · 1,500 credits | **\$39** | ~25 mins | | Advanced · 6,000 calls/mo | \$149 | Launch · 5,000 credits | **\$99** | ~83 mins | | Pro · unlimited calls | \$359 | Grow · 20,000 credits | **\$160** | ~333 mins | | Pro · unlimited calls | \$359 | Scale · 75,000 credits | **\$349** | ~1,250 mins | On Orshot 1 credit is 1 image, 1 PDF page or 1 second of video, so the video column is just the credit allowance in minutes. Contentdrips' API returns PNG and PDF only, so there's no video figure to compare. Two things their pricing page gates that ours doesn't: **webhooks start on the \$149 Advanced plan**, and **"commercial use rights" is listed as a \$359 Pro feature**. Both are on every Orshot plan, including the free one. Worth checking against your own use before you pick a tier. And be honest about where they win: **Pro is unlimited.** Past roughly 75,000 renders a month their \$359 is the smaller number, and no amount of table formatting changes that. Below that, the middle of the range is where the gap lives — at 6,000 renders their \$149 against \$135 on Orshot (\$99 Launch plus 1,000 overage credits at \$36), and at 20,000 you're comparing \$359 to \$160. Their app plans are separate from the API and default to yearly billing on their pricing page: Starter shows \$15/mo and Teams \$29/mo on the yearly toggle, but month-to-month they're **\$19 and \$35**. **1,500 credits for $39, and video in the same plan** — Test it against your own volume before you move anything. [Start free](https://orshot.com/pricing?via=blog-contentdrips-pricing) ## When Contentdrips Makes Sense I'll be fair - if your use case is specifically LinkedIn carousels and you also want the AI post writing and personal branding features, Contentdrips is purpose-built for that. But if you're here because you need a dedicated image generation API with social posting built in, Orshot covers both — render an image and post it to 15+ platforms in the same API call, no separate scheduler needed. ## Switching from Contentdrips Here's how to migrate: ### Step 1: Recreate Your Templates (15-30 min) **Use the visual editor** - Open [Orshot Studio](https://orshot.com/studio) and recreate your designs. If you have carousel templates, use our [multi-page feature](https://orshot.com/blog/introducing-carousel-templates). **Use AI** - Screenshot your Contentdrips output, drop it into the [AI Template Generator](https://orshot.com/features/ai-template-generator). It'll recreate the layout, you fine-tune. **Import from design tools** - If you have source files in Canva or Figma: - [Clone from Canva](https://orshot.com/solutions/canva-template-to-api) - [Import from Figma](https://orshot.com/solutions/figma-automation-via-rest-api) Try it now — paste a public Canva share link and see it as an Orshot template: You can create multi-page templates, [share them through public links or embeds](https://orshot.com/blog/sharing-orshot-templates) with different view modes — the editor at the top of this page is one — and [invite your team to collaborate](https://orshot.com/features/team-collaboration) on design and template integration. ### Step 2: Update Your API Calls (10 min) Here's what changes: **Contentdrips API Call:** ```javascript const response = await fetch( "https://generate.contentdrips.com/render?tool=carousel-maker", { method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer YOUR_API_KEY", }, body: JSON.stringify({ template_id: "your_template_id", output: "png", branding: { name: "Jane Doe", handle: "@janedoe", }, carousel: { intro_slide: { heading: "Start Here" }, slides: [{ heading: "Tip 1", description: "Details" }], }, }), }, ); ``` **Orshot API Call:** ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "orshot_template_id", modifications: { name: "Jane Doe", handle: "@janedoe", heading: "Start Here", // Dynamic parameters - override any style property // Docs: https://orshot.com/docs/dynamic-parameters "heading.fontFamily": "Space Mono", "name.color": "#FF5733", }, response: { type: "url", // url, base64, binary format: "png", // png, jpg, webp, avif, pdf, mp4, webm, gif }, }), }); ``` **Main differences:** - Simpler modification structure (flat object) - Element names you define in the template - Explicit response format specification - Multi-page templates handled natively **Helpful docs:** - [API Reference](https://orshot.com/docs/api-reference) - Complete API documentation - [Render from Template](https://orshot.com/docs/api-reference/render-from-studio-template) - Main endpoint you'll use - [SDKs](https://orshot.com/docs/sdks) - Node, Python, Ruby, PHP libraries - [Setting Parameters](https://orshot.com/docs/orshot-studio/setting-parameters) - How to make templates dynamic ### Step 3: Test It (5 min) Render one carousel through the API and put it next to your Contentdrips output. Then send the same render to a connected social account as a **draft** — that's the step Contentdrips' API can't do, and it's the fastest way to see whether the render-then-post loop really collapses into one tool for you. ### Need Help? There's a chat button on the bottom right, and it's me or someone on the team behind it. Send over your Contentdrips carousel and branding kit — we'll rebuild them as a multi-page Studio template you can render from a single call. ## Common Questions **Q: Can Orshot post to social media, or only generate the image?** Both. Orshot renders the asset and publishes it to 15+ platforms — Instagram, LinkedIn, X, TikTok, Facebook, Pinterest, YouTube, Threads and more — either from Studio or in the same API call. You can post now, schedule it, or save it as a draft for someone to approve. Contentdrips schedules to LinkedIn and Instagram. **Q: Can I post carousels to LinkedIn and Instagram?** Yes. A multi-page Orshot template posts as a native LinkedIn PDF carousel or an Instagram multi-slide from one call. There are ready-made [workflow presets](https://orshot.com/workflows/linkedin-carousels-from-sheet) that take carousel slides from a Google Sheet, Airtable or Notion and publish them on a schedule. **Q: Can I build my own app on top of Orshot?** Yes. Contentdrips is a SaaS tool for end users; Orshot is API-first. There are [SDKs](https://orshot.com/docs/sdks) for Node, Python, Ruby and PHP, and a white-label [Studio Embed](https://orshot.com/blog/image-editor-sdk) you can drop into your own product so your users design and render without leaving it. **Q: Does Orshot support multi-page carousels?** Yes. A [multi-page template](https://orshot.com/blog/introducing-carousel-templates) renders as a carousel from one API call, so a spreadsheet of slide copy becomes hundreds of finished carousels without anyone opening an editor. The same template also exports as a PDF or an MP4. **Q: Can I generate videos using Orshot?** Yes. Contentdrips is limited to static images. Orshot has a full video editor with a visual timeline, per-layer animations, audio tracks, and auto-subtitles. Generate MP4, WebM, or GIF — all controllable via API. **Q: Does Orshot integrate with n8n?** Yes. We have a dedicated node for [n8n](https://orshot.com/docs/integrations/n8n) (self-hosted or cloud), making it easy to build complex, private automation workflows that Contentdrips doesn't support. **Q: Is Orshot good for bulk generation?** It's built for it. Renders process in parallel, and a Google Sheet, CSV or API loop can drive thousands of them in one workflow run. Plans scale to 300,000 credits a month with pay-as-you-go overage beyond that, so batch size is a plan choice, not an architecture problem. **Q: Can I generate multi-page PDFs with Orshot?** Yes. Unlike Contentdrips, Orshot supports multi-page PDF generation for invoices, certificates, reports, and slide decks. Generate complete documents in a single API call. **Q: Is there an agency partner program?** Yes. Our [Agency Partner Program](https://orshot.com/partner-program) is free to join and includes unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools for agencies. **Q: What automation platforms does Orshot support?** Orshot integrates with [Zapier](https://orshot.com/docs/integrations/zapier), [Make](https://orshot.com/docs/integrations/make), [n8n](https://orshot.com/docs/integrations/n8n), Airtable, and more. There are also native workflows that trigger, render and publish on a schedule, plus a full REST API with SDKs. ## Examples and Tutorials ### Carousel Templates How to create multi-page templates and automate them: [Watch the video](https://www.youtube.com/watch?v=EXJoMeGyEhM) ### Import from Canva Clone your existing Canva designs and [turn them into API endpoints](https://orshot.com/solutions/canva-template-to-api): [Watch the video](https://www.youtube.com/watch?v=P4AHj3dpJXw) ### Import from Figma [Use the Figma plugin](https://orshot.com/solutions/figma-automation-via-rest-api) to import your designs directly: [Watch the video](https://www.youtube.com/watch?v=ggvLR0HLJ7Q) ## Bottom Line Contentdrips is good at LinkedIn content creation, and the AI post writing is genuinely useful if that is the job. But if you post to more than two platforms, need video, or want the render and the post to happen in one place, that is what Orshot is built for. If you're also comparing other image generation APIs like [Bannerbear](https://orshot.com/blog/bannerbear-api-alternative), [Placid](https://orshot.com/blog/placid-api-alternative), or [Abyssale](https://orshot.com/blog/abyssale-api-alternative): Bannerbear is the closest to Contentdrips' API model but has no publishing side; Placid is the cheapest for plain sub-4000px images and nothing else. Each of those pages walks the same verified pricing you saw above. Test everything free with 100 credits a month. ## For Agencies Building social image and video automation for multiple clients? Check out the [Agency Partner Program](https://orshot.com/partner-program) — free to join, unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools. Weighing up the AI-generator route instead? [Predis.ai](https://orshot.com/blog/predis-ai-alternative) writes and designs the whole post from a prompt — faster to start, but you don't get to keep the layout. ## Try It 1. [Sign up](https://orshot.com/pricing?via=blog-contentdrips-footer) - 100 free credits every month, no card needed 2. Recreate one of your templates (or use AI) 3. Test with your actual data 4. See if it works for you If you get stuck, hit the chat button. I'll help you out. --- ### [A CraftMyPDF Alternative with Unlimited Templates](https://orshot.com/blog/craftmypdf-api-alternative) > A CraftMyPDF alternative for PDF generation via API with unlimited templates and certificates from Google Sheets or Airtable in n8n and Zapier Most teams that go looking for a CraftMyPDF alternative hit the same wall, and the PDFs themselves are fine. The problem is the template count. CraftMyPDF plans cap how many templates you can keep: - **Free:** 3 - **Lite:** 6 - **Plus:** 15 - **Professional:** 50 That's fine for one invoice and one certificate. It gets tight when every client, event or language needs its own design. You end up deleting old templates, or moving up a plan you don't need for volume. The other gap shows up later. The PDF is rarely the only file. The certificate needs a LinkedIn share image, the property listing needs an Instagram post, and the report needs a cover graphic. That's a second tool with a second template. I built [Orshot](https://orshot.com/) so one template covers all of it: - Design in a Figma-like editor with your brand fonts and colors - Every layer becomes an API parameter - The same template renders as a PDF, an image or a video - Every plan includes unlimited templates 100 free credits a month for PDFs and images. Unlimited templates on every plan. No card needed. [Try Orshot free](https://orshot.com/pricing?via=blog-craftmypdf-top) ![The CraftMyPDF homepage: design and generate PDF documents from reusable templates with a drag and drop editor, expressions and a REST API](https://orshot.com/blog/craftmypdf-api-alternative/craftmypdf-homepage.webp) ## CraftMyPDF vs Orshot: What's Different | Feature | Orshot | CraftMyPDF | | :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------- | | **Template limit** | Unlimited on every plan | 3 (Free), 6 (Lite), 15 (Plus), 50 (Professional), then 1,000+ | | **Output formats** | PDF, PNG, JPG, WebP, AVIF, MP4, WebM, MOV, MKV and GIF from the same template | PDF, plus PNG and JPEG from an image endpoint. No video | | **Editor** | [Orshot Studio](https://orshot.com/features/orshot-studio), a Figma-like design editor with your brand kit | Drag and drop document editor, plus HTML | | **Long content** | [Flowing text](https://orshot.com/docs/orshot-studio/flowing-content) that adds pages as it needs them, with repeating headers and footers | Page breaks and arrays | | **Rendered files** | A file URL kept for at least a year, or [pushed to your Drive, Dropbox, S3 or R2](https://orshot.com/features/bring-your-own-storage) on every paid plan | Links expire after 1 minute to 7 days (5 minutes by default). Your own S3 from \$99 | | **Team members** | 2 included from \$39 | Teams from \$99 | | **AI agents** | [Orshot for agents](https://orshot.com/agents), a first-party MCP server that lists, renders and even creates templates | Only through third-party MCP servers (Zapier, Composio, Pipedream) | | **Built-in workflows** | [Trigger from Sheets or Airtable, render, then send](https://orshot.com/workflows) | Via Zapier, Make, n8n or Bubble | | **Template import** | [Canva](https://orshot.com/solutions/canva-template-to-api), Figma and Polotno | Their editor or HTML | CraftMyPDF details checked against craftmypdf.com in September 2026. ### Orshot vs CraftMyPDF in Numbers Three numbers you can check yourself on their public pricing page and docs. ## Where CraftMyPDF Setups Get Stuck The friction people describe in the Make and n8n communities is in the edges around the PDF: - **The template cap.** Agencies and multi-brand teams run out of template slots long before they run out of PDF credits. - **Type errors from spreadsheets.** A number that arrives from Google Sheets as text breaks the render with "Invalid number in parameter", which shows up in the Make community. - **Timeouts on longer documents.** Make modules time out after 40 seconds, so longer PDFs have to be rebuilt around CraftMyPDF's async endpoint and a second webhook scenario. - **Links that expire fast.** Generated file links last 5 minutes by default, so every workflow needs a step that downloads the file and uploads it somewhere else. Sending it straight to your own storage starts on the \$99 plan. - **PDF only.** When the certificate also needs a share image, or the listing needs a social post, that's a second product. ## Design the Template Once, Render It Everywhere You design in Orshot Studio, a Figma-like editor. Drop in text, images and shapes, apply your brand kit, and mark any layer as dynamic. Each dynamic layer becomes an API parameter with the name you give it, like `recipient_name` or `course_title`. The API tab writes the request for you. ![Automating a template in Orshot: design once in Studio, then every dynamic layer becomes an API parameter](https://orshot.com/home/new/automate-templates.png) The things that make PDF templates work in production are built in: - **Multi-page.** Design each page, and fill every page from one call with `page2@headline` style parameters. See [multi-page PDFs](https://orshot.com/docs/pdf-generation/multi-page-pdfs). - **Flowing content.** Set a text layer to Flow and long content spills onto as many pages as it needs, with headers, footers and page numbers repeating on each one. - **Print ready.** PDFs are print ready at the default settings, and you can set margins, CMYK color mode, image compression and page range per render with `pdfOptions`. - **Clickable links.** Give any text or image an `href` and it's a live link in the PDF. - **Brand kit.** Fonts, colors and logos come from your [brand kit](https://orshot.com/features/brand-assets-library), so every template stays on brand. Already have a design in Canva or Figma? [Import it](https://orshot.com/docs/importing-templates) instead of rebuilding from scratch. ## What People Make With It The templates that fit Orshot best are designed documents, where the layout matters as much as the data: - **Certificates** for courses, events and awards. The [Google Sheets certificate tutorial](https://orshot.com/blog/google-sheets-certificates-automation) walks through the whole flow. - **Reports and one-pagers** with charts, KPIs and a branded cover. - **Brochures and real estate listing PDFs** with photos, price, address and agent details. - **Event badges, tickets and name cards** with each attendee's name, photo and role. - **Menus, flyers and product sheets** that also go out as social posts. The same template also renders as an image. So the certificate gets a matching LinkedIn share card, and the listing gets an Instagram post, from the same data. ![One Orshot template rendered as an A4 PDF certificate and a matching LinkedIn share image](https://orshot.com/blog/craftmypdf-api-alternative/certificate-and-share-image.webp) - [Smart Resize](https://orshot.com/features/smart-resize) re-fits the A4 layout to a square or a story size - [Social publishing](https://orshot.com/docs/publish/introduction) (\$12 a month per connected account) can post it for you ## One API Call for PDFs and Images Here's the render. The tabs show a certificate PDF, the same template as a share image, a multi-page report, an async render for longer documents, and the CraftMyPDF call it replaces. Fill the name, course and date, set CMYK for print, and get a PDF link back. ```javascript const res = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "YOUR_TEMPLATE_ID", modifications: { recipient_name: "Priya Sharma", course_title: "Advanced Data Analysis", completion_date: "25 September 2026", }, response: { type: "url", format: "pdf" }, pdfOptions: { colorMode: "cmyk", margin: "20px" }, }), }); ``` The same template and data, rendered as a PNG the recipient can post on LinkedIn. Only the format changes. ```javascript body: JSON.stringify({ templateId: "YOUR_TEMPLATE_ID", modifications: { recipient_name: "Priya Sharma", course_title: "Advanced Data Analysis", }, response: { type: "url", format: "png" }, }), ``` Every page in one call. Prefix a parameter with the page number to fill each one. ```javascript body: JSON.stringify({ templateId: "YOUR_TEMPLATE_ID", modifications: { "page1@client_name": "Northwind Traders", "page1@period": "Q3 2026", "page2@revenue_chart": "https://cdn.example.com/q3-revenue.png", "page3@summary": "Revenue grew 18% on the back of repeat orders.", }, response: { type: "url", format: "pdf" }, }), ``` Long documents can run in the background on the same endpoint, so there's no 40 second Make timeout to design around. Pass your own record ID as `metadata` and it comes back in the webhook, so the PDF lands on the right row. ```javascript body: JSON.stringify({ templateId: "YOUR_TEMPLATE_ID", modifications: { client_name: "Northwind Traders" }, response: { mode: "async", format: "pdf" }, webhook_url: "https://acme.com/hooks/orshot", metadata: "airtable-rec8412", }), // Your webhook receives: // { // "event": "render_job.finished", // "job": { "id": 1204, "status": "succeeded", "result": { ... }, "metadata": "airtable-rec8412" } // } ``` For comparison, the same certificate on CraftMyPDF. ```javascript const res = await fetch("https://api.craftmypdf.com/v1/create", { method: "POST", headers: { "X-API-KEY": "YOUR_CRAFTMYPDF_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ template_id: "YOUR_CRAFTMYPDF_TEMPLATE_ID", data: { recipient_name: "Priya Sharma", course_title: "Advanced Data Analysis", completion_date: "25 September 2026", }, export_type: "json", }), }); // The file link is temporary (5 minutes by default), so save it right away ``` Full references: [PDF generation](https://orshot.com/docs/pdf-generation), [PDF options](https://orshot.com/docs/pdf-generation/pdf-options), [async renders](https://orshot.com/docs/api-reference/async-render-start) and [dynamic parameters](https://orshot.com/docs/dynamic-parameters). ## Google Sheets, Airtable, n8n and Zapier CraftMyPDF connects to Zapier, Make, n8n and Bubble, and so does Orshot. There's a first-party [n8n node](https://orshot.com/docs/integrations/n8n) plus [Make](https://orshot.com/docs/integrations/make) and [Zapier](https://orshot.com/docs/integrations/zapier) apps. Swapping the PDF step in an existing scenario takes a few minutes. Rather not run a separate automation tool? Orshot Workflows do the whole loop: - **Trigger** from Google Sheets, Airtable, Google Forms or a webhook - **Render** the template - **Send** the file to email, Drive, your own endpoint or a social account Here's one that turns every row of a Google Sheet into a certificate PDF and saves it to Google Drive, with no download and upload step in between: [Issue a certificate PDF for every row of a Google Sheet on Orshot](https://orshot.com/workflows/certificate-generator/embed) Need people outside your team to generate their own PDFs? [Template Forms](https://orshot.com/blog/template-forms) share any template as a public form. They fill it in and download the file, with no account and no automation to build. With Orshot for agents, Claude, ChatGPT or Cursor can list your templates, render a certificate or a report, and design a new template from a prompt. It's a first-party MCP server. CraftMyPDF is only reachable through third-party MCP servers. **Unlimited templates on every plan** — One template for the PDF and the social image. 100 free credits a month to test it on your own data. [Start free](https://orshot.com/pricing?via=blog-craftmypdf-middle) ## CraftMyPDF Pricing, and How Orshot Bills CraftMyPDF charges per document, whatever the page count, with a template cap on each plan: - **Free:** 50 PDFs a month, 3 templates - **Lite:** \$29 a month, 1,200 PDFs, 6 templates - **Plus:** \$49 a month, 3,000 PDFs, 15 templates - **Professional:** \$99 a month, 12,000 PDFs, 50 templates - **Premium:** \$299 a month, 40,000 PDFs, 1,000 templates - **Business:** \$499 a month, 150,000 PDFs, 10,000 templates Annual billing is 10 months' price, and unused credits don't roll over. Teams and sending files to your own S3 bucket start on Professional. Prices checked against craftmypdf.com/pricing in September 2026. Orshot uses one credit for 1 PDF page, 1 image or 1 second of video. Every plan includes unlimited templates, and every paid plan includes your own storage (Drive, Dropbox, S3 or R2) and 2 team members. ## Other CraftMyPDF Alternatives If you're weighing CraftMyPDF, these are the other tools that usually come up. ### PDFMonkey ![The PDFMonkey homepage: automate PDF generation with templates, dynamic data and a REST API](https://orshot.com/blog/craftmypdf-api-alternative/alt-pdfmonkey.webp) [PDFMonkey](https://orshot.com/blog/pdfmonkey-alternative) builds templates in HTML and CSS, then fills them with data through a REST API. It suits developers who want to write the document as code. ### APITemplate.io ![The APITemplate.io homepage: generate images and PDFs from templates via API](https://orshot.com/blog/apitemplate-io-alternative/apitemplate-homepage.webp) APITemplate.io renders both images and PDFs from templates, with a visual editor for images and HTML templates for PDFs. [Read the full APITemplate.io comparison →](https://orshot.com/blog/apitemplate-io-alternative) Verified pricing for more PDF tools, at 1,000, 10,000 and 100,000 documents a month, is in our [PDF generation API comparison](https://orshot.com/blog/best-pdf-generation-apis). ## When CraftMyPDF Fits Better CraftMyPDF is built as a document tool. It has tools Orshot doesn't for: - Invoices or statements with line-item tables that grow with the data - Filling existing PDF forms - Merging and splitting files, adding passwords and collecting e-signatures It also bills per document, so long PDFs cost less there. Orshot fits when the PDF is designed, when you need many templates, or when the same design also has to go out as an image or a video. See the [PDF generation API](https://orshot.com/solutions/pdf-generation-api) page for the full picture. ## Switching From CraftMyPDF Most switches take an afternoon. 1. **Rebuild the template.** Recreate it in Studio, import it from Canva or Figma, or describe it to the [AI Design Agent](https://orshot.com/blog/introducing-design-agent). Name each dynamic layer after your old data key and your mapping stays the same. 2. **Swap the API call.** Replace `template_id` and `data` with `templateId` and `modifications`, and set `response.format` to `pdf`, as in the code tabs above. In n8n, Make or Zapier, swap the CraftMyPDF step for the Orshot one. 3. **Run both side by side.** Compare a few real documents, tweak spacing in Studio, and cut over when they match. Stuck on a template? Hit the chat button and I'll help you move it over. ## Common Questions **Q: What is CraftMyPDF?** CraftMyPDF is a PDF generation API. You design a document template in its drag and drop editor or in HTML, then send JSON data to the API to get a PDF back. It's often used for invoices, certificates, labels and reports. Orshot covers the same template-to-PDF job with a Figma-like editor, unlimited templates, and the same template rendering as images or video too. **Q: How much does CraftMyPDF cost?** CraftMyPDF has a free plan with 50 PDFs and 3 templates a month. Paid plans are Lite at $29 (1,200 PDFs, 6 templates), Plus at $49 (3,000 PDFs, 15 templates), Professional at $99 (12,000 PDFs, 50 templates), Premium at $299 and Business at $499. One PDF is one credit regardless of page count. Checked against craftmypdf.com/pricing in September 2026. Orshot starts free with 100 credits a month, then $39 a month for 1,500 credits, with unlimited templates on every plan. **Q: How many templates can I have on CraftMyPDF?** It depends on the plan: 3 on Free, 6 on Lite, 15 on Plus, 50 on Professional, 1,000 on Premium and 10,000 on Business. Orshot has no template limit on any plan, including Free, so you can keep a template per client, event or language without upgrading. **Q: Does Orshot work with n8n, Zapier and Make like CraftMyPDF?** Yes. Orshot has a first-party n8n node and Zapier and Make apps. It also has built-in workflows that trigger from Google Sheets or Airtable, so simple PDF automations don't need a separate tool. **Q: Can I generate certificates from Google Sheets?** Yes. Design the certificate in Studio, connect a Google Sheet, and each new row renders a PDF with the recipient's details. The certificate tutorial covers every step, and the same template can also render a share image for each recipient. **Q: Can one template make both a PDF and an image?** Yes. Every Orshot template renders as PDF, PNG, JPG, WebP or AVIF, and video templates as MP4, WebM, MOV, MKV or GIF. Change `response.format` in the same API call and the same design comes back in the new format. **Q: Can AI agents generate PDFs with Orshot?** Yes. Orshot for agents is a first-party MCP server, so Claude, ChatGPT, Cursor and other agents can list your templates, render PDFs or images, and create new templates from a prompt. CraftMyPDF is only reachable through third-party MCP servers such as Zapier's. **Q: Is there a free CraftMyPDF alternative?** Orshot has a free plan with 100 credits every month for images and PDFs, where 1 credit is one image or one PDF page, and no card is needed. There is no template limit on the free plan. CraftMyPDF's free plan covers 50 PDFs and 3 templates a month. **Q: How do I migrate from CraftMyPDF to Orshot?** Rebuild each template in Studio, or import the design from Canva or Figma, and name each dynamic layer after the JSON key you already send. Then swap the CraftMyPDF API call for the Orshot render call with the same data as modifications. If a template is fiddly to rebuild, hit the chat button and we'll help move it over. **Q: Can I save generated PDFs to my own S3 or Google Drive?** Yes. Every paid Orshot plan can push renders to your own Amazon S3, Cloudflare R2, Google Drive or Dropbox, from $39 a month. See [S3 compatible storage](https://orshot.com/docs/integrations/s3-storage) for the bucket setup. On CraftMyPDF, your own storage starts on the $99 plan. **Q: How long do generated PDF links last?** Orshot returns a file URL that stays live for at least a year, so you can drop it straight into an email, a CRM record or a sheet. CraftMyPDF links expire after 5 minutes by default and 7 days at most, so most automations add a step to copy the file somewhere first. **Q: Can Orshot make multi-page PDFs like reports and brochures?** Yes. Design each page in one template and render them all in a single call, filling fields page by page. Long text can flow onto extra pages automatically, with headers and footers repeated on each one. Every page counts as one credit. ## Try It [Sign up](https://orshot.com/pricing?via=blog-craftmypdf-footer), rebuild one CraftMyPDF template in Studio, and render it as a PDF and a PNG from the same call. You start with 100 free credits a month, unlimited templates, and no card. If something doesn't work the way you expect, hit the chat button. I'm usually the one on the other end. --- ### [A Designer Friendly Creatomate Alternative with Better Pricing](https://orshot.com/blog/creatomate-api-alternative) > A Creatomate alternative with a visual editor, flat credits with zero resolution math, and a white-label embed on every plan. Get 100 free credits a month to start. When people search for a Creatomate alternative, it usually comes down to three things: - First, your designers can't actually work in JSON, so every small tweak requires a developer - Second, the resolution-based credit system makes monthly costs impossible to predict - Or third, you've outgrown the Essential plan, but the $109 Growth jump feels unnecessarily steep. Creatomate is a solid product if you're a developer-only team rendering complex video at scale. But it was built around JSON templates and resolution-based credits. That structure breaks the moment you need a designer to edit a template, or when you start rendering more images than videos. I built [Orshot](https://orshot.com/) to fix exactly that. Here's the template for this post open in Orshot's Studio. Hit play on the timeline at the bottom to watch the animation — this is the visual video editor Creatomate replaces with JSON. The same template renders as an image, a PDF, or a video. [Orshot Studio video editor — an animated food-delivery ad template with a play timeline](https://orshot.com/templates/shared/t97ofe60/embed?view=play) It gives you a visual drag-and-drop editor your designers will actually enjoy using. It uses flat per-credit pricing with zero resolution math — 1 credit = 1 image, 1 PDF page, or 1 second of video. It gives you multi-page templates and a full white-label editor on every paid tier. 100 credits a month, no card needed. Images, PDFs and video on one plan. [Try Orshot free](https://orshot.com/pricing?via=blog-creatomate-top) **TL;DR** — Pick by your team: - **Designers editing templates, not developers**: Orshot — A visual editor instead of JSON, so designers ship changes themselves. - **Predictable credits across image, PDF and video**: Orshot — 1 credit = 1 image, 1 PDF page or 1 second of video, at any resolution. - **Complex multi-track programmatic video at scale**: [Creatomate](#when-creatomate-is-still-the-right-call) — Its JSON engine handles deep multi-track compositing. ![The Creatomate homepage — a media automation platform that generates videos and images from JSON templates via API](https://orshot.com/blog/creatomate-api-alternative/creatomate-homepage.webp) ## What's Different If you're already on Creatomate, here's what changes when you switch: | Feature | Orshot | Creatomate | | :-------------------------- | :--------------------------------------------------------------------------------- | :-------------------------------------------------------------------- | | **Free tier** | 100 credits a month, resets monthly | 50-credit trial | | **Entry plan** | \$39/month for 1,500 credits | \$54/month for 2,000 credits (\$45 billed annually) | | **Template editing** | Visual drag-and-drop [Studio](https://orshot.com/studio) | JSON templates | | **Credit model** | Flat — 1 credit = 1 image, 1 PDF page or 1 second of video, at any resolution | Video credits scale with resolution and frame rate | | **Multi-page templates** | [Carousels, PDFs and videos in one API call](https://orshot.com/blog/introducing-carousel-templates) | No — stitch them yourself | | **White-label editor** | [Studio Embed](https://orshot.com/blog/orshot-studio-embed) on every paid plan from \$39 | JS Preview SDK (Growth+, \$109) — a preview widget, not a full editor | | **Render storage** | [Push to Drive, Dropbox, S3 or R2](https://orshot.com/features/bring-your-own-storage) | Hosted on their CDN, auto-deleted after 30 days | | **Public self-serve forms** | [Template Forms](https://orshot.com/blog/template-forms) — share a template as a form | No | | **Native workflows** | [Trigger, render and publish on a schedule](https://orshot.com/workflows) | Zapier, Make or n8n | | **Social publishing** | [Built in, 15+ platforms](https://orshot.com/docs/publish/introduction) | No | | **Template creation** | [Canva](https://orshot.com/solutions/canva-template-to-api), Figma import, or AI | Manual, in JSON | | **Integrations** | n8n, Zapier, Make, Pipedream, MCP server, Dynamic URLs | Zapier, Make, n8n, Pabbly | ## The friction with Creatomate ![What Creatomate users keep fixing: designers can't edit JSON, credits scale with resolution, no multi-page templates, editor SDK locked to $109, renders vanish in 30 days, and unpredictable video cost](https://orshot.com/blog/creatomate-api-alternative/frictions.webp) - **JSON templates.** Designers can't iterate without a developer in the loop. - **Resolution-based credits.** 1080p eats more than 720p. Budgeting becomes guesswork. - **No multi-page.** Carousels, PDFs, and slideshows have to be stitched together manually. - **JS Preview SDK gated.** Locked behind the $109 Growth plan (and it's only a preview widget, not the editor). - **Renders auto-delete.** Files vanish after 30 days. No first-party limits to push to your own S3/Drive. - **Tutorials over help.** You get feature walkthroughs when you actually just need a quick answer. ## Creatomate Pricing in 2026 (and How Orshot Compares) Creatomate runs three plans — Essential, Growth and Beyond — and the pricing page defaults to annual billing, so the number you see first is the annual-effective rate (roughly two months cheaper than paying monthly). Here's the monthly rate against the closest Orshot plan, with the annual figure in brackets. Prices checked against creatomate.com/pricing in August 2026: | Creatomate plan | Creatomate | Closest Orshot plan | Orshot | | ------------------------- | ---------------- | ---------------------- | -------- | | Essential · 2,000 credits | \$54 (\$45/yr) | Launch · 1,500 credits | **\$39** | | Growth · 10,000 credits | \$129 (\$109/yr) | Grow · 20,000 credits | \$160 | | Beyond · 50,000 credits | \$329 (\$274/yr) | Scale · 75,000 credits | \$349 | On images the two are close — 1 image is 1 credit on both, so Essential works out to \$0.027 a credit against Orshot Launch's \$0.026. Read it honestly: - **On raw image credits they're competitive**, and if you pay annually and render only images, their \$45 for 2,000 edges Orshot's \$39 for 1,500. - **Video is where the models split — but not the way a sticker price suggests.** Creatomate bills video by resolution and frame rate (their own docs put 720p/25fps at about 14 credits a minute), so the same clip is cheap or expensive depending on settings, and you can't know the bill until you pick them. Orshot is a flat 1 credit per second — simpler to forecast, and it never changes because you bumped the resolution. - **The gated features are the real gap.** The white-label editor, multi-page templates, own-storage sync and social publishing are included on every Orshot plan; on Creatomate the editor SDK starts at Growth and renders auto-delete after 30 days. [Full pricing details here](https://orshot.com/pricing) **A credit that means one thing** — 1 image, 1 PDF page or 1 second of video — at any resolution. Test it on your own volume with 100 free credits a month. [Start free](https://orshot.com/pricing?via=blog-creatomate-pricing) ## What Orshot adds on top Here are a few things Orshot handles that Creatomate doesn't do at all: - **[AI Design Agent](https://orshot.com/blog/introducing-design-agent)** — Describe what you need ("Instagram promo with headline and logo") and it builds the layers and parameters for you. - **[Smart Resize & variants](https://orshot.com/features/smart-resize)** — Render one design at any size in a single call, the layout re-solves to fit, or return every social format at once with `extraSizes`. No redesigning per aspect ratio. - **[Studio Embed](https://orshot.com/blog/orshot-studio-embed)** — White-label the full editor inside your own app, with React and Vue SDKs. - **[Template Forms](https://orshot.com/blog/template-forms)** — Share any template as a public, self-serve form for clients or teammates. - **[Brand Kit](https://orshot.com/features/brand-assets-library)** — Centralize colors, fonts, logos and videos, and apply them to every render. - **[Bring your own storage](https://orshot.com/features/bring-your-own-storage)** — Pipe renders straight into Drive, Dropbox, S3 or R2 (Creatomate deletes them after 30 days). - **[Import from anywhere](https://orshot.com/docs/importing-templates)** — Bring designs in from Canva, Figma, HTML, a URL, Polotno, Bannerbear or Templated instead of starting from scratch. - **Developer tools everywhere** — [OAuth 2.0 apps](https://orshot.com/blog/orshot-for-developers), an [MCP server for agents](https://orshot.com/agents) with 60+ tools, a [VS Code extension](https://orshot.com/blog/orshot-ide-extension), a CLI, and native SDKs (Node, Python, Ruby, PHP). ![Automating template image generation with Orshot](https://orshot.com/home/new/automate-templates.png) ## Audio, subtitles and clips, controlled by the API Creatomate renders video, but Orshot's video is a visual template where every audio track, caption and clip is a parameter you override at render time. Set it up visually in Studio, then override any of it per render — one template becomes hundreds of on-brand videos. ![Orshot Studio's Page Audio panel: pick a track and replace it, trim it, set volume, fade, loop and mute, add multiple audio tracks, and toggle auto-subtitles — an AI transcription of the track burned in at render](https://orshot.com/blog/creatomate-api-alternative/studio-audio.webp) - **Dynamic audio** — add per-page music or a voiceover in Studio with volume, offset, loop, fade and trim, then swap the track for any render with `audioSource` (one URL, or per page). - **Dynamic subtitles** — auto-transcribe captions from the audio or video with Whisper, or pass an `.srt`/`.vtt`. Switch to word-by-word karaoke, and control font, size, weight, color, position, background pill, padding and shadow. - **Per-clip video control** — replace a clip's source and set its `trimStart`, `trimEnd`, `muted` and `loop` per element, per render. ```javascript await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_template_id", modifications: { headline: "Launch week", // per-clip control, by element id "bgVideo.trimStart": 2, "bgVideo.trimEnd": 8, "bgVideo.muted": false, }, response: { type: "url", format: "mp4" }, videoOptions: { audioSource: "https://cdn.example.com/track.mp3", // swap the soundtrack subtitleSource: "https://cdn.example.com/voiceover.mp3", // auto-transcribed captions subtitleMode: "word-by-word", // karaoke-style captions subtitleColor: "#ffffff", subtitlePosition: "bottom", }, }), }); ``` Every parameter is in the [video options](https://orshot.com/docs/video-generation/video-options), [video elements](https://orshot.com/docs/video-generation/video-elements) and [subtitles](https://orshot.com/docs/video-generation/adding-subtitles) docs. On Creatomate this lives in hand-written JSON and resolution-priced credits; on Orshot it's a visual timeline plus a flat 1 credit per second. ## Automate the Whole Loop, Not Just the Render A render API gives you one endpoint. Something still has to decide when to call it, where the data comes from, and where the finished file goes — usually Zapier, Make or n8n, which is a second subscription and a second thing to break. [Orshot Workflows](https://orshot.com/workflows) put that inside the same product as the template: - **Trigger** from Google Sheets, Airtable, Notion, Google Forms, HubSpot, Shopify, Drive or a plain webhook - **Render** one template or a whole batch - **Send** it to social, storage, email or your own endpoint - **Repeat** on a schedule, without you The one most Creatomate users would want first — a short-form video rendered and posted straight to TikTok on a schedule. Copy it into your workspace and turn it on: [Render and post a video to TikTok automatically on Orshot](https://orshot.com/workflows/random-drive-photo-to-tiktok/embed) A few more working presets in the same vein: [Instagram carousels from a sheet](https://orshot.com/workflows/instagram-carousels-from-sheet), [product marketing images from a catalog](https://orshot.com/workflows/product-marketing-images), and [sale and discount banners](https://orshot.com/workflows/sale-discount-banners). Creatomate has no workflow equivalent — scheduling and orchestration live in Zapier, Make or n8n on their side. ### Already on Make.com or n8n? Bring it with you If you found this page searching for a Creatomate Make.com integration or a Creatomate n8n setup, you don't lose that by switching. Orshot has a first-party [n8n node](https://orshot.com/docs/integrations/n8n) plus [Make](https://orshot.com/docs/integrations/make), [Zapier](https://orshot.com/docs/integrations/zapier) and [Pipedream](https://orshot.com/docs/integrations/pipedream) apps, so your existing scenarios keep working — swap the render step and the rest of the flow is unchanged. There's also [Orshot for agents](https://orshot.com/agents) so Claude, Cursor or Windsurf can render directly. ## Post to 15+ social accounts, then see what's working Creatomate stops at the render. Orshot takes it all the way to the post and back — from the same API: - **Publish from the render call** — add a `publish` object to any render and Orshot uploads it and posts to [15+ platforms](https://orshot.com/docs/publish/introduction): Instagram, TikTok, LinkedIn, X, YouTube, Facebook, Pinterest, Threads and more. Post instantly, save a draft, or schedule it with a `status` field. - **Or let an agent do it** — with [Orshot for agents](https://orshot.com/agents), Claude, Cursor or ChatGPT can render _and_ post on your behalf from a plain prompt. - **Then measure it** — [social analytics](https://orshot.com/features/social-analytics) tracks impressions, engagement, follower growth and best time to post for every connected account, with a daily digest email. ![Orshot's social analytics dashboard — impressions, engagement, posts published and follower growth across every connected account, with a cross-platform trend chart, share of impressions by platform, and a best-time-to-post heatmap](https://orshot.com/blog/introducing-social-analytics/analytics.webp) ```javascript await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_template_id", modifications: { headline: "Launch day" }, response: { type: "url", format: "mp4" }, publish: { accounts: [1, 2, 3], // connected TikTok, Instagram, LinkedIn content: "Out now →", }, }), }); ``` On Creatomate you'd render here, then bolt on Buffer or Hootsuite to post and a separate tool to see how it did. Orshot does all three. ## When Creatomate is still the right call I want to be honest here: if you need complex programmatic multi-track video compositing beyond what a template-based workflow handles, Creatomate's JSON engine is genuinely powerful. But with Orshot's visual video timeline, page-level audio, and auto-subtitles, the gap has narrowed significantly. For everything else — image-heavy workflows, carousels, PDFs, designers who want to edit templates without writing JSON, or a white-label editor without a $109 floor price — Orshot is the better fit. ## Switching Most people are done migrating in an afternoon. ### 1. Recreate templates visually You have three options (fastest first): - **[AI Design Agent](https://orshot.com/blog/introducing-design-agent)** — Describe the template or paste a screenshot, and get a working draft. - **[Import from Canva](https://orshot.com/solutions/canva-template-to-api)** or **[Figma](https://orshot.com/solutions/figma-automation-via-rest-api)** — Perfect if you already have the source files. - **Build in [Orshot Studio](https://orshot.com/studio)** — Drag-and-drop everything using [Smart Stacking](https://orshot.com/blog/smart-stacking) and your Brand Kit. Try it now — paste a public Canva share link and see it as an Orshot template: ### 2. Swap the API call Here's how the API call changes. **Creatomate:** ```javascript const response = await fetch("https://api.creatomate.com/v1/renders", { method: "POST", headers: { Authorization: "Bearer YOUR_CREATOMATE_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ template_id: "creatomate_template_id", modifications: { "Title.text": "Hello World", "Image.source": "https://example.com/photo.jpg", }, }), }); ``` **Orshot:** ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "orshot_template_id", modifications: { title: "Hello World", image: "https://example.com/photo.jpg", // Override any style property natively "title.fontFamily": "Space Mono", "image.borderRadius": "32px", }, response: { type: "url", // url, base64, binary format: "png", // png, jpg, webp, avif, pdf, mp4, webm, gif }, }), }); ``` It uses the same Bearer pattern, but with flat parameter keys (plus dot notation for style overrides), and an explicit output format. Check the [API docs](https://orshot.com/docs/api-reference), [SDKs](https://orshot.com/docs/sdks), or [Dynamic parameters](https://orshot.com/docs/dynamic-parameters) for more. Your API key lives under Settings in your Orshot dashboard, the same place Creatomate keeps theirs. ### 3. Run both in parallel for a day Compare the outputs side-by-side, tweak margins in Studio, and cut over when you're ready. If anything acts weird, just hit the chat button. I (or someone on the team) will help you migrate. ## Other Creatomate alternatives worth a look Orshot makes sense if you want a visual editor, flat credits and one plan for images, PDFs and video. If your bottleneck is somewhere else, these are the tools people also weigh against Creatomate. ### Bannerbear ![The Bannerbear homepage — auto-generate social media visuals and ecommerce banners via API and integrations](https://orshot.com/blog/creatomate-api-alternative/alt-bannerbear.webp) The most established name in image-generation APIs, with a deep bench of integrations (Zapier, Make, Airtable). It's image-first — video is basic and there's no visual timeline — and the bill climbs faster than Creatomate's once you scale. [Read the full Bannerbear breakdown →](https://orshot.com/blog/bannerbear-api-alternative) ### Placid ![The Placid homepage — a creative automation platform for images, PDFs and video from templates](https://orshot.com/blog/creatomate-api-alternative/alt-placid.webp) The closest to Creatomate on scope: images, PDFs and video from templates, with a real editor. The catch is the credit math — renders over 4000px multiply, PDF pages cost double, and the Editor SDK sits on the top plan. [Read the full Placid breakdown →](https://orshot.com/blog/placid-api-alternative) ### Templated.io ![The Templated.io homepage — automate images, videos and PDFs from dynamic templates with a drag-and-drop editor](https://orshot.com/blog/creatomate-api-alternative/alt-templated.webp) A lighter, cheaper template-to-API tool with a drag-and-drop editor and Canva import. Good if you mostly render images and want a low entry price; less suited to heavy video work. [Read the full Templated breakdown →](https://orshot.com/blog/templated-io-alternative) ### RenderForm ![The RenderForm homepage — a template editor to automate repetitive image and PDF creation](https://orshot.com/blog/creatomate-api-alternative/alt-renderform.webp) A budget-friendly image and PDF API with a component-based editor and a generous free tier. There's no video generation, so it's an image/PDF play rather than a Creatomate-style video engine. [Read the full RenderForm breakdown →](https://orshot.com/blog/renderform-api-alternative) Verified pricing and feature details for these and more are in our [template-based image generation tools](https://orshot.com/blog/template-based-image-generation-tools) comparison. ## Common questions **Q: What is Creatomate?** Creatomate is a media automation platform for generating videos and images from templates via API. It's built around JSON templates and resolution-based credits, which makes it a strong fit for developer teams rendering programmatic video at scale. [Orshot](https://orshot.com/) solves the same job — templates become API endpoints — but with a visual editor designers can use, flat credits, and images, PDFs and video on one plan. **Q: How much does Creatomate cost in 2026?** Creatomate has three plans, and the pricing page defaults to annual billing. Month-to-month: Essential $54 (2,000 credits), Growth $129 (10,000 credits), Beyond $329 (50,000 credits); annual billing is roughly two months cheaper ($45 / $109 / $274). There's a 50-credit free trial. Prices checked against creatomate.com/pricing in August 2026. [Orshot](https://orshot.com/pricing) starts free with 100 credits a month and every feature, then $39/month for 1,500 credits across images, PDFs and video. **Q: Does Creatomate have a free plan?** Not a permanent one — it's a 50-credit free trial, and generated files auto-delete after 30 days. Orshot's free tier is 100 credits a month that come back every month, with the visual editor, workflows and API included and no card required, and you can [push renders to your own Drive, Dropbox, S3 or R2](https://orshot.com/features/bring-your-own-storage) so nothing expires. **Q: How do I get a Creatomate API key?** In Creatomate, the API key lives in your dashboard under the project's API settings. Orshot works the same way — sign up, open Settings, and generate a key — then call `https://api.orshot.com/v1/studio/render` with a Bearer token. The request shape is nearly identical, so migrating an existing Creatomate integration is mostly a find-and-replace. **Q: Does Creatomate integrate with Make.com and n8n?** Yes, Creatomate has modules for Make.com and n8n. Orshot does too — a first-party [n8n node](https://orshot.com/docs/integrations/n8n), plus [Make](https://orshot.com/docs/integrations/make), [Zapier](https://orshot.com/docs/integrations/zapier) and Pipedream — so your existing scenarios port over by swapping the render step. Orshot also has [built-in Workflows](https://orshot.com/workflows), so for many setups you won't need a separate automation tool at all. **Q: Does Creatomate do video generation, and how does Orshot compare?** Video is Creatomate's core strength, and its JSON engine handles complex multi-track compositing well. Orshot also generates video (MP4, WebM, GIF) from a [visual timeline](https://orshot.com/blog/video-timeline-audio-subtitles) with per-layer animation, page-level audio and auto-subtitles. The difference is the credit model: Creatomate video credits scale with resolution and frame rate, while an Orshot second is always 1 credit — easier to forecast. **Q: Do I have to learn JSON to use Orshot?** No. Templates are built visually in [Orshot Studio](https://orshot.com/studio), so designers can edit them without a developer. You only touch JSON in the API call itself, and it's flat key-value pairs. **Q: Can I embed the editor in my own app?** Yes. [Studio Embed](https://orshot.com/blog/orshot-studio-embed) is a full, white-labeled editor on every paid plan from $39/month. Creatomate's JS Preview SDK is a preview widget rather than a full editor, and it starts on the Growth plan. ## Bottom Line Creatomate is a genuinely powerful JSON engine for developer teams rendering complex video at scale. But if your work is image-heavy, needs designers editing templates without touching JSON, or wants carousels, PDFs, a white-label editor and a credit that always means one thing, Orshot fits better — the same render-from-a-template model, without the resolution math or the 30-day render expiry. Building image, PDF or video automation for multiple clients? The [Agency Partner Program](https://orshot.com/partner-program) is free to join, with unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools. If you're also comparing [Bannerbear](https://orshot.com/blog/bannerbear-api-alternative), [Placid](https://orshot.com/blog/placid-api-alternative) or [APITemplate.io](https://orshot.com/blog/apitemplate-io-alternative), each runs the same verified-pricing format as this page. ## Try it [Sign up](https://orshot.com/pricing?via=blog-creatomate-footer), recreate one template (or let our AI do it for you), and run a few real renders against it. You'll start with 100 free credits a month and we don't ask for a card. If something isn't working right, or you just want help migrating your existing templates, hit the chat button on the bottom right. I'll generally be the one on the other end. --- ### [A Gamma.app Alternative with Design Control and API](https://orshot.com/blog/gamma-app-alternative) > Looking for a Gamma.app alternative? Orshot offers full design control, reliable exports, and a REST API for bulk image generation. 100 free credits a month. **TL;DR:** Orshot is a Gamma.app alternative built for teams that need full design control, reliable file exports (PNG, PDF, MP4), and a REST API for bulk image generation. No AI layout guessing, no broken PowerPoint exports. [Start free with 100 credits a month](https://orshot.com/pricing "target=_blank"), no credit card needed. --- Gamma made presentations fast. You type a prompt, and you get a deck in seconds. For quick internal docs or email attachments, that's great. But if you've used it beyond the honeymoon phase, you've probably hit the same walls everyone else is hitting. Broken PowerPoint exports. Layouts that all look the same after a while. AI-generated images that hallucinate. A credit system that runs out faster than expected. And when you actually need to present to a client, things fall apart right when it matters most. I built [Orshot](https://orshot.com/) because I needed something different — a tool where you actually control the design, can automate generation at scale through an API, and don't have to pray that your export works in PowerPoint. Same speed, more control. [**Try Orshot Free →**](https://orshot.com/pricing "target=_blank") **(100 credits a month, no card needed)** **Migrate from Gamma.app to Orshot quickly with AI** Install the Orshot agent skill in Claude Code, Cursor, or Windsurf to automatically translate your Gamma.app API calls to Orshot. The skill knows both APIs and handles the mapping for you. ```bash npx skills add orshot-hq/orshot-agent-skills ``` [Learn more about the agent skill](https://orshot.com/agents/orshot-skills) ![Designing a presentation slide in Orshot Studio](https://orshot.com/blog/studio-ppt-design.webp) ## Orshot vs Gamma.app: Feature Comparison Here's a side-by-side comparison of Orshot and Gamma.app across the features that matter most for design teams, marketers, and developers: | Feature | Orshot | Gamma | | :------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------- | | **Template Editor** | Visual drag-and-drop [Orshot Studio](https://orshot.com/studio) with [Smart Stacking](https://orshot.com/blog/smart-stacking) | AI prompt-based, Notion-style blocks | | **Design Control** | Pixel-level control over every element | Limited — AI decides layout | | **Export Formats** | PNG, JPG, WebP, AVIF, PDF, MP4, WebM, GIF — all reliable | PDF, PPTX (often breaks), PNG | | **API Access** | Full REST API, SDKs, CLI, [Dynamic URLs](https://orshot.com/docs/integrations/dynamic-urls) | API on Pro plan only | | **Multi-page Templates** | Yes — carousels, PDFs, videos in [one API call](https://orshot.com/blog/introducing-carousel-templates) | Yes — but limited customization per card | | **Template Import** | [Canva](https://orshot.com/solutions/canva-template-to-api), [Figma](https://orshot.com/solutions/figma-automation-via-rest-api), [AI Generator](https://orshot.com/features/ai-template-generator) | Prompt-based or import from PDF/PPTX | | **Bulk Generation** | Yes — API, spreadsheet, automation tools | No — one at a time manually | | **White-labeled Design Editor** | Yes via [Orshot Embed](https://orshot.com/blog/orshot-studio-embed) | No | | **Video Generation** | Advanced: MP4/WebM/GIF, per-layer animations, [trim/loop/mute controls](https://orshot.com/docs/dynamic-parameters/video) | Basic AI-generated video clips | | **Automation Integrations** | n8n, Make, Zapier, MCP Server, CLI | Limited — Zapier only | | **Social Publishing** | [Built-in — 15+ platforms](https://orshot.com/docs/publish/introduction) | No | | **Offline Usage** | API-generated assets work anywhere offline | No — requires internet, web-based only | | **Free Tier** | 100 free credits a month, resets monthly | Limited credits, Gamma branding | | **Starting Price** | \$39/month for 1,500 credits (1 credit = 1 image) | \$10/month (Plus), limited features | ## Why People Switch from Gamma.app These are the most common Gamma.app complaints based on Reddit threads, user reviews, and conversations with people who've switched to Orshot: ### 1. Gamma PowerPoint Exports Break Frequently This is the most reported Gamma.app issue. You spend time getting your deck looking good, export it to PowerPoint, and the text shifts, fonts go missing, layouts break. One user [described it perfectly](https://www.reddit.com/r/bestai2025/comments/1qhekze/finally_switched_from_gamma_here_are_the/ "target=_blank"): _"The final straw was when I had to present to a client and my 'polished' Gamma deck looked like a mess when I opened it in PowerPoint 30 minutes before the meeting."_ **How Orshot solves this:** You design the actual output in [Orshot Studio](https://orshot.com/studio). What you see is what you get — PNG, PDF, WebP, whatever format you need. No conversion step, no broken layouts. Orshot supports 8 export formats: PNG, JPG, WebP, AVIF, PDF, MP4, WebM, and GIF. ### 2. Gamma Layouts All Look the Same Gamma's Notion-style blocks produce consistent but repetitive results. After a few months, users notice their decks all share the same structure. _"Every PowerPoint has the same outline or use of their context (the circle, graph, and other)"_ is a [common complaint](https://www.reddit.com/r/ProductivityApps/comments/1nob9ht/gamma_ai_what_do_you_guys_think/ "target=_blank"). **How Orshot solves this:** With [Orshot Studio](https://orshot.com/studio), you design from scratch or start from any template. You control layout, typography, spacing, colors — pixel by pixel. Features like [Smart Stacking](https://orshot.com/blog/smart-stacking) let you position elements relative to each other so they auto-adjust when content changes. Your brand looks like your brand, not like everyone else's Gamma deck. ### 3. Gamma AI Images Hallucinate The AI-generated images in Gamma are unreliable. Even Gamma's team [acknowledged this](https://www.reddit.com/r/ProductivityApps/comments/1nob9ht/gamma_ai_what_do_you_guys_think/ "target=_blank"): _"The hallucination issue you mentioned is real and honestly something we're still working hard to improve."_ For academic, educational, or client-facing work, inaccurate AI images are a dealbreaker. **How Orshot solves this:** You use your own images, stock photos, or Orshot's [background removal API](https://orshot.com/blog/remove-image-background-api). No AI guessing what your image should look like. What you put in is what comes out — every time. ### 4. Gamma Has No API for Bulk Image Generation Until recently, Gamma had no API at all. Even now, it's locked behind the Pro plan and designed for generating presentations — not individual images or assets at scale. If you need to generate hundreds of social media graphics, product images, or certificates, Gamma can't do it. **How Orshot solves this:** Every Orshot template becomes an API endpoint. Generate one image or ten thousand — via [REST API](https://orshot.com/docs/api-reference), [SDKs](https://orshot.com/docs/sdks) (Node.js, Python, Ruby, PHP), [CLI](https://orshot.com/docs/integrations/orshot-cli), [Dynamic URLs](https://orshot.com/docs/integrations/dynamic-urls), or automation platforms like [n8n](https://orshot.com/docs/integrations/n8n), [Make](https://orshot.com/docs/integrations/make), and [Zapier](https://orshot.com/docs/integrations/zapier). Orshot's Starter plan includes 1,500 credits/month at $39 — about 2.6¢ per image. ### 5. Gamma Is Web-Only with No Offline Access Gamma requires an internet connection for everything. You can't edit offline, and the presentation itself is a webpage — not a file you own. As one user [pointed out](https://www.reddit.com/r/powerpoint/comments/1r1vkw9/is_gamma_app_better_than_powerpoint/ "target=_blank"): _"Gamma is great but be aware it doesn't give you the ability to edit offline."_ **How Orshot solves this:** Orshot generates actual files — images, PDFs, videos. Once rendered, they're yours. Store them in S3, Google Cloud, or your own CDN via [built-in cloud storage connections](https://orshot.com/features/bring-your-own-storage). Use them anywhere, offline or online. ### 6. Gamma's Credit System Burns Through Fast Gamma's credit system leaves users constantly doing mental math about how many presentations they can create. The credits run out, and you're stuck either upgrading or waiting. Users report that the subscription pricing has increased over time, affecting existing subscribers too. **How Orshot solves this:** Orshot's [pricing](https://orshot.com/pricing) is straightforward — $39/month for 1,500 credits, $99/month for 5,000. And a credit always means the same thing: 1 image, 1 PDF page, or 1 second of video — no hidden multipliers, no feature gating based on plan tiers. Every plan includes every feature — API access, video generation, social publishing, all integrations. ### 7. Gamma Has Compatibility Issues with Google Slides and Teams If your workflow involves sharing files with people who use PowerPoint, Google Slides, or Teams, Gamma creates friction. The Notion-style format doesn't translate well, and export fidelity is weak. A user noted: _"Biggest Gamma con for client work? Compatibility issues with Google Slides/Teams."_ **How Orshot solves this:** Orshot generates standard image and PDF formats that work everywhere — email clients, Slack, Notion, Google Docs, presentations. There's no conversion step to worry about. ## What Orshot Offers Beyond Gamma.app Beyond solving Gamma's pain points, Orshot includes features built for developers, marketers, and design teams: **Full visual editor** — [Orshot Studio](https://orshot.com/studio) feels like designing in Figma or Canva. Drag-and-drop, [Smart Stacking](https://orshot.com/blog/smart-stacking) for relative positioning, keyboard shortcuts, real-time preview. Your designers can use it directly — no AI prompt engineering required. **White-label embed** — [Studio Embed](https://orshot.com/blog/orshot-studio-embed) lets you drop a full design editor into your app. Custom branding, permission controls, webhook events. Great for SaaS products that need user-facing design tools. **Multi-page templates** — Create carousels, multi-page PDFs, and multi-page videos in a single template. Generate all pages with [one API call](https://orshot.com/blog/introducing-carousel-templates). Perfect for LinkedIn carousels, Instagram slideshows, pitch decks. **Per-layer animations** — [Animate individual layers](https://orshot.com/blog/introducing-animations-in-studio) in video templates with enter/exit effects (fade, slide, scale), visibility timing, and staggered choreography. All controllable via API parameters. **Import from anywhere** — Clone from [Canva](https://orshot.com/solutions/canva-template-to-api), import from [Figma](https://orshot.com/solutions/figma-automation-via-rest-api), or use [AI to generate templates](https://orshot.com/features/ai-template-generator). Way faster than starting from scratch. **Social publishing** — Render and [post to 15+ social platforms](https://orshot.com/docs/publish/introduction) in one API call. No Buffer or third-party scheduler needed. Post instantly, schedule, or save as draft. **More integrations** — [MCP Server](https://orshot.com/docs/integrations/mcp-server) for AI apps like Claude, [CLI](https://orshot.com/docs/integrations/orshot-cli) for terminal workflows, plus Make, Zapier, n8n. [Full list here](https://orshot.com/integrations). **Actual support** — I respond to chat messages. Usually within an hour. Sometimes I'll just hop on a call if something's complicated. ![Customer testimonial from Mihai about using Orshot](https://orshot.com/blog/mihai-testimonial.webp) ## Pre-built API Templates Ready-to-use utility templates you can call via API — no design work needed: - [Twitter Screenshot API](https://orshot.com/templates/tweet-image) - Clean tweet screenshots with customization - [Website Screenshot API](https://orshot.com/templates/website-screenshot) - Full page captures, any viewport - [Dynamic Image Resizer API](https://orshot.com/templates/dynamic-image-resizer) - Resize on the fly These work great on their own or combined with your custom templates. Gamma has nothing equivalent. ## When to Use Gamma.app Instead of Orshot To be fair, Gamma is genuinely good for: - **Quick first drafts** — When you need a rough deck in 2 minutes for an internal meeting - **Brainstorming** — Using AI to iterate on presentation structure before you know what you want - **Simple one-off docs** — Sending a quick doc over email where design doesn't matter much If that's all you need, Gamma works fine. But the moment you need pixel-level design control, reliable exports, bulk generation, or API automation — that's where Orshot takes over. > **Bottom line:** Gamma is an AI presentation generator. Orshot is a design automation platform with an API. They solve different problems — but if you're hitting Gamma's limits, Orshot is the natural next step. ## How to Switch from Gamma.app to Orshot Here's how most people migrate from Gamma to Orshot: ### Step 1: Design Your Templates You have a few options: **Build from scratch** — Open [Orshot Studio](https://orshot.com/studio) and design your template with full control. Drag-and-drop, pixel-level positioning, your fonts and colors. **Use AI** — Screenshot your Gamma output, drop it into the [AI Template Generator](https://orshot.com/features/ai-template-generator). It'll recreate the layout, you fine-tune the details. **Import existing designs** — If you have the original in Canva or Figma: - [Clone from Canva](https://orshot.com/solutions/canva-template-to-api) - [Import from Figma](https://orshot.com/solutions/figma-automation-via-rest-api) You can create multi-page templates, [share through public links or embeds](https://orshot.com/blog/sharing-orshot-templates) like the one below, and [invite your team to collaborate](https://orshot.com/features/team-collaboration). [Open the embed](https://orshot.com/templates/shared/8zfweezu/embed?view=view) ### Step 2: Set Up Automation Unlike Gamma (which is manual), Orshot lets you automate everything: **Via API:** ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_template_id", modifications: { title: "Q1 Sales Report", subtitle: "March 2026 Review", heroImage: "https://example.com/chart.png", "title.fontFamily": "Inter", "title.color": "#1a1a1a", }, response: { type: "url", format: "png", }, }), }); ``` **Via Dynamic URLs** — Generate images just by changing URL parameters. No API calls needed. [Learn more](https://orshot.com/docs/integrations/dynamic-urls). **Via automation tools** — Connect to [n8n](https://orshot.com/docs/integrations/n8n), [Make](https://orshot.com/docs/integrations/make), or [Zapier](https://orshot.com/docs/integrations/zapier) for fully automated workflows. ### Step 3: Test and Deploy 1. Make a few test renders 2. Compare the output quality 3. Tweak styling in Studio if needed 4. Deploy to your workflow You can use the Template Playground to experiment with different content and styles before going live. ![Orshot Template Playground](https://orshot.com/blog/template-playground.webp) ## Gamma.app Alternative FAQ **Q: How is Orshot different from Gamma?** Gamma is an AI presentation maker — you prompt it and get a deck. Orshot is a design-first platform with a visual editor and full API. You control every pixel, and can generate images, PDFs, and videos at scale through automation. Different tools for different needs. **Q: Can Orshot generate presentations like Gamma?** Orshot generates individual visual assets — social media graphics, banners, certificates, product images, carousels, multi-page PDFs, and videos. If you need a full slide deck generated from a prompt, Gamma does that. If you need branded visual content at scale with full design control, that's Orshot. **Q: Can I import my designs from Canva or Figma?** Yes. Use our [Figma plugin](https://orshot.com/solutions/figma-automation-via-rest-api) or [Canva import tool](https://orshot.com/solutions/canva-template-to-api) to bring existing designs directly into Orshot. **Q: Does Orshot have an API for bulk generation?** Yes. Every Orshot template becomes an API endpoint. Generate thousands of images programmatically via [REST API](https://orshot.com/docs/api-reference), [SDKs](https://orshot.com/docs/sdks) (Node, Python, Ruby, PHP), [CLI](https://orshot.com/docs/integrations/orshot-cli), or automation platforms. **Q: Does Orshot support multi-page templates and carousels?** Yes. Create Instagram carousels, LinkedIn slideshows, multi-page PDFs, and even multi-page videos — all in a single template, generated with [one API call](https://orshot.com/blog/introducing-carousel-templates). **Q: What about video generation?** Orshot supports advanced video generation (MP4/WebM/GIF) with per-layer controls like trim, loop, mute, and [animations](https://orshot.com/blog/introducing-animations-in-studio) including fade, slide, and scale with staggered choreography. **Q: Does Orshot work with n8n, Make, and Zapier?** Yes. Orshot integrates with [Zapier](https://orshot.com/docs/integrations/zapier), [Make](https://orshot.com/docs/integrations/make), [n8n](https://orshot.com/docs/integrations/n8n), plus [MCP Server](https://orshot.com/docs/integrations/mcp-server) and [Dynamic URLs](https://orshot.com/docs/integrations/dynamic-urls). **Q: Is there an agency partner program?** Yes. Our [Agency Partner Program](https://orshot.com/partner-program) is free to join and includes unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools. **Q: Is Orshot free to use?** Yes. Orshot offers 100 free credits a month with the editor, API and integrations included — no credit card required. Paid plans start at $39/month for 1,500 credits. **Q: Can I use Orshot to create social media images in bulk?** Yes. Design a template in [Orshot Studio](https://orshot.com/studio), then generate thousands of variations via REST API, Dynamic URLs, or automation tools like n8n, Make, and Zapier. Each image is customized with your data — text, images, colors, fonts. **Q: Does Orshot support video and animated content?** Yes. Orshot generates MP4, WebM, and GIF videos with per-layer animations including fade, slide, scale, and staggered choreography. All controllable via API parameters. See [animation docs](https://orshot.com/blog/introducing-animations-in-studio). **Q: How does Orshot compare to Canva for bulk generation?** Canva's bulk create requires manual CSV uploads with no API access. Orshot lets you automate everything — import [Canva templates](https://orshot.com/solutions/canva-template-to-api), generate via API, and publish to 15+ platforms. See our [Canva bulk create comparison](https://orshot.com/blog/canva-bulk-create-alternative). ## Orshot Studio: The Visual Editor ![Orshot Studio - visual template editor](https://orshot.com/blog/orshot-studio.webp) [Orshot Studio](https://orshot.com/studio) is a drag-and-drop visual editor that gives you the design control Gamma's AI-driven approach can't match. **Key features:** - **[Smart Stacking](https://orshot.com/blog/smart-stacking)** — Position elements relative to each other. They auto-adjust when content changes - **Brand Assets** — Save your logos, colors, and fonts. Use across all templates - **Custom Fonts** — Upload any font. No limits on typography - **Personalization** — Make any element dynamic — text, images, colors, styling - **[Studio Embed](https://orshot.com/blog/orshot-studio-embed)** — Integrate the editor into your own app with custom branding - **Multi-page Support** — Create carousels and PDF templates with multiple pages ## Orshot Tutorials and Examples ### Video Generation using Orshot [Watch the video](https://www.youtube.com/watch?v=RQPHJY3bkZk) ### Carousel Templates [Watch the video](https://www.youtube.com/watch?v=EXJoMeGyEhM) ### Import from Canva [Watch the video](https://www.youtube.com/watch?v=P4AHj3dpJXw) ### Dynamic URLs [Watch the video](https://www.youtube.com/watch?v=a2I69Qb2hts) --- ## Start Using Orshot Today If you're hitting the limits of Gamma.app — broken exports, repetitive layouts, no API, no bulk generation — Orshot is built to solve exactly those problems. Full design control, reliable exports in 8 formats, a REST API with SDKs in 4 languages, and integrations with every major automation platform. [**Get Started Free →**](https://orshot.com/pricing "target=_blank") with 100 credits a month, no credit card. ## Bottom Line Gamma is a presentation generator. Orshot is an API for automated image, PDF and video generation. If you need quick AI-generated decks for internal use, Gamma's fine for that. But if you need pixel-level design control, reliable exports, bulk generation through an API, or automation workflows — Orshot is the best Gamma.app alternative for that. No more broken PowerPoint exports. No more repetitive Notion-style layouts. No more hallucinated images. Just a visual editor you control, templates you own, and an API that lets you generate at scale. Comparing other tools too? Check out how Orshot stacks up against [Placid](https://orshot.com/blog/placid-api-alternative), [BannerBear](https://orshot.com/blog/bannerbear-api-alternative), [Creatomate](https://orshot.com/blog/creatomate-api-alternative), and [Canva Bulk Create](https://orshot.com/blog/canva-bulk-create-alternative). ## For Agencies Building image, PDF or video automation for multiple clients? Check out the [Agency Partner Program](https://orshot.com/partner-program) — free to join, unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools. ## Try It 1. [Sign up](https://orshot.com/pricing): 100 free credits every month, no card needed 2. Design a template or import from Canva/Figma 3. Test with your actual content 4. See if it works for you If you get stuck, hit the chat button. I'll help you out. --- ### [A Google Pomelli Alternative You Can Actually Automate](https://orshot.com/blog/google-pomelli-alternative) > Pomelli turns your website into one-off campaign ideas. Orshot automates those designs into dynamic images, pdfs and videos via API. Try with 100 free credits a month > **TL;DR:** Google Pomelli is a free Labs experiment that reads your website and generates on-brand campaign ideas and social creatives. It's a great brainstorming tool, but there's no API, no automation, no scheduling — and it's an experiment that could disappear. > > My tests rendered it unfit for production usage honestly. > > If you've outgrown "make one nice graphic by hand," [Orshot](https://orshot.com/) is the production alternative: design a template once, then generate and publish on-brand visuals at scale. --- ![The Google Pomelli interface](https://orshot.com/blog/google-pomelli.webp) The first time you run Pomelli, it feels a little like magic. You paste your website, Google Labs scans it to build what it calls your "Business DNA" — your colors, fonts, tone, the way your brand actually looks — and a minute later you've got campaign ideas and ready-to-edit social posts that mostly sound like you. For a small business staring at a blank canvas, that's a genuinely good first draft. Then you try to use it for real, and the shape of the thing becomes clear. You generate an asset, download it, and upload it somewhere by hand. You do that again for the next post. And the next. There's no API to call, nothing to wire into your stack, no way to generate a hundred variations or schedule anything. Pomelli is a creative-ideation tool — not a content pipeline. And it's free today precisely because Google hasn't decided what it is yet. I ran into that wall years ago, which is why I built Orshot. It solves the other half of the problem: not "give me an idea," but "I know exactly what I want — now produce it a thousand times and put it where it needs to go, automatically." [**Try Orshot Free →**](https://orshot.com/pricing "target=_blank") **(100 credits a month, no card needed)** ## Pomelli vs Orshot, honestly These tools look similar on the surface — both spit out on-brand marketing visuals — but they're built for different jobs. Pomelli is an AI that _invents_ creative. Orshot is a platform that _produces_ it on repeat. | Feature | Orshot | Google Pomelli | | :-- | :-: | :-: | | Generates campaign ideas from your site | Yes (via MCP) | Yes | | Pixel-level design control | Yes | No | | Repeatable, identical output | Yes | No | | REST API & SDKs | Yes | No | | AI agents / MCP (Claude, Cursor) | Yes | No | | Automation (n8n, Make, Zapier) | Yes | No | | Bulk generation | Yes | No | | PDF export | Yes | No | | Video export | Yes | Yes | | Publish to 15+ social platforms | Yes | No | | Works in any language | Yes | No | | Free plan | Yes | Yes | | Production-ready (not a beta) | Yes | No | Orshot starts free — 100 credits a month, no card — then scales from $39/mo for 1,500 credits. Pomelli is free during its beta, with no pricing announced yet. ## Where Pomelli runs out of road Pomelli nails the first 10% of the work — having the idea. The trouble starts the moment you need to do that work repeatedly, at scale, or as part of a system. While testing Pomelli, I also found it doesn't work and errors out often while pulling the brand from a website. ![Google Pomelli showing an error message](https://orshot.com/blog/google-pomelli-erroring-out.webp) Four walls show up fast: - **No API, so no automation.** Everything happens inside the web app: generate, eyeball, download. If you produce the same asset over and over — banners, listing images, certificates — every one is a manual job. Orshot makes a template a live [image generation API](https://orshot.com/solutions/image-generation-api) you call from code, a spreadsheet, or a no-code tool — one render or ten thousand. - **Every run is a fresh roll of the dice.** Great for brainstorming, but you can't lock a design and just swap the content. A fixed template in [Orshot Studio](https://orshot.com/studio) keeps the layout identical and changes only the data — a hundred posts that look intentional, not improvised. - **You publish by hand.** Pomelli has no scheduling and no direct publishing. Orshot does [social media content automation](https://orshot.com/blog/automated-content-creation-tools) — render and publish to 15+ platforms (Instagram, LinkedIn, X, TikTok…) in the same call, instantly or scheduled. - **English-only and experimental.** Pomelli writes copy in English only and lives in Google Labs — a beta with no announced pricing and a long line of retired Labs projects behind it. Orshot's pricing is public, and its API is what teams build on every day. ## Orshot has AI too — it's just not locked in a UI [Orshot MCP Server Tutorial](https://www.youtube.com/watch?v=OhgdZtqEQK0) Pomelli's whole pitch is AI, and that part is fair: pointing a model at your website to draft creative is genuinely useful. Orshot uses AI as well — just aimed at the part that actually scales. - **Describe a template, get a template.** Tell the [AI Design Agent](https://orshot.com/features/ai-template-generator) what you want in plain English and it builds an on-brand, editable template. You reuse it forever instead of regenerating from scratch every time. - **Bring your own AI agents.** Orshot's [MCP server](https://orshot.com/agents) connects Claude, Cursor, and other agents to your account — so "make the launch banner and drop it in our bucket" becomes something an agent does on a webhook or a cron. Prompt in, on-brand asset out. Pomelli's AI ends at a download button. Orshot's AI is wired into your stack. Here's the whole flow — prompt to on-brand asset — in a couple of minutes: ## When Pomelli is the right call To be fair, Pomelli is good at what it's for. If you're starting from a blank page and want AI to propose campaign directions, it does that well. If you need a quick one-off post you'll only ever make once, it's fast and free. And if you're a small business with no design resources and no need to automate, it's a perfectly nice place to start. The moment you need repeatability, an API, bulk generation, scheduling, or a tool you can count on next quarter — that's where Orshot takes over. > **Bottom line:** Pomelli generates marketing _ideas_. Orshot generates marketing _assets_ at scale. Use Pomelli to find the look; use Orshot to produce it forever. ## Moving from Pomelli to Orshot Most people make the jump in three steps. **1. Turn the look you liked into a template.** Rebuild it in the visual editor, or screenshot a design and let Orshot's AI template generator recreate it as an editable template — then mark the dynamic fields. Already have brand designs? Import them straight from Canva or Figma. **2. Generate it with your data.** Once a template has parameters, it's an endpoint: ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_template_id", modifications: { headline: "Summer Sale — 30% Off", product_image: "https://example.com/product.png", price: "$49", }, response: { type: "url", format: "png" }, }), }); ``` Prefer no-code? We connect with bunch of [no-code integrations](https://orshot.com/integrations). **3. Publish or deploy.** Push straight to your social channels, drop the files into your CMS or ad manager, or store them in your own bucket. The output is real files you own — not a webpage locked inside someone's beta. If you want to see the kinds of workflows people run this way, [browse the use cases](https://orshot.com/use-cases). ## Common Questions **Q: Is Orshot the same kind of tool as Pomelli?** Not quite — and that's the point. Pomelli is an AI that invents campaign ideas from your website. Orshot is a design-and-automation platform: you define a template once, then generate on-brand images, PDFs, and videos at scale through an API. Use Pomelli to ideate, Orshot to produce. **Q: Does Pomelli have an API?** No. Google Pomelli is a web-based Labs experiment with no public API, no automation hooks, and no scheduling. Orshot is API-first — every template becomes a REST endpoint you can call from code, a spreadsheet, or tools like n8n, Make, and Zapier. **Q: Can Orshot match my brand the way Pomelli does?** Yes, with more control. Save your logos, colors, and fonts as brand assets and design templates pixel-by-pixel. Instead of an AI guessing your brand each run, you lock the design once and only the data changes. **Q: Can I generate and publish images in bulk?** Yes. Design one template and generate thousands of variations — each customized with your own text, images, and colors — then publish them to 15+ social platforms instantly or on a schedule. **Q: Is Orshot free?** Yes. Orshot includes 100 free credits a month with the editor, API and integrations included, no credit card required. Paid plans start at $39/month for 1,500 credits. ## Start automating your on-brand content If Pomelli helped you find a look you like, Orshot is how you produce it at scale — full design control, eight export formats, a real API, and built-in publishing, without depending on a beta that might not be here next year. [**Get Started Free**](https://orshot.com/pricing "target=_blank") (100 credits a month, no credit card) --- ### [A JSON2Video Alternative That Posts to Socials](https://orshot.com/blog/json2video-api-alternative) > A JSON2Video alternative for n8n video automation that generates faceless videos and auto posts them to TikTok Instagram and YouTube Most JSON2Video setups I see are part of a bigger machine. An n8n or Make workflow writes a script, JSON2Video turns it into an MP4, and a few more nodes try to get it onto TikTok, Instagram and YouTube. The render is rarely the problem. Everything after it is: - a posting node per platform, each with tokens that expire - captions rewritten per network - no idea which videos actually did well I built [Orshot](https://orshot.com/) so the render and the post are the same call. You design the template in a Figma-like editor, render it from the API, n8n, Make or an AI agent, and add a `publish` block to post it to 15+ platforms. Then you see how each post did in the same dashboard. 100 free credits a month for images and PDFs, no card needed. Video from $39/mo. [Try Orshot free](https://orshot.com/pricing?via=blog-json2video-top) ![The JSON2Video homepage: a video editing API that automates video production with templates and variables](https://orshot.com/blog/json2video-api-alternative/json2video-homepage.webp) ## JSON2Video vs Orshot: What's Different | Feature | Orshot | JSON2Video | | :-------------------------- | :------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------- | | **Posting to socials** | [Built in: 15+ platforms](https://orshot.com/docs/publish/introduction) from the render call, now, scheduled or as a draft | Render only. Posting is a separate step in Make, n8n or Zapier | | **Post analytics** | [Impressions, engagement and follower growth](https://orshot.com/features/social-analytics) per account | Not included | | **How templates are built** | Designed in [Orshot Studio](https://orshot.com/features/orshot-studio), a Figma-like editor with a video timeline | A JSON movie of scenes and elements, plus a visual editor | | **Output formats** | MP4, MOV, WebM, MKV, GIF, PNG, JPG, WebP, AVIF and PDF from the same template | MP4 only | | **Rendered files** | A file URL kept for at least a year, or [pushed to your Drive, Dropbox, S3 or R2](https://orshot.com/features/bring-your-own-storage) | Deleted 7 days after the render, on every plan | | **AI presenter** | [A lip-synced presenter](https://orshot.com/docs/video-generation/ai-video) from a photo and a script | Not supported natively | | **Built-in workflows** | [Trigger, render and post on a schedule](https://orshot.com/workflows) | Via Make, n8n or Zapier | JSON2Video details checked against json2video.com in September 2026. ### Orshot vs JSON2Video in Numbers Three numbers you can check yourself, from public pricing pages, docs and n8n templates. ## Where JSON2Video Workflows Get Long JSON2Video shows up in a lot of n8n and Make faceless video builds. In those builds the render node is usually the simple part. The work sits around it: - **Posting is its own project.** Each platform needs its own node, login and token refresh, and one expired token quietly breaks the run. - **No feedback loop.** Once it's posted, the workflow ends. Seeing which hooks worked means opening every platform's analytics. - **The movie is code.** A JSON2Video movie is scenes and elements in JSON. The editor helps, but a developer usually owns the template. - **Files that expire in a week.** Renders are kept for 7 days on every plan, so anything you schedule or review later needs a copy step first. - **Wait and poll loops.** A public n8n template spends seven nodes between render and upload: post, wait 10 minutes, check, route, wait, fetch, publish. - **Video only.** A designed thumbnail, carousel or quote card needs a second tool and a second template. ![Public n8n template 19213 with 21 nodes, 7 of them from render to posted, next to an Orshot workflow with 4 nodes where one render node also posts](https://orshot.com/blog/json2video-api-alternative/n8n-workflow-compare.webp) ## Render and Post in One Call This is the main reason people move to Orshot from a render-only API. Connect your social accounts once under **Social**, then add a `publish` block to any render: - **15+ platforms:** TikTok, Instagram, YouTube, LinkedIn, X, Facebook, Pinterest, Threads, Bluesky, Reddit and more - **Three modes:** post now, schedule for a date and time in your timezone, or save as a draft for a human to review - **Per platform text:** a default caption, plus per account options like a LinkedIn first comment or a Pinterest title and link - **One response:** the render URL and a status per account (`published`, `scheduled` or `drafted`), so your workflow knows what happened ![Orshot's social accounts page with connected TikTok, Instagram and YouTube accounts](https://orshot.com/blog/n8n-faceless-guide/06-social.webp) A tip from people running faceless channels: don't fully auto-post from day one. Platforms watch for automated spam. - Render on a schedule - Save the first few weeks as drafts and review them - Space the uploads out ## See What Worked Posting without feedback means guessing which videos to make next. Orshot's social analytics track, for every connected account: - impressions, engagement and posts published - follower growth - a best time to post heatmap, plus a daily digest email ![Orshot's social analytics dashboard with impressions, engagement and follower growth across connected accounts](https://orshot.com/blog/introducing-social-analytics/analytics.webp) That closes the loop a render API can't: render, post, measure, then change the template or the topic list and render again. ## Faceless Videos From Two API Calls The most common JSON2Video workflow is a faceless short: a script, a voice, captions and some footage. On Orshot, the presenter, the voice and the captions all come from the same API. 1. **Generate the presenter.** Send a script and a reference photo to the AI video endpoint and get back a lip-synced clip of that person speaking it. 2. **Render the short.** Drop the clip into your template. Captions are transcribed from the clip's own audio, so they always match the voice. Add `publish` and it posts. JSON2Video can add a voice and captions, but it can't make the presenter: its pricing FAQ says it doesn't support AI video or avatar generation. Orshot makes the talking presenter from a photo and a script, then renders and posts the short. The full n8n build, with a workflow file you can import, is in [How to Automate Faceless Videos with n8n](https://orshot.com/blog/how-to-make-faceless-videos-with-n8n). Here's what the calls look like: Render the short and post it to TikTok and Instagram in the same request. ```javascript const res = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "YOUR_TEMPLATE_ID", modifications: { clip: "https://cdn.example.com/presenter.mp4", hook: "Octopuses have 3 hearts", handle: "@dailyfacts", }, response: { type: "url", format: "mp4" }, videoOptions: { subtitleSource: "https://cdn.example.com/presenter.mp4", }, publish: { accounts: [15, 22], // your TikTok and Instagram accounts content: "Octopuses have 3 hearts #facts", }, }), }); ``` Post later in your timezone, or save as a draft to review first. ```javascript publish: { accounts: [15, 22, 31], content: "Octopuses have 3 hearts #facts", schedule: { scheduledFor: "2026-10-01T14:00:00Z" }, timezone: "America/New_York", } // Or keep a human in the loop: publish: { accounts: [15, 22, 31], content: "Octopuses have 3 hearts #facts", isDraft: true, } ``` Turn a script into a lip-synced presenter clip. Use the same photo every day for a consistent creator. ```javascript const res = await fetch("https://api.orshot.com/v1/ai/video", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ imageRef: "https://cdn.example.com/presenter.jpg", script: "Octopuses have three hearts. Two pump blood to the gills...", voice: "YOUR_VOICE_ID", consent: true, aspect: "9:16", sync: true, }), }); // Returns the clip's url, ready to pass to the render as "clip" ``` The same data rendered as an image carousel for Instagram or LinkedIn. Only the format changes. ```javascript body: JSON.stringify({ templateId: "YOUR_CAROUSEL_TEMPLATE_ID", modifications: { "page1@hook": "Octopuses have 3 hearts", "page2@fact": "Two pump blood to the gills", "page3@fact": "One pumps it to the rest of the body", }, response: { type: "url", format: "png" }, publish: { accounts: [22], content: "3 facts about octopus hearts" }, }), ``` For comparison, rendering a JSON2Video template with variables. Posting it is a separate step after the render finishes. ```javascript const res = await fetch("https://api.json2video.com/v2/movies", { method: "POST", headers: { "x-api-key": "YOUR_JSON2VIDEO_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ template: "YOUR_JSON2VIDEO_TEMPLATE_ID", variables: { headline: "Octopuses have 3 hearts" }, }), }); // Then poll GET /v2/movies?project={id} until status is "done" // and pass the URL to a TikTok, Instagram or YouTube node ``` Full references: [publishing from the API](https://orshot.com/docs/publish/publish-from-api), AI video, [subtitles](https://orshot.com/docs/video-generation/adding-subtitles) and [dynamic parameters](https://orshot.com/docs/dynamic-parameters). ## Design Once in Studio, Keep Every Video on Brand Instead of a movie definition, an Orshot template is a design. You build it in Orshot Studio, a Figma-like editor with layers, a video timeline, animations and your [brand kit](https://orshot.com/features/brand-assets-library). Mark a layer as dynamic and it becomes an API parameter. Press play on the timeline below. This vertical reel is a real Studio template, and every layer on it can be swapped per render. [Orshot Studio video editor with a vertical 9:16 reel template and a play timeline](https://orshot.com/templates/shared/hywfwy20/embed?view=play) What that changes day to day: - **Brand changes happen once.** Update a font or color in the brand kit and every template that uses it follows. - **Voiceover and captions live in the template.** Generate a voiceover in Studio and captions from its word timings, or pass your own per render. - **Import instead of rebuilding.** Bring designs in from [Canva](https://orshot.com/solutions/canva-template-to-api), Figma or HTML. - **One template, many formats.** The same design renders as a TikTok MP4, a PNG thumbnail and a carousel. [Smart Resize](https://orshot.com/features/smart-resize) re-fits each size. **Render it and post it** — Design a template in Studio, render it from n8n or Make, and post to 15+ platforms from the same call. [Start free](https://orshot.com/pricing?via=blog-json2video-middle) ## Skip the Automation Tool if You Want JSON2Video needs Make, n8n or Zapier to run on a schedule and to post. Orshot works with all three: a first-party [n8n node](https://orshot.com/docs/integrations/n8n), plus [Make](https://orshot.com/docs/integrations/make) and [Zapier](https://orshot.com/docs/integrations/zapier) apps. You can also skip them. Orshot Workflows trigger from Google Sheets, Airtable, Notion, a schedule or a webhook, then render and post, all inside Orshot. This one reads a quote from a Google Sheet on a schedule, renders a short video and posts it to TikTok: [Turn quotes from a Google Sheet into TikTok videos on a schedule with Orshot](https://orshot.com/workflows/quote-videos-to-tiktok/embed) Prefer to ask an AI agent? With [Orshot for agents](https://orshot.com/agents), Claude, ChatGPT or Cursor can, from a plain prompt: - build the template and render it - post or schedule the result - read back which posts did best and when to post next ## JSON2Video Pricing, and How Orshot Bills JSON2Video bills 1 credit per second of video: - **Hobby:** \$16.95 a month billed yearly (\$203.40) for 3,000 credits, about 50 minutes, with videos up to 1 minute - **Professional:** \$49.95 a month for 12,000 credits, about 200 minutes, with videos up to 10 minutes - **Startup:** \$99.95 a month for 30,000 credits, about 500 minutes, with videos up to 30 minutes - **Prepaid:** \$49.95 for 7,200 credits or \$99.95 for 15,600 credits, which don't expire. 4K renders use 4x the credits Prices checked against json2video.com/pricing in September 2026. How Orshot bills: - **Credits:** 1 per second of video, and 1 per image or PDF page, at any resolution - **Free plan:** 100 credits every month for images and PDFs - **Video:** on paid plans from \$39 a month for 1,500 credits - **Social publishing:** an add-on at \$12 a month per connected account, with unlimited posts ## Other JSON2Video Alternatives If you're comparing JSON2Video, these are the other video APIs that usually come up. | Tool | How templates are built | How it bills | Posts to socials | | :------------- | :----------------------------------- | :--------------------------------------------- | :-------------------- | | **Orshot** | Figma-like editor with a timeline | 1 credit per second, from \$39 a month | Yes, 15+ platforms | | **Shotstack** | JSON timeline, plus a studio editor | Per rendered minute, from \$0.20 | No | | **Creatomate** | JSON templates, plus an editor | Credits that scale with resolution and frames | No | | **Plainly** | After Effects projects | Render minutes, from \$69 a month for 50 | No | | **Remotion** | React components you host yourself | [Free for small teams, then \$0.01 a render](https://orshot.com/blog/remotion-alternatives#remotion-pricing-and-lambda-costs) | No | ### Shotstack ![The Shotstack homepage: an AI video creation platform with a video editing API](https://orshot.com/blog/json2video-api-alternative/alt-shotstack.webp) Shotstack is a video editing API built on a JSON timeline. It bills per rendered minute, from \$0.20 a minute on a subscription, and has a verified n8n node. Like JSON2Video, it renders and hands the file back; posting is up to you. [Read the full Shotstack comparison →](https://orshot.com/blog/shotstack-api-alternative) ### Creatomate Creatomate renders video and images from JSON templates, with credits that scale with resolution and frame rate. It works with Make, n8n and Zapier, and rendered files are deleted after 30 days. [Read the full Creatomate comparison →](https://orshot.com/blog/creatomate-api-alternative) ### Plainly [Plainly](https://orshot.com/blog/plainly-videos-alternative) renders videos from After Effects projects, so it suits teams that already have a motion designer and want exact AE output. You need an After Effects license to build templates. It bills by render minutes, from \$69 a month for 50 minutes, and keeps files for 24 hours to 7 days depending on the plan. There's a 14-day trial instead of a free plan. ### Remotion ![The Remotion homepage: make videos programmatically with React](https://orshot.com/blog/json2video-api-alternative/alt-remotion.webp) Remotion is a React library rather than a hosted API. You write videos as components and render them on your own servers or AWS Lambda. It's free for individuals and companies of up to 3 people. Larger companies pay \$0.01 a render with a \$100 monthly minimum for automated rendering. More tools with verified pricing are in our [video generation API comparison](https://orshot.com/blog/ai-video-generation-api). ## When JSON2Video Fits Better A render-only API like JSON2Video covers it when: - you only need the MP4 - your workflow already posts and tracks the videos - you download each file within the week Its prepaid credits also don't expire, which suits bursty volume. Orshot fits when you want the render, the post and the results in one place, when templates need to stay on brand across a team, or when the same content also needs images, carousels or PDFs. ## Switching From JSON2Video 1. **Rebuild the template visually.** Recreate it in Studio, import it from Canva or Figma, or describe it to the [AI Design Agent](https://orshot.com/blog/introducing-design-agent). Name each dynamic layer after your JSON2Video variable, so your data mapping doesn't change. 2. **Swap the render step.** Replace the JSON2Video call with the Orshot one from the tabs above, or swap the node in n8n, Make or Zapier. 3. **Replace the posting nodes.** Connect your accounts under Social and add a `publish` block to the render. Start with `isDraft: true` for the first week. Stuck on a template? Hit the chat button and I'll help you move it over. ## Common Questions **Q: What is JSON2Video?** JSON2Video is a video creation API. You describe a video as a JSON movie of scenes and elements, or build a template in its editor, and the API renders an MP4. It's often used in n8n and Make workflows for faceless and social videos. Orshot does the same render from a template, then posts the video to 15+ social platforms from the same API call. **Q: How much does JSON2Video cost?** JSON2Video bills 1 credit per second of video. Plans start at $16.95 a month billed yearly for 3,000 credits (about 50 minutes), then $49.95 a month for 12,000 credits and $99.95 a month for 30,000 credits. Prepaid packs of 7,200 or 15,600 credits don't expire. Checked against json2video.com/pricing in September 2026. Orshot starts at $39 a month for video, with social publishing at $12 a month per connected account. **Q: Does JSON2Video have a free plan?** Yes. JSON2Video's free plan gives 600 credits with no card, and its videos carry a watermark, which the paid plans remove. Orshot's free plan is 100 credits a month for images and PDFs, with no watermark. Video on Orshot starts at $39 a month. **Q: Is there a free JSON2Video alternative?** For video, Remotion is free for individuals and companies of up to 3 people, but you write the video in React and run the rendering yourself. On Orshot you can design templates in Studio and render images and PDFs on the free plan, 100 credits a month. Video rendering is on paid plans from $39 a month. **Q: How long can a video be on JSON2Video and Orshot?** JSON2Video caps each video at 1 minute on its $16.95 plan, 10 minutes on the $49.95 plan and 30 minutes on the $99.95 plan. Orshot allows 3 minutes per video on the $39 plan and up to 10 minutes on larger plans. Shorts, reels and TikToks fit either one. For long videos, JSON2Video's higher plans allow more. **Q: Can JSON2Video post videos to TikTok or YouTube?** JSON2Video renders the video and returns a file URL; posting it happens in a separate step, usually a TikTok, Instagram or YouTube node in n8n, Make or Zapier. Orshot posts from the render call itself: add a `publish` object and the video goes to 15+ platforms, now, on a schedule or as a draft. **Q: Can I use Orshot in n8n instead of JSON2Video?** Yes. Orshot has a first-party n8n node, plus Make and Zapier apps. Swap the render node for Orshot's, then remove the posting nodes and add a publish block to the render. The faceless video tutorial has a workflow you can import. **Q: Can Orshot make faceless videos with a voiceover and captions?** Yes. Generate a lip-synced presenter from a script and a photo, or a voiceover in Studio, and Orshot transcribes the audio into word-by-word captions at render time. No separate voice or caption service is needed. See [audio and subtitles](https://orshot.com/docs/orshot-studio/audio-subtitles). **Q: Do I need to write JSON to use Orshot?** No. Templates are designed visually in Orshot Studio, and each dynamic layer becomes an API parameter. The only JSON is the render request, which is a flat list of parameter names and values. **Q: How long does JSON2Video keep rendered videos?** JSON2Video deletes every render after 7 days, per its file retention docs, so workflows need a step that copies the MP4 somewhere first. Orshot keeps rendered files for at least a year, and can also push them to your own Google Drive, Dropbox, S3 or R2 bucket. **Q: Can I schedule videos to TikTok, Instagram and YouTube with Orshot?** Yes. Set the `publish` status to scheduled with a date and time, and Orshot posts the rendered video to the connected accounts then. You can also save it as a draft to review first. See [social publishing](https://orshot.com/features/social-publishing). **Q: Does Orshot work with Make and Zapier too?** Yes. Orshot has native Make and Zapier apps alongside the n8n node, with the same parameter names in each. A render step in any of them can also carry the publish block, so the posting modules come out of the scenario. **Q: How do I move my templates from JSON2Video to Orshot?** There's no importer for JSON2Video movies, so you rebuild each template once. You can design it in Studio, import a Canva or Figma design, or describe it and let the [AI template generator](https://orshot.com/features/ai-template-generator) draft it. Name each dynamic layer after your old variable and your data mapping stays the same. **Q: Can an AI agent render and post my videos?** Yes. With Orshot for agents, Claude, ChatGPT or Cursor can render a template, post the video and read how it performed from a plain prompt. JSON2Video also offers an MCP server for rendering; Orshot's covers the posting and analytics steps as well. ## Try It [Sign up](https://orshot.com/pricing?via=blog-json2video-footer), rebuild one JSON2Video template in Studio, and connect one social account. Render a video with a `publish` block set to draft and see it land in your queue. If something doesn't work the way you expect, hit the chat button. I'm usually the one on the other end. --- ### [A Modern DynaPictures Alternative with Better Pricing and Editor](https://orshot.com/blog/dynapictures-api-alternative) > Looking for a DynaPictures alternative? Orshot offers Canva-like editor, white-label embed, video generation, more integrations and cheaper pricing. Start free DynaPictures has been around since 2020 and they've done solid work in the image automation space. German company, GDPR-focused, reliable API. If you're using it for banner generation or email personalization, it probably gets the job done. But if you've been working with it for a while, you've likely noticed some friction. The editor feels dated compared to modern design tools. No multi-page template support for carousels. Limited integrations beyond Zapier and Pabbly. And pricing in EUR that starts at €29/month for just the basics. I built Orshot because I needed something more flexible. Same core concept - turn templates into API endpoints - but with an editor that feels like Figma, not a web form from 2015. [**Try Orshot Free**](https://orshot.com/pricing "target=_blank") **(100 credits a month, no card needed)** **Migrate from DynaPictures to Orshot quickly with AI** Install the Orshot agent skill in Claude Code, Cursor, or Windsurf to automatically translate your DynaPictures API calls to Orshot. The skill knows both APIs and handles the mapping for you. ```bash npx skills add orshot-hq/orshot-agent-skills ``` [Learn more about the agent skill](https://orshot.com/agents/orshot-skills) [Open the embed](https://orshot.com/templates/shared/8zfweezu/embed?view=view) ## What's Different Here's a quick comparison if you're evaluating both: | Feature | Orshot | DynaPictures | | :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------- | :------------------------------- | | **Free Tier** | 100 free credits a month, resets monthly | 14-day trial only | | **Starter Plan** | $39/month for 1,500 credits (1 credit = 1 image) | €29/month (Lite) | | **Pro Plan** | $99/month for 5,000 credits | €79/month (Pro) | | **Template Editor** | [Orshot Studio](https://orshot.com/studio) - Figma-like with [Smart Stacking](https://orshot.com/blog/smart-stacking) | Basic template editor | | **Multi-page Templates** | [Carousels, PDFs, Videos](https://orshot.com/blog/introducing-carousel-templates) | No | | **Embed Editor in App** | [White-label Studio Embed](https://orshot.com/blog/orshot-studio-embed) - all paid plans | Widget for image generation only | | **Template Import** | [Canva](https://orshot.com/solutions/canva-template-to-api), [Figma](https://orshot.com/solutions/figma-automation-via-rest-api), [AI](https://orshot.com/features/ai-template-generator) | Manual creation only | | **Video Generation** | MP4/WebM/GIF with per-layer controls and [animations](https://orshot.com/blog/introducing-animations-in-studio) | No | | **Modern Integrations** | n8n, Make, MCP Server, CLI, Dynamic URLs | Zapier, Pabbly, Integrately | | **Agency Program** | [Free Partner Program](https://orshot.com/blog/agency-partner-program) with sandbox workspaces | No | | **Social Publishing** | [Built-in — 15+ platforms](https://orshot.com/docs/publish/introduction) | No | ## The Real Gaps with DynaPictures From what I've seen talking to users who've switched: **The editor is clunky** — DynaPictures' template editor works, but it feels like a web form. No drag-and-drop positioning, no smart alignment, no keyboard shortcuts. If your team includes designers, they'll struggle. [Orshot Studio](https://orshot.com/studio) feels like Figma - layers panel, smart guides, relative positioning with [Smart Stacking](https://orshot.com/blog/smart-stacking). **No multi-page templates** — Instagram carousels, LinkedIn slideshows, multi-page PDFs - DynaPictures can't do these natively. You'd generate each page separately and stitch them yourself. Orshot handles [multi-page templates](https://orshot.com/blog/introducing-carousel-templates) in a single API call, including multi-page videos. **Limited integrations** — DynaPictures has Zapier, Pabbly, and Integrately. That's it. No n8n support (huge for self-hosted automation), no [MCP Server](https://orshot.com/docs/integrations/mcp-server) for AI tools like Claude, no CLI for terminal workflows. Orshot connects with all of these plus Make, Dynamic URLs, and more. **No embeddable editor** — DynaPictures has a widget for end-users to fill forms and generate images. But you can't embed an actual design editor in your app. [Orshot Studio Embed](https://orshot.com/blog/orshot-studio-embed) gives your users a full Canva-like editor inside your product - white-labeled, with webhooks for template changes. **No agency support** — If you're an automation agency building for multiple clients, DynaPictures doesn't offer any special program. Orshot's [Agency Partner Program](https://orshot.com/blog/agency-partner-program) gives you unlimited sandbox workspaces, pooled credits, and client handoff tools - completely free. ## What You Get Extra Beyond solving these gaps: - **Import templates from anywhere** - Clone from Canva, import from Figma with our plugin, or use the [AI Template Generator](https://orshot.com/features/ai-template-generator) to create templates from screenshots. - **Better video support** - Export to MP4, WebM, or GIF. Control each video layer with `.trimStart`, `.trimEnd`, `.muted`, and `.loop` parameters. Add [per-layer animations](https://orshot.com/blog/introducing-animations-in-studio) like fade in, slide transitions, and scale effects with visibility timing and staggered choreography. DynaPictures doesn't do video at all. - **Dynamic URLs** - Generate images on the fly by passing parameters in the URL. No API call needed for simple use cases. [Learn more](https://orshot.com/docs/integrations/dynamic-urls). - **Social Publishing** - Render and [post directly to 15+ social platforms](https://orshot.com/docs/publish/introduction) from the API or dashboard. Skip the download-upload-post cycle entirely. - **Actual support** - I respond to chat messages, usually within an hour. Sometimes I'll just hop on a call if something's complicated. ![Customer testimonial from Mihai about using Orshot](https://orshot.com/blog/mihai-testimonial.webp) ## Utility Templates We have pre-built API templates for common tasks: - [Twitter Screenshot API](https://orshot.com/templates/tweet-image) - Clean tweet screenshots - [Website Screenshot API](https://orshot.com/templates/website-screenshot) - Full page captures - [Dynamic Image Resizer API](https://orshot.com/templates/dynamic-image-resizer) - Resize on the fly These work standalone or combined with your custom templates. ## Switching from DynaPictures Here's how most people do it: ### Step 1: Recreate Your Templates (15-30 min) **Rebuild in Studio** - Open your DynaPictures template, recreate it in [Orshot Studio](https://orshot.com/studio). The editor is more intuitive, so it usually goes faster than expected. **Use AI** - Screenshot your DynaPictures output, drop it into the [AI Template Generator](https://orshot.com/features/ai-template-generator). It'll recreate the structure, you fine-tune. **Import from Figma** - If you have designs in Figma, use [our plugin](https://orshot.com/solutions/figma-automation-via-rest-api) to import directly. ### Step 2: Update Your API Calls (10 min) **DynaPictures API:** ```javascript const response = await fetch("https://api.dynapictures.com/designs/{id}", { method: "POST", headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ format: "jpeg", params: [ { name: "title", text: "Hello World" }, { name: "image", imageUrl: "https://example.com/photo.jpg" }, ], }), }); ``` **Orshot API:** ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_template_id", modifications: { title: "Hello World", image: "https://example.com/photo.jpg", }, }), }); ``` Cleaner structure, same concept. Full docs at [orshot.com/docs](https://orshot.com/docs). ### Step 3: Test Your Integration Use the free plan (100 credits a month) to validate everything works before going live. No credit card needed. ## For Agencies If you're building image automation for clients, check out the [Agency Partner Program](https://orshot.com/blog/agency-partner-program): - Free to join - Unlimited sandbox workspaces for development - Pooled credit quota (up to 100k/month) - Client handoff tools when they're ready to subscribe [Apply here →](https://orshot.com/partner-program) ## Try It DynaPictures works. But if you want a better editor, multi-page support, modern integrations, and the ability to embed a design studio in your app - give Orshot a try. [**Start Free →**](https://orshot.com/pricing) (100 credits a month, no card) Questions? Hit me up via chat on the site or email [hi@orshot.com](mailto:hi@orshot.com). --- ### [A No-Code Guide to Automated Retail Ad Generation](https://orshot.com/blog/no-code-retail-ad-generation) > Learn how to automate retail ad generation at scale on auto-pilot using no-code image generation. Create one ad design, generate thousands of variations The retail advertising game has changed. You can't manually design hundreds of product ads anymore—not when you need to launch campaigns across multiple products, platforms, and variations daily Here's how to automate retail ad generation without touching Photoshop or hiring a designer for every update ## The Problem with Manual Ad Creation Let's say you're running a retail brand with 50 products. Each product needs: - Multiple ad sizes (Instagram story, feed post, Facebook ad, Google display) - Seasonal variations (Black Friday, Christmas, Summer Sale) - A/B testing versions (different headlines, colors, CTAs) That's 50 × 4 × 3 × 2 = **1,200 unique ads**. Manually creating these would take weeks and cost thousands in design time There's a better way ## Turn One Template into Thousands of Ads ![Designing a retail ad template in Orshot Studio](https://orshot.com/blog/retail-ads/design-ad-studio.webp) [Preview this ad ↗](https://orshot.com/studio?community_template_id=27) The core concept: **Design once, generate infinitely** Instead of creating individual ads, you create one template and use automation to generate variations. Here's how it works with Orshot: ### Step 1: Choose or Create a Retail Template Start with pre-designed templates built specifically for retail: - **Browse retail-specific templates**: [Orshot Retail Templates](https://orshot.com/templates/g/retail) - **Explore ad templates**: [Orshot Ad Templates](https://orshot.com/templates/g/ads) Or create your own from scratch using **Orshot Studio** (the visual template editor). If you're starting from existing designs in Canva or other tools, check out [free design alternatives](https://orshot.com/blog/free-canva-alternatives) that can be imported directly into Orshot for automation. - **Build custom templates**: [Orshot Studio](https://orshot.com/features/orshot-studio) - Drag-and-drop interface - Add dynamic text fields, images, colors - Design once, use forever ### Step 2: Connect Your Product Data Once you have a template, connect it to your product catalog. Each template becomes an API endpoint that accepts data inputs **Example**: You have a retail template with these dynamic fields: - Product image - Product name - Price - Discount percentage - Background color Instead of manually editing each field, you pass data through the API: ```json { "product_image": "https://yourstore.com/images/shoe-1.jpg", "product_name": "Running Shoes Pro", "price": "$129.99", "price.fontSize": "120px", "discount": "30% OFF", "discount.fontWeight": "bold", "bg_color": "#FF5733" } ``` ![Generating a retail ad in the Orshot playground](https://orshot.com/blog/retail-ads/generate-ad-playground.webp) Orshot generates the ad image automatically. Change the data, get a different ad instantly **Learn more**: [Image Generation API](https://orshot.com/solutions/image-generation-api) ### Step 3: Automate with No-Code Tools Don't want to deal with APIs? Use no-code automation platforms: **Available integrations**: - Zapier - Make (Integromat) - n8n - Pipedream - And more **Explore integrations**: [Orshot Integrations](https://orshot.com/integrations) **Example workflow**: 1. New product added to Shopify → Trigger automation 2. Fetch product data (name, image, price) 3. Send data to Orshot template 4. Generated ad saved to Google Drive 5. Ad posted to social media via [Orshot Social Publish](https://orshot.com/docs/publish/introduction) or Facebook Ads Manager Zero manual work. Your ads generate and publish automatically You don't even need Zapier or Make for this. Orshot has this automation built in as a ready-made workflow: it pulls sale data from Google Sheets on a schedule, renders the discount banners, and saves them to Google Drive. One click adds it to your workspace. [Sale discount banners workflow on Orshot](https://orshot.com/workflows/sale-discount-banners/embed) ## Dynamic URLs: The Simplest Way to Generate Ads ![Generating a retail ad using a dynamic URL](https://orshot.com/blog/retail-ads/generate-ad-using-url.webp) If you want even simpler automation, use **Dynamic URLs** Instead of API calls or integrations, generate ads directly through a URL with parameters: ```bash orshot.com/v1/studio/dynamic-url/perfume-banner-1.png?product_name=Running+Shoes&price=129.99&discount=30%+OFF ``` Change the URL parameters, and the ad changes instantly. Perfect for: - Email campaigns (unique ad per recipient) - Landing pages (personalized ads based on user data) - Social media (dynamic Open Graph images) **Full documentation**: [Dynamic URLs Guide](https://orshot.com/docs/integrations/dynamic-urls) ## Real-World Use Cases for Retail Automation ### Use Case 1: Seasonal Campaign at Scale **Scenario**: Black Friday sale with 100 products. **Without automation**: - Designer creates 100 unique ads - Takes 1-2 weeks - Costs $2,000-$5,000 **With Orshot**: - 1 template created in 30 minutes - Automation generates all 100 ads in seconds - Total cost: $0 (after subscription) ### Use Case 2: Personalized Product Ads **Scenario**: E-commerce brand wants personalized ads for email subscribers. **Setup**: - Template with dynamic product recommendations - Integration with email platform (Mailchimp, SendGrid) - Each subscriber sees products based on browsing history **Result**: Higher click-through rates, more conversions. ### Use Case 3: Multi-Platform Ads from One Design **Scenario**: Launch ad campaign across Instagram, Facebook, Google Ads. **Challenge**: Each platform needs different sizes. **Solution**: - Design one master template in Orshot Studio - Export in multiple formats (1080×1080, 1920×1080, 728×90) - Automation generates all sizes from the same data ## Why This Matters for Retail Brands - **Speed**: Generate ads in seconds, not days, and on auto-pilot - **Cost**: Eliminate repetitive design work—designers focus on creative strategy, not resizing - **Consistency**: All ads follow [brand guidelines automatically](https://orshot.com/features/brand-assets-library) - **Scale**: Launch campaigns with hundreds of variations without extra effort - **Flexibility**: Update pricing, products, or messaging across all ads instantly ## Getting Started with Automated Retail Ads Here's the fastest path to automation: 1. **Pick a template**: Start with a [ad template](https://orshot.com/templates/g/ads) or build your own in [Orshot Studio](https://orshot.com/features/orshot-studio) 2. **Test with static data**: Generate a few ads manually to see how it works 3. **Connect your data**: Use the [API](https://orshot.com/solutions/image-generation-api), [integrations](https://orshot.com/integrations), or [dynamic URLs](https://orshot.com/docs/integrations/dynamic-urls) 4. **Automate everything**: Set up workflows so ads generate and publish without you ## Final Thoughts Retail advertising doesn't have to be slow and expensive. With template-based automation, you design once and generate infinitely Whether you're launching a 10-product campaign or managing 1,000 SKUs, the process is the same: create a template, connect your data, and let automation handle the rest Stop spending hours on repetitive design work. Start [generating ads at scale](https://orshot.com/solutions/image-generation-api) **Related →** [10 Best Tools to Automate Content Creation](https://orshot.com/blog/automated-content-creation-tools) | [Best Social Media Automation Tools](https://orshot.com/blog/social-media-automation-tools) --- ### [A Piktochart Alternative with Modern Design Editor and API](https://orshot.com/blog/piktochart-alternative-with-api) > Stop manually updating reports. Switch to Orshot to automate infographics, social content, and PDFs with our API and Integrations. 100 credits free every month. Piktochart is a fantastic tool for creating infographics and reports manually. If you need to make _one_ beautiful presentation, it's a great choice. But what if you need to generate **100 individualized reports** for your clients? Or create a new infographic summary **every time your data updates**? That's where Piktochart hits a wall. You're stuck manually editing templates, copy-pasting data, and exporting files one by one. It's tedious, error-prone, and unscalable. I built **Orshot** to solve this exact problem. Orshot combines a **Canva-like design editor** with a powerful **API**, allowing you to automate the design process completely. [**Try Orshot Free**](https://orshot.com/pricing "target=_blank") **(100 free credits a month)** **Migrate from Piktochart to Orshot quickly with AI** Install the Orshot agent skill in Claude Code, Cursor, or Windsurf to automatically translate your Piktochart API calls to Orshot. The skill knows both APIs and handles the mapping for you. ```bash npx skills add orshot-hq/orshot-agent-skills ``` [Learn more about the agent skill](https://orshot.com/agents/orshot-skills) ## Demo Try Orshot Studio with this demo template [Open the embed](https://orshot.com/templates/shared/n45fmzt8/embed?view=play) ## The Automation Gap The main reason teams look for a Piktochart alternative is **automation**. | Feature | Orshot | Piktochart | | :-------------------- | :------------------------------------------------------- | :----------------------------------------- | | **Generation Method** | **API & Integrations** (Automated) | **Manual** (Drag & Drop) | | **Data Connection** | Connect to **n8n, Make, Webhooks**, or Zapier | Limited integrations | | **Integrations** | Webhooks, Native MCP Server, Direct API | Standard (e.g., Google Drive export) | | **Use Case** | Programmatic SEO, Automated Reporting, Social Automation | One-off Presentations, Manual Infographics | | **Pricing** | **Based on generation volume** (starts free) | **Per user/seat** model | | **Developer Tools** | **SDKs** (Node, Python), **CLI**, **API Docs** | None | | **Output Formats** | IMG, PDF, Video (MP4/GIF/WebM) | IMG, PDF, PPT | | **Social Publishing** | [Built-in — 15+ platforms](https://orshot.com/docs/publish/introduction) | No | ## Why Switch to Orshot? ### 1. You Need an API Piktochart doesn't have a public API for generating content. Orshot is _built_ API-first. You design a template once, and then use our API to generate thousands of variations by simply sending JSON data. ```json // Example: Generating a report cover { "templateId": "123", "modifications": { "title": "Q1 Performance Review", "client_name": "Acme Corp", "chart_image": "https://chart-service.../chart.png" } } ``` ### 2. Powerful Integrations (No Code Needed) You don't need to be a developer to automate your designs. Orshot integrates seamlessly with tools like **n8n**, **Make**, and **Zapier**. - **Webhooks**: Trigger an image or PDF generation whenever a form is submitted or a database row is added. - **Workflow Automation**: Connect your Airtable or Google Sheets data directly to your design templates. ### 3. A Familiar "Canva-like" Editor Moving to a developer tool shouldn't mean losing design capabilities. [Orshot Studio](https://orshot.com/features/orshot-studio) offers a drag-and-drop experience that feels just like Canva or Piktochart, but with powerful features for automation like **Smart Stacking** (auto-adjusting layouts based on text length). ### 4. Better Pricing for Scale Piktochart charges per user. If you have a team, that adds up. Orshot charges based on _usage_. Whether you have 1 person or 10 people designing templates, you only pay for the images and PDFs you generate. - **Free Plan**: 100 free credits, refilled every month. [See pricing](https://orshot.com/pricing). - **Pro**: Starts at $39/mo for 1,500 credits (1 credit = 1 image or PDF page). ### 5. Embed Design Editor in your App Orshot Embed feature lets you [embed the editor inside your app](https://orshot.com/blog/image-editor-sdk). You can give your users their own templates library and a white-labeled experience without moving out of your app. ### 6. Developer Friendly SDKs If you are building an application, relying on manual tools is a non-starter. We provide official SDKs to integrate design generation directly into your product. ### 6. Publish Directly to Social Media Skip the download-upload-post cycle entirely. Orshot's [Social Publishing](https://orshot.com/docs/publish/introduction) addon lets you render an image and post it directly to 15+ platforms — Twitter/X, Instagram, LinkedIn, Facebook, TikTok, Discord, WhatsApp, and more. Publish from the dashboard or automate via the API. $12/month per connected account, unlimited posts. ## The AI Advantage While Piktochart has basic AI for charts, Orshot uses AI to automate the entire creative process. ### Smart Design Variants Never manually resize a design again. Create one "master" template, and let our **AI Variant Generator** automatically repurpose it for Instagram Stories, LinkedIn banners, and Twitter posts—adjusting the layout intelligently to fit each format. [AI Variant Generation Demo](https://www.youtube.com/watch?v=JZR0ufeJNnQ) ### AI Content Generation With **Dynamic Parameters**, you don't even need to provide all the content. Use the `.prompt` modifier in your API calls to let AI write headlines or generate images for you on the fly. ```json { "modifications": { "headline.prompt": "Write a punchy title about Q3 sales growth", "background_image.prompt": "Corporate office skyline, minimalistic style" } } ``` ### AI Template Generator Stuck on a design? Just describe what you need ("A modern tech conference certificate"), or upload a screenshot of a design you like. Orshot's AI will build a fully editable, API-ready template for you in seconds. ## Beyond Static Images: Video Generation Piktochart is great for static PDFs. Orshot brings your reports to life with video. You can generate **MP4, WebM, and GIFs** programmatically. Add video layers, control trim/loop settings via API, and turn a static report into an engaging [social media reel automatically](https://orshot.com/blog/social-media-automation-tools). [Video Generation API Demo](https://www.youtube.com/watch?v=RQPHJY3bkZk) ## Frequently Asked Questions **Q: Is there a free alternative to Piktochart?** Yes, Orshot offers a free tier with **100 free credits** that refill every month. Unlike Piktochart's free plan which has watermarks and limited resolution, Orshot's free plan includes full API access and high-quality exports. **Q: Does Piktochart have an API?** No, Piktochart is primarily a manual drag-and-drop tool and does not offer a public API for content generation. **Orshot is the API-first alternative**, designed specifically for developers and automation workflows. **Q: How can I automate Piktochart designs?** You cannot automate designs natively within Piktochart. To automate infographic and report generation, you should switch to Orshot, which integrates with **Make, n8n, Zapier**, and has a native REST API. **Q: Can I generate PDF reports automatically?** Absolutely. Orshot supports **PDF generation** from the same templates you use for images. This is perfect for generating bulk invoices, certificates, or client status reports dynamically. **Q: Is Orshot better for teams?** Yes. Piktochart charges per seat, meaning costs scale with your team size. **Orshot charges by usage (credits)**. You can have unlimited team members collaborating in your workspace without extra per-user fees. **Q: Can I import Canva or Figma designs?** Yes! Orshot allows you to import designs directly. You can use our [Canva import](https://orshot.com/solutions/canva-template-to-api) tool or the [Figma plugin](https://orshot.com/solutions/figma-automation-via-rest-api) to bring your existing assets into our automation pipeline. **Q: Does Orshot support video and GIFs?** Yes. While Piktochart is limited to static images and PDFs, Orshot allows you to generate **MP4 videos and GIFs** programmatically, complete with dynamic text and media layer controls. **Q: What is the best tool for bulk infographic generation?** For bulk generation, manual tools like Piktochart are inefficient. **Orshot** is the best choice because it separates the design (template) from the data (JSON), allowing you to generate thousands of unique infographics in minutes. ## How to Switch 1. **Recreate your Template**: Open [Orshot Studio](https://orshot.com/studio) and recreate your Piktochart design. It's intuitive and fast. 2. **Connect Data**: Use the API or a no-code tool (like Make/n8n) to map your data fields to the template layers. 3. **Automate**: Run your workflow and watch the content generate itself. Ready to stop the manual grunt work? [**Get Started with Orshot**](https://orshot.com/pricing) --- ### [A Placid.app Alternative with AI features and better pricing](https://orshot.com/blog/placid-api-alternative) > A Placid alternative with the simplest credits. 1 credit = 1 image, no multipliers, no gating, plus multi-page, white-label embed and video. 100 free credits a month Placid has been around since 2019 and they've built a solid creative automation platform. They were one of the early players in the [image automation API](https://orshot.com/solutions/image-generation-api) space, and that experience shows. Good integrations, decent editor, reliable service. But if you're using Placid right now, you've probably noticed some friction. Credits that multiply the moment a render gets bigger than 4000px. PDF pages that cost double what an image does. The Editor SDK sitting behind their top plan. It adds up in ways that are hard to forecast. Orshot started from the same premise Placid did — a template becomes an API endpoint — and then went at the parts I kept getting stuck on: flat credits, multi-page templates, workflows and publishing that don't need a third-party tool in between. 100 credits a month, no card needed. [Try Orshot free](https://orshot.com/pricing?via=blog-placid-top) [Document Design in Orshot Studio](https://orshot.com/templates/shared/kt8j29wx/embed?view=play) ## What's Different If you're already on Placid, here's what changes when you switch: | Feature | Orshot | Placid | | :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------- | | **Free Tier** | 100 free credits a month, no watermarks, resets monthly | Free trial, credit count not published | | **Entry Plan** | \$39/month for 1,500 credits | \$19/month for 500 credits (Basic) | | **At \$39** | 1,500 credits (Launch) | 2,500 credits (Pro) | | **At \$89–99** | \$99/month for 5,000 credits | \$89/month for 25,000 credits (Business) | | **Image credits** | 1 credit at any size | 1 credit to 4000px, then 8 / 16 / 32 | | **PDF credits** | 1 credit per page | 2 credits per page, ×2 for high-res | | **Video credits** | 1 credit per second | 1 credit per second | | **Overages** | Pay-as-you-go, renders never stop | None - generation blocked until upgrade | | **Unused credits** | Reset monthly | Roll over, up to 2× your monthly budget | | **Video Editor** | Full timeline, per-layer animation, audio tracks, auto-subtitles | No visual video editor | | **Embed Editor in App** | White-label Studio Embed - all paid plans | Editor SDK on VIP only (\$249/month) | | **Multi-page Templates** | Carousels, PDFs & videos in one API call | Merged PDFs yes, carousels & video no | | **Native workflows** | Trigger, render and publish on a schedule | Zapier, Make or n8n | | **Social Publishing** | Built-in — 15+ platforms | No | | **Template Editor** | Orshot Studio - Figma-like with Smart Stacking | Placid Editor | | **Template Import** | Placid, Canva, Figma, AI | Placid Editor | ## The Real Problems with Placid Based on what I've seen from users switching over: - **Credits multiply with size, and you have to remember that** — a Placid image is 1 credit up to 4000px, then 8, then 16, then 32 as the longest side grows. A PDF page starts at 2 credits and doubles again for high-resolution output. So a batch of A2 posters at 300dpi bills at 8 credits a page, not 1. Orshot is a flat 1 credit for an image at any size, 1 per PDF page, 1 per second of video — the number you budget is the number you spend. - **Editor SDK is a $249/month feature** — embedding Placid's editor into your product means the VIP plan; their comparison table shows Canvas Previews and the Editor Component unavailable all the way up through Business at $89. Orshot's Studio Embed is on every paid plan from $39 — white-label, with custom branding and webhook events. - **No carousels or multi-page video** — Placid's PDF API will merge pages into one document, so that part is covered. What it won't do is a multi-page _template_ you can export as an Instagram carousel or an animated multi-page video. Orshot treats those as the same object: one template, one API call, out as a carousel, a PDF or an MP4. - **Run out of credits and generation stops** — Placid doesn't charge overage fees, which sounds generous until a campaign stops rendering mid-flight and the only fix is upgrading the plan. Orshot bills overages pay-as-you-go so renders never stop. - **The render is where it ends** — Placid gives you an endpoint. Deciding when to call it, where the copy comes from and where the file goes is still Zapier, Make or n8n. Orshot has workflows and publishing in the product, so the trigger, the render and the post live in one place. ### Where Placid Wins Two things I'm not going to pretend away, because you'll find them the moment you open their pricing page: - **At \$39 they give you more raw credits.** Placid Pro is \$39 for 2,500 credits; Orshot Launch is \$39 for 1,500. If your work is plain images under 4000px and nothing else, that's more headroom for the same money. - **Placid credits roll over**, up to twice your monthly budget. Orshot credits reset each month. Where it flips is per output rather than per credit: PDF pages take half the credits on Orshot, large images don't multiply, the embed isn't a \$249 feature, and a carousel or a video is one call instead of a stitching job. ## What You Get Extra with Orshot Beyond solving Placid's pain points: - **Intuitive visual editor** - Orshot Studio feels like designing in Figma or Canva. Drag-and-drop, Smart Stacking for relative positioning, keyboard shortcuts that just work. Your designers can use it directly. - **White-label embed** - [Studio Embed](https://orshot.com/blog/orshot-studio-embed) lets you drop a full design editor into your app. Custom branding, permission controls, webhook events. It's like giving your users their own Canva. - **Multi-page templates** - Create carousels, multi-page PDFs, and even multi-page videos in a single template. Each page can have multiple video layers. Generate all pages with one API call. Placid's API will merge PDF pages into one document, but there's no multi-page template — no carousel export, no multi-page video. [See how it works](https://orshot.com/blog/introducing-carousel-templates). - **Full video editor** - Visual video timeline with per-layer animations, page-level audio tracks, and auto-generated subtitles. Design video templates visually in Studio, then control every property via API. Placid doesn't offer this level of video editing. - **Scale from solo to enterprise** - Plans go from free (100 credits a month) to 300k credits/month. No awkward jumps in pricing. - **More integrations** - [MCP Server](https://orshot.com/docs/integrations/mcp-server) for AI apps like Claude, [CLI](https://orshot.com/docs/integrations/orshot-cli) for terminal workflows, plus Make, Zapier, n8n. [Full list here](https://orshot.com/integrations). - **Import from anywhere** - Clone from Canva, import from Figma, or use AI to generate templates. Way faster than starting from scratch. - **Social Publishing** - Render and [post to 15+ social platforms](https://orshot.com/docs/publish/introduction) in one API call. No need for Buffer or any third-party scheduler. Publish instantly, schedule, or save as draft. - **Actual support** - I respond to chat messages. Usually within an hour. Sometimes I'll hop on a call if something's complicated. > Compared to Placid, for example, Orshot offers far more options for creating content. > Thank you very much for this great tool. So far, we've been very happy with it. > > — Max Müller, ExcavatorScout ## Let Agents do it for you This is the AI part the title promises. Orshot ships an [MCP server](https://orshot.com/agents) so Claude, Cursor or ChatGPT can render straight from your templates. Describe the asset, the agent calls Orshot, and an on-brand PNG, PDF or MP4 comes back. No image microservice to babysit. - **Generate stunning templates on auto-pilot** - ask Claude or Codex to design for you, just pass the details. - **Render from a prompt** - your agent turns a brief, a ticket or a webhook into a finished, on-brand render. - **OAuth per workspace** - scoped access for each client or environment, with no keys to rotate. - **Brand kit applied automatically** - every agent render inherits your fonts, colors and logos. - **One call, one or thousands** - fire a single render or a whole batch from the same thread. In Studio, the AI Design Agent can build a template from a plain-English description too, so you start from something instead of a blank canvas. ## You Shouldn't Need Zapier to Call an API Placid does the render well. The awkward part is everything either side of it — noticing there's a new blog post, pulling the title and author, deciding where the finished PNG goes. That lives in Zapier, Make or n8n, which means a second subscription, a second set of credentials, and a task bill that climbs with your volume. Orshot [Workflows](https://orshot.com/workflows) collapse that into the same product as the template: - **Trigger** from Google Sheets, Airtable, Notion, Google Forms, HubSpot, Shopify, Drive or a plain webhook - **Render** one template or a whole batch - **Send** it to storage, your own endpoint, or straight to social - **Repeat** on a schedule, without you ![An Orshot workflow: a daily schedule trigger, a Google Sheets source, a render step mapping columns to template fields, and a URL destination](https://orshot.com/blog/bannerbear-alternative/workflow-builder.webp) The one most Placid users want first is an OG image for every post, without wiring anything. Copy it into your workspace and turn it on: [Automatic Open Graph images for every post, on Orshot](https://orshot.com/workflows/blog-og-images/embed) A few others worth stealing, all working presets rather than concepts: - **[Return an OG image from a webhook](https://orshot.com/workflows/dynamic-og-webhook)** — your CMS calls, the render comes back - **[Product marketing images from your catalog](https://orshot.com/workflows/product-marketing-images)** — one row per SKU, on-brand every time - **[YouTube thumbnails at scale](https://orshot.com/workflows/youtube-thumbnails-at-scale)** — from a sheet, batched - **[Customer reviews into testimonial cards](https://orshot.com/workflows/customer-review-cards)** — form or sheet in, shareable graphic out - **[Sale and discount banners](https://orshot.com/workflows/sale-discount-banners)** — driven off a pricing sheet If you'd rather keep orchestration where it already lives, that works too — there are first-party [n8n](https://orshot.com/docs/integrations/n8n), Zapier, Make and Pipedream integrations, plus an MCP server. **Run one of these on your own data** — Pick a workflow, connect your source, and watch it render. 100 free credits a month. [Start free](https://orshot.com/pricing?via=blog-placid-workflows) ## Utility Templates (The Handy Extras) We've got pre-built API templates that solve common problems: - [Twitter Screenshot API](https://orshot.com/templates/tweet-image) - Clean tweet screenshots with customization - [Website Screenshot API](https://orshot.com/templates/website-screenshot) - Full page captures, any viewport - [Dynamic Image Resizer API](https://orshot.com/templates/dynamic-image-resizer) - Resize on the fly These work great on their own or combined with your custom templates. ## Switching from Placid It's pretty straightforward. Below is the short version; the full walkthrough with screenshots lives on its own page. ### Step 1: Move Your Templates (5-30 min) You have a few options: **Import it** - Open the template in the Placid editor, save the page as a single file (.mhtml) and upload it under New Template, then the Placid tab. Layers, images and layer names come across, and the layer names become your API parameters. The guide above walks through it with screenshots. **Just rebuild it** - Open your Placid template, rebuild it in Orshot Studio. The editor is intuitive, usually goes faster than you think. **Use AI** - Screenshot your Placid output, drop it into the [AI Template Generator](https://orshot.com/features/ai-template-generator). It'll recreate it, you fine-tune. **Import existing designs** - If you have the original in Canva or Figma, import directly: - [Clone from Canva](https://orshot.com/solutions/canva-template-to-api) - [Import from Figma](https://orshot.com/solutions/figma-automation-via-rest-api) Try it now — paste a public Canva share link and see it as an Orshot template: You can create multi-page templates, [share through public links or embeds](https://orshot.com/blog/sharing-orshot-templates) like the one below with different view modes. You can also [invite your team to collaborate](https://orshot.com/features/team-collaboration) on design + template integration. ### Step 2: Update Your API Calls (10 min) The APIs are similar in concept. Here's what changes: **Placid API Call:** ```javascript const response = await fetch("https://api.placid.app/api/rest/images", { method: "POST", headers: { Authorization: "Bearer YOUR_PLACID_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ template_uuid: "placid_template_id", layers: { title: { text: "Hello World", }, image: { image: "https://example.com/photo.jpg", }, }, }), }); ``` **Orshot API Call:** ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "orshot_template_id", modifications: { title: "Hello World", image: "https://example.com/photo.jpg", // Dynamic parameters - override any style property // Docs: https://orshot.com/docs/dynamic-parameters "title.fontFamily": "Space Mono", "image.borderRadius": "32px", }, response: { type: "url", // url, base64, binary format: "png", // png, jpg, webp, avif, pdf, mp4, webm, gif }, }), }); ``` **Main differences:** - Modifications are a flat object (cleaner) - You specify response format explicitly - Same Bearer token authentication pattern **Helpful docs:** - [API Reference](https://orshot.com/docs/api-reference) - Complete API documentation - [Render from Template](https://orshot.com/docs/api-reference/render-from-studio-template) - Main endpoint you'll use - [SDKs](https://orshot.com/docs/sdks) - Node, Python, Ruby, PHP libraries - [Setting Parameters](https://orshot.com/docs/orshot-studio/setting-parameters) - How to make templates dynamic ### Step 3: Test It (5 min) 1. Make a few test calls 2. Compare the output 3. Tweak styling if needed in Studio 4. Deploy Nothing says you have to cut over at once. Point a few routes at Orshot, leave the rest on Placid, and move the rest when you've seen the output side by side. ### Need Help? Hit the chat button on the bottom right and you'll get me or someone on the team, not a bot. Send us a Placid template and we'll rebuild it in Studio for you — the fiddly part is usually the auto-fitting text, and that's the bit we can do fastest. ## Placid Pricing in 2026 (and How Orshot Compares) Placid runs four plans, billed monthly by default — the yearly toggle shows the same plans as annual totals. Prices checked against placid.app/pricing in July 2026: | Placid plan | Placid | Closest Orshot plan | Orshot | | ------------------- | ------ | ----------------------- | ------ | | Basic · 500 credits | \$19 | Launch · 1,500 credits | \$39 | | Pro · 2,500 credits | \$39 | Launch · 1,500 credits | \$39 | | Business · 25,000 | \$89 | Grow · 20,000 credits | \$160 | | VIP · 100,000 | \$249 | Scale · 150,000 credits | \$480 | Read that honestly: **from Pro up, Placid is cheaper on raw credits.** Their \$89 buys 25,000 credits against our \$160 for 20,000. (The \$19 Basic tier is the one exception — \$0.038 a credit against Launch's \$0.026.) The comparison only works per output, which is where their multipliers live: - An image over 4000px costs **8, 16 or 32 credits** on Placid. On Orshot it's 1 at any size. - A PDF page is **2 credits**, doubling again for high-resolution output. On Orshot it's 1. - A carousel or a multi-page video isn't a Placid template at all, so the credits aren't the constraint — the capability is. - Studio Embed is on every Orshot paid plan from \$39. Placid's Editor SDK is **VIP, at \$249**. So if your workload is plain sub-4000px images and nothing else, Placid is the cheaper bill and I'd rather you knew that from this page than from their pricing page. If it involves PDFs, large renders, carousels, video or an embedded editor, the per-output maths turns over. [Full pricing details here](https://orshot.com/pricing) **Run your own numbers against it** — 100 free credits a month, resets monthly, no card. [Start free](https://orshot.com/pricing?via=blog-placid-pricing) ## Common Questions **Q: How do I migrate templates from Placid to Orshot?** Save each template from the Placid editor as a single-file page and upload it under New Template, then the Placid tab. Layers, images and layer names come across, and the layer names become your API parameters. Prefer we do it? We import up to 5 templates free on any paid plan. **Q: How does Orshot price video against Placid?** The same rate, in fact: both bill 1 credit per second of video, so a 10-second clip is 10 credits either way. The difference is the editor around it. Orshot has a visual video timeline with per-layer animation, page-level audio tracks and auto-generated subtitles, and multi-page video templates render in one call. Placid has no visual video editor. **Q: Does Orshot support multi-page templates?** Yes. Orshot allows you to create multi-page templates natively. This is perfect for creating social media carousels or comprehensive PDF reports in a single request, something basic image APIs often struggle with. **Q: How does the Orshot template editor compare to Placid?** Orshot's Studio is a modern, layer-based editor with features like Smart Stacking. If you're coming from Placid, you'll find our layout controls more flexible for handling variable-length content. **Q: Will my automations break if I switch from Placid?** No. Orshot connects to the same ecosystem you likely use: [Airtable](https://orshot.com/docs/integrations/airtable), Zapier, n8n. The migration is usually just swapping the connection step. **Q: Can I embed the Orshot editor into my app?** Yes. We offer a [White-label Studio Embed](https://orshot.com/blog/image-editor-sdk) on every paid plan, from $39/month. For comparison, Placid's Editor SDK — Canvas Previews and the Editor Component — is listed on their VIP plan at $249/month. **Q: Does Orshot support video generation?** Yes. Orshot has a full video editor with a visual timeline, per-layer animations, page-level audio tracks, and auto-generated subtitles. Export as MP4, WebM, or GIF, with every property controllable via API. **Q: Is there an agency partner program?** Yes. Our Agency Partner Program is free to join and includes unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools for agencies managing multiple clients. **Q: What integrations does Orshot support?** Orshot integrates with [Zapier](https://orshot.com/docs/integrations/zapier), [Make](https://orshot.com/docs/integrations/make), n8n, Airtable, Slack, and more. We also offer Dynamic URLs for no-code generation and a full REST API with SDKs. ## The Editor ![Orshot Studio: layers panel, canvas, styles sidebar, and a video timeline, with Automate, Publish and Smart Resize in the toolbar](https://orshot.com/home/new/orshot-studio-new.webp) [Orshot Studio](https://orshot.com/studio) is clean and intuitive. If you've used Placid's editor, you'll immediately notice the difference. **Key features:** - **[Smart Stacking](https://orshot.com/blog/smart-stacking)** - Position elements relative to each other. They auto-adjust when content changes - **Brand Assets** - Save your logos, colors, and fonts. Use across all templates for consistency - **Custom Fonts** - Upload any font. No limits on typography - **Personalization** - Make any element dynamic - text, images, colors, styling - **Studio Embed** - Integrate the editor into your own app with custom branding - **Multi-page Support** - Create carousels and PDF templates with different pages ## How It Works Every template becomes an API endpoint. You can: - Generate templates with AI or import from Canva/Figma - Automate with REST API, SDKs, Zapier, Make, n8n, or [Dynamic URLs](https://orshot.com/docs/integrations/dynamic-urls) - Bulk generate with parallel processing - Generate carousels and multi-page videos from one template (Placid merges PDF pages, but has no multi-page templates) If there's an integration missing, just ask. We'll probably add it. ## Examples and Tutorials ### Video Generation Adding videos in your templates and automating via Orshot's Video Generation API: [Watch the video](https://www.youtube.com/watch?v=RQPHJY3bkZk) ### Carousel Templates How to create multi-page templates and automate them: [Watch the video](https://www.youtube.com/watch?v=EXJoMeGyEhM) ### Import from Canva Clone your existing Canva designs and turn them into API endpoints: [Watch the video](https://www.youtube.com/watch?v=P4AHj3dpJXw) ### Import from Figma Use the Figma plugin to import your designs directly: [Watch the video](https://www.youtube.com/watch?v=ggvLR0HLJ7Q) ### eCommerce Automation Example workflow - [automating product images](https://orshot.com/blog/automate-ecommerce-product-images) from your data sources: [Watch the video](https://www.youtube.com/watch?v=S5qNb4mmUdc) ### Dynamic URLs Generate images just by changing URL parameters - no API calls needed: [Watch the video](https://www.youtube.com/watch?v=a2I69Qb2hts) ## Bottom Line Placid works, but the credit multipliers are confusing and you're missing features like multi-page templates unless you pay more. Orshot does the same core thing (turn templates into API endpoints) but with the simplest credit in the industry — 1 credit = 1 image, 1 PDF page, or 1 video second — and no feature gating. If you're also comparing [Bannerbear](https://orshot.com/blog/bannerbear-api-alternative), [Abyssale](https://orshot.com/blog/abyssale-api-alternative), or [Contentdrips](https://orshot.com/blog/contentdrips-api-alternative), the same advantages apply - simpler pricing, no feature gating, and multi-page support that most competitors lack. The switch takes a couple hours. You can test everything free with 100 credits a month. ## For Agencies Building image automation for multiple clients? Check out the [Agency Partner Program](https://orshot.com/partner-program) — free to join, unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools. ## Try It 1. [Sign up](https://orshot.com/pricing?via=blog-placid-footer) - 100 free credits every month, no card needed 2. Recreate one of your templates (or use AI to do it) 3. Test with your actual data 4. See if it works for you If you get stuck, hit the chat button. I'll help you out. --- ### [A Polotno Studio Alternative with Unlimited Loads and API](https://orshot.com/blog/polotno-studio-alternative) > Orshot Embed is a hosted Polotno alternative: an iframe editor plus a render API from $39/month, vs a $249+ Polotno license you host yourself. Polotno is a JavaScript [image editor SDK](https://orshot.com/blog/image-editor-sdk) for building canvas editors inside a React app. You integrate it, and your team owns the editor from there. But Polotno is an SDK: a library you integrate, host and maintain yourself. The license starts at $249/month (Grass Roots, subject to review) and the standard Self-Serve license is $899/month. You still run the storage, database, render servers and user accounts around it. I built Orshot because I wanted that part done for me. [Orshot Embed](https://orshot.com/features/orshot-embed) puts a full design editor in your app with one iframe (or a React or Vue component). Hosting, storage and a REST API for rendering come with it. Embed from $39/mo, API free to try. [Try Orshot Embed](https://orshot.com/pricing?via=blog-polotno-alternative-top) This is the editor your users would get: "Acme Studio" is a made-up brand running a real Orshot embed. Switch templates, edit anything, then press "Add to App" to send the design to this page the way your app would receive it. Nothing you change is saved. ## What's Different If you're evaluating Polotno SDK to embed a design editor, here's how Orshot Embed compares: | Feature | Orshot Embed | Polotno SDK | | :-------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------- | | **Integration** | One iframe, or the React/Vue SDK | An SDK you build your editor around | | **Integration Effort** | Paste the embed code, configure in the dashboard | You wire up storage, accounts, saving and export | | **Framework** | Any stack, since it's an iframe | React inside; Vue, Angular and no-framework setups wrap it | | **Free Option** | Free plan with 100 credits a month, about 100 images (embed from $39/mo) | 60-day trial on a dev server, with a "Powered by Polotno" credit | | **Starting Price** | \$39/month: embed plus 1,500 credits (about 1,500 images) | \$249/month Grass Roots (reviewed), \$899/month Self-Serve | | **Pricing Model** | Flat plan. API renders, workflow renders and MP4 downloads count; opening the editor doesn't | Flat license. Cloud Render billed on top | | **Hosting and Storage** | Fully managed | You host the editor, designs and uploads | | **Rendering API** | REST API on every plan | Self-host polotno-node, or Cloud Render at \$0.004/image | | **User Downloads** | PNG, PDF and HTML from the embed, plus MP4 on video pages, which uses renders\* | Built into their UI, running on your hosting | | **Multi-page Templates** | Native [carousel/PDF support](https://orshot.com/blog/introducing-carousel-templates), all pages in one API call | Native pages and multi-page PDF export | | **Video** | MP4/WebM/GIF with per-layer controls and [animations](https://orshot.com/blog/introducing-animations-in-studio) | MP4 encoded in the browser, or Cloud Render at \$0.03/minute | | **White-label** | Your title, icon and accent color from the dashboard. Orshot branding can be removed\* | Full control in code (paid license) | | **[Per-user permissions](https://orshot.com/docs/orshot-embed/user-permissions)** | Lock create, delete, uploads, downloads and more per user from the dashboard\*, or per session in a JWT on any embed plan | You build accounts and permission checks | | **Template Import** | [Canva](https://orshot.com/solutions/canva-template-to-api), [Figma](https://orshot.com/solutions/figma-automation-via-rest-api), [AI](https://orshot.com/features/ai-template-generator) | Figma, PSD, PDF and SVG import | | **Webhooks** | Built in: template.create, template.update, template.delete\* | Client-side hooks; syncing to your server is yours | | **Browser Events** | postMessage events for saves and downloads\* | Store events inside your own app | | **Social Publishing** | [Built in, 15+ platforms](https://orshot.com/docs/publish/introduction) | Build your own | \* Available on specific plans. See [pricing](https://orshot.com/pricing) for what each plan includes. ## The Real Problems with Polotno Based on conversations with developers who've evaluated or used Polotno: ### 1. It's an SDK, Not a Ready-to-Use Embed Polotno gives you the components for a canvas editor. The product around it is yours to build. You need to: - Set up React (Vue, Angular and plain JS setups still load the React core) - Host the editor on your infrastructure - Store designs, uploads and fonts in your own database and bucket - Run rendering yourself (polotno-node drives headless Chromium through Puppeteer) or pay for Cloud Render - Build user accounts, and decide who can edit, delete or export what [Orshot Embed](https://orshot.com/features/orshot-embed) is the opposite approach. One iframe gives your users a full design editor, and Orshot hosts the editor, the designs and the uploads. Need to render at volume? The REST API is part of every plan. ### 2. The License Is Only the Start Polotno's pricing is a flat license: - **Grass Roots**, $249/month: subject to manual review, for small operators (under 50 people) in lower-purchasing-power markets, with limited volume - **Self-Serve**, $899/month: unlimited use on a single domain under one brand family - **Enterprise**: custom pricing The 60-day trial runs on a dev server only, and trial keys always show a "Powered by Polotno" credit. Their Cloud Render API is extra: $0.004 per image and $0.03 per video minute. Orshot's embed starts at $39/month with 1,500 credits (about 1,500 images). Opening the embed, designing in it and downloading images, PDFs or HTML don't use renders. API renders, workflow renders and MP4 downloads from the embed count against your plan. White-label, user downloads, events and webhooks start at $160/month (20,000 credits, about 20,000 images), which also adds per-user data for 50 embed users. ### 3. React Inside, Wrappers Outside Polotno 4 targets React 19. Their docs cover Vue, Angular and no-framework setups, but those wrap the same React core. So React ships in your bundle either way. Orshot Embed is framework-agnostic. It's an iframe, so it works in React, Vue, Angular, Svelte, WordPress, Webflow or anything that renders HTML: ```html ``` Prefer a component? There's a [React SDK](https://orshot.com/docs/orshot-embed/react-sdk) (`@orshot/embed-react`) and a [Vue SDK](https://orshot.com/docs/orshot-embed/vue-sdk). The REST API works from any backend: Python, Node, PHP, Go. ### 4. Templates Don't Become an API on Their Own Polotno handles multi-page designs well and exports multi-page PDFs. Filling a template with data is where the work starts. Their variables are `{name}` placeholders in the design JSON. Your backend swaps in values, then renders the result itself or sends it to Cloud Render. In Orshot, you mark any layer as dynamic and the template becomes an API endpoint. [Multi-page templates](https://orshot.com/blog/introducing-carousel-templates) work the same way: design a carousel in Studio, then generate every slide in one API call. Same for multi-page PDFs and multi-page videos. ### 5. Building vs Buying Takes Real Time Polotno's site says customers save "6+ months" of internal building time by using their SDK. That's fair, but you still own the integration: storage, rendering, accounts and permissions. Building on the libraries underneath is more work again; see [Konva vs Fabric.js](https://orshot.com/blog/konva-vs-fabric-js) for the same editor features coded in both. With Orshot, you can go from signup to rendering via API in under an hour. Design a template, grab your API key, start rendering. Adding the embed is a copy and paste. ## What You Get with Orshot Beyond solving Polotno's integration overhead: - **One-line embed** - [Orshot Embed](https://orshot.com/features/orshot-embed) drops a full design editor into your app. Users design in it without using renders. They can download PNG, PDF and HTML at no render cost\*. MP4 downloads on video pages use renders from your plan. - **Customization without code** - Configure everything from your dashboard: - **Branding** - Your accent color, icon and title (Orshot branding can be removed\*) - **Template controls** - Show or hide the template list, allow delete and rename, enable carousels - **Download permissions** - Turn user downloads on or off\* - **Language** - 6 languages (English, Spanish, Portuguese, French, German, Russian) with optional user switching - **Domain security** - Restrict the embed to your domains - **Per-user data and permissions\*** - Give each of your users a private template library and [lock actions per user](https://orshot.com/docs/orshot-embed/user-permissions) (create, delete, uploads, downloads and more) from the dashboard. Locks set per session in your [JWT](https://orshot.com/docs/orshot-embed/jwt-authentication) work on any plan with the embed. **Built-in webhooks** - Get notified on your server when users create, update or delete templates\*. Trimmed payload: ```json { "event_type": "template.update", "template": { "id": "abc123", "name": "Spring promo", "thumbnail_url": "https://..." }, "workspace_id": "workspace_789", "user_id": "user_456", "timestamp": "2026-09-22T10:30:00Z" } ``` **Browser events via postMessage** - Listen for saves and downloads in your app\*: ```javascript window.addEventListener("message", (event) => { if (event.origin !== "https://orshot.com") return; const { type, data } = event.data; if (type === "orshot:template:update") { console.log("Template saved:", data.id); // Update your UI, trigger workflows, etc. } if (type === "orshot:download:png") { console.log("User downloaded a PNG"); } }); ``` **REST API included** - Every template becomes an API endpoint. The API is part of every plan, not a separate add-on like Polotno's Cloud Render. **A capable design editor** - [Orshot Studio](https://orshot.com/studio) includes features your users will use: - **Gradient text** - Linear and radial gradients on any text layer, picked with [Colorshot](https://orshot.com/open-source/colorshot), our open source gradient picker - **Auto-scale text** - Text shrinks to fit its container - **Smart Stacking** - Position elements relative to each other for dynamic layouts - **Video layers** - Add video elements with trim, loop and mute controls - **Dynamic layers** - Mark any layer as dynamic for API/parameter overrides - **Multi-page templates** - Create carousels, slideshows, multi-page PDFs - **Background removal** - One-click AI background removal - **Import from Canva/Figma** - Bring existing designs in **Multi-page templates** - Create carousels, multi-page PDFs and multi-page videos. [See how it works](https://orshot.com/blog/introducing-carousel-templates). **Video generation** - Export to MP4, WebM or GIF. Control each video layer with `.trimStart`, `.trimEnd`, `.muted` and `.loop` parameters via API. Add [per-layer animations](https://orshot.com/blog/introducing-animations-in-studio): fade ins, slide transitions, scale effects, visibility timing and staggered choreography. [Learn more](https://orshot.com/docs/dynamic-parameters/video). **Import from anywhere** - Clone from Canva, import from Figma, or use AI to generate templates. Much faster than designing from scratch. **No-code integrations** - [Make](https://orshot.com/blog/orshot-make-integration), Zapier, n8n. Connect to thousands of apps without writing code. Plus [MCP Server](https://orshot.com/docs/integrations/mcp-server) for AI apps and [CLI](https://orshot.com/docs/integrations/orshot-cli) for terminal workflows. **Social Publishing** - Render and [post to 15+ social platforms](https://orshot.com/docs/publish/introduction) in one API call. Publish now, schedule, or save as a draft. ![Customer testimonial from Mihai about using Orshot](https://orshot.com/blog/mihai-testimonial.webp) \* Available on specific plans. See [pricing](https://orshot.com/pricing) for what each plan includes. ## Cost Comparison: Real Numbers Here's what a typical embed setup costs on each, using list prices. **Scenario: 5,000 API images a month, plus your users designing and downloading in a white-label editor** | Cost Component | Orshot ($160/mo) | Polotno (Self-Serve) | | :------------------------------- | :--------------------------------- | :--------------------------------------------- | | Plan or License | \$160/month | \$899/month | | Credits Included | 20,000/month (about 20,000 images) | Self-hosted, or pay per render on Cloud Render | | 5,000 Image Renders | Included | \$20 on Cloud Render (5,000 × \$0.004) | | White-label Editor | Included | Included with a paid license | | User Downloads | Included (MP4 uses renders) | Built into their UI, on your hosting | | Hosting, Storage, Database | Included | Your cost | | Per-user Libraries & Permissions | 50 embed users | You build it | | **Monthly Total** | **\$160** | **\$919 with Cloud Render, plus your hosting** | If you qualify for Grass Roots at $249 (reviewed, for small operators), the gap is smaller. Hosting, storage and rendering are still yours to run. If you don't need white-label or user downloads, the $99 tier covers 5,000 credits a month, enough for this scenario's 5,000 images (Orshot branding stays on the embed). At 20,000 images a month, Orshot is still $160. Polotno's Cloud Render fees alone would be $80 on top of the license. **White-label embed with per-user data: $160/mo** — $160/mo includes 20,000 credits, webhooks, events and 50 embed users. No servers to run. [See embed plans](https://orshot.com/pricing?via=blog-polotno-alternative-cost) ## Bring Your Polotno Designs With You You don't start over. Paste the JSON from Polotno Studio, or the `store.toJSON()` output your app already saves, and each design becomes an Orshot template. Text and image layers turn into API parameters on import, and you can bulk import up to 10 files at once. ![Importing a Polotno design into Orshot: paste the JSON, check the preview, and it becomes an editable template](https://orshot.com/migrate/imgly/import-polotno.webp) Step-by-step in the [Polotno import docs](https://orshot.com/docs/importing-templates/import-from-polotno), and the full move, from editor to renders, in the [Polotno migration guide](https://orshot.com/migrate/from-polotno). ## When a Self-Hosted SDK Fits Better An SDK you host is the better route if you need: - Code-level changes to every editor component - The editor and rendering on **your own servers** - **PSD import or PPTX export** - A **complex design product** of your own, where the editor is the product If you want a design editor in your app without running the stack behind it, with a REST API ready for rendering, Orshot gets you there in minutes instead of weeks. ## Getting Started with Orshot Embed If you're evaluating alternatives to Polotno SDK, here's how to get an editor running in your app: ### Step 1: Configure Your Embed (5 min) Sign up for [Orshot](https://orshot.com/pricing) and open **Orshot Embed** from your workspace sidebar. Then: 1. **Enable embed** and add your allowed domains (including `localhost:3000` for testing) 2. **Customize branding** - accent color, title, custom icon 3. **Set permissions** - template visibility, carousels, and downloads\* 4. **Add a webhook URL** (optional)\* - receive `template.create`, `template.update` and `template.delete` events ![Orshot Embed settings: allowed domains, branding, JWT and per-user data, with a live preview of the white-labelled editor](https://orshot.com/migrate/imgly/embed-setup.webp) ### Step 2: Add It to Your App (2 min) These are the pieces embed customers wire up most, from the first iframe to syncing designs to your backend: One iframe, with a `userId` so each of your users gets their own templates and uploads (per-user data\*), and a `templateId` to open a design straight away. ```html ``` Prefer a component? `@orshot/embed-react` mounts the same editor and hands you callbacks for its events. ```jsx import { OrshotEmbed } from "@orshot/embed-react"; export default function Editor() { return (
console.log("Created:", data)} onError={(err) => console.error(err)} />
); } ``` Listen for saves and downloads in your page to sync your database or track usage (with events on)\*. ```javascript window.addEventListener("message", (event) => { if (event.origin !== "https://orshot.com") return; const { type, data } = event.data; if (type === "orshot:template:update") saveToYourDb(data); if (type === "orshot:download:pdf") trackDownload(data); }); ``` Fill layers from your own UI or data without reloading the editor. Keys are the parameter names in your template. Needs events on\*. ```javascript const iframe = document.querySelector("iframe"); iframe.contentWindow.postMessage( { type: "orshot:embed:control", modifications: { headline: "Hello from Acme", "page2@image": "https://example.com/product.jpg", }, }, "*", ); ``` Add a webhook URL and your server gets a POST whenever a user creates, updates or deletes a template\*. Trimmed: ```json { "event_type": "template.update", "template": { "id": "abc123", "name": "Spring promo", "canvas_width": 1080, "canvas_height": 1080, "thumbnail_url": "https://..." }, "workspace_id": "workspace_789", "user_id": "user_123", "timestamp": "2026-09-22T10:30:00Z" } ``` Turn on **Require signed token** and your server signs a short-lived JWT for each session. `sub` is the user, and `permissions` can lock actions for that session. ```javascript import jwt from "jsonwebtoken"; const token = jwt.sign( { sub: "user_123", permissions: { "template/delete": true } }, EMBED_SIGNING_SECRET, { expiresIn: "15m" }, ); const src = `https://orshot.com/embeds/YOUR_EMBED_ID?token=${token}`; ``` Full references: [events](https://orshot.com/docs/orshot-embed/events), [controlling the embed](https://orshot.com/docs/orshot-embed/controlling-embed), [webhooks](https://orshot.com/docs/orshot-embed/webhooks) and [JWT authentication](https://orshot.com/docs/orshot-embed/jwt-authentication). New to the embed? Start with the [introduction](https://orshot.com/docs/orshot-embed/introduction) or this [walkthrough](https://orshot.com/blog/orshot-studio-embed). That's it. A full design editor in your app with webhooks and events. No React setup, no component wiring, no rendering servers. \* Available on specific plans. See [pricing](https://orshot.com/pricing) for what each plan includes. ## Embed Features at a Glance | Feature | What It Does | | :-------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- | | **Branding** | Your accent color, title and icon. Orshot branding can be removed\* | | **Domain restrictions** | Embed only works on your specified domains | | **Template controls** | Show/hide templates, allow delete/rename, enable carousels | | **Download permissions** | Turn user downloads on or off: PNG, PDF, HTML, plus MP4 on video pages\* | | **[Per-user permissions](https://orshot.com/docs/orshot-embed/user-permissions)** | Lock actions per user from the dashboard\*, or per session in your JWT (any embed plan) | | **Multi-language** | 6 languages, optional user switching | | **Webhooks** | Server-side notifications for template events\* | | **Browser events** | Real-time postMessage events for frontend integration\* | | **Template pre-loading** | Open embed with a specific template via URL param | \* Available on specific plans. See [pricing](https://orshot.com/pricing) for what each plan includes. ## Common questions **Q: How much does the Polotno SDK cost?** Polotno lists its SDK at $249/month ($2,490/year) for Grass Roots, which is reviewed and meant for small operators, and $899/month ($9,990/year) for Self-Serve, which covers one domain and brand. Cloud Render is billed on top. Orshot Embed starts at $39/month with the editor, hosting and a render API included, and white-label with per-user data is $160/month. Prices checked September 2026. **Q: What's the difference between Polotno Studio and the Polotno SDK?** Polotno Studio is a free design app people use in the browser, a bit like Canva. The Polotno SDK is the library developers license to build an editor inside their own product. If you're here to put an editor in your app, the SDK is the one you'd compare with Orshot Embed, which gives your users a hosted editor with your branding. **Q: Is there an open-source alternative to Polotno?** You can build an editor on open-source canvas libraries like Fabric.js or Konva, but then the editor UI, storage, user accounts and rendering are all yours to build and run. Orshot Embed is the hosted route: one iframe or React component, with templates, uploads, per-user data and a render API already running. **Q: Can I import my Polotno designs into Orshot?** Yes. Paste the JSON exported from Polotno Studio, or the store.toJSON() output your app saves through the SDK, and each design becomes an Orshot template with its text and image layers turned into API parameters. You can bulk import up to 10 files at once. See the [Polotno import docs](https://orshot.com/docs/importing-templates/import-from-polotno) and the [migration guide](https://orshot.com/migrate/from-polotno). **Q: Can I white-label the editor and keep each user's designs separate?** Yes. Set your own title, icon and accent color, lock the embed to your domains, and pass a userId so each user gets their own templates and uploads. Branding comes off and per-user data turns on in plans from $160/month. A signed JWT can also lock actions like delete or download for each session. **Q: Do I need React to use Orshot Embed?** No. It's an iframe, so it works in any stack. If you do use React or Vue, @orshot/embed-react and @orshot/embed-vue mount it as a component with event callbacks. ## Start Building If you've been evaluating Polotno SDK and want something ready to use, [start here](https://orshot.com/pricing), or follow the [Polotno migration guide](https://orshot.com/migrate/from-polotno). The Free plan covers the API, and the embed starts at $39/month. You can always dig into SDK-level solutions later if you need that control, but most teams don't. Comparing other editor SDKs? See the [img.ly alternative](https://orshot.com/blog/imgly-sdk-alternative) too. --- ### [A Predis.ai Alternative for On-Brand Content](https://orshot.com/blog/predis-ai-alternative) > Predis.ai writes inconsistent AI posts from a prompt. Orshot renders from branded templates and your data, then posts to 15+ social platforms. Free 100 credits a month If you've used Predis.ai for a few months, you know the loop. You type a prompt, it returns a carousel and a caption, you regenerate twice because the layout put your headline over the product, you fix the copy by hand, then you schedule it. It's genuinely faster than opening Canva. But somewhere around month three, you scroll your own feed and every post looks like it came out of the same machine. That's not a Predis bug. It's what prompt-to-post tools are for. ## What Predis is actually good at ![The Predis.ai homepage — an AI ad generator that creates video ads, UGC and reels from a text prompt, product link or image](https://orshot.com/blog/predis-ai-alternative/predis-homepage.webp) I want to be fair here, because a lot of "alternative" pages aren't. - **Cold start.** You describe your business, you get posts. Nothing beats it for that. - **Ecommerce content.** Point it at a product URL, get ads and UGC-style clips without a shoot. - **Captions and hashtags.** Fine first drafts, and it saves real time. - **One tool, whole loop.** Generate, schedule, publish. Reasonable thing to want. If you're a solo founder filling an empty calendar, Predis is a good buy. I'd still recommend it for that. ## Where it stops Read enough Predis.ai reviews and the complaint is never "it's bad". It's that the output stops being _yours_. A commenter in r/ContentCreators put it better than I would — tools like this work best as "a speed layer" rather than "a creation layer" ([r/ContentCreators](https://www.reddit.com/r/ContentCreators/comments/1oi4ovw/do_you_ever_feel_like_youre_creating_more_but/ "target=_blank nofollow")). Another in r/FacebookAds said he uses it because he can't be bothered starting from scratch, but then likes to "make my own modifications after" ([r/FacebookAds](https://www.reddit.com/r/FacebookAds/comments/1im69zu/what_ai_tools_do_you_use_for_advertising_in_2025/ "target=_blank nofollow")). Same gap, described twice. The AI gets you 80% there and you finish the last 20% by hand — every post, forever. ![Six things Predis.ai users keep running into: every post looks the same, I still fix it by hand, can't lock the layout, captions sound like AI, auto-posting is $40/mo, 30-second video cap](https://orshot.com/blog/predis-ai-alternative/problems.webp) Where it bites: - **You can't lock the design.** Each generation re-decides your layout. Brand settings nudge it; they don't pin it. - **Auto-posting isn't on the entry plan.** Core ($19/mo) has the API and 10 accounts, but auto-posting starts on Rise at $40/mo. - **Video is capped by tier.** 30 seconds on Core, and 1,300 credits is roughly 9 clips. - **It can't run off your data.** No "render this from the row that just landed in Airtable". You're always the one prompting. - **Batches drift.** Generate a week at a time and the posts start rhyming. **Lock the design once, render it 4,000 times** — Same fonts, spacing and logo on every single render. [Start free](https://orshot.com/pricing?via=blog-predis-control) ## The editor, not a prompt box This is a real Orshot template. Hit play, then change anything in it: [Designing a template in Orshot Studio](https://orshot.com/templates/shared/kt8j29wx/embed?view=play) You design the post once, mark the bits that change as parameters, and that design becomes an API endpoint. Every render after that is pixel-identical, because it's your file — not a fresh guess. You don't have to start blank either. Import a [Canva](https://orshot.com/solutions/canva-template-to-api) or [Figma](https://orshot.com/solutions/figma-automation-via-rest-api) design, describe it to the [AI Design Agent](https://orshot.com/features/ai-template-generator), or pick from the [template library](https://orshot.com/templates). **Build your first template in about two minutes** — Bring a Canva or Figma file, or start from a blank canvas. [Open Studio](https://orshot.com/pricing?via=blog-predis-editor) ## Side by side | | Orshot | Predis.ai | | :-- | :-: | :-: | | Generates post ideas from a prompt | Via AI agent / MCP | Yes | | Writes captions and hashtags | Via AI agent / MCP | Yes | | Pixel-identical output every render | Yes | No | | You own and edit the underlying design | Yes | No | | Render from Sheets, Airtable, webhooks | Yes | No | | REST API as the core product | Yes | Available, secondary | | Zapier / Make / n8n / MCP | Yes | No | | One design auto-resized to every format | Yes | No | | Video length | No cap (1 credit = 1 second) | 30s on Core, 5 min on Rise | | Bulk render from a spreadsheet | Yes | No | | Publish to socials | 15+ platforms | Rise plan and up | | Entry price | $39/mo, 1,500 credits | $19/mo, 1,300 credits | ## Predis.ai pricing, honestly compared Predis is cheaper on paper, and I'm not going to pretend otherwise. | | Predis.ai | Orshot | | :------------------ | :------------------------------ | :------------------------------------------------------------------------------------- | | **Entry plan** | $19/mo Core | $39/mo | | **Credits** | 1,300 (~86 images or ~9 videos) | 1,500 (1 credit = 1 image, PDF page, or video-second) | | **Social accounts** | 10 included | $12/mo each, unlimited posts, [includes API usage](https://orshot.com/docs/api-reference/social-publish) | | **Auto-posting** | Rise ($40/mo) and up | Any paid plan | | **Free tier** | Trial with watermark | 100 credits a month, no card | Read that account row carefully. **If you post to eight brands' accounts, Predis is clearly cheaper** — Orshot would be $39 + 8 × $12 = $135/mo. Better you know now than after signing up. It flips when you count what else is in the box. The $39 includes the studio, video, workflows and the API — usually a Canva subscription plus a Zapier plan. And the credit math differs in kind: 1,500 credits is 1,500 seconds of video, about 25 minutes, versus roughly 9 clips. **1,500 credits for $39, and video is 1 credit a second** — Run it against your own volume before you move anything. [See pricing](https://orshot.com/pricing?via=blog-predis-pricing) ## Point it at your data The Predis.ai API exists on every plan, but it drives their generator — you send a prompt and take what comes back. Orshot's takes your template and your row, and returns the exact design you approved: ```javascript await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_template_id", modifications: { product_name: "Merino Runner", price: "$128", product_image: "https://cdn.yourstore.com/merino.jpg", }, response: { type: "url", format: "png" }, publish: { accounts: [1, 2], content: "New drop: the Merino Runner 🏃", schedule: { scheduledFor: "2026-08-14T14:00:00Z" }, }, }), }); ``` Swap `"png"` for `"mp4"` and the same template returns a reel. Multi-page templates post as carousels on their own. ### Or describe it and skip the code [Workflows](https://orshot.com/features/workflow-automation-builder) run the same loop with no code: a trigger, your data, a template, your accounts. Copy a ready-made one and switch it on: [Turn spreadsheet rows into Instagram carousels workflow on Orshot](https://orshot.com/workflows/instagram-carousels-from-sheet/embed) Came to Predis for ecommerce? The closest swaps are [Shopify product videos](https://orshot.com/workflows/shopify-product-videos) and [product marketing images](https://orshot.com/workflows/product-marketing-images). **Your sheet fills in, the post goes out** — Copy a ready-made workflow, connect your data, switch it on. [Start free](https://orshot.com/pricing?via=blog-predis-workflow) ## Publishing is included Anything Orshot renders, it can [post to 15+ platforms](https://orshot.com/features/social-publishing) — instantly, as a draft, or scheduled. No separate scheduler, and publishing costs no extra credits. [Orshot Social Publishing walkthrough: post to your social accounts from Orshot](https://www.youtube.com/watch?v=ec05xj2sXp8) Accounts are $12/mo each with unlimited posts, on any paid plan. ## Stay on Predis if - You want the machine to decide what to post. Orshot won't write your content calendar. - You want captions and hashtags written for you inside the dashboard, without wiring up an agent to do it. - You run many accounts on a tight budget. Ten accounts at $19 is hard to beat. - Your posts are one-off. Templates only pay off when something recurs. Plenty of people run both: ideate in Predis, then rebuild the winner as an Orshot template and let it run on your data. ## Other Predis.ai alternatives worth a look Orshot only makes sense if the _design_ is what you keep redoing. If that isn't your bottleneck, one of these is the better swap. ### AdCreative.ai ![The AdCreative.ai homepage — an AI tool that generates ad creatives and scores them for predicted conversion](https://orshot.com/blog/predis-ai-alternative/alt-adcreative.webp) The closest match if **ads** are the job rather than organic posts. It generates concepts and ranks them by predicted conversion, which Predis doesn't do, and pushes winners straight to Google and Meta ad accounts. The catch is billing: the trial needs a card and auto-converts, and scoring, video and batch only start on the $249 tier. [Read the full AdCreative.ai breakdown →](https://orshot.com/blog/adcreative-ai-alternative) ### Contentdrips ![The Contentdrips homepage — write, design and publish social content, focused on LinkedIn and Instagram carousels](https://orshot.com/blog/predis-ai-alternative/alt-contentdrips.webp) The carousel specialist, and better than Predis at branded LinkedIn carousels specifically — you get a real template editor with brand kits. The limit is scope: it publishes to LinkedIn and Instagram only, and its API returns PNG and PDF, so no reels, audio or subtitles. [Read the full Contentdrips breakdown →](https://orshot.com/blog/contentdrips-api-alternative) ### Buffer ![The Buffer homepage — a social media workspace for scheduling posts across every platform](https://orshot.com/blog/predis-ai-alternative/alt-buffer.webp) If you only kept Predis for the scheduling, drop to a proper scheduler and save the money. Buffer is cheaper per channel and gives you the social inbox and engagement analytics that neither Predis nor Orshot offers. You'll still be making the graphics somewhere else. [Read the full Buffer breakdown →](https://orshot.com/blog/buffer-alternative) ### Canva ![The Canva homepage — AI-powered social posts, videos and presentations in a drag-and-drop editor](https://orshot.com/blog/predis-ai-alternative/alt-canva.webp) The honest DIY answer. If you post a few times a week, Canva plus a scheduler beats paying for AI generation you keep correcting, and Bulk Create handles spreadsheet-driven batches. It stops working when you need a render to fire on a trigger rather than a person clicking export. [Read the full Canva breakdown →](https://orshot.com/blog/canva-bulk-create-alternative) Verified pricing and free-tier details for these and eight more are in our [social media automation tools](https://orshot.com/blog/social-media-automation-tools) comparison. ## Common questions **Q: Is Orshot a drop-in replacement for Predis.ai?** No, and it's worth being clear about that. Predis decides what your post should say and look like. Orshot takes a design you've already settled on and reproduces it exactly, from your own data, as many times as you need. If prompt-to-post is the feature you love, Orshot will feel like a step sideways. **Q: Does Orshot write captions like Predis?** Yes, through an agent. Connect the Orshot MCP server to Claude or Cursor and it writes the caption and hashtags, renders the visual, and publishes the post in one flow — you can also pass caption text directly in the publish call. The difference is that Predis has a caption generator built into the dashboard; on Orshot it comes from the agent driving it. **Q: Is Orshot cheaper than Predis.ai?** Depends entirely on connected accounts. Predis Core is $19/mo with 10 accounts included; Orshot is $39/mo plus $12 per connected account. On a handful of accounts Predis wins on price. Orshot gets cheaper when it replaces your design tool and your automation tool at the same time, and when video is a real part of your output. **Q: Does Predis.ai have a free plan, and does Orshot?** Predis.ai free is a trial rather than a plan — you get a limited run of generations and the output carries a watermark, so you can evaluate it but not ship with it. Orshot's free tier is 100 credits a month with the full studio and API, no card and no watermark. Neither includes social publishing; on Orshot that's a paid addon at $12/mo per connected account. **Q: Can Orshot make videos and reels?** Yes. Studio has a timeline with per-layer animation and video layers, so one template exports as PNG, PDF, GIF, or MP4. Credits are 1 per second of video, with no per-plan length cap. **Q: What if my designs are already in Canva or Figma?** Import them. A Canva share link or a Figma file becomes an Orshot template, and from there an API endpoint, keeping the design you already approved. **Q: Which platforms can Orshot publish to?** Instagram, X, Facebook, LinkedIn, TikTok, YouTube, Pinterest, Reddit, Bluesky, Threads, Telegram, Snapchat, Google Business, Discord, and WhatsApp. Carousels post automatically where supported. ## Bottom line Predis.ai is a good answer to "I don't know what to post." Orshot is the answer to "I know exactly what to post, and I need it made 400 times without drifting." If you've been finishing every Predis post by hand, that's the signal. Rebuild one recurring post as a template, connect the sheet it should read from, and let it run. If you're mid-migration and want a hand, hit the chat button. It's usually me on the other end. --- ### [A Refreshed Studio, Now in 3 Columns](https://orshot.com/blog/studio-3-column-layout) > Orshot Studio has a cleaner, faster layout — Pages and Layers on the left, properties on the right, and a bigger canvas in the middle. Available in the editor and in your embedded editor. We've refreshed Orshot Studio. The editor is cleaner and quicker to work in, and there's a new **3-column layout** that puts everything where you'd expect from a professional design tool — available both in Studio and inside the embedded editor your customers use. [Try it out now](https://orshot.com/studio "target=_blank") ## What's new: the 3-column layout ![](https://orshot.com/blog/studio-3-column-layout/3-col-orshot-studio.webp) Turn it on and Studio reorganizes into three columns: - **Left** — your **Pages** and **Layers**, always visible. Move between pages and select or reorder layers without opening a panel. - **Middle** — a **bigger canvas**, so your design takes center stage. - **Right** — the **properties** for whatever you've selected (or the page itself), right where you need them. It's the layout you already know from tools like Figma, so it feels familiar from the first click. ## Why it's useful - **Less hunting.** Pages, layers, and properties are all on screen at once — no switching tabs to find what you need. - **Faster on complex templates.** Multi-page carousels and heavily layered designs are far easier to navigate when the full structure stays in view. - **More room to design.** The artboard gets the middle of the screen, so you see more of your work while you edit. - **The same pro experience in embeds.** If you embed Orshot Studio in your product, your users get the exact same 3-column layout. ## How to turn it on **In Studio:** open the **File** menu → **View** → **3-Column Layout**. Switch back the same way, or with the hide-panels button in the left panel header. **In an embed:** open the **⋮** menu in the toolbar → **3-Column Layout**. Prefer the classic two-column layout? It's still there — switch between them anytime. ## Also in this refresh Alongside the new layout, we did a broad polish pass on the editor: a more consistent, higher-contrast design system in both light and dark mode, better accessibility, and more reliable panels, menus, and dialogs throughout. The refreshed Studio is live now — open any template and give the 3-column layout a try. --- ### [A VistaCreate Alternative for Automated Design & Scale](https://orshot.com/blog/vistacreate-alternative) > Looking for a VistaCreate alternative? Orshot offers API-first design automation, white-label embedding, and scalable image generation. Generate thousands of designs programmatically VistaCreate is a solid tool for manual, one-off designs like social media posts or banners. However, it bottlenecks teams that need scale. Without an API or bulk generation features, you can't automate creating hundreds of variations or integrate design generation into your product. That's where **Orshot** comes in. It combines a professional visual editor with powerful API automation. Design once, then generate thousands of on-brand images, PDFs, or videos programmatically—giving you the best of both design and code. 100 credits a month, no card needed. [Try Orshot free](https://orshot.com/pricing?via=blog-vistacreate-top) **Migrate from VistaCreate to Orshot quickly with AI** Install the Orshot agent skill in Claude Code, Cursor, or Windsurf to automatically translate your VistaCreate API calls to Orshot. The skill knows both APIs and handles the mapping for you. ```bash npx skills add orshot-hq/orshot-agent-skills ``` [Learn more about the agent skill](https://orshot.com/agents/orshot-skills) --- Here's a **preview of Orshot Studio** for you to try: [Open the embed](https://orshot.com/templates/shared/6h1w0nmj/embed?view=play) ## The Problems with VistaCreate While VistaCreate is a solid manual design tool, users switching to automated solutions often cite these key limitations: ### 1. Manual Bottlenecks VistaCreate relies entirely on point-and-click manual work. Creating or updating 100 variations means 100 manual downloads. There is no bulk generation or API to automate repetitive tasks, making it unscalable for agencies or product teams needing high volume. ### 2. No API or Integrations It lacks a public API, meaning you cannot generate images programmatically or connect to tools like Zapier, Make, or your own database. It is strictly a standalone tool, isolating your design process from your automated workflows. ### 3. Subscription & Billing Issues Users frequently report difficulty canceling subscriptions and unexpected auto-renewals. The seat-based pricing ($10-13/user/mo) also becomes costly for teams compared to usage-based models. ### 4. Restrictive Free Tier The free plan includes watermarks and download limits, obstructing testing and small projects. You pay per seat regardless of how much you use it, rather than paying for what you generate. ## Enter Orshot: The Automated Alternative Here's the fundamental difference: **VistaCreate:** Design one by one, manually, in their editor. Download individually. **[Orshot](https://orshot.com/):** Design once in the editor, then generate thousands of variations via API, spreadsheets, or integrations. VistaCreate is a design tool. Orshot is a design automation platform. You can still use a visual editor (Orshot Studio). You can still create beautiful templates. But then you can turn each template into an API endpoint and generate unlimited variations programmatically. ## Key Features (What Makes Orshot Different) ### 1. Orshot Studio - Professional Design Tool - [Orshot Studio](https://orshot.com/studio) is a full-featured design editor. Clean interface, professional capabilities, no limitations. But with features VistaCreate lacks: - **[Smart Stacking](https://orshot.com/blog/smart-stacking)** - Position elements relative to each other using flexbox-like layouts. When content changes size (longer text, different images), everything auto-adjusts. VistaCreate doesn't have this - you're manually repositioning elements. - **Smart Layouts** - Create responsive designs that adapt to different content automatically. - **Custom Fonts** - Upload any font. No restrictions. - **Multi-page Templates** - Create carousels, PDF reports, and multi-page designs. [See how it works](https://orshot.com/blog/introducing-carousel-templates). - **Brand Assets** - Save your logos, colors, and fonts. Reuse across all templates for consistency. [Open the embed](https://orshot.com/templates/shared/8zfweezu/embed?view=view) ### 2. API-First Design Automation Every template you create becomes an API endpoint. Here's what that means in practice. **With VistaCreate (Manual):** 1. Open editor 2. Change text/images manually 3. Download file 4. Repeat 99 more times for 100 variations **With Orshot (Automated):** ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_template_id", modifications: { title: "Dynamic Title", description: "Dynamic description text", productImage: "https://example.com/product1.jpg", // Override any style property "title.fontFamily": "Space Mono", "productImage.borderRadius": "16px", }, response: { type: "url", // url, base64, binary format: "png", // png, jpg, webp, avif, pdf, mp4, webm, gif }, }), }); // Returns image URL instantly ``` One API call. Instant generation. Scale to 10,000 variations if needed. **Complete docs:** - [API Reference](https://orshot.com/docs/api-reference) - [Render from Template](https://orshot.com/docs/api-reference/render-from-studio-template) - [Setting Parameters](https://orshot.com/docs/orshot-studio/setting-parameters) ### 3. Embed SDK - White-Label Your Design Tool ![AI-powered template generation in the Orshot embed](https://orshot.com/docs/orshot-embed/ai-template-gen-embed.webp) You can embed the Orshot editor directly into your own SaaS application. Your users get a design tool inside your product, with your branding. ```html ``` Perfect for: - SaaS platforms that need user customization - Marketing platforms offering design tools to clients - Print-on-demand services - Social media management tools VistaCreate doesn't offer this. You can't white-label their editor or embed it in your app. Your users would have to leave your platform, sign up for VistaCreate separately, and work there. Read more about [Orshot Studio Embed](https://orshot.com/blog/orshot-studio-embed) and the [Image Editor SDK](https://orshot.com/blog/image-editor-sdk). ### 4. Import from Anywhere Don't want to start from scratch? Import existing designs: - **From Canva:** [Clone any Canva template](https://orshot.com/solutions/canva-template-to-api) directly into Orshot. Copy the share link, paste it, done. - **From Figma:** Use the [Figma plugin](https://orshot.com/solutions/figma-automation-via-rest-api) to import designs with one click. - **Using AI:** Drop a screenshot into the [AI Template Generator](https://orshot.com/features/ai-template-generator). It recreates the design automatically. VistaCreate requires you to rebuild everything manually in their editor or use their templates. ## Pricing Comparison Different models, but here's how they compare: | Feature | VistaCreate | Orshot | | :--------------------- | :------------------ | :------------------------------------------------------ | | **Model** | Per-seat | Usage-based | | **Single User** | ~$10-13/month | $39/month | | **What You Get** | Unlimited downloads | 1,500 credits (1 credit = 1 image), Unlimited downloads | | **API Access** | None | All plans | | **Bulk Generation** | Manual only | Automated | | **Integrations** | Limited | Zapier, Make, n8n | | **White-label Embed** | Basic | Yes | | **Multi-page Support** | No | Yes | | **Social Publishing** | No | [15+ platforms](https://orshot.com/docs/publish/introduction) | | **Free Plan** | Free tier available | 100 free credits a month | **Bottom line:** - **VistaCreate** is better if you're a single designer making a few graphics per week manually. - **Orshot** is better if you need volume, automation, or you're building a system. For teams, Orshot is cheaper (no per-seat pricing). For automation, there's no comparison (Orshot has an API, VistaCreate doesn't). For scale, Orshot wins ($39 for 1,500 credits vs manual work in VistaCreate). [Full pricing details](https://orshot.com/pricing) ## What You Can Do at Scale This is where Orshot really shines. Once you have templates set up, you can: ### Programmatic SEO Images Generate unique OG images for every blog post automatically. Pull title, description, and author from your CMS, render an image, add it to the page. ```javascript // Generate blog post image automatically const blogImage = await renderTemplate({ title: post.title, author: post.author, category: post.category, }); ``` Thousands of blog posts? Thousands of unique images. No manual work. ### Personalized Email Headers Send personalized email images to each customer. Include their name, their stats, their achievements. Makes emails feel custom without manually creating each one. ```javascript const emailHeader = await renderTemplate({ customerName: user.name, monthlyGoal: user.goalProgress, badgeIcon: user.currentBadge, }); ``` ### Automated Social Media Visuals Turn tweets into shareable images. Turn blog posts into Instagram carousels. Turn product updates into LinkedIn graphics. All automated. Check out [Twitter Screenshot API](https://orshot.com/templates/tweet-image) as an example. ### Multi-Language Variations (Geo Optimization) Same banner, 20 languages, instantly. Perfect for international campaigns. ```javascript const languages = ["en", "es", "fr", "de", "ja", "pt", "it"]; for (const lang of languages) { await renderTemplate({ title: translations[lang].title, description: translations[lang].description, ctaButton: translations[lang].cta, }); } ``` Generate all variations in seconds. VistaCreate would require manually creating 20 separate designs. ### Product Catalog Automation eCommerce with hundreds of products? Auto-generate product banners from your database. [See eCommerce automation tutorial](https://orshot.com/blog/automate-ecommerce-product-images). ### Certificate and Report Generation Generate personalized certificates, invoices, reports. See [automated invoice generation](https://orshot.com/blog/automated-invoice-generation) and [Google Sheets certificates automation](https://orshot.com/blog/google-sheets-certificates-automation). All of this is impossible with VistaCreate because it's a manual tool. With Orshot, it's a few API calls. ## How It Works [Watch the video](https://www.youtube.com/watch?v=3bR-lWT5EFY) **The workflow:** 1. **Create a template** in Orshot Studio (or import from Canva/Figma, or use AI) 2. **Mark dynamic elements** (which text/images should change) 3. **Get your API endpoint** (each template becomes an API) 4. **Generate at scale** via REST API, SDKs, Zapier, Make, n8n, or [Dynamic URLs](https://orshot.com/docs/integrations/dynamic-urls) No manual work after step 1. Change data, get new images. That simple. ## Integrations Orshot connects with tools you already use: - **[Zapier](https://orshot.com/docs/integrations/zapier)** - Connect to 5,000+ apps - **[Make](https://orshot.com/docs/integrations/make)** - Visual automation builder - **[n8n](https://orshot.com/docs/integrations/n8n)** - Self-hosted automation - **[Dynamic URLs](https://orshot.com/docs/integrations/dynamic-urls)** - Generate images via URL parameters (no API calls needed) - **REST API** - Full API with [SDKs for Node, Python, Ruby, PHP](https://orshot.com/docs/sdks) - **[MCP Server](https://orshot.com/blog/orshot-remote-mcp-server)** - For AI agent integration VistaCreate has some integrations, but nothing close to full automation capabilities. ## Common Questions **Q: Can I use VistaCreate templates in Orshot?** You can't directly import VistaCreate templates, but you can recreate them in Orshot Studio or use our AI Template Generator to recreate a design from a screenshot. Alternatively, if you have the original in Canva or Figma, you can import directly. **Q: Is Orshot suitable for non-technical users?** Yes. Orshot Studio is a visual editor similar to VistaCreate - drag-and-drop, no coding required. The API features are optional. You can use it purely as a design tool if you want. But when you need automation, it's there. **Q: How is pricing different from VistaCreate?** VistaCreate charges per user seat (~$10-13/month per person). Orshot charges for credits ($39/month for 1,500 credits, unlimited team members). For teams, Orshot is usually cheaper. For individual designers making limited graphics, VistaCreate might be more economical. **Q: Can I embed Orshot in my own app?** Yes. You can [white-label and embed Orshot Studio](https://orshot.com/blog/orshot-studio-embed) directly into your SaaS or platform. Your users can design without leaving your product. VistaCreate doesn't offer this. **Q: Does Orshot support bulk generation like spreadsheets?** Yes. You can bulk generate from spreadsheets, Google Sheets, or CSV files. You can also use API bulk endpoints to generate hundreds or thousands of images in parallel. Check out our [bulk generation guide](https://orshot.com/blog/canva-bulk-create-alternative). **Q: What file formats does Orshot support?** Images: PNG, JPG, WebP, AVIF. Documents: PDF. Videos: MP4, WebM, GIF. You specify the format in each API call. Orshot also supports multi-page PDFs and carousels. **Q: Can I automate social media posts with Orshot?** Absolutely. Many users automate Instagram posts, Twitter images, LinkedIn graphics, and Facebook banners. With Orshot's built-in [Social Publishing](https://orshot.com/docs/publish/introduction), you can render an image and post it directly to 15+ platforms in one API call — no Buffer or third-party scheduler needed. You can also connect to your CMS or social media tools via Zapier/Make. See [Twitter to Instagram automation](https://orshot.com/blog/automate-tweet-to-instagram). **Q: Is there a partner program for agencies?** Yes. Our [Agency Partner Program](https://orshot.com/partner-program) is free to join and includes unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools. Perfect for agencies managing multiple clients. ## The Bottom Line VistaCreate is a solid manual design tool. If you need to create a few graphics per week and you don't need automation, it works fine. The templates are good, the interface is easy, and the price is reasonable for individuals. But if you need to: - Generate designs at scale - Automate image creation - Integrate design generation into your product or workflow - Build systems, not individual graphics - Work as a team without per-seat pricing Then you need Orshot. VistaCreate is for designers. Orshot is for developers, product teams, agencies, and anyone who needs design automation. The switch takes about an hour to set up your first automated workflow. You can test everything free with 100 credits a month. If you've outgrown VistaCreate but don't need full API-driven automation, it's worth looking at [PosterMyWall](https://www.postermywall.com/ "target=_blank") too. It's an all-in-one AI-powered marketing and design tool. Generate designs, images, and marketing copy from a prompt, then schedule and publish directly to your social accounts, all from the same place. For teams that just want AI-assisted design and easy publishing without writing a line of code, PosterMyWall can do a better job than VistaCreate! ## For Agencies Building visual automation for multiple clients? Check out the [Agency Partner Program](https://orshot.com/partner-program) — free to join, unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools. ## Try Orshot Free **Start automating your visuals** — 100 free credits a month. No credit card required. [Try Orshot free](https://orshot.com/pricing?via=blog-vistacreate-bottom) 1. [Sign up](https://orshot.com/pricing) - 100 free credits every month, no card needed 2. Create a template (or import from Canva/Figma) 3. Make a test API call or use spreadsheet generation 4. See if automation works for your use case You get 100 free credits a month to experiment. If you get stuck, hit the chat button. I or someone from the team will help you out. If you're also comparing other tools like [Bannerbear](https://orshot.com/blog/bannerbear-api-alternative), [Placid](https://orshot.com/blog/placid-api-alternative), [Abyssale](https://orshot.com/blog/abyssale-api-alternative), [Canva Bulk Create](https://orshot.com/blog/canva-bulk-create-alternative), or weighing up [free Canva alternatives](https://orshot.com/blog/free-canva-alternatives), the same advantages apply - API-first approach, no feature gating, and multi-page support that most competitors lack. --- ### [Abyssale Alternative for High-Volume Image & Video Generation](https://orshot.com/blog/abyssale-api-alternative) > Looking for an Abyssale API alternative? Generate images and video from templates with Orshot and no per-seat pricing. Start with 100 free credits a month Abyssale is a creative automation platform for banners, videos and HTML5 ads, sold per seat to marketing teams. But if you've been using Abyssale, you've probably noticed some things. The per-seat pricing that multiplies with every teammate. Print PDFs and approvals kept for the higher tier. A lot of platform to learn when you just need to generate images via API. I built Orshot because I needed something simpler. Same core concept ([turn templates into API endpoints](https://orshot.com/solutions/image-generation-api)), but without the enterprise overhead. Team members included in the plan, no seat math, straightforward pricing. 100 free credits a month, no card needed. [Try Orshot free](https://orshot.com/pricing?via=blog-abyssale-top) Here's a **preview of Orshot Studio** for you to try: [Open the embed](https://orshot.com/templates/shared/6h1w0nmj/embed?view=view) ## What's Different If you're on Abyssale, here's what changes when you switch: | Feature | Orshot | Abyssale | | :---------------------- | :---------------------------------------------------------------------------------------------- | :--------------------------------------------------------------- | | **Free Tier** | 100 free credits a month, no card | 14-day free trial | | **Pricing Model** | Monthly plans from \$39 to \$600, team members included | Per seat on every plan | | **Starter Plan** | \$39/month for 1,500 credits and 2 team members | Pro: \$36/seat/month, 450 credits per seat | | **Mid Plan** | \$99/month for 5,000 credits and 4 team members | Suite: \$60/seat/month, 750 credits per seat | | **Video Generation** | All paid plans: full timeline, audio tracks, auto-subtitles (MP4/WebM/GIF) | MP4 and GIF on Pro, HTML5 on Suite | | **API Access** | All plans, including free | Paid plans | | **PDF Generation** | All plans, including free | Print PDF on Suite and above | | **Embed Editor in App** | [White-label Studio Embed](https://orshot.com/blog/orshot-studio-embed) | Not offered (Abyssale Bridge is a simplified view for outside users) | | **Dynamic URLs** | [All plans](https://orshot.com/docs/integrations/dynamic-urls), including free | Paid plans | | **Template Editor** | [Orshot Studio](https://orshot.com/features/orshot-studio) with [Smart Stacking](https://orshot.com/blog/smart-stacking) | Abyssale Editor | | **Template Import** | Abyssale (API key), [Canva](https://orshot.com/solutions/canva-template-to-api), [Figma](https://orshot.com/solutions/figma-automation-via-rest-api), [AI](https://orshot.com/features/ai-template-generator) | Figma plugin, Photoshop plugin | | **Social Publishing** | [Built-in, 15+ platforms](https://orshot.com/docs/publish/introduction) | No | ## The Real Problems with Abyssale ![The Abyssale homepage with the headline Generate creative content at scale in minutes and a preview of its design editor](https://orshot.com/blog/abyssale-api-alternative/abyssale-homepage.webp) Based on what I've seen from users switching over, here are the main pain points: ### 1. Per-Seat Pricing Gets Expensive Fast Abyssale prices every plan per seat. Pro is \$36 per seat per month and Suite is \$60, both billed annually. Five people on Pro is \$180 a month before a single extra credit. Orshot plans include the team: 2 members on the \$39 plan, 4 on the \$99 plan, 6 on Grow and 14 on Scale. Adding a teammate within your plan costs nothing. ### 2. Print PDFs and Approvals Sit on the Higher Tier Print-ready PDF, the approval workflow, HTML5 ads and loginless public forms all need Suite, at \$60 per seat. On Orshot, PDF generation, the API and Dynamic URLs are on every plan, the free one included. Paid plans add video, and larger plans add workspaces, team members and embed options. ### 3. A Lot of Platform When You Just Need an API Abyssale covers a wide surface: projects, approvals, a creative hub, HTML5 ad networks and print. Even a customer quote on Abyssale's own pricing page says the UI "can be a bit quirky sometimes." If your job is generating images, PDFs or videos from templates through an API or an automation, Orshot keeps to that: a template, its parameters and one endpoint. ## What You Get Extra with Orshot Beyond solving Abyssale's pain points: - **Simpler pricing** - One monthly price per plan, team members included. No seat math. - **Multi-page templates** - Create carousels, multi-page PDFs, and multi-page videos for social media. Each page can have multiple video layers. [See how it works](https://orshot.com/solutions/video-generation-api). - **Integrations** - Zapier, Make, n8n, Pipedream and Airtable apps, an MCP server, the Orshot CLI and built-in Workflows. [Full list here](https://orshot.com/integrations). - **Import from anywhere** - Bring designs from Abyssale, clone from Canva, import from Figma, or generate templates with AI. - **Better editor** - Orshot Studio has smart stacking and smart layouts. Less clicking, more designing. - **Full video editor with API control** - Visual video timeline with per-layer animations, page-level audio tracks, and auto-generated subtitles. Export to MP4, WebM, or GIF. Control trim, mute, loop, and every animation property via API. Multiple videos per page, multiple pages per template. One API call generates everything. - **Social Publishing** - Render and publish to 15+ social platforms in one API call. Post instantly, schedule, or save as draft. No third-party scheduler needed. - **Actual support** - I respond to chat messages. Usually within an hour. Sometimes I'll hop on a call if something's complicated. ## Switching from Abyssale Most of the work is the templates, and those now come across on their own. The steps below are the quick version; the migration guide has every screen. ### Step 1: Import Your Designs (5 min) **Pull them straight from Abyssale** - Copy your API key from Workspace settings, then API key in Abyssale. In Orshot, open New Template, pick the Abyssale tab and paste it. Your designs show up as a list; pick one to open in Studio, or up to 10 at once on a paid plan. Every format becomes a page, and each layer name becomes an API parameter with the same name. **Rebuild with AI** - For a design that lives somewhere else, screenshot the output and drop it into the AI Template Generator. It recreates the layout, you fine-tune. **Start from the source file** - Originals in Canva or Figma import directly too. Try it now: paste a public Canva share link and see it as an Orshot template: You can create multi-page templates, [share through public links or embeds](https://orshot.com/blog/sharing-orshot-templates) with different view modes. You can also [invite your team to collaborate](https://orshot.com/features/team-collaboration) on design + template integration. ### Step 2: Update Your API Calls (10 min) The request keeps the same shape. The wrapper objects go, the header changes, and formats become pages. Every example below is the JSON body of one call: ```http POST https://api.orshot.com/v1/studio/render Authorization: Bearer YOUR_ORSHOT_API_KEY Content-Type: application/json ``` Layer names stay the same after import, so each value goes straight into `modifications`. `includePages` picks one format, because every Abyssale format is a page of the imported template, in the same order. ```json { "templateId": "YOUR_TEMPLATE_ID", "modifications": { "title": "Autumn drop is live", "hero": "https://example.com/coat.jpg" }, "response": { "type": "url", "format": "png", "includePages": [2] } } ``` Leave out `includePages` and one synchronous call renders every format. No batch to poll. ```json { "templateId": "YOUR_TEMPLATE_ID", "modifications": { "title": "Autumn drop is live" }, "response": { "type": "url", "format": "png" } } ``` The response lists one file per format, in page order: ```json { "data": [ { "page": 1, "content": "https://storage.orshot.com/…/page_1.png" }, { "page": 2, "content": "https://storage.orshot.com/…/page_2.png" }, { "page": 3, "content": "https://storage.orshot.com/…/page_3.png" } ], "totalPages": 3, "renderedPages": 3 } ``` Colours, sizes and visibility are dot keys on the parameter. Abyssale's `hidden: true` becomes opacity 0, and `root.background_color` becomes `canvasBackgroundColor`. ```json { "templateId": "YOUR_TEMPLATE_ID", "modifications": { "title": "Sale", "title.color": "#E4002B", "title.fontSize": 72, "badge.opacity": 0, "canvasBackgroundColor": "#111111" }, "response": { "type": "url", "format": "png" } } ``` Replacing an async batch with a `callback_url`? Set async mode and pass your own record ID as `metadata`. It comes back with the finished job. ```json { "templateId": "YOUR_TEMPLATE_ID", "modifications": { "title": "Autumn drop is live" }, "response": { "mode": "async", "format": "png" }, "webhook_url": "https://yourapp.com/hooks/orshot", "metadata": "campaign-8412" } ``` Your webhook receives: ```json { "event": "render_job.finished", "job": { "status": "succeeded", "metadata": "campaign-8412" } } ``` The same template renders as a PDF by changing the format. A multi-page template becomes one document. ```json { "templateId": "YOUR_TEMPLATE_ID", "modifications": { "name": "Sarah Chen" }, "response": { "type": "url", "format": "pdf" }, "pdfOptions": { "dpi": 300 } } ``` For comparison, the same one-format call on Abyssale. It goes to `POST https://api.abyssale.com/banner-builder/YOUR_DESIGN_ID/generate` with an `x-api-key` header, and every value is wrapped in an object. ```json { "template_format_name": "facebook-feed", "elements": { "title": { "payload": "Autumn drop is live" }, "hero": { "image_url": "https://example.com/coat.jpg" } } } ``` The migration guide above has a converter that rewrites your own Abyssale request body. **Helpful docs:** - [API Reference](https://orshot.com/docs/api-reference) - Complete API documentation - [Render from Template](https://orshot.com/docs/api-reference/render-from-studio-template) - Main endpoint you'll use - [SDKs](https://orshot.com/docs/sdks) - Node, Python, Ruby, PHP libraries - [Setting Parameters](https://orshot.com/docs/orshot-studio/setting-parameters) - How to make templates dynamic - [Style Parameters](https://orshot.com/docs/orshot-studio/style-parameters) - Override styles via API ### Step 3: Test It (5 min) 1. Make a few test calls 2. Compare the output 3. Tweak styling if needed in Studio 4. Deploy Test from the template's API & Integrations sheet. Each tab (API, n8n, Make, Zapier and more) has the request ready with your parameter names, and Run API Request shows the result live. ![The API & Integrations sheet of an imported Abyssale design in Orshot, with the API tab open and every layer name listed as a parameter](https://orshot.com/migrate/abyssale/orshot-api-tab.webp) You can run both Abyssale and Orshot in parallel during transition. Most people switch fully within a day or two. ### Need Help? Hit the chat button on bottom right. I or someone from the team will help you migrate templates, check your API calls, whatever you need. Usually takes about 2 hours total for a complete migration. ## Common Questions **Q: Can I move my Abyssale templates to Orshot without rebuilding them?** Yes. Paste your Abyssale API key in New Template, then the Abyssale tab, and pick the designs. Each format comes in as a page with your layer names kept as API parameters. We can also import up to 5 templates for you free on any paid plan. **Q: Why choose Orshot over Abyssale for teams?** Abyssale charges per seat on every plan. Orshot plans include team members (2 on the $39 plan, 6 on Grow, 14 on Scale) with no per-seat charge, so adding a teammate within your plan costs nothing. **Q: Does Orshot support multi-page PDFs and carousels?** Yes. Orshot natively supports [multi-page templates](https://orshot.com/blog/introducing-carousel-templates) for generating PDF reports, slide decks, and social media carousels in a single API call. **Q: How does Orshot's video generation compare to Abyssale?** Orshot has a full video editor with a visual timeline, per-layer animations, page-level audio tracks, and auto-generated subtitles, all controllable via API. Export as MP4, WebM, or GIF. **Q: Can I use my existing Zapier or Make automations?** Yes. If you use automation tools like [Zapier](https://orshot.com/docs/integrations/zapier) or [Make](https://orshot.com/docs/integrations/make), you can simply swap the Abyssale module for Orshot. The logic of mapping data to template fields remains the same. **Q: Can I import my Figma or Canva designs to Orshot?** Yes. You can import designs from Figma using our plugin or clone from Canva using our import tool. Our Smart Stacking feature makes recreating flexible layouts very fast. **Q: Does Orshot support HTML5 Banner Ads?** No. Orshot focuses on generating high-fidelity images, PDFs, and videos. Orshot does not output HTML5 zip bundles for display networks. **Q: Is there a partner program for agencies?** Yes. Our Agency Partner Program is free to join and includes unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools. Perfect for agencies managing multiple clients. **Q: What integrations does Orshot support?** Orshot integrates with Zapier, Make, n8n, Airtable, Slack, and more. We also offer Dynamic URLs for no-code image generation and a full REST API with SDKs for Node, Python, Ruby, and PHP. ## Pricing Comparison Per-seat pricing depends on team size, so here is the monthly cost for a few real setups. Abyssale figures use Pro at \$36 per seat (annual billing) plus top-up credits at \$0.01 each; Orshot figures are monthly list prices. | Team and volume | Abyssale (Pro) | Orshot | | ------------------------- | --------------------------------------- | ---------------------------------------- | | 1 person, 1,500 images | ~\$46.50 (1 seat + 1,050 top-up credits) | \$39 (1,500 credits) | | 4 people, 5,000 images | ~\$176 (4 seats + 3,200 top-up credits) | \$99 (5,000 credits, 4 team members) | | 6 people, 20,000 images | ~\$389 (6 seats + 17,300 top-up credits) | \$160 (20,000 credits, 6 team members) | Also worth noting: - 100 free credits every month to test with, no card needed (Abyssale offers a 14-day trial) - Team members are part of the plan, not a line item - The API, PDFs and Dynamic URLs work on the free plan too ## The Editor ![Orshot Studio with a product ad open: layers on the left, the canvas in the middle and size and background settings on the right](https://orshot.com/solutions/image/studio-editor.webp) Orshot Studio is designed for simplicity. Clean interface, minimal clicking, visual results. **Key features:** - **Smart Stacking** - Position elements relative to each other. They auto-adjust when content changes - **Brand Assets** - Save your logos, colors, and fonts. Use across all templates - **Custom Fonts** - Upload any font. No limits - **Personalization** - Make any element dynamic - text, images, colors, styling - **Studio Embed** - Integrate the editor into your own app with custom branding - **Multi-page Support** - Create carousels and [PDF templates](https://orshot.com/solutions/pdf-generation-api) with different pages ## How It Works [Watch the video](https://www.youtube.com/watch?v=3bR-lWT5EFY) Every template becomes an API endpoint. You can: - Generate templates with AI or import from Canva/Figma - Automate with REST API, SDKs, Zapier, Make, n8n, or Dynamic URLs - Bulk generate with parallel processing - Generate multi-page PDFs and carousels If there's an integration missing, just ask. We'll probably add it. ## Examples and Tutorials ### Generating Videos Adding videos in your templates and automating via Orshot's Video Generation API: [Watch the video](https://www.youtube.com/watch?v=RQPHJY3bkZk) ### Carousel Templates How to create multi-page templates and automate them: [Watch the video](https://www.youtube.com/watch?v=EXJoMeGyEhM) ### Import from Canva Clone your existing Canva designs and turn them into API endpoints: [Watch the video](https://www.youtube.com/watch?v=P4AHj3dpJXw) ### Import from Figma Use the Figma plugin to import your designs directly: [Watch the video](https://www.youtube.com/watch?v=ggvLR0HLJ7Q) ### eCommerce Automation Example workflow - [automating product images](https://orshot.com/blog/automate-ecommerce-product-images) from your data sources: [Watch the video](https://www.youtube.com/watch?v=S5qNb4mmUdc) ### Dynamic URLs Generate images just by changing URL parameters - no API calls needed: [Watch the video](https://www.youtube.com/watch?v=a2I69Qb2hts) ## Bottom Line Abyssale is built around seats, approval steps and HTML5 ad bundles. For most use cases, generating images and videos via API, that's a lot of product to pay for. Orshot does the same core thing (turn templates into API endpoints) with simpler pricing and the team included. If you're also comparing [Bannerbear](https://orshot.com/blog/bannerbear-api-alternative), [Placid](https://orshot.com/blog/placid-api-alternative), or [Contentdrips](https://orshot.com/blog/contentdrips-api-alternative), the same points apply: simpler pricing, team members included, and multi-page templates. The switch takes a couple hours. You can test everything free with 100 credits a month. ## For Agencies Building visual automation for multiple clients? Check out the [Agency Partner Program](https://orshot.com/partner-program): free to join, unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools. ## Try It 1. Sign up with the button at the top: 100 free credits every month, no card needed 2. Import one of your Abyssale designs with your API key 3. Test with your actual data 4. See if it works for you If you get stuck, hit the chat button. I'll help you out. --- ### [AdCreative.ai Alternative for Automated Image and Video Ads](https://orshot.com/blog/adcreative-ai-alternative) > Generate static and video ads via AI agents, render on-brand at scale via API, n8n, Make. Predictable pricing vs AdCreative.ai, 100 free credits a month If you're looking for an AdCreative.ai alternative, you've usually hit one of two walls: - **The bill** — a surprise annual charge after a trial you thought you'd cancelled. - **The output** — an AI that _guesses_ your ad isn't a tool that reliably _ships_ the one you already designed. Orshot is the second kind. Design an ad once, then render it in every size and format — static image or animated video — through an API. You own the exact look, and the price doesn't move. AdCreative invents and scores ads; Orshot reproduces and automates the one you picked. [**Try Orshot free**](https://orshot.com/pricing "target=_blank") with 100 credits a month, no card. ## One ad, every size, one call This is the part worth seeing first. Design an ad once, and Orshot renders it into every format you need in a single API call — no redesign, no re-spend: ![Coaching ad template rendered as a 1080x1920 Instagram Story via Orshot Smart Resize](https://orshot.com/blog/adcreative-ai-alternative/resize-story.png) ![Same coaching ad template rendered as a 1080x1080 square Instagram post via Orshot Smart Resize](https://orshot.com/blog/adcreative-ai-alternative/resize-square.png) ![Same coaching ad template rendered as a 1200x630 Open Graph image via Orshot Smart Resize](https://orshot.com/blog/adcreative-ai-alternative/resize-og.png) Same ad — a Story, a square post, an OG image — from one template in one request. Swap the headline and you've got the next campaign. I'll show the call that did this further down. ## I'll be straight about fit first If you don't yet know what your ad should look like and want AI to invent concepts and score them, Orshot is the wrong tool — no generator, no creative score. It's built for the next step: you already have the design, now produce it on-brand, in every size, at scale. (Full who-picks-which is at the bottom.) ## Why people leave AdCreative.ai The ideas are rarely the problem — it's everything wrapped around them. The patterns from public reviews ([Product Hunt 3.9/5](https://www.producthunt.com/products/adcreative-ai/reviews "target=_blank rel=nofollow"), [Trustpilot](https://www.trustpilot.com/review/adcreative.ai "target=_blank rel=nofollow"), G2): - **Surprise charge after the trial.** The 7-day trial needs a credit card and auto-converts, and the headline prices are the discounted quarterly/yearly rates — so the bill comes in bigger than it looked. The widely-cited **~$339** charge after a trial people thought they'd cancelled (then slow or ghosted refunds) is the #1 complaint. - **Credits are downloads, and scarce.** ~**10/month** on Starter, no roll-over, watermark only off on a paid download. - **Output can look AI-made.** A fair share of creatives read as generic — fine to start, hard to ship as your brand at scale. - **Generates, but doesn't deliver.** Pushes to ad accounts, but no automation layer — nothing renders an ad when a row lands in Airtable or a product changes in your CMS. - **Support friction** — slow help right when a billing problem is most stressful. None of it makes AdCreative a bad product. It means that once ad creative is recurring work, you want control, automation, and a cost you can predict. Different tool. ## The pricing, and the "$339 trap" Here's the model in plain terms: | | AdCreative.ai | Orshot | | :-------------------------- | :--------------------------------------------- | :---------------------------------------- | | **Entry price** | $39/mo Starter ($39 / $249 / $999 tiers) | $39/mo | | **Billing** | Monthly, or 25% off quarterly / 50% off yearly | Same price, monthly or annual | | **What a credit is** | One **download** of a creative | 1 image, 1 PDF page, or 1 second of video | | **Entry credits** | ~10 downloads/mo on Starter | 1,500 credits/mo on the $39 plan | | **Free option** | 7-day trial, **credit card required** | 100 credits a month, **no card** | | **Roll over** | Unused credits reset | — | | **Scoring / video / batch** | Pro plan ($249+) and up only | Included on paid plans | The "$339 trap" is a few things stacking up: the trial needs a card and auto-converts, the lowest advertised prices are the quarterly/yearly rates rather than what you'd pay month to month, and the features people came for — creative scoring, video, batch — only start on the $249 Professional tier. A casual signup can become a multi-hundred-dollar bill before you've shipped one ad. Orshot's free tier needs no card — nothing to forget to cancel — and the same $39 buys **1,500 credits** with no annual lock-in. ## How Orshot works instead You design the ad once in [Orshot Studio](https://orshot.com/studio) — a Figma-like editor — lock your brand (fonts, colors, logo), and mark only the parts that change (headline, price, product image) as parameters. From there the design is an **API endpoint**: every render comes out pixel-exact and on-brand, whether you make one or ten thousand. Here's the template, embedded live — hit play to watch it animate, then resize it to any format: [Open the embed](https://orshot.com/templates/shared/vx6jbbh2/embed?view=play) That preview is animating, not a static mockup. Studio has a timeline with per-layer animations and video layers, so the same template also exports as an **animated video ad** — MP4, WebM, or GIF — not just a still. If you specifically want an AdCreative alternative for video ads, one template gives you both the static and the moving version, from the same API call. **Like what you see? [Sign up free to save and export your own design](https://orshot.com/pricing "target=_blank")**. 100 credits a month, no card. You don't have to start from a blank canvas, either. The [ad template gallery](https://orshot.com/templates/g/ads "target=_blank") has 30+ ready-made ads across SaaS, ecommerce/DTC, fitness, food & beverage, dental, courses, automotive, and pet services — Story ads, square IG ads, product cards, offer stories. Pick one, swap your copy and product, done. Already designed your ad in [Canva](https://orshot.com/solutions/canva-template-to-api) or [Figma](https://orshot.com/solutions/figma-automation-via-rest-api)? Import it and it becomes an API endpoint too. ## AdCreative.ai vs Orshot, side by side These tools overlap but sit at different points in the workflow. AdCreative.ai _invents and scores_ creative. Orshot _reproduces and automates_ the creative you've already chosen. | Feature | Orshot | AdCreative.ai | | :-- | :-: | :-: | | Generates ad ideas from your brand/site | Via MCP agent | Yes | | Predictive conversion-score ranking | No | Yes | | Push to Google/Meta ad accounts | No | Yes | | Pixel-exact brand control (you design it) | Yes | No | | Predictable pricing, no annual lock-in | Yes | No | | Free tier, no credit card | Yes | No | | REST API & SDKs (Node/Python/Ruby/PHP) | Yes | No | | Zapier / Make / n8n + MCP for AI agents | Yes | No | | Smart Resize — one design, every ad size | Yes | No | | Bulk render from a spreadsheet/CSV | Yes | No | | Animated video ads (MP4/WebM/GIF) + PDF, same template | Yes | No | | Publish to 15+ social platforms | Yes | No | | Entry price | $39/mo (1,500 credits) | ~$39/mo (~10 downloads) | > **Bottom line:** AdCreative.ai is an AI idea-generator for ads with billing you have to watch closely. Orshot is the alternative when you want predictable pricing and pixel-exact, automated creative across image, PDF, and video. ## One design → every ad size This is the part from the top of the post, and where owning the template pays off. With AdCreative.ai you re-generate — and re-spend — for each format. With Orshot you design once and [Smart Resize](https://orshot.com/features/smart-resize) re-lays-out the design to fit any canvas. Text, images, and colors stay shared; only the layout moves. The three renders up top — Story, square, OG — came out of one call with `extraSizes`: ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_ad_template_id", modifications: { headline: "Unlock Your Leadership Potential", cta: "Book a Session", }, response: { type: "url", format: "png" }, size: "instagram-story", extraSizes: ["1080x1080", "1200x630"], }), }); ``` Presets cover `instagram-story`, `instagram-post`, `facebook-story`, `linkedin-post`, `youtube-thumbnail`, `og-image`, `leaderboard-ad`, `medium-rectangle-ad`, and more — or pass any `WIDTHxHEIGHT`. ## Automate it (API, Zapier, Make, n8n, bulk) AdCreative.ai stops at "here are some creatives." Orshot is built to push creative _into your stack_ on its own: - **REST API + SDKs** for Node, Python, Ruby, and PHP — every template is an endpoint. Swap `"png"` for `"webp"`, `"pdf"`, `"mp4"`, or `"gif"` and the same call returns a different format from the same design. - **Zapier, Make, and n8n nodes** — render a new ad every time a row lands in Airtable, a product changes in your CMS, or a deal closes. - **[MCP server](https://orshot.com/agents "target=_blank")** — connect Claude, Cursor, ChatGPT, or any AI agent and it generates ad designs on autopilot: tell it "render the launch ad in five sizes and drop them in our bucket" and it does, on a webhook or cron, no clicks. - **Bulk render** — loop a spreadsheet of products, prices, or locales and produce the whole campaign in one batch. That's the core of [automated image generation](https://orshot.com/solutions/image-generation-api) and [social media content automation](https://orshot.com/solutions/ai-marketing-automation-for-agencies). - **Publish to 15+ platforms** — render and post in the same call, no separate scheduler. ```javascript // Generate the whole campaign from a product list for (const product of products) { await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_ad_template_id", modifications: { headline: product.headline, price: product.price, product_image: product.imageUrl, }, response: { type: "url", format: "png" }, extraSizes: ["instagram-story", "1080x1080", "1200x630"], }), }); } ``` ## Who should pick which - **Pick AdCreative.ai** if your core need is _generative ideation_ — you want AI to come up with concepts, headlines, and layouts, score them, and push winners into Google/Meta. A templating tool can't replace that. - **Pick Orshot** if you already know your look and need _control, automation, and predictable cost_ — design once, render thousands of on-brand variants across every size and format via API, no surprise annual charge, no per-download cap. Plenty of teams run both: ideate in a generator, lock the winner as an Orshot template, produce at scale. ## Common questions **Q: Is Orshot a direct replacement for AdCreative.ai?** Not one-to-one — they solve adjacent problems. AdCreative.ai generates new ad concepts with AI and scores them for predicted conversion. Orshot takes a design you've already chosen and reproduces it exactly across thousands of on-brand variations and every format via API. Many teams ideate in one and produce in the other. **Q: What's the real story behind AdCreative.ai's pricing and the $339 charge?** AdCreative.ai's trial requires a credit card and auto-converts. It does offer monthly plans, but the lowest advertised prices are the discounted quarterly/yearly rates, and creative scoring, video, and batch only start on the $249 Professional tier. The widely-reported ~$339 charge happens when a trial converts into a longer plan people didn't expect. Orshot's free tier needs no card, and $39/mo gets 1,500 credits at the same price monthly or annually. **Q: How is an Orshot credit different from an AdCreative.ai credit?** On AdCreative.ai a credit is consumed when you download a creative, and the Starter plan ships with very few (around 10/month) that don't roll over. On Orshot, 1 credit = 1 image, 1 PDF page, or 1 second of video — 1,500 credits on the $39 plan, scaling to 300,000 credits/month, every template included. **Q: Can Orshot resize one ad into every social format automatically?** Yes — that's Smart Resize. Design once and Orshot deterministically re-lays-out the design to fit any canvas (Story, Square, OG, banner, YouTube thumbnail). You can render multiple sizes in a single API call with extraSizes. **Q: Can Orshot make video ads, not just static ones?** Yes — Studio supports per-layer animations and video layers, so the same ad template exports as an animated video ad in MP4, WebM, or GIF, alongside static images and PDFs. One template and one credit pool cover every format, which makes Orshot a practical AdCreative alternative for video ads as well as static creative. **Q: How does Orshot fit into automation?** Every template becomes a REST endpoint with SDKs for Node, Python, Ruby, and PHP, plus native nodes for Zapier, Make, and n8n, an MCP server for AI agents, a CLI, and Dynamic URLs. That's how one design becomes thousands of on-brand assets automatically — the delivery layer AdCreative.ai doesn't have. ## Bottom line If AdCreative.ai helped you work out what your ads should look like, Orshot is the next step: lock that design as a template and generate every on-brand variation — image, PDF, and video — from one predictable plan and one API. No creative score, no surprise renewal. Just the ad you chose, in every size you need, on demand. [**Get started free →**](https://orshot.com/pricing "target=_blank") with 100 credits a month, no card. Also comparing AI generators for organic social rather than paid? [Predis.ai](https://orshot.com/blog/predis-ai-alternative) covers the same ground for feed posts and carousels. --- ### [AI Generated Images are useless! Try Template Based Generation](https://orshot.com/blog/useless-ai-generated-images) > AI Images are not consistent. There will always be uncertainty in generating content through AI. Try Templates based automated image generation for best results With AI, prompt generated images have been trending since some time now. Probably because it opens a new gate for non-designers, non-creative people to be creative No problem in that! AI Generated Images are fancy, fun way to create content, but apart from the fanciness and the dopamine to express your creative ideas through prompt generated creatives, it's mostly useless **The reason?** **AI Images are not consistent**. There will always be uncertainty in generating content through AI, be it text, images or video You can't basically do "_generate the same image with XYZ new text and this new logo_" and rely on the output The whole point of a useful image generation tool is to be creative to a point you can have a set template or design. And then you can generate as many images from that template. That's when it'll be most useful What's lacking in AI based image generation for it to be most useful? - Can't generate consistent images - Can't generate(consistent) templates for reuse - One time use visuals, can't automate - Can't customize the exact details - It'll always be uncertain what AI generates ![AI-generated photo trends from Gemini](https://orshot.com/blog/gemini-photo-trends.webp) There's so much fuss about the creative production through AI, which makes sense for fun, creative output. For ex. the ghibli trend, or the current retro photos trend going on But as someone who runs a business, for example, a clothing business, would you rely on AI to have your outfit photos with model? You might, but your customers might not like it So what's the solution? ## AI Images + Templating + Automation The real power comes when you combine the creative possibilities of AI with the consistency of templates and the efficiency of automation This is where **template-based image generation** shines. Instead of hoping AI generates what you need every time, you: 1. Design once (or use AI to help design) 2. Lock in your brand style, colors, and layout 3. Generate unlimited variations with consistent branding 4. Automate the entire process ## Meet Orshot: Template-Based Image Generation ![A parameterized product template in Orshot](https://orshot.com/blog/automate-ecommerce-visuals/orshot-product-template.webp) [Orshot](https://orshot.com/) is built specifically to solve the consistency problem that AI image generation can't handle. It's a template-based automated image and PDF generation platform that lets you: #### Create Consistent, Branded Images at Scale With [Orshot Studio](https://orshot.com/features/orshot-studio), you get a powerful design editor where you can: - Design your templates once with your exact brand guidelines - Add dynamic text, images, and data fields - Use [Smart Stacking](https://orshot.com/blog/smart-stacking) for layouts that automatically adapt to content changes - Create [multi-page carousel templates](https://orshot.com/blog/introducing-carousel-templates) for social media The best part? Once you've designed your template, you can generate thousands of variations - all maintaining your exact brand style #### Automate Image Generation Unlike AI-generated images that require manual prompting each time, Orshot lets you: - Generate images via [API](https://orshot.com/solutions/image-generation-api) with just your data - Integrate with [Make](https://orshot.com/blog/orshot-make-integration), n8n, Zapier, and other automation tools - Connect to your data sources (Google Sheets, databases, CMS) - Generate images in bulk without any manual intervention **Example Use Cases:** - **eCommerce**: [Auto-generate product marketing images](https://orshot.com/blog/automate-ecommerce-product-images) for hundreds of products - **Social Media**: Create consistent branded posts from your blog content - **Certificates**: [Generate certificates from Google Sheets](https://orshot.com/blog/google-sheets-certificates-automation) - **Marketing**: Create quote cards, testimonials, and promotional graphics at scale **Real-World Example: eCommerce Product Images** Imagine you have an online store with 500 products. With AI image generation: - You'd need to prompt each image individually - Results would be inconsistent - No guarantee of brand consistency - Time-consuming and unpredictable **With Orshot:** 1. Design one product template in Orshot Studio 2. Connect your product data (from Shopify, Google Sheets, or any source) 3. Generate all 500 product images in minutes 4. Every image follows your exact brand guidelines 5. Need to update the design? Change the template once, regenerate all images ### Why Template-Based Generation Wins - **Consistency**: Every generated image matches your brand perfectly - **Predictability**: You know exactly what you'll get every time - **Scalability**: Generate 1 image or 10,000 - same quality, same speed - **Automation-Ready**: Perfect for workflows, integrations, and bulk generation - **Cost-Effective**: No per-prompt costs or uncertainty about results - **Customization**: Full control over every design element ## The Best of Both Worlds This doesn't mean AI image generation is useless - it just means it's not ideal for business use cases that require consistency and automation Use AI for: - Creative exploration and inspiration - One-off unique visuals - Artistic projects and experimentation Use template-based generation ([like Orshot and others](https://orshot.com/blog/bannerbear-api-alternative)) for: - Business graphics and marketing materials - Social media content at scale - Product images and promotional materials - [Certificates](https://orshot.com/tools/certificate-generator), invoices, and documents - Any scenario requiring brand consistency AI-generated images are exciting and have their place, but when it comes to building a scalable, consistent visual presence for your business, [template-based image generation](https://orshot.com/solutions/image-generation-api) is the way to go Stop hoping AI will get it right. Start knowing your brand will look perfect every time With Orshot, you get the consistency of templates, the power of automation, and the flexibility to scale your visual content production without compromising on quality or brand identity ### How to get started? - Go to your [Orshot dashboard](https://orshot.com/workspace) - Pick any of the templates, or create one(or import from Canva/Figma) - Customize and get API for it - Generate consistent, branded images and PDFs from it [Try Orshot Free Today →](https://orshot.com/) --- ### [All-in-One APITemplate.io Alternative for Image, PDF & Video](https://orshot.com/blog/apitemplate-io-alternative) > Switch from APITemplate.io to Orshot: images, PDFs, and video on one plan, unlimited templates, and a visual editor. Start free with 100 credits a month APITemplate.io renders images and PDFs from templates. Orshot does that too — then adds video with full timeline view, removes template cap and replaces the HTML/Jinja2 workflow with a Canva-like visual editor your whole team can use. Same API model. Wider surface. Orshot also generates [PDFs](https://orshot.com/blog/best-pdf-generation-apis) and [Videos](https://orshot.com/solutions/video-generation-api) with same API call, all you need to do is change the format from `png` to `pdf` or `mp4`. 100 credits a month, no card needed. [Try Orshot free](https://orshot.com/pricing?via=blog-apitemplate-top) ![The APITemplate.io homepage — an API to auto-generate PDF documents and images from templates at scale](https://orshot.com/blog/apitemplate-io-alternative/apitemplate-homepage.webp) **TL;DR** — Pick by how you work: - **Images, PDFs & video in one plan**: Orshot — One plan and one editor for every format, with no template caps. - **SOC 2, QR codes, regional endpoints**: [APITemplate.io](#when-apitemplateio-wins) — SOC 2 Type II, native QR codes and regional endpoints, which Orshot lacks today. - **High-volume PDF Generation from Templates**: Orshot — Template PDFs at high volume, for less per render. --- ## Give Orshot's Editor a try (Live Demo) Orshot has a more modern visual editor which lets you design templates with granular controls. You can design carousels, add videos, parameterize every layer and even control them dynamically at the time of calling the API. [Orshot Studio Demo](https://orshot.com/templates/shared/k1d31i6i/embed?view=play) We also have [2,000+ and growing templates in our library](https://orshot.com/templates), one click copy and paste and ready to be edited. So you can quickly come up with visuals and not spend a gazillion hours deciding the right font. --- ## Side by side | | Orshot | APITemplate.io | | :-- | :-: | :-: | | Images & PDFs in one plan | Yes | No | | Video (MP4 / WebM / GIF) | Yes | No | | Unlimited templates, all tiers | Yes | No | | Visual editor for every format | Yes | No | | Canva / Figma import | Yes | No | | AI template generator | Yes | No | | AI agents / MCP | Yes | No | | Social publishing (15+) | Yes | No | | HTML / Jinja2 templates | No | Yes | | Native QR / barcode | No | Yes | | SOC 2 Type II audit | No | Yes | | Regional endpoints | No | Yes | | Free tier | 100 credits/mo, resets monthly | 50 renders/mo, 3 templates | | Starts at | $39/mo | $35/mo ($29 billed annually) | --- ## APITemplate.io Pricing in 2026 (and How Orshot Compares) Two things about their pricing page worth knowing before you compare. First, it sells **two separate ladders** — PDF-only plans and Image+PDF plans — so the $19 headline price only renders PDFs. Second, **the page defaults to annual billing**: the $29 Starter you see is the annual rate, and month-to-month is $35. Prices checked against apitemplate.io/pricing in August 2026: | APITemplate.io plan (Image + PDF) | Monthly | Annual | Closest Orshot plan | Orshot | Orshot video | | ---------------------------------------- | ------- | ------ | ---------------------- | --------- | ------------ | | Free · 50 renders/mo · 3 templates | \$0 | — | Free · 100 credits/mo | \$0 | ~30 secs | | Starter · 1,500 renders · 15 templates | \$35 | \$29 | Launch · 1,500 credits | **\$39** | ~25 mins | | Standard · 9,000 renders · 150 templates | \$89 | \$69 | Launch · 5,000 credits | \$99 | ~83 mins | | Enterprise · 20,000 renders · unlimited | \$179 | \$139 | Grow · 20,000 credits | **\$160** | ~333 mins | Read it honestly, both ways: - **At 9,000 renders they're cheaper.** Their \$89 Standard beats our \$99 for 5,000 — about a penny a render against two. If your volume sits there and images and PDFs are all you need, that's their row. - **At 20,000 we're cheaper** — \$160 against \$179 — and the gap keeps widening above that (\$280 for 40,000, \$349 for 75,000, up to 300,000 credits a month). - **The template caps are the real tax.** 15 templates on Starter, 150 on Standard; every Orshot plan, free included, is unlimited. If you're generating per-client or per-campaign designs, the cap arrives before the render quota does. - **Their PDF-only Basic is genuinely cheap** — \$24/month ($19 annual) for 3,000 PDFs. If PDFs are the entire job and HTML templates suit your team, it's a fair deal; our pitch is everything that plan leaves out. - **Video is the column they can't fill.** On Orshot 1 credit is 1 image, 1 PDF page or 1 second of video, so the same allowance renders MP4s — there's no APITemplate.io number to put next to it. **1,500 credits for $39 — images, PDFs and video in one bucket** — Run your own volume against it. 100 free credits a month, no card. [Start free](https://orshot.com/pricing?via=blog-apitemplate-pricing) --- ![What APITemplate.io users keep fixing: images and PDFs on two plans, 15 templates on Starter, no video generation, PDFs live in HTML and Jinja2, no visual editor for PDFs, and annual is the sticker price](https://orshot.com/blog/apitemplate-io-alternative/frictions.webp) ## Where Orshot pulls ahead - **Every format, one plan**: Images, PDFs, and video share a single render bucket. APITemplate.io splits images and PDFs into separate pricing tracks. - **Video, natively**: MP4, WebM, and GIF with per-layer animation, audio, and auto-subtitles — from the same templates. APITemplate.io has no video. - **Templates never capped**: Keep as many designs as you want, free tier included. APITemplate.io limits you to 3 on free, 15 on Starter. - **Design without code**: A drag-and-drop editor for every output, plus Canva clone and Figma import. APITemplate.io's PDF power lives in HTML and Jinja2. - **Embed design editor in your own app**: Orshot Embed lets you embed Orshot Studio in your own app with your own templates, in a white-labeled customizable package Video is the gap most people hit first and Orshot basically fills that gap and enables [variety of use cases](https://orshot.com/use-cases) in just one platform. Same template system, same API call, renders different visual types: [Orshot video generation](https://www.youtube.com/watch?v=RQPHJY3bkZk) ## Built for real documents APITemplate.io users mostly generate invoices, certificates, reports and tickets — and Orshot's PDF output is built for exactly that: - **Print-ready** — CMYK color, print-scale rendering, and per-side margins for anything headed to a printer. - **Accessible & searchable** — alt-text tags and a document title on every PDF, so reports pass accessibility checks. - **Clickable links** — real hyperlinks inside the PDF, not flattened text. - **Multi-page & page ranges** — render a 40-page report, or just pages 3–5, from one template. - **Lighter files** — automatic compression shrinks photo-heavy PDFs, with custom and Google fonts embedded. And when the output is a social visual rather than a document, Orshot also posts to 15+ platforms and tracks [impressions, engagement and follower growth](https://orshot.com/features/social-analytics) — none of which APITemplate.io offers. --- ## Automate the Documents, Not Just the Render APITemplate.io's biggest use cases — invoices, reports, certificates, tickets — are exactly the jobs where the render is the easy half. Something still has to notice the new order, pull the line items, and file the finished PDF somewhere. On their stack that's Zapier, Make or n8n; [Orshot Workflows](https://orshot.com/workflows) run that loop inside the same product as the template: - **Trigger** from Google Sheets, Airtable, Notion, Google Forms, HubSpot, Shopify, Drive or a plain webhook - **Render** one document or a whole batch - **Send** it to storage, your own endpoint, or an email - **Repeat** on a schedule, without you The one most APITemplate.io users would want first — invoices generated straight from Airtable records. Copy it into your workspace and turn it on: [Generate invoices from Airtable records automatically on Orshot](https://orshot.com/workflows/invoices-from-airtable/embed) A few more working presets in the same vein: [invoice PDFs from a form or sheet](https://orshot.com/workflows/invoice-generator), [certificates from Google Forms responses](https://orshot.com/workflows/certificates-from-google-forms), [event tickets from registrations](https://orshot.com/workflows/event-tickets), and [client report cards on a schedule](https://orshot.com/workflows/client-report-cards). --- ## Post to 15+ social accounts, then see what's working Not every render is a PDF — plenty are social graphics, and APITemplate.io stops at the file. Orshot takes it to the post and back, from the same API: - **Publish from the render call** — add a `publish` object to any render and Orshot posts the image to [15+ platforms](https://orshot.com/docs/publish/introduction): Instagram, LinkedIn, X, TikTok, Facebook, Pinterest, Threads and more. Post instantly, save a draft, or schedule it with a `status` field. - **Or let an agent do it** — with [Orshot for agents](https://orshot.com/agents), Claude, Cursor or ChatGPT can render _and_ post from a plain prompt. - **Then measure it** — [social analytics](https://orshot.com/features/social-analytics) tracks impressions, engagement, follower growth and best time to post for every connected account, with a daily digest email. ![Orshot's social analytics dashboard — impressions, engagement, posts published and follower growth across every connected account, with a cross-platform trend chart, share of impressions by platform, and a best-time-to-post heatmap](https://orshot.com/blog/introducing-social-analytics/analytics.webp) ```javascript await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_template_id", modifications: { headline: "New drop" }, response: { type: "url", format: "png" }, publish: { accounts: [1, 2, 3], // connected Instagram, LinkedIn, X content: "Just shipped →", }, }), }); ``` APITemplate.io has none of this — you'd add Buffer plus a separate analytics tool. Orshot does all three. --- ## When APITemplate.io wins Orshot isn't for everyone. Stay where you are if: - **You live in HTML/CSS.** High-volume HTML-to-PDF with a Jinja2-fluent team is its home turf. - **You need QR codes or barcodes.** Generated natively, inside the template. - **Compliance is non-negotiable.** SOC 2 Type II and regional endpoints matter in regulated industries. - **Renders-per-dollar is the only metric.** Skip images and video entirely and its volume tiers can run cheaper. --- ## Switch in three steps **1. Recreate the template once.** Drop your APITemplate.io HTML into the visual editor as a starting point, pull in a Canva or Figma file, or hand a screenshot to the AI generator. Then tag the fields that vary — name, price, photo — as parameters. Try it now — paste a public Canva share link and see it as an Orshot template: **2. POST your data, pick a format.** Every parameter you marked becomes a key you send at render time: ```javascript await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_template_id", modifications: { event: "DevConf 2026", attendee: "Maya Patel", seat: "Row C · Seat 14", }, response: { type: "url", format: "pdf" }, // try jpg, webp, mp4, or gif }), }); ``` The catch APITemplate.io users feel here: that one template backs the printable PDF ticket, the confirmation-email image, and the event's promo video — flip `format` and the same request returns each. No engineer free? The template also renders from a plain dynamic URL or a no-code automation step. **3. Point it at your stack.** Renders can land in your CMS, ride along on transactional emails, sync to your own Drive/S3 bucket, or post to your channels — pick the destination, the call doesn't change. --- ## Other APITemplate.io alternatives worth a look Orshot fits if you want images, PDFs and video on one plan with a visual editor. If your needs are narrower, these are the tools people also compare against APITemplate.io. ### Bannerbear ![The Bannerbear homepage — auto-generate social media visuals and ecommerce banners via API and integrations](https://orshot.com/blog/apitemplate-io-alternative/alt-bannerbear.webp) An established image and PDF generation API with a wide integration library (Zapier, Make, Airtable). Rock-solid for images and documents; video is basic, and the design lives in a fixed template editor rather than HTML. [Read the full Bannerbear breakdown →](https://orshot.com/blog/bannerbear-api-alternative) ### Placid ![The Placid homepage — a creative automation platform for images, PDFs and video from templates](https://orshot.com/blog/apitemplate-io-alternative/alt-placid.webp) Templates for images, PDFs and video, with a proper editor and a similar render-from-your-data model. Watch the credit math — large renders multiply and PDF pages cost double — but the visual editor is a step up from HTML and Jinja2. [Read the full Placid breakdown →](https://orshot.com/blog/placid-api-alternative) ### Templated.io ![The Templated.io homepage — automate images, videos and PDFs from dynamic templates with a drag-and-drop editor](https://orshot.com/blog/apitemplate-io-alternative/alt-templated.webp) A cheaper template-to-API tool with a drag-and-drop editor, Canva import, and image, video and PDF output. A good middle ground if APITemplate.io's HTML workflow is the thing you want to leave behind. [Read the full Templated breakdown →](https://orshot.com/blog/templated-io-alternative) ### DynaPictures ![The DynaPictures homepage — an image generation API that renders personalized visuals from a data source like Google Sheets](https://orshot.com/blog/apitemplate-io-alternative/alt-dynapictures.webp) An image-generation API built around data sources — point it at Google Sheets and it renders a personalized image per row. Strong for bulk marketing images; there's no video, and PDFs aren't its focus. [Read the full DynaPictures breakdown →](https://orshot.com/blog/dynapictures-api-alternative) Verified pricing and feature details for these and more are in our [best PDF generation APIs](https://orshot.com/blog/best-pdf-generation-apis) comparison. ## FAQ **Q: Is Orshot a drop-in replacement?** For most use cases, yes. Both follow the same render-with-your-data pattern, so you mainly swap the request shape — and you pick up video, uncapped templates, and a visual PDF editor in the process. The honest trade-offs: APITemplate.io ships more SDK languages and carries a SOC 2 Type II audit. **Q: How hard is the migration?** There's no one-click importer between the two, but it's rarely needed. The realistic path: rebuild your highest-volume template first, run it next to your APITemplate.io endpoint, compare outputs, then move traffic over once it matches. Most templates take minutes, not hours. **Q: Can Orshot generate PDFs from HTML or Markdown?** Yes. Orshot renders [PDFs](https://orshot.com/blog/best-pdf-generation-apis) from visual templates, and you can bring existing HTML in as a starting point or drive the content dynamically at render time. If you're on APITemplate.io specifically for its Markdown-to-PDF endpoint, Orshot covers the same document output — with a visual editor on top, and images and video sharing the same plan and the same render call. **Q: Does Orshot have an n8n node?** Yes. Orshot has a first-party [n8n node](https://orshot.com/docs/integrations/n8n), plus [Make](https://orshot.com/docs/integrations/make), [Zapier](https://orshot.com/docs/integrations/zapier) and Pipedream apps, so an existing APITemplate.io n8n workflow ports over by swapping the render step. Orshot also has [built-in Workflows](https://orshot.com/workflows) if you'd rather not run a separate automation tool at all. **Q: How does pricing compare?** Orshot is free for 100 credits a month with full feature access, then from $39/month for 1,500 credits across images, PDFs, and video (1 credit = 1 image or PDF page). APITemplate.io's Image + PDF Starter is $29/month annual ($35 monthly) for 1,500 renders and 15 templates. **Q: Does the same plan really cover video?** Yes. Images, PDFs, and video draw from one render allotment and one editor — no upgrade, no separate product. APITemplate.io doesn't generate video at all. **Q: How much does APITemplate.io cost in 2026?** Two ladders, and the pricing page defaults to annual billing. Image + PDF plans month-to-month: Starter $35 (1,500 renders, 15 templates), Standard $89 (9,000 renders, 150 templates), Enterprise $179 (20,000 renders, unlimited templates). PDF-only plans run $24 / $89 / $179 monthly for 3,000 / 12,000 / 25,000 PDFs. Annual billing takes roughly 20% off — that's where the advertised $19 and $29 figures come from. **Q: Does APITemplate.io have a free plan?** Yes — 50 images or PDFs per month, resetting monthly, with a 3-template cap. Orshot's free tier is 100 credits a month, with no template cap, and the visual editor, workflows and API access included. **Q: What does a render cost on each?** At entry, they're close: APITemplate.io Starter is about $0.023 per render month-to-month ($35/1,500) and Orshot Launch is $0.026 ($39/1,500). Their $89 Standard drops to roughly $0.01 per render, which beats our $99 tier — while at 20,000 renders Orshot is $0.008 ($160) against their $0.009 ($179). The bigger practical difference: an Orshot credit can also be 1 second of video, and templates are never capped. **Q: What do I give up by leaving APITemplate.io?** Three real things: native QR and barcode generation inside templates, a SOC 2 Type II audit, and regional data-residency endpoints. If any of those is a hard requirement, stay — the rest of this page doesn't outweigh a compliance mandate. Keep the render-from-an-endpoint workflow you already know. Drop the two-plan split, the template ceiling, and the hunt for a separate video tool. If you're weighing other tools in this space, the same verified-pricing treatment exists for [Templated](https://orshot.com/blog/templated-io-alternative), [Bannerbear](https://orshot.com/blog/bannerbear-api-alternative) and [Placid](https://orshot.com/blog/placid-api-alternative). 100 credits a month, every format, no card. [Try Orshot free](https://orshot.com/pricing?via=blog-apitemplate-footer) --- ### [Auto-generate Certificates from Google Sheets](https://orshot.com/blog/google-sheets-certificates-automation) > Automate Certificate PDF generation from your Google Sheets data and certificate template in Orshot using 3-step n8n workflow Almost all the institutes or corporates have some kind of workflow that involves generating PDFs. Be it for course completions, awards, participation or employee relaed certificates Manually creating certificates for course completions, training programs, or events can be time-consuming and error-prone. If you're coming from tools like [Certifier](https://orshot.com/blog/certifier-alternative) or [CraftMyPDF](https://orshot.com/blog/craftmypdf-api-alternative), this workflow gives you more flexibility and lower costs. With Orshot's image and PDF generation API, you can automatically generate personalized certificates directly from your Google Sheets data using [PDF generation API](https://orshot.com/solutions/pdf-generation-api) For example, this [certificate generator tool](https://orshot.com/tools/certificate-generator) built using Orshot's PDF Generation API lets you generate personalized certificates from a carousel template in seconds Let's get started with the workflow **Relevant** → [Automate Certificate Generation](https://orshot.com/use-cases/t/auto-generate-certificate-pdfs) ## What you'll need? - Google Sheet: Where your data is stored - [Orshot Account](https://orshot.com) (Free): To design or [use a Certificate template](https://orshot.com/templates/26-course-completion-certificate-template)(we'll use this one) and get an API for it which we'll use to connect with Google Sheets on n8n - [n8n Account](https://n8n.io) : To connect Google Sheets and Orshot to setup the automation ## What are we building? A **3-step workflow in n8n** which connects Google Sheets and Orshot to automatically generate Certificate PDFs from your data in Google Sheets It'll use your Google Sheets column data, pass it to Orshot where the certificate will be generate, and then send the generated certificate PDF back to your Google Sheets in a new column ## Need help? Setting up the automation could be complex, **feel free to use the chat button on bottom right** or [**send us an email**](mailto:hi@orshot.com) to ask for help and we'll help you setup the automation ## Method 1: No-Code Automation with n8n Create a new workflow on n8n in your account. We'll start by adding a Google Sheets node. Here are the steps you can follow to build the automation: ![Adding a Google Sheets node in an n8n workflow](https://orshot.com/blog/automate-sheets-certificate/1.webp) Click on "Create new credential" and connect your Google account where you have the Google Sheet: ![Creating a Google account credential in n8n](https://orshot.com/blog/automate-sheets-certificate/2.webp) ![Connecting a Google account credential in n8n](https://orshot.com/blog/automate-sheets-certificate/3.webp) For this example, we have a simple Google Sheet with two columns: one with Candidate Names which we will use in the certificates, and another with Certificate PDFs where the generated PDF will be stored: ![A Google Sheet with candidate names and details](https://orshot.com/blog/automate-sheets-certificate/4.webp) After connecting your Google account, select the Document and Sheet from the dropdown list. In "Trigger On", select when you want the automation to run: ![Selecting the document and sheet in the n8n Google Sheets node](https://orshot.com/blog/automate-sheets-certificate/6.webp) When you click on "Fetch Test Event", it'll display the list of rows in the right panel: ![Fetched Google Sheet rows shown in the n8n panel](https://orshot.com/blog/automate-sheets-certificate/7.webp) Now we have the first step set up, which will trigger the event whenever a new row is added/updated based on your trigger event. Now we'll move on to the second step where we'll set up the certificate PDF generation using Orshot. To do that, click on the "+" icon to add a new node, search for "Orshot" in the nodes, and add it: ![Setting up certificate PDF generation in n8n](https://orshot.com/blog/automate-sheets-certificate/8.webp) ![Adding the Orshot node for PDF generation in n8n](https://orshot.com/blog/automate-sheets-certificate/9.webp) In the Orshot node, click on "Create new credential" to give n8n access to your Orshot account. To do that, go to your Orshot dashboard > Settings > API Keys and copy your API key: ![Creating an Orshot credential in the n8n Orshot node](https://orshot.com/blog/automate-sheets-certificate/10.webp) ![Connecting the Orshot account credential in n8n](https://orshot.com/blog/automate-sheets-certificate/11.webp) Now paste the Orshot API key in the Orshot n8n node in the "Token" field and save the changes: ![Pasting the Orshot API key into the n8n Orshot node](https://orshot.com/blog/automate-sheets-certificate/14.webp) We'll also customize the certificate template in Orshot. To do that, go to Templates > Library page, search for "Certificate" and select the template you like. Click on "Open in Studio" and customize the design as you prefer. You can also create a new template from scratch if you want. Make sure to parameterize the elements you want to dynamically update—in this case, the candidate name. Select the layer with the name, enable the "Parameterize" toggle for it, and give it a key as shown in the screenshot: ![Creating and parameterizing a certificate template in Orshot](https://orshot.com/blog/automate-sheets-certificate/12.webp) ![Parameterizing the certificate template fields in Orshot](https://orshot.com/blog/automate-sheets-certificate/13.webp) In the Orshot node, select the "Operation" as "generate from studio template", and in the "Template ID" dropdown, select the newly created Certificate template from your Orshot account: ![Selecting 'generate from studio template' in the Orshot n8n node](https://orshot.com/blog/automate-sheets-certificate/15.webp) Now we'll map the data for the candidate name from Google Sheets. To do that, under the "Modifications" section, add a modification and you'll see the parameter ID for the candidate name that we set in the Orshot template. In this case, we set it to "candidateName". Add it, and in the value field, drag and drop the "Candidate Name" column from Google Sheets: ![Mapping the candidateName parameter in the Orshot n8n node](https://orshot.com/blog/automate-sheets-certificate/16.webp) As soon as you click on "Execute Step", it'll trigger the event and generate a PDF for one of the rows. You can view the generated certificate by opening the URL in the "content" field in the right panel: ![Executing the step to generate a certificate PDF in n8n](https://orshot.com/blog/automate-sheets-certificate/17.webp) ![The generated certificate PDF result in n8n](https://orshot.com/blog/automate-sheets-certificate/18.webp) ![The certificate PDF output URL in n8n](https://orshot.com/blog/automate-sheets-certificate/20.webp) In the last step, we'll add another node that updates the same Google Sheet with the link to the generated PDFs in the "Certificate PDFs" column. Add another "Google Sheets" node and configure the settings as shown in the screenshot below. We're selecting the same file, and based on matching candidate names, we're asking the node to update the "Certificate PDF" column with the PDF URL from Orshot: ![Adding a second Google Sheets node to write results back in n8n](https://orshot.com/blog/automate-sheets-certificate/19.webp) Once saved, make sure to click the "Active" toggle at the top of your workflow. Setting it to active ensures it's ready to listen to row add/update events in your Google Sheets: ![Activating the n8n workflow with the Active toggle](https://orshot.com/blog/automate-sheets-certificate/21.webp) Now whenever you add or update a row in your Google Sheet, it'll instantly add or update the "Certificate PDF" column with the certificate for that candidate, automatically! You can open the URLs to preview the PDF: ![Opening the generated certificate PDF URLs](https://orshot.com/blog/automate-sheets-certificate/22.webp) ![Previewing a generated certificate PDF](https://orshot.com/blog/automate-sheets-certificate/23.webp) That's it! Your automation is now complete and ready to generate certificates automatically from your Google Sheets data. [Download n8n JSON file for the workflow](https://orshot.com/blog/automate-sheets-certificate/automate-certificate-sheets-orshot.json) If you'd rather not run n8n at all, this automation is built into Orshot as a ready-made workflow that reads your Google Sheet, generates a certificate PDF for each row, and saves it to Google Drive. One click on **Use this workflow** adds it to your workspace. [Generate certificates from a Google Sheet workflow on Orshot](https://orshot.com/workflows/certificate-generator/embed) ## Method 2: Programmatic Generation with JSON Data For developers who prefer a code-first approach, you can generate certificates programmatically using Orshot's [API for PDF Generation](https://orshot.com/solutions/pdf-generation-api) from templates with JSON data containing candidate information. You can [design a custom template for your certficate](https://orshot.com/studio) and get a Rest API for it, which you can use programmatically ### Using the REST API ```javascript const generateCertificate = async (candidateData) => { const response = await fetch("https://api.orshot.com/api/studio/render", { method: "POST", headers: { Authorization: "Bearer ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "26", // Copy Template ID from Template Page in your Orshot account modifications: { candidateName: candidateData.name, logo: "https://acme.com/public/logo.png", }, responseFormat: "pdf", responseType: "url", }), }); const result = await response.json(); }; // Example usage with JSON data const candidates = [ { name: "John Doe" }, { name: "Jane Smith" }, { name: "Mike Johnson" }, ]; // Generate certificates for all candidates candidates.forEach(async (candidate) => { const certificateUrl = await generateCertificate(candidate); console.log(`Certificate generated for ${candidate.name}: ${certificateUrl}`); }); ``` ## Conclusion If you're generating certificates manually, this workflow will save you a lot of time auomating the process This not only works with n8n, you can replicate the same workflow in any of automation platforms like Make, Pipedream, Zapier as all of them support both Google Sheets and [Orshot integrations](https://orshot.com/integrations) --- ### [Auto-generate eCommerce Product Marketing Images](https://orshot.com/blog/automate-ecommerce-product-images) > Learn how to automate product marketing images generation using n8n and Orshot - from data source to beautiful branded marketing images in minutes Creating consistent, professional marketing visuals for your eCommerce products can be time-consuming and expensive. In this tutorial, we'll show you how to automate the entire process using n8n workflow automation and [Orshot's image generation API](https://orshot.com/solutions/image-generation-api) **Relevant** → [Auto-generate eCommerce Banners](https://orshot.com/use-cases/t/auto-generate-e-commerce-images) ## We Will Use: - [n8n](https://n8n.io) for the workflow setup - Google Sheets for data source - [Orshot](https://orshot.com/) for image generation from custom templates, you'll need to signup for an API key(free) **Note that** n8n and Google Sheets are just for this tutorial, in real workflow you can pull data from your database and directly send it to Orshot's API for marketing image generation, and then save that image or continue workflow however you want ## What You'll Build By the end of this tutorial, you'll have an automated workflow that: - Pulls product data from any source (Google Sheets, database, API) - Generates professional marketing visuals using [Orshot templates](https://orshot.com/templates) - Saves the generated images to your preferred storage (Google Sheets, Drive, S3, etc.) - [Download n8n JSON file for the workflow](https://orshot.com/blog/automate-ecommerce-visuals/n8n-config.json) for quick setup ## Video Walkthrough Here's a video walkthrough of the n8n workflow setup [Watch the video](https://www.youtube.com/watch?v=S5qNb4mmUdc) ## Step 1: Setting Up Your Data Source The first step is configuring your data source. For this demo, we're using Google Sheets with product information, but this could be any data source like: - Shopify product database - WooCommerce API - Airtable - Custom database - CSV files ![The n8n workflow steps for automating e-commerce product images](https://orshot.com/blog/automate-ecommerce-visuals/n8n-workflow-steps.webp) ### Google Sheets Trigger Configuration In your n8n workflow, add a **Google Sheets Trigger** node with the following settings: - **Credential**: Connect your Google Sheets account - **Document**: Select your eCommerce product database - **Sheet**: Choose the sheet containing product data - **Trigger On**: Row Added or Updated - **Poll Times**: Set to monitor changes (e.g., Every Minute) ![n8n workflow step 1: polling a data source for changes](https://orshot.com/blog/automate-ecommerce-visuals/workflow-step-1.webp) Your Google Sheets should contain columns like: - Product Type - Product Name - Before Price - Discount Price - Currency - Product Image URL ## Step 2: Generate Images with Orshot This is where the magic happens. The Orshot node takes your product data and generates beautiful marketing visuals using pre-designed template For this tutorial, we'll be using below [template in Orshot](https://orshot.com/templates/60). You can also start with design tools like Figma, Canva, or [explore free design alternatives](https://orshot.com/blog/free-canva-alternatives), then import them into Orshot for automation. The image, text for before price, discounted price and product type are parameterized so we can pass dynamic data to those elements ![A parameterized product image template in Orshot](https://orshot.com/blog/automate-ecommerce-visuals/orshot-product-template.webp) ### Orshot Node Configuration Add the **Orshot** node to your workflow and configure: - **Credential**: Connect your Orshot account - **Operation**: Generate Image From an Orshot Studio Template - **Template**: Select "eCommerce Discount Banner Template" (or your custom template) - **Response Type**: URL - **Response Format**: PNG ![n8n workflow step 2: generating the product image with Orshot](https://orshot.com/blog/automate-ecommerce-visuals/workflow-step-2.webp) ### Data Mapping Map your Google Sheets data to the Orshot template parameters: ```javascript // Product Type mapping { "productType": "{{ $json['Product_Type'] }}" } // Before Price mapping { "beforePrice": "{{ $json['Before_Price'] }}" } // Additional mappings for discount price, currency, product image, etc. ``` The template will automatically generate a professional marketing visual with your product information, pricing, and branding. ## Step 3: Save Generated Images After Orshot generates your marketing visual, you need to store it somewhere accessible. For this tutorial, we're saving back to Google Sheets, but you have many options: ### Google Sheets Storage (Demo) - **Node**: Append or update row in Google Sheets - **Operation**: Append or Update Row - **Document**: Same eCommerce database - **Values to Send**: Include the generated image URL ### Alternative Storage Options for Production: **Google Drive** - Automatically organize images in folders by product category - Easy sharing and collaboration **Amazon S3 / Cloudflare R2** - Scalable cloud storage - Perfect for high-volume eCommerce stores - Cost-effective for large image libraries **Direct Upload to Shopify/WooCommerce** - Automatically add generated images to product listings - Streamline your product management workflow If you'd rather not build the n8n workflow yourself, Orshot ships this exact automation as a ready-made workflow: Google Sheets in, rendered product images out, posted to Instagram on a schedule. One click adds it to your workspace with every step already wired up [Product marketing images workflow on Orshot](https://orshot.com/workflows/product-marketing-images/embed) ## Using Orshot REST API Directly If you prefer to integrate Orshot directly into your application, you can use our REST API as show below. You can also [generate dynamic images via dynamic URLs](https://orshot.com/blog/programmatic-seo-tools) without any programmatic involvement ```javascript await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer ", }, body: JSON.stringify({ templateId: "", modifications: { canvasBackgroundColor: "#FFFFFF", productType: "Body Lotions", beforePrice: "109.99", discountPrice: "101.99", currency: "$", productImageUrl: "https://images.unsplash.com/photo-15...", }, response: { type: "url", format: "png", scale: 1, }, }), }); ``` This approach gives you maximum flexibility and can be integrated into any application or custom workflow ## Benefits of This Automation - **Time Savings**: Generate hundreds of marketing visuals in minutes instead of hours - **Consistency**: Maintain brand consistency across all product marketing - **Scalability**: Easily handle large product catalogs - **Cost-Effective**: Reduce design costs and resource requirements - **Real-time Updates**: Automatically generate new visuals when products or prices change ## Use Cases Beyond eCommerce This automation pattern works for many scenarios: - Social media content generation — use [Social Publish](https://orshot.com/docs/publish/introduction) to auto-post generated product images to Instagram, Pinterest, TikTok, and 10+ platforms - Email marketing campaigns - Product catalog updates - Seasonal promotions AI combined with automation is a powerful combination. Specially in marketing where a lot of work can be mannual, apps like Orshot with AI and automation features can help you reduce your team's efforts, scale production speed and quality **Related →** [10 Best Tools to Automate Content Creation](https://orshot.com/blog/automated-content-creation-tools) | [Best Social Media Automation Tools](https://orshot.com/blog/social-media-automation-tools) --- ### [Auto-Generate Images and PDFs from Tally.so Form Responses](https://orshot.com/blog/tally-form-image-pdf-generation) > Learn how to automatically generate images and PDFs—like certificates, invoices, or tickets—from Tally form responses using webhooks Tally is one of the simplest and most elegant form builders available. While it's great for collecting data, sometimes you need to give something back to your users immediately after they submit—like a personalized [certificate](https://orshot.com/tools/certificate-generator), a PDF invoice, a ticket, or a social sharing card. With [Orshot](https://orshot.com/) [webhooks](https://orshot.com/templates/g/certificate), you can connect your [Tally.so](https://tally.so "target=_blank") form directly to a design template and generate these assets automatically. No code required. In this tutorial, we'll demonstrate this by building an **automated event badge generator**, but the same principles apply whether you're generating invoices, certificates, or social media graphics. ## What We're Building We'll set up a workflow where: 1. Someone fills out a Tally registration form 2. Tally sends the form data to Orshot via webhook 3. Orshot uses an Event Badge template to generate a personalized image or PDF 4. You receive a link to the generated asset instantly The whole setup takes about 10 minutes. ## What You'll Need - An [Orshot account](https://orshot.com/pricing) (free tier works) - A [Tally](https://tally.so) form ## Step 1: Design Your Template First, decide what you want to generate. In [Orshot Studio](https://orshot.com/studio), you can: - Start from scratch - Use an existing template from our [library](https://orshot.com/templates/g/certificate) - Import a design from Figma Since we're building a badge generator for this example, let's look at a simple event badge design containing: - Attendee name - Attendee photo In Orshot Studio, make these elements dynamic by adding parameter IDs: - `attendeeName` for the name text - `attendeePhotoUrl` for the attendee photo Save your template. For this tutorial, we'll be using below template. [Open the embed](https://orshot.com/templates/shared/qw44wijl/embed?view=view) ## Step 2: Create a Webhook ![Setting up a template webhook in Orshot](https://orshot.com/blog/tally-image-pdf-responses/template-webhook.webp) Go to your **Template's Playground** and click the **Webhook** tab. Click **Add New** to create a webhook. Configure it: | Setting | Value | | ------------------- | ----------------------------------------- | | **Name** | Tally Registration | | **Response Format** | PNG (or PDF if you want printable badges) | | **Response Type** | URL (easiest to work with) | | **Max Renders** | Leave empty for unlimited, or set a limit | Copy the **Webhook URL**. It looks like: ``` https://api.orshot.com/v1/studio/webhook/wh_abc123xyz ``` Keep this tab open—we'll come back to map the fields. ## Step 3: Set Up Your Tally Form Create your registration form in Tally with fields that match your badge: - Attendee Name (short text) - Attendee Photo (file upload) ![A Tally form with attendee fields](https://orshot.com/blog/tally-image-pdf-responses/tally-form.webp) Once your form is ready, go to **Integrations** → **Webhooks**. Paste your Orshot webhook URL and save. ![Adding the Orshot webhook URL to a Tally form](https://orshot.com/blog/tally-image-pdf-responses/tally-form-webhook.webp) ![Saving the webhook integration in Tally](https://orshot.com/blog/tally-image-pdf-responses/tally-form-webhook-1.webp) ## Step 4: Map Form Fields to Template ![Mapping Tally form fields to template parameters](https://orshot.com/blog/tally-image-pdf-responses/template-webhook-mapping.webp) Here's where the magic happens. Submit a test response to your Tally form. This sends sample data to Orshot, which automatically detects the available fields. Go back to your webhook settings in Orshot. You'll now see the **Field Mappings** section populated with your Tally form fields. Map each field: | Tally Field | Template Parameter | | ---------------- | ------------------ | | `Name` | `attendeeName` | | `Attendee Photo` | `attendeePhotoUrl` | Save the mappings. ## Step 5: Test It Submit another response to your Tally form. Check the webhook response—you should get back a generated badge URL: ```json { "data": { "content": "https://storage.orshot.com/cloud/.../badge.png", "type": "url", "format": "png", "responseTime": "1234.56ms" } } ``` Open that URL. Your personalized badge is ready. ## Step 6: Automatically Save to Dropbox, Google Drive or S3-Storage (Optional) Want to keep a permanent archive of every generated badge? You can automatically upload them to your own storage bucket or drive. Go to the [Integrations](https://orshot.com/integrations) page in Orshot to connect your **Dropbox**, **Google Drive**, or **Amazon S3** account. You can specify a folder path, and Orshot will silently upload every generated PDF or image to your connected account. ## Taking It Further ### Send badges via email Use Tally's email notifications or connect to Zapier/Make to automatically email the badge URL to attendees after submission. ### Generate PDF badges for printing Change the webhook response format to PDF. You'll get a print-ready badge that attendees can download. ### Post to social media Use [Social Publish](https://orshot.com/docs/publish/introduction) to automatically share generated badges or certificates to LinkedIn, Twitter/X, Instagram, and 10+ other platforms — great for attendee social proof and event promotion. ### Add QR codes Include a QR code element in your badge template. Pass a unique ID or URL through the form to generate scannable badges for check-in. ### Multi-page badges If your badge has a front and back, use a carousel template in Orshot. The webhook will return URLs for both pages. ## Troubleshooting **Webhook not triggering?** Make sure the webhook is enabled in Orshot and the URL is correct in Tally. **Fields not detected?** Submit a test response first. Orshot needs at least one payload to detect available fields. **Wrong data mapping?** Check the Field Mappings section. You can clear and re-detect fields if needed. ## Wrap Up That's it—automatic image or [PDF generation](https://orshot.com/solutions/pdf-generation-api) from Tally forms in about 10 minutes. No code, no complex automation tools. Just connect your form to Orshot and let webhooks handle the rest. This same approach works for certificates, tickets, name cards, social cards, or any personalized image you need to generate from form responses. Questions? Hit the chat button or email us at hi@orshot.com. --- ### [Auto-Generate Instagram Carousels & Reels from Google Sheets](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets) > Turn Google Sheet rows into branded Instagram carousels — images, animated reels, and one combined video — auto-posted. No-code, 2 Make modules, free template. **TL;DR:** Most carousel "automation" guides stop at static PNGs glued together from four or five tools — and the AI-image ones can't even render your headline without typos. This one goes end-to-end with two tools: a Google Sheet holds your content calendar, Make watches for new rows, and **one Orshot API call** renders all four branded slides, optional animated reels, or one combined video — and publishes the carousel straight to Instagram. No design tool, no Cloudinary, no separate scheduler. **Grab the working files:** - **[🎨 Open the carousel template](https://orshot.com/templates/shared/muzkxu0y/preview?view=play "target=_blank")** — the exact 4-page animated template used below; preview it, play with the parameters, and use it in your workspace - **[📋 Copy the Google Sheet template](https://docs.google.com/spreadsheets/d/1pPkRAaL9csCZfLBSLuN7eH0aZxrThr1MZEWb3n16SRA/copy "target=_blank nofollow")** — the exact content calendar used below - **[📥 Download the Make blueprint (JSON)](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/make-blueprint-sheet-to-instagram-carousel.json "target=_blank")** — import, paste your API key, done - **[⚡ Use the Make template](https://www.make.com/en/integration/19851-post-instagram-carousels-from-new-google-sheets-rows-with-orshot?templatePublicId=19851 "target=_blank")**: the same flow as a one-click Make template, with a setup wizard - **[📥 Download the n8n workflow (JSON)](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/n8n-sheet-to-instagram-carousel.json "target=_blank")** — same flow in two n8n nodes ## What we're building Picture a creator who posts a weekly "notes to my younger self" carousel — a hook cover, three pinned-note slides, a follow CTA. The content changes every week; the design never does. That's the exact situation where you should stop opening a design tool. Instead, the words live in a Google Sheet — one row per carousel. When a new row appears, Make sends it to Orshot, which drops each cell into a designed multi-page template, renders all four slides, and posts them to Instagram as a carousel with the caption from the same row: ![Pipeline: Google Sheet row → Make scenario → Orshot renders 4 slides → published to Instagram as a carousel](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/pipeline-diagram.png) The same row can also come out as **four animated reels** or **one combined video of all slides** — we'll cover all three output modes below, from the same template and the same API call. ## The output: one Sheet row, four branded slides Here's the real rendered output from row 2 of the demo sheet — a 4-page carousel, 1080×1350, with the photos, handwriting, and pinned-note design fully intact (no AI-generated text glitches, because nothing here is AI-imaged — it's a designed template): ![Carousel slide 1: hook cover with handwritten headline 'Notes to my younger self'](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/slide-1-cover.webp) ![Carousel slide 2: pinned note card reading 'You were never behind. You were becoming.'](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/slide-2-note.webp) ![Carousel slide 3: pinned note card reading 'Rest is not a reward you have to earn.'](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/slide-3-note.webp) ![Carousel slide 4: closing note with follow CTA](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/slide-4-cta.webp) And because the template has layer animations built in, the **same render request with `format: "mp4"`** returns each slide as a short animated reel. ## Why a render API beats AI image generators (and Canva) If you've searched for "create instagram carousel automatically", you've seen the other approaches. Here's the honest comparison: | | Orshot (this guide) | AI image workflows | Canva Bulk Create | Schedulers (Buffer etc.) | | :-- | :-: | :-: | :-: | :-: | | Designed, on-brand slides | Yes | Inconsistent — AI re-imagines your brand every run | Limited to static layouts | No | | Accurate text on slides | Yes | Typos on long headlines (a known AI-image failure) | Yes | n/a — you bring finished images | | Multi-slide carousels from a spreadsheet | Yes | Yes | Manual CSV upload each time | No | | Animated reels from the same template | Yes | No | No | No | | One combined video of all slides | Yes | No | No | No | | Auto-publish to Instagram | Yes | Needs Meta Graph API setup + image host | No | Yes | | Tools required | 2 (Sheets + Make) | 4–6 (LLM, image AI, host, scheduler…) | 2–3 | 2–3 | The structural difference: AI-image workflows _generate_ every slide from scratch (so brand and text drift), and schedulers only _post_ what you've already designed. A template render sits in the middle — pixel-exact design, dynamic content, and [native publishing](https://orshot.com/docs/publish/publish-from-api) from the same call. ## What you'll need - A Google account (for the Sheet) and a free [Make](https://www.make.com "target=_blank nofollow") account — the whole flow fits in Make's free tier - An [Orshot account](https://orshot.com/pricing "target=_blank") with an API key — the free tier's 100 credits a month are plenty to build and test this end to end - An Instagram account connected to Orshot (Workspace → **Social Accounts**) for the publishing step ## Step 1 — The carousel template (design once, reuse forever) Everything starts with a multi-page template in [Orshot Studio](https://orshot.com/features/orshot-studio). Ours is a 4-page, 1080×1350 "pinned notes" design — full-bleed photos, handwritten type, a note card pinned with a pearl tack: ![The 4-page carousel template open in Orshot Studio, with the layers panel and animation timeline](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/02-studio-template-editor.webp) The pages panel shows the whole carousel — cover, two note slides, and the CTA page: ![Pages panel in Orshot Studio listing all four carousel pages](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/08-studio-pages-panel.webp) Two things make a template automation-ready: **1. Dynamic parameters.** Any layer can be marked parameterizable with a clean ID — `note_text`, `bg_image`, `subtitle`. For multi-page templates, the API addresses them with a page prefix: `page1@hook_line1`, `page2@note_text`, `page4@bg_image`. The fixed stuff (your handle, the design, the decorations) never appears in the spreadsheet at all — defaults fill anything you don't send. **2. Layer animations.** Every layer in this template has an entrance — the arrows drop in, the note card springs up, the pin presses in, sparks pop last. Configure it once in the **Animate** tab and it's what makes the same template render as video: ![The Animate tab in Orshot Studio showing Show At timing, Slide In Up enter animation and easing controls](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/07-studio-animate-tab.webp) You don't have to design this yourself: **[open the exact template from this tutorial](https://orshot.com/templates/shared/muzkxu0y/preview?view=play "target=_blank")** — animations, parameters and all — try the parameters live, and use it in your own workspace. Or start from one of the 2,000+ designs in the [template library](https://orshot.com/templates), or [import an existing design](https://orshot.com/docs/importing-templates) and add parameters to it. ## Step 2 — Set up the Google Sheet content calendar The Sheet is the entire editorial workflow: one row = one carousel. Our demo calendar has 14 columns — the words for each slide, a photo URL per page, and the Instagram caption: ![Google Sheet content calendar with one carousel per row: hook, notes, subtitles, image URLs and caption columns](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/01-google-sheet-calendar.png) | Columns | What they fill | | ------------------------------------------------------------------------------- | --------------------------------------------------------------- | | `hook_line1`, `hook_circled`, `strip_text`, `cover_image` | The cover slide (the circled word gets the hand-drawn scribble) | | `note1`–`note3`, `note1_subtitle`–`note3_subtitle`, `note1_image`–`note3_image` | One pinned-note slide each | | `caption` | The Instagram caption for the whole post | **[Copy this exact Sheet](https://docs.google.com/spreadsheets/d/1pPkRAaL9csCZfLBSLuN7eH0aZxrThr1MZEWb3n16SRA/copy "target=_blank nofollow")** — it comes pre-filled with three demo rows so you can test before writing your own content. Batch-write a month of rows on a Sunday and the rest of this pipeline turns them into posts. ## Step 3 — Grab your Orshot API key In your Orshot workspace, go to **Workspace → API Keys** and create a key. You'll paste it into exactly one place in Make (the `Authorization` header). Treat it like a password — anyone with it can render on your account. ## Step 4 — Build the Make scenario (just 2 modules) This is the part other guides turn into a six-module maze. It's two: ![The complete Make scenario: Google Sheets Watch New Rows connected to an HTTP module posting to the Orshot render API](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/06-make-scenario-canvas.webp) The fastest path is to **[import the blueprint](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/make-blueprint-sheet-to-instagram-carousel.json "target=_blank")** (Make → scenario menu → _Import blueprint_), connect your Google account, point the trigger at your copy of the Sheet, and paste your API key. If you'd rather build it by hand: **Module 1 — Google Sheets → Watch New Rows.** Pick your spreadsheet and `Sheet1`, keep _Table contains headers_ on, and set the limit to 1. When Make asks where to start, choose _All_ so your existing demo rows count as new on the first run: ![Make Google Sheets trigger configuration with the carousel calendar spreadsheet selected](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/03-make-sheets-trigger-config.webp) **Module 2 — HTTP → Make a request.** This is the single call that does everything. Method `POST`, URL `https://api.orshot.com/v1/studio/render`, two headers: ![Make HTTP module with the Orshot render endpoint, POST method, and Content-Type plus Authorization headers](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/04-make-http-config.webp) Then set _Body content type_ to `application/json`, _Body input method_ to **JSON string**, and paste the request body — mapping each field to its Sheet column (type the `{{ }}` tokens or click the green pills from the mapping panel): ![Make HTTP module JSON body with Sheet columns mapped into the Orshot modifications object as green pills](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/05-make-http-body.webp) ```json { "templateId": 12372, "modifications": { "page1@hook_line1": "{{hook_line1}}", "page1@hook_circled": "{{hook_circled}}", "page1@strip_text": "{{strip_text}}", "page1@bg_image": "{{cover_image}}", "page2@note_text": "{{note1}}", "page2@subtitle": "{{note1_subtitle}}", "page2@bg_image": "{{note1_image}}", "page3@note_text": "{{note2}}", "page3@subtitle": "{{note2_subtitle}}", "page3@bg_image": "{{note2_image}}", "page4@note_text": "{{note3}}", "page4@subtitle": "{{note3_subtitle}}", "page4@bg_image": "{{note3_image}}" }, "response": { "type": "url", "format": "png" }, "publish": { "accounts": [0], "content": "{{caption}}" } } ``` Two values to make your own: `templateId` — `12372` is our demo template, and yours is shown in the studio URL and at the top of its playground — and the `0` in `publish.accounts`, which you'll swap for your Instagram account ID in Step 6 (until then, `0` safely renders without posting anything). That's the whole automation. No image-hosting module, no iterator, no array aggregator — the things that derail most Make carousel attempts simply aren't needed, because Orshot treats the multi-page render _and_ the carousel upload as one operation. ## Step 5 — One API call, three output modes The `response.format` field decides what comes back. Same template, same modifications — three different deliverables. ### Static carousel images (PNG) With `"format": "png"`, a multi-page template returns one image per page: ```json { "data": [ { "page": 1, "pageId": "page-1", "content": "https://storage.orshot.com/.../slide1.png" }, { "page": 2, "pageId": "page-2", "content": "https://storage.orshot.com/.../slide2.png" }, { "page": 3, "pageId": "page-3", "content": "https://storage.orshot.com/.../slide3.png" }, { "page": 4, "pageId": "page-4", "content": "https://storage.orshot.com/.../slide4.png" } ], "format": "png", "totalPages": 4 } ``` These are the four slides you saw at the top of this post. ### Render each carousel page as an animated reel (MP4) Switch to `"format": "mp4"` and every page renders as its own video, with the template's layer animations playing out frame-perfectly — the cover runs 3.3 seconds, the note slides about 2.5 each: ```json { "data": [ { "page": 1, "content": "https://storage.orshot.com/.../page1.mp4", "videoDuration": 3.3 }, { "page": 2, "content": "https://storage.orshot.com/.../page2.mp4", "videoDuration": 2.5 } ], "format": "mp4", "totalVideoDuration": 11.25 } ``` Use these as standalone reels, Stories, or video slides inside a mixed carousel (Instagram allows mixing photos and videos in one carousel post). ### Combine all slides into one Instagram video This is the one no other carousel workflow offers: add [`videoOptions.combinePages`](/docs/video-generation/video-options) and the API stitches every page into **a single video**, with an optional transition between pages: ```json { "templateId": 12372, "modifications": { "...same as above..." }, "response": { "type": "url", "format": "mp4" }, "videoOptions": { "combinePages": true, "pageTransition": "fade", "pageTransitionDuration": 0.4 } } ``` Unlike the per-page render, the response comes back with a **single video URL** instead of an array: ```json { "data": { "content": "https://storage.orshot.com/.../combined.mp4", "type": "url", "format": "mp4", "videoDuration": 10.05 } } ``` **[▶ Watch the real combined render (10s MP4)](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/carousel-combined.mp4 "target=_blank")** — all four slides in one video: each page plays its animations, then fades to the next. That's a ready-to-post reel summarizing the whole carousel, from the same Sheet row. Transitions include `fade`, `slideleft`, `circleopen`, `dissolve` and more — or omit it for hard cuts. (`combinePages` works for `mp4` and `webm`; GIFs always come back per-page.) You can try all three modes without touching Make: the template's [Template Form](https://orshot.com/docs/orshot-studio/template-forms) lets you fire test renders from the browser: ![The Orshot API playground for the carousel template showing all dynamic parameters and a live preview](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/10-orshot-playground.webp) ## Step 6 — Auto-publish to Instagram as a carousel Here's the part every render-API competitor leaves you to figure out alone: getting slides _posted_. With Orshot, the `publish` object inside the render request handles it — for multi-page templates, **all pages are automatically uploaded and posted as a carousel**. No extra calls, no Graph API setup, no image host. First connect Instagram under **Social Accounts** and copy the numeric account ID: ![Orshot Social Accounts page with connected Instagram, LinkedIn, X and Pinterest accounts, each with a Copy ID button](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/09-orshot-social-accounts.webp) Then the `publish` block from Step 4 does the rest: ```json "publish": { "accounts": [19], "content": "Three notes I'm keeping pinned this week 📌 Save the one you need." } ``` The response tells you exactly what happened per account — `published`, `scheduled`, or `failed` — and you can pass `schedule.scheduledFor` to queue the post for a specific time instead of publishing immediately. The same block works for LinkedIn, X, Pinterest and the rest of the [supported platforms](https://orshot.com/docs/publish/publish-from-api); video formats publish as reels. > **Test safely:** while you're experimenting, leave `publish` out entirely (you'll get render URLs back, nothing is posted) — or keep `accounts: [0]`, which fails harmlessly. Add your real account ID only when the renders look right. ## Make it run on its own Flip the scenario's scheduling toggle on and Make checks the Sheet on an interval (every 15 minutes on the free plan). From then on the workflow is: write a row → carousel appears on Instagram. Your "posting tool" is a spreadsheet. Writing rows is also automatable — anything that can add a Google Sheets row can now post carousels: a form tool, an automation from your CMS, or an LLM that drafts next week's notes straight into the sheet. Prefer to skip Make entirely? This same Sheet-to-carousel pipeline ships as a ready-made workflow inside Orshot. Click **Use this workflow** and it shows up in your workspace with the trigger, render, and publish steps prewired, waiting to be pointed at your sheet. [Turn spreadsheet rows into Instagram carousels workflow on Orshot](https://orshot.com/workflows/instagram-carousels-from-sheet/embed) ## Bulk-create a month of carousels Because the trigger processes rows in order, batching is just… pasting rows. Drop in 30 rows, set the limit to 1 per cycle, and the scenario drips one carousel per run; or temporarily raise the limit and schedule posts at specific times with `schedule.scheduledFor` per row (add a `post_at` column and map it). For one-off bulk runs without Make at all, the same render endpoint accepts the rows from any script — see [bulk image generation](https://orshot.com/blog/canva-bulk-create-alternative) for the spreadsheet-only version of this pattern. ## What it costs Honest math: Make's free tier (1,000 operations/month) is far more than this needs — a daily carousel uses ~60 operations a month. On the Orshot side, each rendered page costs 1 credit, and the [free tier's 100 credits a month](https://orshot.com/pricing) are enough to build, test, and post your first week of carousels before paying anything. No other tools, hosts, or per-seat design licenses are involved — that's the point. ## What this can't do (yet) - **Instant triggers.** Google Sheets polling means minutes, not seconds, between row and post. For real-time, swap the trigger for a webhook. - **Per-slide captions or alt text.** The caption applies to the whole carousel post, not individual slides. - **Design changes from the Sheet.** The spreadsheet changes _content_, not layout. New look = edit the template (once). - **Engagement.** This posts; it doesn't reply to comments or analyze performance. Pair it with your analytics tool of choice. ## Prefer n8n? Same flow, two nodes If your automations live in n8n, the identical pipeline is a Google Sheets Trigger plus one HTTP Request node — **[download the workflow JSON](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/n8n-sheet-to-instagram-carousel.json "target=_blank")** and import it. It ships with a third, **deactivated** node that renders the combined video, so nothing fires until you enable it: ![The n8n workflow: Google Sheets trigger connected to a render-and-publish HTTP node, with an optional deactivated combined-reel node](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets/11-n8n-workflow-canvas.png) For a deeper n8n walkthrough (including rendering image + video variants and posting to LinkedIn), see the full [n8n marketing automation tutorial](https://orshot.com/blog/n8n-marketing-automation-tutorial). ## FAQ **Q: Can you fully automate Instagram carousels end to end?** Yes — that's exactly what this setup does: a Google Sheet row triggers Make, Orshot renders all slides from a designed template, and the publish object posts them to Instagram as a carousel with your caption. After setup, writing a row is the entire workflow. **Q: How many slides can an Instagram carousel have?** Instagram supports up to 20 slides per carousel post. This tutorial's template uses 4 pages, but Orshot templates can have as many pages as your carousel needs. **Q: Can an Instagram carousel mix images and videos?** Yes. Instagram lets you mix photos and videos in one carousel. Render some pages as PNG and some as MP4 (each page renders as its own video), and publish the combination. **Q: Do all carousel slides need the same aspect ratio?** Yes — Instagram applies the first slide's ratio to the whole carousel. Multi-page Orshot templates share one canvas size (1080×1350 here), so this is handled automatically. **Q: Should I use Make or n8n for this?** Both work with the same single API call. Make is friendlier if you've never automated anything (visual modules, generous free tier). n8n suits self-hosters and technical teams. Downloads for both are at the top of this post. **Q: Why use a template render API instead of an AI image generator?** Text accuracy and brand control. AI image models routinely misspell headline text and re-interpret your brand every generation. A template renders your actual fonts, colors, and layout with the exact words from your spreadsheet, every time. **Q: Can I schedule carousels instead of posting immediately?** Yes — add schedule.scheduledFor (an ISO date) to the publish object, optionally with a timezone. Add a column for it in your Sheet and every row can carry its own posting time. **Q: Do I need a Facebook/Meta developer app to auto-post?** No. Connecting Instagram to Orshot in Social Accounts handles authentication — there's no Graph API app to create, verify, or maintain, which is the most painful step in DIY carousel automations. **Q: How do I turn the carousel into a single video or reel?** Set format to mp4 and add videoOptions.combinePages: true with an optional pageTransition. The API returns one video where each slide plays its animations and transitions to the next — ready to publish as a reel. **Q: What happens if a render or post fails?** The API response includes a status per publish account (published, scheduled, drafted, or failed), so your scenario can branch on failures — for example, alerting you in Slack or retrying the row. ## The bottom line A carousel-a-day habit is one of the highest-leverage formats on Instagram — and the actual bottleneck was never ideas, it was production. With a designed template, a Sheet, and two Make modules, production rounds to zero: the same row becomes branded slides, animated reels, or one combined video, posted without you touching a design tool. Design your carousel template once, connect your sheet, and let the calendar post itself — **[start free with 100 credits a month](https://orshot.com/pricing)**. --- ### [Auto-Generate Open Graph (OG) Images in Framer](https://orshot.com/blog/framer-og-images) > Generate on-brand OG and social images for every Framer CMS item with the Orshot plugin. The right 1200x630 size, no code, in minutes. We just shipped an [Orshot plugin for Framer](https://www.framer.com/marketplace/plugins/orshot/ "target=_blank"). It does one thing: generate an on-brand OG image for every item in your Framer CMS, automatically. I built it because I kept seeing the same thing on Framer sites, including good ones: a blog where every post shares with the same static preview image, or none at all. The preview card is the first thing people see when your link lands in Slack, LinkedIn, or X, and making one per post by hand stops happening around post number three. Here's the whole setup, start to finish. It takes about ten minutes. ## What's the right OG image size for Framer? Quick fundamentals first, because this is the question I get most. The standard Open Graph image size is **1200x630 pixels** (1.91:1). That's what Framer recommends for social previews, and it renders correctly on X, LinkedIn, Facebook, Slack, and WhatsApp. Keep titles away from the edges since some platforms crop, and design at 1200x630 directly so text stays crisp. Orshot's [template library](https://orshot.com/templates) has OG card templates at this size ready to go, and anything you design in the editor at 1200x630 works. ## Step 1: Install the plugin and connect Install the plugin and open it from the Plugins menu in Framer. Create an API key in your Orshot workspace under Workspace, then API Keys, and paste it in. The free tier is enough to follow along. Free, from the Framer Marketplace. [Install Orshot for Framer](https://www.framer.com/marketplace/plugins/orshot/) ## Step 2: Pick a template The plugin lists your templates with thumbnails and sizes. Anything marked 1200x630 is right for social previews. ![Browsing 1200x630 OG image templates inside the Orshot plugin for Framer](https://orshot.com/blog/framer-og-images/step-1-open-plugin-browse-templates.webp) Start from the [library](https://orshot.com/templates), or bring your own design over from [Canva](https://orshot.com/solutions/canva-template-to-api) or [Figma](https://orshot.com/solutions/figma-automation-via-rest-api) and parameterize it once. ## Step 3: Map your CMS fields Pick the collection, pick the image field to save into (mine is called "Social Image"), and map template parameters to CMS fields. The plugin auto-suggests the obvious ones, like Title into the headline. ![Mapping Framer CMS fields like Title to Orshot template parameters](https://orshot.com/blog/framer-og-images/step-2-map-cms-fields.webp) Anything left on "Keep template default" stays as designed. Map only what should change per post. ## Step 4: Preview, then generate Preview renders one real item so you can check the design against actual content. ![Previewing an OG image rendered from real Framer CMS content](https://orshot.com/blog/framer-og-images/step-4-preview-render.webp) Then Generate. One image per item, written straight back to the image field as a native Framer asset. The "Only items without an image" toggle makes re-runs incremental: new posts get images, existing ones stay untouched. ![Generation complete, with every Framer CMS item getting its own OG image](https://orshot.com/blog/framer-og-images/step-5-generation-done.webp) ## Step 5: Bind the field to your social preview Your collection now has a filled image column: ![Framer CMS collection with an auto-generated social image for every item](https://orshot.com/blog/framer-og-images/step-6-cms-images-filled.webp) In your CMS page settings, set the social preview to the "Social Image" field using CMS variables. Done. Every page now shares with its own card, and a new post is one Generate click away from having its preview ready. ## Beyond blog posts The same flow works for any collection: changelogs, careers, events, docs. And because templates live in Orshot, the same design also renders via [API](https://orshot.com/docs) and [50+ integrations](https://orshot.com/integrations), so your site, emails, and social posts share one design system. Using Astro or Next.js elsewhere? The code-first version of this idea: [dynamic OG images in Astro](https://orshot.com/blog/astro-dynamic-og-images) and in Next.js. **Q: Is the Orshot plugin for Framer free?** The plugin is free to install from the Framer Marketplace. Renders count toward your Orshot plan's quota, and the free tier covers a small blog comfortably. **Q: What size should Framer OG images be?** 1200x630 pixels (1.91:1). It is the standard Open Graph size and works across X, LinkedIn, Facebook, Slack, and WhatsApp previews. **Q: Can I use my own design instead of a library template?** Yes. Design in the Orshot editor at 1200x630, or import from Canva or Figma and mark the text and image layers you want as dynamic parameters. **Q: What about static pages that are not in the CMS?** Use the plugin's Preview and insert the rendered image onto the canvas, or set it directly as the page's social image in page settings. ## The bottom line OG images are the highest-leverage ten minutes of Framer SEO: they decide whether your link looks like a real publication or a bare URL. Design once, map once, generate forever. [**Get started with Orshot**](https://orshot.com/pricing) and give every page on your Framer site a preview worth clicking. --- ### [Automate Invoice Generation: Python, API, Zapier, Make & n8n Guide](https://orshot.com/blog/automated-invoice-generation) > The complete guide to automated invoicing. Learn to generate PDF invoices from templates using Python, REST API, or no-code workflows (Zapier, Make, n8n) Manually creating invoices for every transaction is time-consuming and prone to errors. With automated invoice generation, you can generate professional invoices programmatically using templates and customer data. This guide shows you how to set up automated invoice generation using Orshot's invoice templates and REST API. ## What you'll need - [Orshot Account](https://orshot.com/pricing "target=_blank") (free plan, 100 credits every month): To design invoice templates and programmatically generate invoice PDF from API - Basic knowledge of REST APIs - Python 3.x or JavaScript/Node.js (for the examples) ## Step 1: Choose an Invoice Template Orshot provides ready-to-use [invoice templates](https://orshot.com/templates/g/invoice) that you can customize for your business needs. [![Orshot's ready-to-use invoice templates](https://orshot.com/blog/invoice-generation/templates.webp)](/templates/g/invoice) Browse the invoice template gallery and select a template that matches your branding. Click on **"Open in Studio"** to customize the selected template. Here's a free template you can directly copy in your Orshot workspace to get started quickly: [Open the embed](https://orshot.com/templates/shared/21o4u98t/embed?view=view) ## Step 2: Customize Your Invoice Template In Orshot's Studio, you can customize your invoice template to match your brand: 1. **Update your logo**: Replace the placeholder logo with your company logo 2. **Customize colors**: Adjust colors to match your brand palette 3. **Parameterize dynamic fields**: Enable parameterization for fields that will change per invoice ![Parameterizing an invoice template in Orshot Studio](https://orshot.com/blog/invoice-generation/invoice-template-studio.webp) To parameterize a field (like customer name, invoice number, amounts): 1. Select the text layer or element 2. Toggle **"Parameterize"** in the properties panel 3. Assign a unique key (e.g., `customerName`, `invoiceNumber`, `totalAmount`) Once customized, save your template. Copy the **Template ID** from the template page—you'll need this for the API. ## Step 3: Generate Invoices Using REST API Orshot's [PDF Generation API](https://orshot.com/solutions/pdf-generation-api) allows you to generate invoices programmatically by sending invoice data to your customized template. Template also has playground where you can try out different values for set parameters and generate the PDF preview for the invoice ![The Orshot playground for testing invoice template parameters](https://orshot.com/blog/invoice-generation/playground.webp) ### API Endpoint ``` POST https://api.orshot.com/api/studio/render ``` ### Authentication Get your API key from **Orshot Dashboard > Settings > API Keys** Include it in the request header: ``` Authorization: Bearer YOUR_API_KEY ``` ## Step 4: Code Examples ### JavaScript/Node.js Example ```javascript async function generateInvoice(invoiceData) { const url = "https://api.orshot.com/api/studio/render"; const response = await fetch(url, { method: "POST", headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "YOUR_TEMPLATE_ID", modifications: { customerName: invoiceData.customer_name, invoiceNumber: invoiceData.invoice_number, invoiceDate: invoiceData.date, totalAmount: invoiceData.total, item_title_1: invoiceData.item_title_1, item_price_1: invoiceData.item_price_1, item_title_2: invoiceData.item_title_2, item_price_2: invoiceData.item_price_2, }, responseFormat: "pdf", responseType: "url", }), }); const result = await response.json(); return result.content; // Returns PDF URL } // Example usage const invoiceData = { customer_name: "John Doe", invoice_number: "INV-001", date: "2025-11-23", total: "$1,250.00", item_title_1: "Web Development", item_price_1: "$1,000.00", item_title_2: "Consulting", item_price_2: "$250.00", }; const pdfUrl = await generateInvoice(invoiceData); console.log(`Invoice generated: ${pdfUrl}`); ``` ### Python Example ```python import requests import json def generate_invoice(invoice_data): url = "https://api.orshot.com/api/studio/render" headers = { "Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json" } payload = { "templateId": "YOUR_TEMPLATE_ID", "modifications": { "customerName": invoice_data["customer_name"], "invoiceNumber": invoice_data["invoice_number"], "invoiceDate": invoice_data["date"], "totalAmount": invoice_data["total"], "item_title_1": invoice_data["item_title_1"], "item_price_1": invoice_data["item_price_1"], "item_title_2": invoice_data["item_title_2"], "item_price_2": invoice_data["item_price_2"] }, "responseFormat": "pdf", "responseType": "url" } response = requests.post(url, headers=headers, json=payload) result = response.json() return result["content"] # Returns PDF URL # Example usage invoice_data = { "customer_name": "John Doe", "invoice_number": "INV-001", "date": "2025-11-23", "total": "$1,250.00", "item_title_1": "Web Development", "item_price_1": "$1,000.00", "item_title_2": "Consulting", "item_price_2": "$250.00" } pdf_url = generate_invoice(invoice_data) print(f"Invoice generated: {pdf_url}") ``` ### Batch Invoice Generation For automated invoice generation at scale, process multiple invoices in a batch: ```python def generate_bulk_invoices(invoices_list): generated_invoices = [] for invoice in invoices_list: try: pdf_url = generate_invoice(invoice) generated_invoices.append({ "invoice_number": invoice["invoice_number"], "pdf_url": pdf_url, "status": "success" }) except Exception as e: generated_invoices.append({ "invoice_number": invoice["invoice_number"], "status": "failed", "error": str(e) }) return generated_invoices # Example: Generate invoices for multiple customers invoices = [ { "customer_name": "Acme Corp", "invoice_number": "INV-001", "date": "2025-11-23", "total": "$2,500.00", "item_title_1": "Service A", "item_price_1": "$2,500.00" }, { "customer_name": "Tech Solutions", "invoice_number": "INV-002", "date": "2025-11-23", "total": "$1,800.00", "item_title_1": "Service B", "item_price_1": "$1,800.00" } ] results = generate_bulk_invoices(invoices) for result in results: print(f"{result['invoice_number']}: {result['status']}") ``` ### Save Generated Invoices Locally Download and save generated invoice PDFs to your local system: ```python import requests def generate_and_save_invoice(invoice_data, output_path): # Generate invoice pdf_url = generate_invoice(invoice_data) # Download PDF pdf_response = requests.get(pdf_url) # Save to file with open(output_path, 'wb') as f: f.write(pdf_response.content) print(f"Invoice saved to: {output_path}") # Example usage invoice_data = { "customer_name": "Jane Smith", "invoice_number": "INV-003", "date": "2025-11-23", "total": "$3,200.00", "item_title_1": "Project X", "item_price_1": "$3,200.00" } generate_and_save_invoice(invoice_data, "invoices/INV-003.pdf") ``` ## Automate with No-Code Platforms ### Using n8n ![Generating invoices with an n8n workflow](https://orshot.com/blog/automate-ecommerce-visuals/workflow-step-2.webp) Orshot integrates with [**n8n**](https://orshot.com/integrations "target=_blank") for visual workflow automation: 1. Create a new workflow in n8n 2. Add a trigger (webhook, schedule, or data source like Google Sheets) 3. Add the **Orshot node** and connect your Orshot account 4. Select your invoice template and map dynamic fields 5. Add action nodes to send emails or save to cloud storage ### Using Make (formerly Integromat) Automate invoice generation with [**Make**](https://orshot.com/integrations "target=_blank"): 1. Create a new scenario in Make 2. Add a trigger module (CRM, payment gateway, or schedule) 3. Add **Orshot** module and authenticate 4. Configure template ID and map invoice data from previous modules 5. Connect to email or storage modules to deliver invoices ### Using Zapier Set up automated invoice generation with [**Zapier**](https://orshot.com/integrations "target=_blank"): 1. Create a new Zap in Zapier 2. Choose a trigger app (Stripe, PayPal, Google Sheets, etc.) 3. Add **Orshot** as the action app 4. Select "Generate from Studio Template" action 5. Map invoice fields from trigger data 6. Add actions to email invoices or save to Google Drive You can also skip the automation platform entirely, since Orshot ships this invoice pipeline as a ready-made workflow. One click on **Use this workflow** copies it into your workspace, where you point it at your spreadsheet and turn it on. [Generate invoices from a spreadsheet workflow on Orshot](https://orshot.com/workflows/invoice-generator/embed) ## Conclusion Automated invoice generation eliminates manual work and ensures consistency across all your invoices. With Orshot's invoice templates and REST API, you can set up automated invoice generation in minutes. Whether you're processing hundreds of invoices monthly or building a complete billing system, Orshot's [PDF Generation API](https://orshot.com/solutions/pdf-generation-api) provides the flexibility and reliability you need. **Ready to automate?** [Browse invoice templates](https://orshot.com/templates/g/invoice) and start generating invoices programmatically. --- ### [Automate LinkedIn Carousels with SvelteKit Remote Functions](https://orshot.com/blog/automate-linkedin-carousels-sveltekit) > Design carousel slides in Orshot, render them as PNGs, and publish to LinkedIn from a SvelteKit app — server-side with Remote Functions [LinkedIn Carousels](https://orshot.com/blog/how-to-automatically-create-linkedin-carousels) is one of the better formats for a short story in feed, but the production loop is painful. You design five or seven slides in Figma, export PNGs, upload them in order, write the caption, and hope you did not typo slide three after the client asked for one headline change. I wanted a small internal tool where marketing picks a theme, edits copy in a form, previews all slides, and publishes without leaving the browser. By the end of this guide, you will have a SvelteKit application that uses [Remote Functions](https://svelte.dev/docs/kit/remote-functions "target=_blank nofollow") to talk to [Orshot](https://orshot.com/) on the server that list carousel templates from your workspace, build a form from each template's `modifications` metadata, render PNG slides with the [Studio render API](https://orshot.com/docs/api-reference/render-from-studio-template), and publish to LinkedIn through [Social Publishing](https://orshot.com/features/social-publishing) of accounts already connected in Orshot. ## Prerequisites - Node.js and npm installed. The demo app in this tutorial uses version 22 of Node.js. - An [Orshot](https://orshot.com/pricing) account ## Connect your LinkedIn Account to Orshot Before you automate your LinkedIn carousels, you need to connect your LinkedIn account in Orshot by following these steps: - Go to **Orshot Studio** > **Publish** > **Social Accounts**. - In **Connect Account** section, select **LinkedIn** from the dropdown and complete the connection process. - Once your LinkedIn account is connected, you should see it listed among your social accounts, similar to the example below: ![Connected LinkedIn account listed in Orshot social accounts](https://orshot.com/blog/automate-linkedin-carousels-sveltekit/orshot-linkedin.webp) ## Pick a Carousel Theme in Orshot To get started with a pre-built carousel theme, visit [Orshot Templates](https://orshot.com/templates) and search for **Carousel**. ![Searching for carousel templates in Orshot](https://orshot.com/blog/automate-linkedin-carousels-sveltekit/orshot-templates.webp) Click on a template you like to add a copy of it to your Orshot workspace: ![Cloning a carousel template into your Orshot workspace](https://orshot.com/blog/automate-linkedin-carousels-sveltekit/orshot-template-clone.webp) To test the theme with your own text, open the "Automate" tab, enter sample values for the fields, and click "Generate Render": ![Testing the template with sample values in the Automate tab](https://orshot.com/blog/automate-linkedin-carousels-sveltekit/orshot-template-render.webp) Once you've confirmed that editing the variables produces the expected result, you're ready to build out the UI in SvelteKit. ## Create a new SvelteKit application with Remote Functions Create a minimal SvelteKit project, install dependencies, and opt in to experimental remote functions (required as of SvelteKit 2.27+) as follows: ```bash # create new svelte app npx sv create linkedin-carousel cd linkedin-carousel # install the in-built deps npm install # add valibot for lightweight schema validation npm install valibot # add tailwindcss npx sv add tailwindcss ``` Valibot is being installed to validate arguments on remote `command` calls (as recommended in the [Svelte docs](https://svelte.dev/docs/kit/remote-functions "target=_blank nofollow")). Then, enable remote functions, async, and Svelte 5 runes in `svelte.config.js`: ```javascript import adapter from "@sveltejs/adapter-auto"; /** @type {import("@sveltejs/kit").Config} */ const config = { compilerOptions: { experimental: { async: true, }, runes: ({ filename }) => filename.split(/[/\\]/).includes("node_modules") ? undefined : true, }, kit: { adapter: adapter(), experimental: { remoteFunctions: true, }, }, }; export default config; ``` Next, add your Orshot API key by copying it from [Orshot Workspace → API Keys](https://orshot.com/docs/quick-start/get-api-key) and pasting it into your `.env` file like this: ![Copying the Orshot API key from workspace settings](https://orshot.com/blog/automate-linkedin-carousels-sveltekit/orshot-api.webp) ```bash ORSHOT_API_KEY=your_api_key_here ``` Finally, start the dev server to confirm the baseline works with the following command: ```bash npm run dev ``` Visit `http://localhost:5173` in your browser to ensure the app is running correctly, then stop the dev server before proceeding to the following steps. ## Set up server-side Orshot API helpers Create a file at `src/lib/server/orshot.ts` to hold thin utility wrappers for the Orshot REST API. Each function should issue an HTTP request to the Orshot API, automatically attaching your API key in the `Authorization` header. ```typescript import { ORSHOT_API_KEY } from "$env/static/private"; const BASE = "https://api.orshot.com/v1"; function headers() { return { "Content-Type": "application/json", Authorization: `Bearer ${ORSHOT_API_KEY}`, }; } export type OrshotModification = { key: string; id: string; type: string; description: string; example: string; page_number: number; page_id: string; element_name?: string; }; export type OrshotTemplate = { id: number; name: string; description: string; tags: string[]; thumbnail_url: string; canvas_width: number; canvas_height: number; pages_data: { page_id: string; name: string; thumbnail_url: string }[]; modifications: OrshotModification[]; }; export async function listStudioTemplates(options?: { page?: number; limit?: number; search?: string; }) { const params = new URLSearchParams({ page: String(options?.page ?? 1), limit: String(options?.limit ?? 10), }); if (options?.search) params.set("search", options.search); const res = await fetch(`${BASE}/studio/templates/all?${params}`, { headers: headers(), }); if (!res.ok) throw new Error(`List templates failed: ${res.status}`); const json = await res.json(); return json as { data: OrshotTemplate[]; pagination: { page: number; limit: number; total: number; totalPages: number; }; }; } export type RenderSlide = { page: number; pageId?: string; content: string; }; export type SocialAccount = { id: number; platform: string; account_name: string; account_username: string; account_avatar: string; connected_at: string; requires_reconnect?: boolean; }; export async function listSocialAccounts(options?: { includeHealth?: boolean; }) { const params = new URLSearchParams(); if (options?.includeHealth) params.set("include_health", "true"); const url = params.size > 0 ? `${BASE}/social/accounts?${params}` : `${BASE}/social/accounts`; const res = await fetch(url, { headers: { Authorization: headers().Authorization }, }); if (!res.ok) throw new Error(`List social accounts failed: ${res.status}`); const json = await res.json(); return (json.data ?? []) as SocialAccount[]; } export async function renderStudioTemplate(input: { templateId: number; modifications: Record; }) { const res = await fetch(`${BASE}/studio/render`, { method: "POST", headers: headers(), body: JSON.stringify({ templateId: input.templateId, modifications: input.modifications, response: { type: "url", format: "png", }, }), }); if (!res.ok) { const text = await res.text(); throw new Error(`Render failed: ${res.status} ${text}`); } const json = await res.json(); // Single-page template if (typeof json.data?.content === "string") { return [{ page: 1, content: json.data.content }] satisfies RenderSlide[]; } // Multi-page carousel: data is an array of { page, pageId, content } if (Array.isArray(json.data)) { return json.data as RenderSlide[]; } return []; } export async function publishToSocial(input: { accountIds: number[]; content: string; mediaUrls: string[]; }) { const res = await fetch(`${BASE}/social/publish`, { method: "POST", headers: headers(), body: JSON.stringify({ accounts: input.accountIds, content: input.content, media_urls: input.mediaUrls, }), }); if (!res.ok) { const text = await res.text(); throw new Error(`Publish failed: ${res.status} ${text}`); } return res.json(); } ``` Here’s what each exported function does in the code above: - `listStudioTemplates`: Fetches a list of Orshot studio templates (including carousels) with optional pagination and search, automatically using the API key. - `listSocialAccounts`: Retrieves all connected social publishing accounts (such as LinkedIn) from Orshot, so you can select where to publish. - `renderStudioTemplate`: Calls the Orshot render API to generate PNG URLs for each slide in a selected template and given modifications. Handles both single-slide (string response) and multi-slide (array response) cases. - `publishToSocial`: Publishes a post with caption and media URLs to selected connected social accounts (e.g. LinkedIn) via Orshot’s Social Publish API. Throws an error on failure. ## Create Remote Functions for Template Listing, Slide Preview, and Carousel Publishing To easily connect your SvelteKit front end with Orshot, create a new file at `src/lib/orshot.remote.ts`. Remote functions defined here will run securely on the server, keeping your Orshot API key safe and never exposing it to the client. ```typescript import * as v from "valibot"; import { command, query } from "$app/server"; import { listStudioTemplates, listSocialAccounts, renderStudioTemplate, publishToSocial, type OrshotTemplate, type SocialAccount, } from "$lib/server/orshot"; export const getCarouselTemplates = query(async () => { const { data } = await listStudioTemplates({ limit: 40, }); return data.filter((t) => t.pages_data?.length > 1) as OrshotTemplate[]; }); export const getLinkedInAccounts = query(async () => { const accounts = await listSocialAccounts(); return accounts.filter((a) => a.platform === "linkedin") as SocialAccount[]; }); export const previewCarousel = command( v.object({ templateId: v.number(), modifications: v.record(v.string(), v.string()), }), async ({ templateId, modifications }) => { const slides = await renderStudioTemplate({ templateId, modifications }); return { slides }; }, ); export const publishCarousel = command( v.object({ accountIds: v.array(v.number()), caption: v.string(), mediaUrls: v.array(v.string()), }), async ({ accountIds, caption, mediaUrls }) => { const result = await publishToSocial({ accountIds, content: caption, mediaUrls, }); return result; }, ); ``` The above code defines SvelteKit remote function endpoints that power the LinkedIn carousel tool: - `getCarouselTemplates`: Loads all carousel-style templates (with more than one page) from the Orshot API for the user's workspace. - `getLinkedInAccounts`: Lists all connected LinkedIn accounts to target for publishing. - `previewCarousel`: Renders preview slide PNGs from a selected template and user-provided form values via the Orshot render API. - `publishCarousel`: Publishes rendered slides as a LinkedIn carousel post via Orshot's backend, using the selected accounts and caption. These functions are called from the Svelte UI (see next section), letting the frontend build forms dynamically based on the template's parameter schema, preview, and publish posts, all without needing to store secrets or call the Orshot API directly from the browser. ## Build the Svelte UI Create a file at `src/routes/+page.svelte` where you'll fetch the available carousel templates and the list of connected social accounts. The UI would allow the user to select a carousel theme, display input fields based on each template's `modifications` parameters, and invoke the provided remote functions for previewing and publishing. Since the project uses Svelte 5 runes mode, remember to manage local UI state with `$state()` (failing to do so will prevent the UI from updating after previewing). ```svelte
Orshot × SvelteKit

LinkedIn carousel generator

Pick a theme, edit slide copy, preview every page, and publish to LinkedIn in one flow.

1

Choose a theme

Multi-page Orshot templates from your workspace

{#if templates.length === 0}

No carousel templates found

Create a multi-page template in Orshot Studio, then refresh this page.

{:else}
{#each templates as t} {/each}
{/if}
{#if selected}
2

Edit slide copy

Template #{selected.id} · {selected.pages_data.length} pages

{#each selected.modifications as mod} {/each}
3

Preview & publish

Render slides, then post to your LinkedIn account

{#if error} {/if}
{#if slides.length}

Preview

{slides.length} slide{slides.length === 1 ? '' : 's'}
{#each slides as slide}
Slide {slide.page}
Slide {slide.page}
{/each}
{/if} {/if}
``` In the code above: - `modifications` array is used to dynamically generate the input fields for the form. - Any new parameter added in Orshot Studio appears automatically in the UI when the template list is refreshed, no code change is needed to handle new input fields. - Parameter keys (e.g., `page2@headline`) are displayed as-is to ensure they match exactly what the Orshot render API expects. ## Render response format for carousels For multi-page templates, a successful PNG render returns `data` as an **array** of objects with `page`, `pageId`, and `content` (hosted PNG URL). That matches LinkedIn's need for ordered slide images. Your preview grid should preserve array order when passing URLs to publish. Example shape (abbreviated from the [API docs](https://orshot.com/docs/publish/publish-from-api)): ```json { "data": [ { "page": 1, "pageId": "a1b2c3d4-…", "content": "https://storage.orshot.com/…/page_1.png" }, { "page": 2, "pageId": "b2c3d4e5-…", "content": "https://storage.orshot.com/…/page_2.png" } ], "type": "url", "format": "png", "totalPages": 2, "renderedPages": 2 } ``` > Note: Use `media_urls` (not `media_url`) on the [Social Publish](https://orshot.com/docs/api-reference/social-publish) endpoint when posting multiple images as a carousel. PNG and JPG are supported on LinkedIn. ## Test the Complete Workflow 1. Start the app with `npm run dev` and open the home page. 2. Select a carousel template and confirm modification fields populate with example values from the API. ![Selecting a carousel template with modification fields populated from the API](https://orshot.com/blog/automate-linkedin-carousels-sveltekit/orshot-test-1.webp) 3. Confirm a LinkedIn account appears in the dropdown (connect one in Orshot first if not). ![LinkedIn account appearing in the account dropdown](https://orshot.com/blog/automate-linkedin-carousels-sveltekit/orshot-test-2.webp) 4. Edit copy, click **Preview slides**, and confirm each slide image loads. ![Previewing the rendered carousel slides](https://orshot.com/blog/automate-linkedin-carousels-sveltekit/orshot-test-3.webp) 5. Click **Publish to LinkedIn** and check the post on your profile (or drafts if you set `isDraft: true` in the publish payload for testing). ![Published LinkedIn carousel post](https://orshot.com/blog/automate-linkedin-carousels-sveltekit/orshot-test-4.webp) ## Ending thoughts Using Remote Functions in SvelteKit provides a clean way to integrate with the Orshot API while keeping sensitive logic securely on the server. This approach allows you to manage template selection, parameter editing, slide previewing, and publishing all from a streamlined, interactive single-page Svelte UI. By keeping templates, dynamic fields, and rendering work in Orshot, your application remains flexible and easy to extend as new templates or input parameters are added. ## Resources - [GitHub Repository](https://github.com/rishi-raj-jain/orshot-linkedin-sveltekit "target=_blank nofollow") --- ### [Automatically Post Tweets on Instagram](https://orshot.com/blog/automate-tweet-to-instagram) > Instantly convert your Twitter tweets into images and automatically post on Instagram using TweetHunter/Typefully, Orshot connected using Zapier A lot of creators schedule their tweets and to save time, cross-post to other social sites. Ever wondered how? With this powerful automation, you can instantly convert your Twitter content into beautiful Instagram posts using Typefully or Typefully, Orshot, and Instagram for Business - all connected seamlessly through Zapier If you prefer a tool that can help you convert tweets to images or even carousel for Instagram, you can try out [Twitter Carousel Generator](https://orshot.com/tools/twitter-carousel-generator), or grab clean tweet screenshots right from your browser with the [free X/Twitter Chrome extension](https://orshot.com/blog/twitter-screenshot-chrome-extension) ## Tweet to Instagram Automation using Zapier This Zapier template creates a streamlined 3-step workflow that: 1. **Triggers on new tweets** from [Typefully](https://typefully.com/) or [TweetHunter](https://tweethunter.io/) 2. **Converts tweets to images** using Orshot's [tweet to image template](https://orshot.com/templates/tweet-image) 3. **Automatically posts** the generated image to your Instagram Business account ## Need help? Setting up the automation could be complex, **feel free to use the chat button on bottom right** or [**send us an email**](mailto:hi@orshot.com) to ask for help and we'll help you setup the automation ## Video Tutorial [Watch the video](https://www.youtube.com/watch?v=J9yL16C7dCE) ## Setting up the Zap 1. Create a new Zap on Zapier 2. Select Typefully or TweetHunter in trigger for first step, connect your account in Setup tab and use following settings: - Setup Tab: **Trigger Event** → Draft published - Configure Tab: **Enabled for** → Tweets/Threads 3. Test the step to get a test record 4. In next step, add Orshot using your Orshot API Key from [Settings > API Key page](https://orshot.com/workspace) - Setup Tab: **Action Event** → Render from Template - Configure Tab: **Template ID** → "tweet-image", **Tweeturl** → use the Twitter URL from Typefully record, **Response Type** → "url", **Response Format** → "png" ![Orshot API Key](https://orshot.com/blog/automate-sheets-certificate/11.webp) 5. Test the step to get a test record 6. Add Instagram for Business in last step - Setup Tab: **Action Event** → Publish Photo(s) - Configure Tab: **Instagram Account to Use** → connect your Instagram account, **Media** → select "Data Content" from Orshot step 7. In Step 6 for Orshot under Configure Tab, feel free to customize the look of the tweet image 8. In Step 9, feel free to set caption, location etc. as you like 9. Once done, save the Zap and mark it as active Now whenever you will post a tweet on Twitter, it'll automatically be posted on your Instagram account with the customizations you've set in Step 4 in Orshot step ## Tweet Image Customization In Step 4 in Orshot, you can customize the tweet image by selecting different colors for background, text etc. You can also choose to hide or show tweet media, metrics, date time etc. ## Zapier Filters Set up filters to only post certain types of tweets: - Tweets with specific hashtags - Tweets above a certain length - Tweets containing images or links ## Best Practices - Consider Instagram's audience when crafting tweets - Add relevant Instagram hashtags in the automation - Set up delays if needed to avoid overwhelming your Instagram feed - Use Typefully's draft feature to review before publishing - Set up the automation to trigger only on final published tweets ## Even Easier: Use Orshot Social Publish Instead of connecting Orshot to Instagram via Zapier, you can now use [Orshot Social Publish](https://orshot.com/docs/publish/introduction) to post directly to Instagram (and 12 other platforms) from Orshot itself. Connect your Instagram account in your workspace, and Orshot handles the posting — no Zapier step needed. You can publish from the dashboard or [automate it via the API](https://orshot.com/docs/publish/publish-from-api) by adding a `publish` object to your render request. Better still, the whole tweet-to-visual flow is available as a ready-made workflow in Orshot. Click **Use this workflow** below and it's added to your workspace with each step already connected. [Turn tweets into visuals workflow on Orshot](https://orshot.com/workflows/tweet-to-visual/embed) ## Conclusion By connecting Typefully, Orshot, and Instagram through Zapier, you're not just saving time; you're creating a professional, consistent brand presence across platforms --- ### [Can Claude Generate Videos from a Prompt](https://orshot.com/blog/can-claude-generate-videos) > Claude can't output a video file by itself. I tested three ways to generate videos with Claude so you can pick the right one and get your first MP4 today No. Claude can't make a video file on its own. Every Claude model today takes in text and images and writes back text, per [Anthropic's models overview](https://platform.claude.com/docs/en/about-claude/models/overview "nofollow target=_blank") (checked October 2026). Claude can still get you an MP4. How depends on what you want to make: AI footage, a one-time animation, or bulk videos from your data. I built [Orshot](https://orshot.com/), an API that turns your design templates into images, PDFs and videos. It's the answer for bulk videos from data. I tested the other two routes as well, and I'll say where each one wins. **TL;DR** — What do you want to make? - **1. AI videos from a prompt**: [Claude with Higgsfield (Veo, Kling, Seedance)](#1-generate-ai-videos-with-claude-and-higgsfield) — An AI video model makes the shot from your prompt. Fast, but every take differs and you can't edit a single layer later. - **2. One animated video**: [Claude Code with Remotion or HyperFrames](#2-make-an-animated-video-with-claude-and-remotion) — Claude writes the video as code and your computer renders it. Full control, free for small teams, built for one-off videos. - **3. Bulk videos from data**: [Claude with Orshot](#3-make-bulk-videos-from-data-with-claude-and-orshot) — A branded template, your data and AI voiceover, captions and clips, rendered per product, listing or post. From Claude or on a schedule. ## What Do You Want to Make? Pick the goal first. The tool follows from it. The three side by side: | | 1. AI videos | 2. Animated video | 3. Bulk videos from data | | :-- | :-- | :-- | :-- | | **Tool** | Higgsfield, Veo, Kling | Remotion, HyperFrames | Orshot | | **Edit it later?** | No, you regenerate | Yes, in code | Yes, in a browser editor | | **Uses your data?** | No | Yes, if you build the pipeline | Yes, every render | | **Repeat at volume?** | Costly, and takes vary | Yes, if you host it | Built for it | | **Cost shape** | Per second of footage | Free for small teams | 1 credit per second | 100 free credits a month for images and PDFs, no card needed. Video from $39/mo. [Try Orshot free](https://orshot.com/pricing?via=blog-claude-video-top) ## Why Can't Claude make the Video Itself? Claude writes text, code, HTML, SVG and tool calls. It never outputs video, audio or photos. Claude can read text, images and PDFs. [Anthropic's help center](https://support.claude.com/en/articles/9002504-can-claude-produce-images "nofollow target=_blank") says it doesn't make photos or illustrations the way image tools do. The tool call is the key. It's Claude asking another app to do a job for it, like rendering an MP4. Each part below hands that job to a different app. ## 1. Generate AI Videos with Claude and Higgsfield **Pick this if** you need footage of something nobody filmed: a drone shot, a product in a new scene, b-roll for an ad. Claude can't run a video model itself, but it can call one through a connector. A connector uses MCP (Model Context Protocol), a standard way for Claude to use other apps. Higgsfield's connector gives Claude one door to many models: Veo 3.1, Sora 2, Kling 3.0, Seedance 2.0, Wan 2.6, MiniMax Hailuo and Higgsfield's own. I didn't test this route for this post. Everything here comes from vendor pages, checked October 2026. ### Step 1: Connect Higgsfield to Claude 1. In Claude, open **Settings**, then **Connectors** 2. Add a custom connector named Higgsfield 3. Paste `https://mcp.higgsfield.ai` 4. Sign in to Higgsfield with OAuth (a normal login). No API key needed. [Higgsfield's guide](https://higgsfield.ai/blog/Generate-AI-Videos-From-Claude-with-Higgsfield-MCP "nofollow target=_blank") says it works in Claude on the web, desktop, mobile and Claude Code. ### Step 2: Describe the shot Say what's in it, how the camera moves, how long it runs and its shape, like 16:9 or 9:16. ### Step 3: Download or join the clips Download the clip. For anything longer, make several clips and join them. ### Or use Veo or Seedance another way [Renoise](https://renoise.ai/features/claude-video "nofollow target=_blank") ships a Claude Code plugin and an MCP server for Seedance 2.5. Or skip the middleman: Claude Code can write a short script that calls Veo on Google's Gemini API, and you pay Google per second. ### Check clip length and cost - **Higgsfield:** clips up to 15 seconds, free starter credits for new accounts, paid plans for more - **Renoise:** Seedance 2.5 clips of 4 to 30 seconds, from \$20 a month (\$14 billed annually with a new-user discount) - **Veo direct:** Google lists [Veo 3.1 on the Gemini API](https://ai.google.dev/gemini-api/docs/pricing "nofollow target=_blank") at \$0.40 a second at 1080p, and Veo 3.1 Fast at \$0.12. So 30 seconds of footage costs \$12 or \$3.60. ### Weigh the pros and cons - Footage of things that were never filmed - Fast: a prompt in, a clip back in your chat - One connector reaches many models Cons: - You can't fix one layer, like the text, logo or price, after it's generated - No editor to open and tweak the clip - Every take differs, even with the same prompt - Costly per second: $12 for 30 seconds of Veo 3.1 at 1080p - Clips cap at 15 to 30 seconds, so longer videos are joined I compared AI video models and template renderers in more depth in [the best AI video generation APIs](https://orshot.com/blog/ai-video-generation-api). ## 2. Make an Animated Video with Claude and Remotion **Pick this if** you need one video, made once: a launch video, a product demo, an explainer with animated charts. Claude Code writes the video as code. Then it runs a command that turns the code into an MP4 on your computer. Two free tools do the rendering (checked October 2026): - **Remotion** builds videos with React, a popular web framework. It has 62.0k GitHub stars and 7.3 million npm downloads from September 5 to October 4. - **HyperFrames** is [the alternative](https://orshot.com/blog/remotion-alternatives#hyperframes-vs-remotion), from HeyGen. It builds videos from plain HTML plus GSAP, an animation library. It's [Apache 2.0 with no per-render fees](https://github.com/heygen-com/hyperframes "nofollow target=_blank"), has 57.1k stars, needs Node.js 22+ and FFmpeg (a video encoder), and installs as a Claude Code plugin. Rendering on your computer is free. Claude Code itself needs a paid Claude plan, from \$20 a month. Anthropic doesn't ship its own video skill. Its public skills repo has 19 skills, and the only motion one, `slack-gif-creator`, makes GIFs. Claude Design exports PDF, PPTX and HTML and can pass a design to HyperFrames, but it can't export an MP4. ### Step 1: Install the Remotion skill Create a project and add Remotion's skills, or the HyperFrames plugin. The whole setup: ```bash npx create-video@latest --yes --blank my-video cd my-video npx skills add remotion-dev/skills claude # "Make a 30-second 1080x1920 listing reel: address, price, # four features, a closing card. Use our brand colors." npx remotion render ``` ```bash claude plugin marketplace add heygen-com/hyperframes claude plugin install hyperframes@hyperframes npx hyperframes init my-video cd my-video claude # "/hyperframes make a 30-second launch video from our changelog" npx hyperframes render ``` ### Step 2: Ask for a 30-second reel Start `claude` in the project folder. Describe the video: length, size, scenes, colors and text. ### Step 3: Preview it and ask for fixes Run `npm run dev` (or `npx hyperframes preview`) to watch it in your browser. Tell Claude what to change. ### Step 4: Render the MP4 Run `npx remotion render`. My first render took 66 seconds and the second took 15. The first is slower because Remotion downloads a headless Chrome (a browser with no window) once. ### Step 5: Fix the font fallback Claude set `Inter` in the CSS but never loaded it, so my video came out in Helvetica. Load your brand fonts in the project before the first render. ### Render the next version Keep the code and pass new data: `npx remotion render ListingReel out.mp4 --props=listing.json`. Or ask Claude again, and check its work again. ### Weigh the pros and cons - Full creative control, in code - Free for individuals and small teams - Any length, and charts and UI motion stay exact - Takes input data as props, and can render in the cloud on Remotion Lambda Cons: - No built-in data connections or triggers like Sheets, Airtable or webhooks - You build and host the data pipeline and render queue yourself - Every new version means a developer re-runs or maintains that setup - Fonts and assets are on you - Companies above 3 people need a Remotion license: $0.01 a render, $100 a month minimum Remotion's license terms are on [GitHub](https://github.com/remotion-dev/remotion/blob/main/LICENSE.md "nofollow target=_blank"). ## One Video or Bulk Videos? I Tested Both If you need one video, the code route works. If you need one a day, the template route wins on the second video. ### How did I test them? On October 5, 2026, I gave Claude Code the same brief two ways, from one session on my M5 Pro laptop: a 30-second vertical reel (1080×1920) for 14 Rua das Flores, Lisbon, €620,000. One prompt each, no designer. I timed each one to the first MP4. | | Remotion code | Orshot template | | :-- | :-- | :-- | | **What Claude made** | 139 lines of TSX | A 20-layer video template | | **Setup** | 89 s to scaffold and install | Nothing to install | | **First render** | 66 s (downloads a headless Chrome) | Under a minute, in the cloud | | **Prompt to first MP4** | About 3 minutes | 93 seconds | | **Fonts** | Fell back to Helvetica | Fraunces and Inter loaded | | **Next listing** | 15 s re-render with new props | One render call with new fields | ### What happens on the second video? The first drafts looked close. The real difference is the next video. The template stays in your workspace. So anyone, or any scheduled job, can render the next listing. No code project needed. ## 3. Make Bulk Videos from Data with Claude and Orshot **Pick this if** you need bulk videos from data: UGC-style and social videos per product, listing or post, a daily reel, or a personalized video per customer. You design a branded video template once. Each render fills it with your data, and the AI parts live inside the template: - **AI voiceover** from a script, and the script [can change per render](https://orshot.com/features/ai-audio-generation) - **Word-by-word captions** made from the voiceover, in your brand font - **AI clips** of 3 to 15 seconds as one layer: b-roll from a prompt, an animated photo, or a lip-synced presenter speaking your script ([more on AI clips](https://orshot.com/features/ai-video-generation)) - **Stock photos and videos** from Pixabay and Unsplash, which Claude can search and drop in - **Your data** in every text, image and video field Video costs 1 credit a second. A 30-second video is 30 credits, or \$0.78 on the \$39 plan. ### Step 1: Design the template Design it in [Orshot Studio](https://orshot.com/features/orshot-studio), a browser editor with layers, a video timeline, voiceover and captions. Or ask Claude to design it from a brief. Every layer you mark as dynamic becomes a field you can fill per video, like `property_address`, `list_price` or `photo_1`. ### Step 2: Connect Orshot to Claude [Orshot for agents](https://orshot.com/agents/claude) is in the Claude connectors directory, so it's one click in claude.ai or Claude Desktop. In Claude Code it's one command: ```bash claude mcp add orshot --transport http https://mcp.orshot.com/mcp ``` ### Step 3: Ask for the video > Render our listing reel for 14 Rua das Flores, Lisbon, €620,000. ### Step 4: Get the MP4 back Claude sends back the link. It can also post it, schedule it or save it as a draft on your connected social accounts. ### Step 5: Run it in bulk from n8n, Make, Zapier or your code You don't need Claude in the loop every time. Here's what Claude sent, the same call from your own code, and how to make it run every day: The arguments from my session, trimmed to 8 of the 15 changed fields. Everything else came from the template. ```json { "templateId": "21465", "format": "mp4", "modifications": { "property_address": "14 Rua das Flores", "city": "Lisbon, Portugal", "list_price": "€620,000", "stat_1_value": "3", "stat_2_value": "2", "feature_1": "Sunny south-facing terrace", "feature_4": "Ten minutes to Baixa", "open_house_line": "Saturday, Oct 11 · 2 to 5 PM" } } ``` The same render from a cron job, n8n or your backend, no Claude involved. It's the [video generation API](https://orshot.com/solutions/video-generation-api) the MCP tool calls. ```javascript const res = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: 21465, modifications: { property_address: "14 Rua das Flores", list_price: "€620,000", }, response: { type: "url", format: "mp4" }, }), }); ``` Orshot also connects to Google Sheets, Airtable and webhooks, so a new row can trigger a new video. ### Check these before you scale it - **Check a template Claude designed.** In my test its "Just listed" pill rendered without a background. It's a quick fix in Studio, and it stays fixed for every render after. - **Test the layout with a still image first.** A PNG of the template costs 1 credit and shows if a long address fits. A video costs 15 to 30 credits. - **The template sets the length.** Mine runs 15 seconds. For 30 seconds you need a longer template or a `duration` override, not a longer prompt. - **Add captions from the voiceover.** They can show word by word in your brand font. See the docs on [adding subtitles](https://orshot.com/docs/video-generation/adding-subtitles). ### Weigh the pros and cons - Design in a browser editor, change any layer later - New data in every render, from Claude, n8n, Make, Zapier, Sheets, Airtable or your code - AI voiceover, captions, clips and presenters inside the template - Render and post to social accounts in one step - The same template can also output images and PDFs Cons: - You design the template once before the first video - Video needs a paid plan, from $39 a month - Length caps by plan: 3, 5 or 10 minutes per video - Not meant for cinematic one-off footage. That's what AI video models are for. Cashew.sg, a mortgage advisory in Singapore, runs this loop for daily carousels. In their first seven weeks, Claude requested 871 of their 875 renders. Their posts are images, but the loop is the same for video. It's written up in [how Cashew.sg posts a carousel a day with Claude](https://orshot.com/blog/cashew-claude-carousel-automation). > Orshot turned content production from an hour-a-piece design exercise into something that runs off our existing workflow. > Consistent, on-brand, and fast enough that we actually ship daily. > > — Roshni Mahbubani, Growth Marketer, Cashew.sg **Render your first video template from Claude** — Design the template in Studio, connect Orshot to Claude, and ask for the MP4. Video from $39/mo. [Start free](https://orshot.com/pricing?via=blog-claude-video-middle) ## How Long Can a Video Made with Claude Be? Claude sets no limit, because it doesn't make the video. The tool that renders it does: - **AI video models:** clips of up to 15 to 30 seconds - **Remotion or HyperFrames code:** any length you write - **Orshot:** up to 3, 5 or 10 minutes per video, by plan So a 60-second ad from an AI model means joining four or more clips, each a little different. Faceless shorts mix AI and templates: [How to Automate Faceless Videos with n8n](https://orshot.com/blog/how-to-make-faceless-videos-with-n8n) puts a lip-synced AI presenter clip inside a branded template. ## Common Questions **Q: Can Claude generate videos?** Not by itself. Every current Claude model takes text and images in and gives text out, per Anthropic's models overview in October 2026. Claude makes videos by driving another tool: it writes code that Remotion or HyperFrames renders, calls an AI video model through a connector, or renders a video template through an API like Orshot. **Q: How long can videos made with Claude be?** It depends on what renders them. AI video models make clips of up to 15 seconds on Higgsfield and 30 seconds on Renoise, so longer videos are stitched from several. Remotion and HyperFrames render any length your code describes. Orshot renders template videos up to 3 minutes on the $39 plan, 5 minutes on Grow and 10 minutes on Scale. **Q: Does Claude generate pictures and videos?** No. Anthropic's help center says Claude doesn't generate photos or illustrations the way image generation tools do, and no Claude model outputs video. Claude can build charts, diagrams and interactive visuals as HTML and SVG. With Orshot connected, Claude renders images, PDFs and videos from your own templates. **Q: Which AI is best for producing videos?** It depends on the job. For footage of a scene that was never filmed, a generative model like Veo, Kling or Seedance. For motion graphics, demos and animated charts, Claude writing Remotion or HyperFrames code. For the same branded video every day with new data, a template renderer like Orshot, which Claude, n8n or your own code can call. **Q: Is it illegal to use AI to make videos?** Making videos with AI is legal in most places. The risk is in what the video shows: someone's likeness without consent, copyrighted footage or music, or a realistic fake presented as real. YouTube asks creators to disclose realistic AI content, such as making a real person appear to say something they didn't. Orshot's talking presenter asks you to confirm consent for the face you use. This isn't legal advice. **Q: Can Claude Code make videos?** Yes, through code. Add Remotion's Agent Skills or the HyperFrames plugin, describe the video, and Claude Code writes the video code and runs the render command to produce an MP4 on your machine. In my test it wrote a 30-second listing reel in 139 lines that rendered in 15 seconds. After one setup command, Claude Code can also call Orshot to render branded video templates, with no local project. **Q: Is making videos with Claude free?** Partly. Remotion is free for individuals and companies of up to 3 employees and HyperFrames is free under Apache 2.0, but Claude Code needs a paid Claude plan from $20 a month. Connectors work on Claude's free plan. Orshot's free plan covers 100 images or PDF pages a month, and video renders start at $39 a month. **Q: Can Claude edit a video I already have?** Not by watching it. Claude reads text and images, not video files. It can write FFmpeg commands or Remotion code that trims and joins clips, and with Orshot it can drop your clip into a template, trim it with trimStart and trimEnd, and add captions transcribed from its audio. **Q: What is Orshot?** Orshot is an API for automated image, PDF and video generation from templates. You design a template in the browser, mark the parts that change, and render it from the REST API, n8n, Make, Zapier or an AI agent like Claude. It's not an AI video model: it renders your design with your data. ## Get Your First MP4 from Claude [Sign up](https://orshot.com/pricing?via=blog-claude-video-footer), build a video template in Studio or ask Claude to design it, then connect Orshot to Claude and ask for the MP4. The free plan's 100 credits a month cover images and PDFs. Video renders start on paid plans from \$39. If something doesn't work the way you expect, hit the chat button. I'm usually the one on the other end. *Researched, tested and drafted with Claude Code on my machine, then edited by me. Visuals rendered with the Orshot MCP.* --- ### [Certifier Alternative for Automated Certificate Generation](https://orshot.com/blog/certifier-alternative) > Looking for a Certifier.io alternative? Orshot offers flexible certificate generation API, better pricing, no limits, multi-page PDFs, and a free tool to test If you're issuing certificates for course completions, training programs, or events, you've probably looked at Certifier.io. It's a solid platform, but once you start scaling, you'll hit the annual certificate limits, and the pricing adds up fast. With Orshot, you get a certificate generation API with no annual caps, lower costs, and complete design flexibility. You can [test it right now with our free certificate generator](https://orshot.com/tools/certificate-generator) - no signup needed. [**Try Orshot Free**](https://orshot.com/pricing) **(100 credits a month, no card needed)** **Migrate from Certifier to Orshot quickly with AI** Install the Orshot agent skill in Claude Code, Cursor, or Windsurf to automatically translate your Certifier API calls to Orshot. The skill knows both APIs and handles the mapping for you. ```bash npx skills add orshot-hq/orshot-agent-skills ``` [Learn more about the agent skill](https://orshot.com/agents/orshot-skills) [Open the embed](https://orshot.com/templates/shared/ejko95fl/embed?view=view) ## Is This You? You might be looking for a Certifier alternative if: - You're **hitting annual certificate limits** and don't want to upgrade to an expensive tier - You need to **generate 1,000+ certificates per month** and Certifier's pricing doesn't make sense - Your **certificate designs look too templated** and you want more control - You need **multi-page certificates** (course booklets, detailed credentials) that Certifier can't create - You're a developer who wants **full API control** over certificate generation - You want to **automate from Google Sheets** or your existing LMS without complex integrations - You're paying for **add-ons** (premium branding, custom fonts) that should be included ## How Orshot Solves These Problems | What You Need | Orshot | Certifier | | :--------------------------- | :------------------------------------------------------------------------------------------------------------------ | :------------------------------------ | | **No certificate limits** | Per-render pricing, generate as many as you need | Annual limits (250 free, then capped) | | **Affordable at scale** | $39/month for 1,500 credits (1 credit = 1 certificate) | $67/month for ~1,000/month | | **Professional designs** | Canva/Figma-like [Orshot Studio](https://orshot.com/studio) | Basic certificate builder | | **Multi-page certificates** | Yes, carousel templates for booklets | No | | **Import existing designs** | [Clone from Canva](https://orshot.com/solutions/canva-template-to-api), [Import from Figma](https://orshot.com/solutions/figma-automation-via-rest-api) | Start from scratch | | **Custom fonts** | Included in all plans | Advanced plan only ($339/mo) | | **Google Sheets automation** | Built-in via n8n or Make | Requires workarounds | | **Full API control** | Dynamic parameters, any element customizable | Standard API | | **Video certificates** | MP4/WebM/GIF generation | No | | **Social Publishing** | [Built-in — 15+ platforms](https://orshot.com/docs/publish/introduction) | No | ## For Developers: The Certificate API If you're integrating certificate generation into your app or LMS, here's what the API looks like: ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_certificate_template_id", modifications: { recipientName: "John Smith", courseName: "Advanced JavaScript", completionDate: "December 24, 2025", certificateId: "CERT-2025-001", }, response: { format: "pdf", }, }), }); ``` Every template becomes an API endpoint. Pass in recipient name, course details, date - get back a PDF or PNG. [Full API docs here](https://orshot.com/docs/api-reference). ## For Non-Developers: Automate from Google Sheets Don't want to write code? Connect your spreadsheet directly to certificate generation using n8n or Make. Here's the workflow: 1. Add recipient data to Google Sheets 2. n8n triggers on new row 3. Orshot generates the certificate 4. PDF link appears in your sheet [Step-by-step tutorial here](https://orshot.com/blog/google-sheets-certificates-automation). Even simpler: this automation comes ready-made in Orshot. Click **Use this workflow** to add it to your workspace, point it at your sheet, and certificates start landing in your Google Drive. [Generate certificates from a Google Sheet workflow on Orshot](https://orshot.com/workflows/certificate-generator/embed) ![Automating certificate generation from Google Sheets with Orshot](https://orshot.com/blog/automate-sheets-certificate/automate-certificat-sheets-cover.png) ## Design Certificates That Don't Look Generic [Orshot Studio](https://orshot.com/studio) works like Canva or Figma: - **Upload your own fonts** - Match your brand typography (included free, Certifier charges $339/mo for this) - **[Smart Stacking](https://orshot.com/blog/smart-stacking)** - Elements auto-adjust when names are longer or shorter - **Save brand assets** - Reuse logos, colors across all templates - **Make any element dynamic** - Change text, images, colors via API Need multi-page certificates? Create course booklets or detailed credentials with [carousel templates](https://orshot.com/blog/introducing-carousel-templates). ## What Will You Save? | Your Volume | With Certifier | With Orshot | You Save | | :-------------------- | :------------- | :------------------ | :---------- | | **250 certs/year** | Free (limited) | Free (PDF + API) | Features | | **1,000 certs/month** | $67/month | $39/month | $336/year | | **5,000 certs/month** | $209/month | $99/month | $1,320/year | Plus, you stop paying for add-ons. Custom fonts, premium templates, bulk generation - all included. ## Who Uses Orshot for Certificates? **Course creators & educators** - Generate completion certificates automatically when students finish. Connect to Teachable, Thinkific, or your custom LMS via API. **Corporate training teams** - Issue compliance certificates, training completions, and onboarding credentials. Bulk generate from HR spreadsheets. **Event organizers** - Participation certificates for webinars, conferences, workshops. Use [Dynamic URLs](https://orshot.com/docs/integrations/dynamic-urls) so attendees can generate their own. **Certification programs** - Professional badges and credentials. Export as PNG for LinkedIn, PDF for printing. **Social media announcements** - Generate a certificate and [publish it directly to LinkedIn, Twitter/X, and 13+ other platforms](https://orshot.com/docs/publish/introduction) in one step. Great for public recognition of achievements. ## Switching from Certifier Takes ~30 Minutes **Step 1: Recreate your template (15-20 min)** Open [Orshot Studio](https://orshot.com/studio) and rebuild your certificate design. Or take a shortcut: - Screenshot your Certifier certificate → drop into [AI Template Generator](https://orshot.com/features/ai-template-generator) - Have a Canva file? [Import directly](https://orshot.com/solutions/canva-template-to-api) - Figma design? [Use the plugin](https://orshot.com/solutions/figma-automation-via-rest-api) **Step 2: Update your integration (10 min)** If you're using Zapier or Make, swap the Certifier action for Orshot. Same data mapping concept. For API integration, update the endpoint. [See the API docs](https://orshot.com/docs/api-reference). **Step 3: Test and go live** Generate a few test certificates. If something looks off, tweak in Studio. Most people are fully switched within an hour. ## Start with a Template Don't want to design from scratch? Pick a certificate template and customize: [Open the embed](https://orshot.com/templates/shared/7rphjkws/embed?view=view) Browse more [certificate templates](https://orshot.com/templates/g/certificate) ## Connect to Your Existing Tools Orshot integrates with everything you're already using: - **n8n** - Free, open-source automation ([Google Sheets tutorial](https://orshot.com/blog/google-sheets-certificates-automation)) - **Make** - Visual workflows ([integration guide](https://orshot.com/integrations)) - **Zapier** - 5,000+ app connections - **Direct API** - For custom integrations - **Dynamic URLs** - Generate via URL parameters, no code needed - **CLI** - Batch generate from command line ## Common Questions **Q: Can I use any font for my certificates?** Yes. On all paid Orshot plans, you can [upload any custom font](https://orshot.com/docs/orshot-studio/using-custom-fonts) file (TTF/OTF). Certifier often restricts custom branding features to their enterprise-level plans. **Q: How do I add verification QR codes to certificates?** We support dynamic QR codes. You can generate a unique ID for each recipient via API, create a verification URL, and embed it as a QR code directly on the certificate. **Q: Can I generate video certificates?** Yes. Stand out on LinkedIn by issuing video certificates (MP4) to your students or attendees. Orshot is one of the few platforms that treats video as a first-class citizen alongside PDF and image generation. **Q: Is there a limit on certificate generation volume?** No hard limits. Whether you verify 50 people or 50,000, our infrastructure scales with you. You simply pay a clear [monthly rate](https://orshot.com/pricing) for the render volume you need. **Q: Can I automate certificate issuing via Zapier?** Yes. Connect Typeform, Google Sheets, or your LMS to Orshot via [Zapier](https://orshot.com/docs/integrations/zapier). When a course is completed, the certificate is generated and emailed automatically. **Q: Does Orshot support multi-page certificate PDFs?** Yes. You can generate [multi-page PDF documents](https://orshot.com/blog/introducing-carousel-templates) containing all certificates in a single file, or individual certificates per recipient. Perfect for batch printing or digital distribution. **Q: Is there an agency partner program for certificate providers?** Yes. Our [Agency Partner Program](https://orshot.com/partner-program) is free to join and includes unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools for agencies managing multiple clients. **Q: What integrations does Orshot support for certificate automation?** Orshot integrates with [Zapier](https://orshot.com/docs/integrations/zapier), [Make](https://orshot.com/docs/integrations/make), [n8n](https://orshot.com/docs/integrations/n8n), Google Sheets via Airtable, and more. We also offer a full REST API with SDKs for custom integrations. ## For Agencies Building certificate automation for multiple clients? Check out the [Agency Partner Program](https://orshot.com/partner-program) — free to join, unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools. ## Ready to Switch? 1. **Try it now** → [Free Certificate Generator](https://orshot.com/tools/certificate-generator) (no signup) 2. **Sign up** → [100 free credits a month](https://orshot.com/pricing), no card needed 3. **Migrate your template** → 15-30 minutes in Studio 4. **Connect your workflow** → Same integrations you're already using Questions? Use the chat button or [email us](mailto:hi@orshot.com). We'll help you migrate. [**Get Started Free →**](https://orshot.com/pricing) --- ### [Connect Orshot with AI Agents using Orshot Remote MCP Server](https://orshot.com/blog/orshot-remote-mcp-server) > Use Orshot's image and video generation capabilities directly inside Claude, Cursor, and Windsurf without installing anything locally We are excited to announce the **[Orshot Remote MCP Server](https://orshot.com/docs/integrations/mcp-server)**. You can now connect Orshot's image and video generation capabilities to your favorite AI coding agents—like Cursor, Windsurf, and Claude—without installing anything on your machine. Use natural language to generating mockups, screenshots, PDFs, and videos directly within your coding or writing workflow. ### Why Remote? Previously, using our Model Context Protocol (MCP) server required cloning a repository, installing Node.js dependencies, and running a local process. With the new **Remote MCP (SSE)** support, connection is instant. No terminal commands, no maintenance. Just add one URL and you are ready to go. ### How to Connect #### Cursor (Agent Mode) 1. Go to **Settings** > **General** > **MCP Servers**. 2. Click **+ Add new MCP server**. 3. Select **SSE** as the type. 4. Enter the URL: `https://mcp.orshot.com/mcp` #### Claude Orshot is in the Claude connectors directory. Open the [Orshot listing](https://claude.ai/directory/orshot) and click **Connect**. In Claude Code, run `claude mcp add orshot --transport http https://mcp.orshot.com/mcp`. #### Windsurf & VS Code Look for "Remote MCP" or "SSE" configuration in your settings and use the same URL: `https://mcp.orshot.com/mcp`. For **VS Code** users with the MCP extension, you can also add this to your `.vscode/mcp.json` or global configuration: ```json { "servers": { "orshot": { "type": "sse", "url": "https://mcp.orshot.com/mcp" } } } ``` ### How to Use Since the remote server is shared, it doesn't know your API key by default. You simply provide it in your prompt when you ask for a task. **Example Prompts:** - "Generate a website screenshot of apple.com. Here is my API key: os-..." - "List all my studio templates and pick one to generate a mockup using this logo. API Key: os-..." - "Create a PDF certificate for 'John Doe' using the 'Certificate' template. API Key: os-..." - "Generate a 5-second MP4 video from my 'Intro' template. API Key: os-..." ### Capabilities The server exposes powerful tools to your AI agent: - **Unified Generation**: Automatically detects if you are using a Library or Studio template. - **Multimedia Support**: Generate Images (PNG/JPG/WEBP/AVIF), Videos (MP4/WebM/GIF), and PDFs. - **Documentation Access**: The agent can look up Orshot API docs for you to answer technical questions. - **API Utilities**: Check your API status and validate your key. ### Learn More To learn more about configuration options and detailed usage instructions, check out the documentation. [Read MCP Server Documentation](https://orshot.com/docs/integrations/mcp-server) --- ### [Create Better Videos with Audio and Motion](https://orshot.com/blog/video-audio-improvements) > Build richer video templates with stock media, Ken Burns motion, voiceovers, ambient audio, word-synced captions and animated waveforms in Orshot. Orshot video templates can now do more of the work that usually happens after design: find the right footage, add cinematic motion, generate narration, mix audio and keep captions in sync. The result is a reusable template that can produce polished launch videos, ads, social posts and personalized reels in [Studio](https://orshot.com/features/orshot-studio), through the API or with an AI agent. [Watch the video](https://orshot.com/blog/video-audio-improvements/agent-demo.mp4) _Created with Orshot for agents in ChatGPT._ ## More movement, less manual editing Start with stock photos or video, then build the pacing directly into the template. - Search and place stock images and video without leaving Studio - Add **Ken Burns**, pulse, drift, float, rotate and other ambient motion - Combine enter and exit animations with precise layer timing - Use more page transitions for multi-scene video - Preview the composition on the visual timeline before rendering ## Give every template a voice Audio now lives with the template instead of being a separate editing step. - Generate a voiceover from your script and choose the voice that fits the story - Make narration dynamic to speak different copy on every render - Add ambient audio, music and sound effects across multiple tracks - Trim, offset, fade, loop, mute and balance each track independently - Generate word-synced captions and choose from social-ready reveal styles - Add a waveform that animates with the selected audio track Audio, captions and timing are saved with the template and included automatically in video renders. ## Use it from Studio, the API or an agent **In Studio**, build the complete video visually: footage, motion, voiceover, sound, captions and timing. **With the API**, send new content to the same template. If the voiceover script is set as a dynamic parameter, each render can speak different words: ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer ", }, body: JSON.stringify({ templateId: "", modifications: { headline: "Turn one launch into a week of content", voiceover: "Create once, personalize every version, and publish everywhere.", hero_video: "https://example.com/launch.mp4", }, response: { format: "mp4", type: "url" }, }), }); const result = await response.json(); console.log(result.data.content); ``` The parameter names come from your template, so you decide which text, narration, images and video stay dynamic. **With an agent**, describe the finished video instead of assembling every step yourself: > Create a 15-second vertical launch reel with stock video, Ken Burns motion on stills, a concise voiceover, word-synced captions, ambient audio and a branded CTA. Keep the headline and narration dynamic. Orshot's MCP server can turn that brief into a reusable template, render it and continue into your publishing workflow. ## Built for repeatable video production These improvements are useful anywhere the story changes but the visual system should stay consistent: feature launches, UGC-style ads, product updates, real-estate videos, personalized campaigns and scheduled social content. We are continuing to improve video composition, audio authoring and agent-led template creation. The goal is simple: fewer editing handoffs and better output from every reusable template. [Explore Video Generation](https://orshot.com/docs/video-generation) --- ### [Creatopy Alternative for Automated, On-Brand Ad Generation](https://orshot.com/blog/creatopy-api-alternative) > Design an ad once, then render it in every size and format from a self-serve API. Flat credits, not Creatopy's seat pricing. 100 free credits a month, no card. Creatopy has a new name. As of late 2025 it's **The Brief**, the latest identity for a tool that started as Bannersnack and became Creatopy along the way. With the rename it leaned harder into being a full display-advertising platform, with HTML5 banner ad units, dynamic creative, and ad serving to 25+ networks. That's a fair trade if you run paid display at scale. But it's a lot of platform if all you wanted was a clean way to turn one design into on-brand images, PDFs, and video from your own code. You're paying per seat, and the render API sits behind an Enterprise contract. Orshot is the lean alternative for that second job. One visual template becomes a REST endpoint, and a single call renders it in every size and format you need. The API is self-serve on every plan, including the free one. [**Try Orshot free**](https://orshot.com/pricing "target=_blank") with 100 credits a month, no card. **Migrate from Creatopy to Orshot quickly with AI** Install the Orshot agent skill in Claude Code, Cursor, or Windsurf to automatically translate your Creatopy API calls to Orshot. The skill knows both APIs and handles the mapping for you. ```bash npx skills add orshot-hq/orshot-agent-skills ``` [Learn more about the agent skill](https://orshot.com/agents/orshot-skills) ## Where Creatopy starts getting in the way The editor isn't the problem. People like it for spinning up ad variations fast. The friction shows up the moment you want to *automate* that output, or just pay for what you actually use. A few patterns come up again and again in public reviews ([Trustpilot](https://www.trustpilot.com/review/www.thebrief.ai "target=_blank rel=nofollow"), [G2](https://www.g2.com/products/creatopy/reviews "target=_blank rel=nofollow"), [GetApp](https://www.getapp.com/marketing-software/a/creatopy/ "target=_blank rel=nofollow")): - **The render API is an Enterprise line item.** It exists, and it's a genuine REST API. But "API access" only shows up on the custom-priced Enterprise tier, not the self-serve $29–$79/mo plans. To automate anything, you book a sales call first. - **You pay per seat, and there's no free plan.** You get a 7-day trial, then per-seat pricing that climbs with the team. Trustpilot has a steady run of reviewers reporting charges after they cancelled, or being auto-enrolled into a paid "Pro" trial they thought was free. - **Exports don't always match the editor.** This one carried over from the Creatopy era: the rendered file can drift from what you designed. - **Three rebrands in.** Long-time Bannersnack and Creatopy users describe being migrated twice into a product they're still adjusting to. None of that makes Creatopy a weak product. If your core job is HTML5 animated banner ad units for ad networks, DCO that builds creative from a feed, and ad serving, then Creatopy is genuinely built for it and Orshot isn't. But once rendering on-brand creative becomes recurring, programmatic work, the platform starts sitting between you and the output. ## One template, every size, without re-exporting Here's how Orshot works. You design the ad once in [Orshot Studio](https://orshot.com/studio), a drag-and-drop, Figma-like editor. Lock your brand fonts, colors, and logo, then mark only the parts that change (headline, price, product image) as parameters. From there the design is an **API endpoint**, and every render comes back pixel-exact and on-brand, whether you make one or ten thousand. ![Orshot Smart Resize panel in Studio re-laying one ad design into Story, Square, Landscape and Open Graph sizes](https://orshot.com/blog/smart-resize/panel.webp) Because the layout is a template and not a fixed file, [Smart Resize](https://orshot.com/features/smart-resize) re-flows it into any canvas on demand. Here's one design rendered as a Story, a square post, and a landscape banner, all from a single call: ![A food delivery ad template rendered as a 1080x1920 Instagram Story via Orshot Smart Resize](https://orshot.com/blog/creatopy-api-alternative/resize-story.webp) ![The same food delivery ad rendered as a 1080x1080 square via Orshot Smart Resize](https://orshot.com/blog/creatopy-api-alternative/resize-square.webp) ![The same food delivery ad rendered as a 1200x630 landscape banner via Orshot Smart Resize](https://orshot.com/blog/creatopy-api-alternative/resize-og.webp) That's one template and one request. No redesign, no re-export per format: ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_ad_template_id", modifications: { headline: "Order your favorite food now", cta_text: "Download Now", }, response: { type: "url", format: "png" }, size: "instagram-story", extraSizes: ["1080x1080", "1200x630"], }), }); ``` Presets cover `instagram-story`, `facebook-story`, `linkedin-post`, `youtube-thumbnail`, `og-image`, `leaderboard-ad`, `medium-rectangle-ad`, and more, or you can pass any `WIDTHxHEIGHT`. You don't have to start from a blank canvas, either. The [ad template gallery](https://orshot.com/templates/g/ads "target=_blank") has ready-made ads to drop your copy into, and anything you've already built in [Canva](https://orshot.com/solutions/canva-template-to-api) or [Figma](https://orshot.com/solutions/figma-automation-via-rest-api) imports and becomes an endpoint too. ## The same design as an image, a PDF, *and* a video This is where one template pays off twice. Swap `"png"` for `"pdf"`, `"mp4"`, `"webp"`, or `"gif"` in the same call, and you get a different format out of the same design. No separate tool, no separate export. - **Video ads from the same template.** Studio has a timeline with per-layer animations and video layers, so the ad you designed also exports as an animated **MP4, WebM, or GIF**. Creatopy does video and HTML5 too, but Orshot's comes from the same `/v1/studio/render` call you already wrote. - **PDF, which Creatopy doesn't do.** The same design renders to a print-ready PDF, which helps when an "ad" is really a one-pager, a menu, or a flyer. - **Modern still formats.** AVIF and WebP sit alongside PNG and JPG, so one [image generation](https://orshot.com/solutions/image-generation-api) endpoint hands you a small, modern file. One template, one credit pool, every format. A credit is just 1 image, 1 PDF page, or 1 second of video, with no per-seat math. ## Banners on autopilot (API, n8n, Make, Zapier, bulk) Creatopy's automation lives on the Enterprise tier. On Orshot it's the default, and every template is an endpoint you can drive from anywhere: - **REST API and SDKs** for Node, Python, Ruby, and PHP. Every template is a render endpoint. - **Zapier, Make, and n8n nodes** that render a fresh banner whenever a row lands in Airtable, a product changes in your CMS, or a deal closes. - **[MCP server](https://orshot.com/agents "target=_blank")** so you can point Claude, Cursor, or ChatGPT at it and let an agent generate ad sets on a webhook or cron. Tell it "render the launch banner in five sizes and drop them in our bucket," and it does, no clicks. - **Bulk render** that loops a spreadsheet of products, prices, or locales and produces the whole campaign in one batch. That's the core of [automated image generation](https://orshot.com/solutions/image-generation-api) and [social media content automation](https://orshot.com/solutions/ai-marketing-automation-for-agencies). Here's an AI agent driving Orshot through the MCP server, going from a plain prompt to finished, on-brand renders with no clicks: [Using Orshot from an AI agent via the MCP server](https://www.youtube.com/watch?v=OhgdZtqEQK0) ```javascript // Generate the whole campaign from a product list for (const product of products) { await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_ad_template_id", modifications: { headline: product.headline, cta_text: product.cta, hero_food_photo: product.imageUrl, }, response: { type: "url", format: "png" }, extraSizes: ["instagram-story", "1080x1080", "1200x630"], }), }); } ``` ## Orshot vs Creatopy, at a glance They overlap in the editor and diverge everywhere else. Creatopy _builds and serves display ads_ for ad networks. Orshot _renders and automates_ the on-brand creative you've already designed, across image, PDF, and video. | Feature | Orshot | Creatopy | | :-- | :-: | :-: | | Drag-and-drop visual editor | Yes | Yes | | Self-serve REST API (no enterprise contract) | Yes | Enterprise only | | Auto-resize one design to every size | Yes | Yes | | Animated video output (MP4/WebM/GIF) | Yes | Yes | | PDF export from the same template | Yes | No | | HTML5 banner ad units (.zip) for ad networks | No | Yes | | Ad serving to Google/Meta + 25+ networks | No | Yes | | Bulk render from a spreadsheet/CSV | Yes | Enterprise feeds | | Zapier / Make / n8n + MCP for AI agents | Yes | No | | Import from Canva / Figma | Yes | No | | Publish to 15+ social platforms | Yes | No | | Free tier, no credit card | Yes | No | | Flat credits (1 = 1 image / PDF page / video sec) | Yes | No | | Entry price | $39/mo flat (API included) | $29/mo per seat (API = Enterprise) | > **Bottom line:** Pick Creatopy if you live in display advertising, with HTML5 ad units, DCO, and ad serving. Pick Orshot if you want a self-serve API, flat pricing, and pixel-exact creative across image, PDF, and video. Plenty of teams run both: serve display ads in one, automate every other on-brand asset in the other. ## Common questions **Q: Wait, is Creatopy now called The Brief?** Yes. Creatopy rebranded to The Brief in late 2025, after starting life as Bannersnack, and creatopy.com now redirects to thebrief.ai. People still search 'Creatopy,' so that's the name used here, but the live product is The Brief. **Q: Does Creatopy have an API, and how is Orshot's different?** Creatopy does have a REST render API, but access is an Enterprise-tier, custom-priced line item, so it isn't included on the self-serve $29 to $79/mo plans. Orshot's render API ([/v1/studio/render](https://orshot.com/docs/api-reference/render-from-studio-template)) is included on every paid plan and the free tier, with no sales call required. **Q: Can Orshot make HTML5 banner ads for ad networks?** No, and that's the honest answer. Orshot renders flat images, PDFs, and video (MP4/WebM/GIF with per-layer animations). It does not export interactive HTML5 ad units (.zip files with ClickTags) or serve ads to networks. For static and video ad creative produced on-brand at scale, Orshot fits. For HTML5 ad units and ad serving, Creatopy is the right tool. **Q: How does Orshot's pricing compare?** Orshot is flat: free to start with 100 credits a month and no card, then $39/mo for 1,500 credits, where 1 credit is 1 image, 1 PDF page, or 1 second of video. Creatopy has no free plan (just a 7-day trial), prices per seat from $29/mo billed annually, and keeps API access on the Enterprise tier. See the [pricing page](https://orshot.com/pricing) for the full breakdown. **Q: Can Orshot resize one ad into every format automatically?** Yes, that's Smart Resize. Design once and Orshot deterministically re-lays-out the design to fit any canvas: Story, square, landscape banner, leaderboard, or YouTube thumbnail. You can render multiple sizes in a single API call with extraSizes. **Q: Is Orshot a direct replacement for Creatopy?** Not one-to-one, since they solve adjacent problems. Creatopy (now The Brief) is a display-ad platform that builds HTML5 banner units and serves them to ad networks. Orshot is a visual editor plus a self-serve API that renders on-brand images, PDFs, and video from one template. Many teams use Creatopy for ad serving and Orshot to automate everything else. ## Bottom line If Creatopy has grown into more platform than you need, an ad-network suite with the API locked behind Enterprise, then Orshot is the leaner path. Design your banner once, then generate every on-brand variation (image, PDF, and video) from one self-serve API and one predictable plan. No enterprise contract, no per-seat bill. Just the design you made, in every size you need, whenever you need it. [**Get started free →**](https://orshot.com/pricing "target=_blank") with 100 credits a month, no card. --- ### [Documint Alternative for Bulk PDF Generation](https://orshot.com/blog/documint-alternative) > Documint charges $49 for 200 documents a month. Orshot is $39 for 1500 PDF pages. Generate designed PDFs from Airtable or n8n without the 24-hour link expiry Orshot is the best Documint alternative for bulk PDF generation: \$39 a month for 1,500 PDF pages against Documint's \$49 for 200 documents. You pay \$10 less for 7.5 times the one-page documents. The file URL comes back in the API response with no 24-hour expiry to work around, and the same template renders as a PNG or an MP4. ![Entry plans side by side: Documint Silver at $49 a month for 200 documents against Orshot Launch at $39 a month for 1,500 PDF pages, with three real certificate renders from Orshot](https://orshot.com/blog/documint-alternative/entry-plan.webp) The gap holds as volume grows. At 1,000 one-page documents a month Documint Gold is \$149 and Orshot is still \$39. Documint only pulls ahead on long documents, because it bills per document and Orshot bills per page. If you need e-signatures or line-item tables that total themselves, Documint still fits better. ## Documint vs Orshot at a Glance Documint is a no-code document generator. You build a PDF template in its block-style editor, connect Airtable, HubSpot, Zapier, Make or its REST API, and each record becomes a PDF. Orshot builds the template in a visual design editor where every layer you mark as dynamic becomes an API field. ![Documint at a glance: PDFs from Airtable, HubSpot and forms, PDF only with the link stored 24 hours, automated with Airtable, HubSpot, Zapier, Make and Coda, from $49 a month for 200 documents, beside its homepage](https://orshot.com/blog/documint-alternative/documint-at-a-glance.webp) | Feature | Orshot | Documint | | :------------------ | :----------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------- | | **Output formats** | PDF, PNG, JPG, WebP, AVIF, MP4, WebM, MOV, MKV and GIF from the same template | PDF only | | **Editor** | [Orshot Studio](https://orshot.com/features/orshot-studio), a Figma-like canvas where any layer goes anywhere | Block-style drag and drop editor built from rows and columns | | **Generated files** | A file URL in the API response, or pushed to your Drive, Dropbox or S3 | The PDF link is stored for 24 hours. Airtable and HubSpot keep a copy in the record | | **Billing unit** | 1 credit per PDF page, image or video second, refilled every month | 1 document at any page count. Annual plans grant the whole year's quota upfront | | **Free option** | 100 credits every month, no card | 14-day trial on Silver. Inactive templates make Documint-branded test PDFs that don't count | | **E-signatures** | Not built in | Documint Sign, 5 to 50 envelopes a month | | **Tables and logic**| No table element or show/hide rules. Long text flows onto new pages | Repeat/loop rows, display rules and `$calc` math functions | | **n8n** | Node built by Orshot and verified by n8n, plus Make, Zapier and an Airtable extension | Community node (v0.1.2, August 2025), plus Make, Zapier, Airtable, HubSpot, Coda and Softr | | **Template import** | Canva, Figma, HTML, Polotno, Placid and Abyssale | Templates are built in the editor or cloned from its gallery. No PDF or Word import | | **AI agents** | [Orshot for agents](https://orshot.com/agents), a hosted MCP server that lists, renders and designs templates | Through third-party MCP servers (Zapier, Pipedream, Composio) | Documint details checked against [documint.me/pricing](https://documint.me/pricing "target=_blank rel=nofollow"), its [documentation](https://docs.documint.me/ "target=_blank rel=nofollow") and the npm registry on October 19, 2026. ### Orshot vs Documint in Numbers ## Which Jobs Fit Documint and Which Fit Orshot Documint and Orshot overlap on certificates and simple invoices, and split apart everywhere else. Most "Documint alternative" lists skip this part, so here it is first. ![Which tool for which job: Documint for signed contracts, self-totalling invoice tables and long reports billed per document; Orshot for certificates with a share image, tickets and flyers with the social post, and the PDF step in n8n, Make, Zapier or Airtable](https://orshot.com/blog/documint-alternative/jobs-picker.webp) | The job | Better fit | Why | | :----------------------------------------------------------- | :--------- | :------------------------------------------------------------------------------------ | | Contract or NDA that has to be signed | Documint | Documint Sign sends it for signature. Orshot doesn't collect signatures | | Invoice with a line-item table that totals itself | Documint | Repeat/loop rows plus `$sum` and `$calc`. Orshot needs the totals sent in | | 20-page report, 1,000 a month | Documint | Billed per document, so page count doesn't change the price | | Course certificate plus a LinkedIn share image | Orshot | Same template, change `format` from `pdf` to `png` | | Event ticket or badge plus a social post | Orshot | One render for the PDF, another for the post, with optional publishing to 15+ platforms | | Real estate flyer plus an Instagram post and a short video | Orshot | Documint can't render images or video | | Branded one-pager or proposal cover with free layout | Orshot | Layers sit anywhere on a canvas, not in rows and columns | | PDF link that goes straight into an email or CRM field | Orshot | The file URL is in the API response. Documint stores its link for 24 hours | | PDF step inside an n8n workflow | Orshot | Verified node on n8n.io. Documint has a community node | If your list is mostly the top three rows, Documint covers them and Orshot doesn't. If it's mostly the bottom six, keep reading. ## Where Documint Setups Get Stuck The friction shows up in the steps around the PDF, and most of it is written in Documint's own docs. ![The same form-to-email automation step by step: with Documint it is form response, Documint generate, HTTP get file, upload to Drive, email the link; with Orshot it is form response, Orshot render, email the link](https://orshot.com/blog/documint-alternative/fewer-steps.webp) - **Links that expire.** The API reference says Documint stores the PDF link for 24 hours and suggests uploading the PDF to a cloud. The Make and Zapier guides say the URL "is only available for a few hours" and add a cloud storage step after every generation. - **Branded PDFs while you test.** Inactive templates make test documents with Documint branding at the bottom. Activating a template removes it, and from then on every test counts against your quota. - **No import.** Templates are built in the block editor or cloned from Documint's gallery. An existing PDF or Word design gets rebuilt by hand. - **PDF only.** Documint's features page and docs describe one output: PDF. Images, carousels and video need another product. - **Airtable automation needs a script.** A button or link generates a PDF on every plan. Generating on a trigger means pasting Documint's script into an Airtable automation. ## How I Tested Disclosure: I built Orshot. I didn't open a Documint account for this post. Everything about Documint comes from its pricing page, its documentation at docs.documint.me, its features page and its n8n package on npm, read on October 19, 2026. On the Orshot side I built and rendered each example end to end: - Rendered an A4 course certificate as a PDF, opened it with `pdfinfo`, then rendered the same template as a PNG and as a square and a story through Smart Resize - Rendered an A4 invoice with three line items and a stacked total - Priced 100, 200, 1,000 and 5,000 documents a month on both pricing pages, at 1, 3 and 10 pages a document ## 1. Generate Certificates and Tickets from Airtable or a Form **Pick this if** a form response or an Airtable record should turn into a designed one-page PDF, which is the most common Documint job after invoices. A certificate has very little data: who, what, when and an ID. Everything else is design, and that's where a canvas editor beats a block editor. ### Step 1: Mark the four fields that change In Orshot Studio you design on a canvas the way you would in Figma or Canva: text, images, shapes, your brand fonts and colors. Mark a layer as dynamic and it becomes an API field with the name you give it. For the certificate below I marked four layers: `recipient_name`, `course_name`, `completion_date` and `certificate_id`. The border, the logo and the signature stay fixed in the design. ![The certificate template open in Orshot Studio with the recipient name layer selected: the layer shows its API field name recipient_name, and the panel on the right shows its font, size and text mode set to fit](https://orshot.com/blog/documint-alternative/studio-certificate-layer.webp) ### Step 2: Render it from the record or the form Point your form tool's webhook, a Zapier step or a small function at the render endpoint. This is the exact call I used for the certificate below. ```javascript const res = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: `Bearer ${process.env.ORSHOT_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "YOUR_CERTIFICATE_TEMPLATE_ID", modifications: { recipient_name: "Priya Sharma", course_name: "Airtable Automation Fundamentals", completion_date: "October 19, 2026", certificate_id: "CERT-2026-0412", }, response: { type: "url", format: "pdf", fileName: "CERT-2026-0412" }, }), }); const { data } = await res.json(); console.log(data.content); // the PDF URL ``` ![A real certificate PDF rendered by Orshot from four fields: Priya Sharma, Airtable Automation Fundamentals, October 19, 2026 and certificate ID CERT-2026-0412](https://orshot.com/blog/documint-alternative/certificate-render.webp) In Airtable you can skip the code. The Orshot extension maps fields to template layers, renders one record or a whole view, and writes the file into an attachment field. The [Airtable attachment automation guide](https://orshot.com/blog/airtable-image-automation) covers the script route too. ### Step 3: Or use the sheet workflow If recipients live in a Google Sheet, this built-in workflow renders one certificate PDF per row and saves it to Google Drive. Hit "Use this workflow" to copy it, then swap in your own certificate template. Forms work the same way. The [Tally form to PDF tutorial](https://orshot.com/blog/tally-form-image-pdf-generation) shows the webhook setup, and the free [certificate generator](https://orshot.com/tools/certificate-generator) makes a handful of certificates by hand with no sign-up. ### Things that bit me - **Test with your longest real name.** A 30-character name still fit on one line because this template's name layer has its text mode set to "fit", which shrinks the font instead of wrapping. Set that on any layer that takes names. - **The PDF was titled "about:blank".** Passing `fileName` fixed it, because it also becomes the PDF's title. Margins, CMYK and DPI go in `pdfOptions` on the same call. **Best for:** certificates, tickets, badges and letters where the design matters and the data is a few fields. One page is 1 credit, so 100 a month are free. > Orshot solved every challenge with clarity and precision, and the entire PDF automation came together flawlessly. > I've never felt more confident in a technical build. Highly recommend Orshot. > > — David Furlong, Founder, Return to Centre ## 2. Generate Invoices and Quotes with Line Items **Pick this if** you send invoices, quotes or purchase orders with line items from Airtable, Stripe, Shopify or a sheet, and today a Documint repeat/loop block lays them out. This is the part where Documint has a real edge, so here's exactly how the two differ. ### Step 1: Send line items as columns Documint loops over an array and runs `$sum` or `$calc` in the template. Orshot has no table element and no math, so the loop and the total move into the step that calls the API. The layout is one text layer per column with one line per item. The total sits under the list with [Smart Stacking](https://orshot.com/docs/orshot-studio/smart-stacking), so it moves with the item count. ```javascript const items = [ { product: "Brand kit setup", qty: 1, price: 450 }, { product: "Social templates", qty: 12, price: 35 }, { product: "Monthly report design", qty: 1, price: 300 }, ]; const money = (n) => "$" + n.toLocaleString("en-US", { minimumFractionDigits: 2 }); const modifications = { "title:invoiceNumber": "INV-2026-0142", invoice_date: "October 19, 2026", client_name: "Northwind Traders", items_product: items.map((i) => i.product).join("\n"), items_qty: items.map((i) => String(i.qty)).join("\n"), items_total: items.map((i) => money(i.price * i.qty)).join("\n"), total: money(items.reduce((sum, i) => sum + i.price * i.qty, 0)), }; // Same POST /v1/studio/render call as the certificate, with // response: { type: "url", format: "pdf", fileName: "INV-2026-0142" } ``` ![A real A4 invoice PDF rendered by Orshot: INV-2026-0142 for Northwind Traders with three line items and a $1,170.00 total](https://orshot.com/blog/documint-alternative/invoice-render.webp) ### Step 2: Try the invoice template live This is the same invoice template. Click a layer to see its field name, change the line items, or hit "Copy This Template" to save it to your workspace and render it with the code above. Orders in Airtable? The [Airtable invoice workflow](https://orshot.com/workflows/invoices-from-airtable) renders one invoice per new record and files it in Google Drive, no code. ### Things that bit me - **Keep each item on one line.** The three columns line up because every item is one line. A product name long enough to wrap pushes its qty and amount out of line, so size the column for your longest name. - **Totals are your job.** Documint works out `$sum` in the template. On Orshot the number arrives finished, which also means it's the same number your accounting system already has. - **Two pages cost two credits.** A quote with a terms page is 2 credits on Orshot and 1 document on Documint. The pricing section below shows where that flips the bill. **Verdict:** Documint is better for invoices whose rows change shape every time (grouping, filtering, tax lines). Orshot is better when the invoice is a designed document with a short list of items, or when the same order also needs a receipt image or a shipping label. ## 3. Skip the Download and Upload Steps **Pick this if** the PDF link goes into an email, a CRM note or a Slack message, and your automation currently has an HTTP step and a storage step after the PDF. Documint's API docs say the PDF link is stored for 24 hours. Its Make and Zapier guides say the URL "is only available for a few hours", which is why both guides add a cloud storage step after every generation. Airtable and HubSpot keep a copy in the record, so those two setups don't notice. ![Where the PDF link goes: Documint stores its link for 24 hours and its guides add an upload step, Orshot returns a file URL that goes straight into Gmail, Slack, Google Drive, Dropbox or Amazon S3](https://orshot.com/blog/documint-alternative/link-lifetime.webp) ### Step 1: Use the URL as is Every Orshot render returns the file URL in the API response. Put it in the email, the CRM field or the Slack message and delete the download-and-reupload steps. ### Step 2: Or send it to your own storage Paid plans push every render to your Google Drive, Dropbox or S3 bucket, so the file lives in your own account from the start. ### Step 3: Batch a few hundred with a webhook For a batch of certificates or statements, run each render in the background. Pass your Airtable record ID as `metadata` and it comes back in the webhook, so each PDF lands on the right row. ```javascript body: JSON.stringify({ templateId: "YOUR_TEMPLATE_ID", modifications: { recipient_name: "Priya Sharma", course_name: "Data Analysis" }, response: { mode: "async", type: "url", format: "pdf" }, webhook_url: "https://acme.com/hooks/orshot", metadata: "rec8412XyZ", }), // Your webhook receives: // { // "event": "render_job.finished", // "job": { "id": 1204, "status": "succeeded", "result": { ... }, "metadata": "rec8412XyZ" } // } ``` Page ranges, CMYK, DPI and compression per render are in the [PDF generation reference](https://orshot.com/docs/pdf-generation). **Best for:** statements, confirmations and certificates that go out by email or land in a CRM, where the extra storage steps were only there because of the expiry. ## 4. Render the Same Template as an Image or Video **Pick this if** the PDF is rarely the last file the job needs: the certificate also wants a LinkedIn image, the listing wants an Instagram post, the event ticket wants a story. Documint's features page and docs describe one output, PDF. On Orshot the image comes from the template that makes the PDF. You change `response.format` from `pdf` to `png` and keep the same data. ![The same certificate template and data rendered twice by Orshot: an A4 PDF for the email and a 2246 by 1588 PNG for LinkedIn, one credit each](https://orshot.com/blog/documint-alternative/same-template-two-formats.webp) ### Step 1: Change the format The call is the certificate call from part 1 with one line changed: ```javascript response: { type: "url", format: "png" }, ``` ### Step 2: Resize for each platform in the same call [Smart Resize](https://orshot.com/features/smart-resize) renders the design at another size, like a square post or a vertical story, from the same call. Pass `size: "instagram-story"` for one size, or `extraSizes` for several copies from one render. ### Things that bit me - **A plain resize pads.** My first square and story renders kept the certificate's A4 proportions and padded the rest, because the template had no sizes set up. Add the size in the Smart Resize panel and adjust it once, and every render after that uses the adjusted layout. - **Video needs a paid plan.** The free plan renders PDFs and images. MP4 output starts on Launch. ### Step 3: Post it Add a `publish` object and Orshot [posts the render](https://orshot.com/features/social-publishing) to your connected accounts on 15+ platforms, or saves it as a draft, for \$12 a month per account. **Best for:** certificates, tickets, listings and announcements where the PDF and the social image should match without a designer touching both. ## 5. Swap the Documint Step in Airtable, Make, Zapier and n8n **Pick this if** you keep your current automation and replace one step. The trigger and the field mapping stay the same. The download step after it usually goes away, because the Orshot URL goes straight into the next step. ![Swapping the Documint step: in Airtable, Make, Zapier and n8n remove Documint's generate step and its cloud upload, add the Orshot step set to PDF](https://orshot.com/blog/documint-alternative/swap-the-step.webp) What changes in each tool once the new step is in: - **Airtable.** Install the Orshot extension, pick the template, map fields to layers and point it at the same attachment field. For automatic generation on a trigger, use the Orshot Airtable workflow instead of Documint's automation script. - **Make.** Each value maps to its own field, so there's no JSON to escape. Keep a download step only if the next module needs the file itself, like an email attachment. - **Zapier.** Set the format to PDF and map each column to its layer. The file URL goes straight into the email or CRM step. - **n8n.** Pick the template in the Orshot node, map each field, and set Response Format to PDF and Response Type to URL. Documint's n8n option is a community package you install yourself. - **Bubble, Glide and Softr.** Call the API from an API connector, or use a signed dynamic URL that renders a PDF or PNG when the link is opened, with no API call at all. Name each Orshot layer after the Documint field you already send (`client_name` stays `client_name`) and the mapping is a one-to-one copy. The apps for all of these are listed on the [integrations page](https://orshot.com/integrations). Rather not run a separate automation tool? Orshot's built-in workflows trigger from Google Sheets, Airtable, Google Forms, HubSpot or a webhook, render the template, and send the file to Slack or Drive or back to the row. **Rebuild one Documint template and compare** — Design it in Studio, render it from your real records, and use the URL straight from the response. 100 free credits a month, no card. [Start free](https://orshot.com/pricing?via=blog-documint-middle) ## Documint Pricing Documint costs \$49 to \$299 a month billed monthly, or \$39 to \$249 a month billed annually, for 200 to 5,000 documents a month. Checked on [documint.me/pricing](https://documint.me/pricing "target=_blank rel=nofollow") on October 19, 2026. Each document counts once whatever its page count, so a 40-page report and a 1-page certificate cost the same. | Documint plan | Billed monthly | Billed annually | E-sign envelopes | | :------------ | :--------------------- | :--------------------------- | :--------------- | | **Silver** | \$49 for 200 a month | \$39 a month for 2,400 a year | 5 a month | | **Gold** | \$149 for 1,000 a month| \$124 a month for 12,000 a year| 25 a month | | **Platinum** | \$299 for 5,000 a month| \$249 a month for 60,000 a year| 50 a month | A few details from the same page and its FAQ: - Annual billing is 20% off and "includes all your merges and envelopes upfront", so the yearly quota can be spent in any month - Extra documents and envelopes come as add-on packs per plan - Every new account gets a 14-day trial on Silver. There's no free plan - Enterprise pricing is on request, and Documint says it is not currently SOC 2 compliant ## Orshot Pricing Orshot uses 1 credit for 1 PDF page, 1 image or 1 second of video. Credits refill every month, every plan includes unlimited templates, and annual billing gives 2 months free. Prices from orshot.com/pricing on October 19, 2026. | Orshot plan | Per month | Credits a month | Team members | | :---------- | :-------- | :-------------- | :----------- | | **Free** | \$0 | 100 | 1 | | **Launch** | \$39 | 1,500 | 2 | | **Launch** | \$99 | 5,000 | 4 | | **Grow** | \$160 | 20,000 | 6 | | **Grow** | \$280 | 40,000 | 8 | | **Scale** | \$349 | 75,000 | 14 | Paid plans add video, your own storage and team members. Rendering pauses at your limit, so the bill is the plan price. Per one-page document, the gap is widest at the volumes most Documint customers run. Each bar below is the cheapest plan that covers the volume, divided by the documents it buys. ![Price per one-page document by monthly volume: at 200 a month Documint is $0.245 and Orshot $0.195; at 1,000 a month $0.149 against $0.039; at 5,000 a month $0.060 against $0.020](https://orshot.com/blog/documint-alternative/price-per-document.webp) ## Cost per Month by Document Length Documint's price depends on how many documents you make, and Orshot's on how many pages, which is the comparison that decides it. Each cell is the cheapest plan, billed monthly, that covers the volume. | Documents a month | Documint | Orshot, 1 page | Orshot, 3 pages | Orshot, 10 pages | | :---------------- | :------------- | :------------- | :-------------- | :--------------- | | **100** | \$49 Silver | \$0 Free | \$39 | \$39 | | **200** | \$49 Silver | \$39 | \$39 | \$99 | | **1,000** | \$149 Gold | \$39 | \$99 | \$160 | | **5,000** | \$299 Platinum | \$99 | \$160 | \$349 | ![Monthly cost of 1,000 documents at 1, 3 and 10 pages each: Documint Gold is $149 at every length, Orshot is $39, $99 and $160](https://orshot.com/blog/documint-alternative/cost-by-document-length.webp) The pattern is simple: - **Short documents** (certificates, tickets, one-page invoices, badges): Orshot costs less at every volume, and the first 100 a month are free. - **Long documents**: Documint costs less once a document passes about 7 pages at 200 a month, 5 pages at 1,000 a month, or 8 pages at 5,000 a month. - **In between**, a 3-page quote at 1,000 a month is \$99 on Orshot and \$149 on Documint. ## A Year of Documents: Yearly Quota vs Monthly Credits Documint's annual plans hand you the year's documents on day one, while Orshot's credits come monthly and you can change plans month to month. That decides when you're allowed to use what you paid for. Here's what that does to a year of real jobs: | A year of documents | Documint, monthly | Documint, annual | Orshot, monthly | | :-------------------------------------------------- | :---------------- | :--------------- | :-------------- | | 150 one-page invoices every month | \$588 Silver | \$468 Silver | \$468 Launch | | 2,000 one-page certificates in June, nothing else | \$299 Platinum | \$468 Silver | \$99 Launch | | 1,000 ten-page reports every month | \$1,788 Gold | \$1,488 Gold | \$1,920 Grow | | 4,000 one-page tickets and badges every month | \$3,588 Platinum | \$2,988 Platinum | \$1,188 Launch | ![A year of 2,000 certificates all in June: Documint annual Silver is $39 every month for $468 a year, Orshot is Launch for June and Free the other 11 months for $99 a year](https://orshot.com/blog/documint-alternative/year-timeline.webp) Two things stand out. A seasonal batch on Orshot costs one month of a bigger plan, because you upgrade for the busy month and drop back to Free after. For steady long reports, Documint's annual Gold plan costs \$432 a year less than Orshot billed monthly, or \$112 less than Orshot billed annually. ## When Documint Fits Better Documint is a document tool, and it has things Orshot doesn't: - Documint Sign sends the PDF for e-signature, 5 to 50 envelopes a month by plan - Repeat/loop rows, grouping and filtering, plus $sum and $calc for totals - Display rules show or hide any element from the data, like an Overdue stamp - A native HubSpot app that generates from a contact, company, deal or ticket - Per-document billing, so a 30-page report costs the same as a 1-page one Cons: - The PDF link is stored for 24 hours, so every automation needs a storage step - PDF only, so images and video need a second tool and a second template - Templates are rebuilt in the block editor, with no PDF or Word import - No free plan, and test PDFs from inactive templates carry Documint branding - Not SOC 2 compliant as of October 2026, by its own FAQ Orshot fits when the document is designed, when the file URL should go straight into the next step, or when the same data also becomes an image or a video. The [PDF generation API](https://orshot.com/solutions/pdf-generation-api) page has the full picture. ## Other Documint Alternatives Orshot isn't the only option. Which one fits depends on where your template starts and whether you need signatures. Prices are from each vendor's own Documint comparison page, read on October 19, 2026. ![Pick a Documint alternative by where your template starts: a Google Doc or Word file points to DocsAutomator or TypeFlow, HTML and CSS to APITemplate.io or CraftMyPDF, a designed layout to Orshot, a contract to sign to PandaDoc](https://orshot.com/blog/documint-alternative/alternatives-picker.webp) - **DocsAutomator** fills Google Docs, Word or PDF templates from Airtable, Glide or Notion, with e-signing on every plan. From \$19 a month billed yearly for 100 documents. - **TypeFlow** is built for Airtable: Google Docs or HTML templates, linked records and a Documint import tool. From \$29 a month for 200 documents. - **CraftMyPDF** is a PDF and image API with a drag and drop editor, 50 free PDFs a month and \$29 for 1,200. I compared it in the [CraftMyPDF alternative](https://orshot.com/blog/craftmypdf-api-alternative) post. - **APITemplate.io** generates PDFs and images from visual or HTML templates, with 50 free a month. More in the [APITemplate.io alternative](https://orshot.com/blog/apitemplate-io-alternative) post. - **PandaDoc** is the pick when the document is a proposal or contract and signing is the whole point. The [PDF generator API comparison](https://orshot.com/blog/best-pdf-generation-apis) prices eight tools at 1,000, 10,000 and 100,000 documents a month. ## Switch from Documint in Three Steps Moving a Documint template to Orshot takes an afternoon per template. You rebuild or import the layout, swap one automation step, and compare a few real records side by side before you cut over. ![Switch from Documint in three steps: rebuild or import the template and name each layer after the Documint field, swap one step in Make, Zapier, n8n or the Airtable extension, then run both side by side on real records](https://orshot.com/blog/documint-alternative/switch-steps.webp) 1. **Rebuild the template in Studio.** Recreate the layout, or import it from Canva or Figma if that's where it started. Name each dynamic layer after your Documint field so your mapping doesn't change. 2. **Swap the step.** In Make, Zapier or n8n, replace the Documint step with Orshot's. In Airtable, install the Orshot extension and point it at the same attachment field. Delete the steps that only existed to copy the file before the link expired. 3. **Run both side by side.** Render a few real records on each, compare, and cut over. Keep Documint for anything that needs a signature or a self-totalling table. Running both is common. Stuck on a template? Hit the chat button and send it over. I'll help you move it. ## Documint FAQ **Q: What is Documint?** Documint is no-code document generation software at documint.me. You design a PDF template in a block-style drag and drop editor, connect Airtable, HubSpot, Coda, Zapier, Make or its REST API, and each record merges into a PDF. Documint Sign adds e-signatures. Orshot covers the template-to-PDF job for designed documents, and the same template also renders as an image or a video. **Q: How much does Documint cost?** Documint Silver is $49 a month for 200 documents, Gold is $149 for 1,000 and Platinum is $299 for 5,000, billed monthly. Billed annually they are $39, $124 and $249 a month for 2,400, 12,000 and 60,000 documents a year. Each document counts once whatever its page count. Checked on documint.me/pricing on October 19, 2026. **Q: Does Documint have a free plan?** No. Documint gives every new account a 14-day free trial on Silver, and inactive templates make Documint-branded test PDFs that don't count against the quota. Orshot has a free plan with 100 credits every month for PDFs and images, with no watermark and no card. **Q: How long does Documint keep generated PDFs?** Documint's API documentation says it stores the PDF link for 24 hours, and its Make and Zapier guides say the URL is only available for a few hours. Its pricing FAQ says Documint does not store generated PDFs. Airtable and HubSpot keep a copy in the record. Orshot returns the file URL in the API response and can also send the file to your own Drive, Dropbox or S3. **Q: Is the Documint document limit per month or per year?** Both exist. Monthly plans give 200, 1,000 or 5,000 documents a month. Annual plans give 2,400, 12,000 or 60,000 documents a year, all upfront, so you can use them in any month. Orshot credits refill monthly, and you can move between plans month to month. **Q: Does Documint have e-signatures?** Yes. Documint Sign is built into templates, with 5, 25 or 50 envelopes a month on Silver, Gold and Platinum and add-on packs for more. Orshot doesn't collect signatures, so contracts that need signing fit Documint or a dedicated e-sign tool better. **Q: Can Documint create images or Word files?** No. Documint's features page and documentation describe one output format, PDF. Orshot renders the same template as PDF, PNG, JPG, WebP or AVIF, and video templates as MP4, WebM, MOV, MKV or GIF. **Q: Does Documint work with n8n?** Partly. Documint publishes a community node, @documint/n8n-nodes-documint, last released as v0.1.2 in August 2025, and its docs otherwise point to the REST API. Orshot's n8n node is built by Orshot and verified by n8n, and it ships beside Make and Zapier apps. **Q: What is the best Documint alternative for Airtable?** Orshot for designed documents, TypeFlow or DocsAutomator for contracts with signatures. Orshot's Airtable extension maps fields to the template, renders a record or a whole view, and writes the PDF or image into an attachment field. TypeFlow and DocsAutomator fill Google Docs templates and add e-signing. **Q: Is there a free Documint alternative?** Orshot is free for 100 credits every month, where 1 credit is one PDF page or one image, with no card and no watermark. CraftMyPDF and APITemplate.io each give 50 free PDFs a month. Documint has a 14-day trial but no free plan. **Q: Is Documint SOC 2 compliant?** No. Documint's pricing FAQ says it is not currently SOC 2 compliant, and that it does not store generated PDFs. Checked on October 19, 2026. **Q: What is Orshot?** Orshot is an API for automated image, PDF and video generation from templates. You design the template in Orshot Studio, mark the layers that change, then render it from the REST API, Airtable, n8n, Make, Zapier, a built-in workflow or an AI agent through its MCP server. ## Generate Your First PDF from a Documint Template [Sign up](https://orshot.com/pricing?via=blog-documint-footer), rebuild one Documint template in Studio, and render it as a PDF and a PNG from the same call. The free plan's 100 credits a month cover 100 PDF pages or images, and there's no card to enter. ![One request, one PDF URL in the response: a POST to the Orshot render endpoint with the certificate fields on the left, and the rendered CERT-2026-0412.pdf on the right with its URL in the response](https://orshot.com/blog/documint-alternative/request-result.webp) If something doesn't work the way you expect, hit the chat button. I'm usually the one on the other end. --- ### [Free Chrome Extension for Twitter Screenshots](https://orshot.com/blog/twitter-screenshot-chrome-extension) > Generate beautiful X/Twitter screenshots with one click using the Orshot Chrome extension - perfect for content creators and marketers Creating beautiful screenshots of tweets has never been easier. The **Orshot Chrome Extension** lets you capture stunning X/Twitter screenshots with just one click, directly from your browser It uses Orshot's [Twitter Screenshot API](https://orshot.com/templates/tweet-image) internally to generate beautiful tweet screenshots, and unlike most other apps, it also includes quoted and replied to tweets in the screenshots giving you a full picture We also have an app that [converts Twitter threads to carousels](https://orshot.com/tools/twitter-carousel-generator), in case you're looking for that. And if you'd rather generate screenshots programmatically — or you're migrating from a shutting-down service — see our [Twitter Screenshot API](https://orshot.com/blog/tweetpik-api-alternative) guide. [**Get the extension here →**](https://chromewebstore.google.com/detail/orshot-beautiful-xtwitter/koegcnmefgbpodbkapojflenblmpdjnm?authuser=0&hl=en) ## What is Twitter Screenshot Chrome Extension? Orshot is a lightweight Chrome extension that adds a Camera button(📸) to every tweet on Twitter/X. Instead of taking manual screenshots and editing them, you can generate professional-looking tweet screenshots instantly ![The Orshot Chrome extension adding a camera button to a tweet](https://orshot.com/blog/chrome-extension-twitter-screenshot-preview.webp) ## Key Features #### One-Click Screenshot Generation Simply click the **Camera icon** button that appears next to every tweet's like and retweet buttons. No complex setup required #### Includes Quoted and Replied-to tweets If you capture a reply or a tweet which has a quote tweet, the generated screenshot will include those too in the image #### Beautiful Modal Preview Screenshots appear in an elegant modal with options to: - Download as PNG file - Copy to clipboard for instant pasting - Preview before saving #### Fast and Lightweight Built with performance in mind, the extension doesn't slow down your browsing experience and generates screenshots in seconds #### Optional API Key Integration - Use without an API key for basic functionality - Add your Orshot API key for more screenshots and avoid rate-limits - Get a free API key at [orshot.com](https://orshot.com/pricing) #### Dark Mode Support Automatically adapts to your browser's theme preference for a consistent experience ## Demo [Watch the video](https://www.youtube.com/watch?v=XTJWl18q3_w) ## How to Install [**Get the extension here →**](https://chromewebstore.google.com/detail/orshot-beautiful-xtwitter/koegcnmefgbpodbkapojflenblmpdjnm?authuser=0&hl=en) Just add to your Chrome or Chrome based browser. Next time you open X or Twitter, you'll start seeing the Camera icon at bottom right of each tweet. Use the button to capture tweet screenshot It's perfect for content creators, marketers and publications to capture tweet screenshots for references in their content --- ### [Generate a PDF in Python from Code or HTML](https://orshot.com/blog/python-generate-pdf) > Generate a PDF in Python with fpdf2 or ReportLab or WeasyPrint or Playwright or a template API. Timed tests on one invoice plus code and license traps The best way to generate a PDF in Python depends on what the PDF starts from. Use fpdf2 or ReportLab to build it in code, WeasyPrint or Playwright to convert HTML, and pypdf to edit PDFs you already have. To generate a PDF in Python with ReportLab, run `pip install reportlab`, build a `SimpleDocTemplate` and pass it your paragraphs and tables. ReportLab made a 25-row invoice in 1.1 ms in my October 2026 test. ![The Python PDF toolkit: fpdf2, ReportLab, WeasyPrint, Playwright, xhtml2pdf, pypdf, PyMuPDF, Jinja2, Chromium, Python and the Orshot API, five ways to generate a PDF in Python](https://orshot.com/blog/python-generate-pdf/python-pdf-toolkit.webp) Starting Python costs more than the PDF itself. Every library stayed under 60 ms per PDF once loaded. Skip pdfkit for new code: wkhtmltopdf, the tool it wraps, was archived in January 2023. **TL;DR** — Which Python PDF library fits your job? Pick what you're building: - **1. PDFs from data, built in code**: [fpdf2 or ReportLab](#1-generate-a-pdf-from-data-with-fpdf2-or-reportlab) — Pure Python, no system packages. ReportLab took 1.1 ms per invoice, fpdf2 7 ms. - **2. Convert HTML to PDF**: [WeasyPrint or Playwright](#2-convert-html-to-pdf-in-python-with-weasyprint) — WeasyPrint needs no browser. Playwright runs real Chromium for JavaScript and modern CSS. - **3. PDFs from a designed template**: [Orshot API](#3-generate-pdfs-from-a-template-in-python) — A designer edits the layout, your Python sends data and gets a PDF link back. - **4. Merge, split or fill PDFs**: [pypdf](#4-merge-or-fill-existing-pdfs-with-pypdf) — Edits files you already have. It doesn't lay out new pages. - **5. No pip install allowed**: [The standard library](#5-generate-a-pdf-without-external-libraries) — About 35 lines write a valid PDF. Built-in fonts only, no tables or wrapping. ## Compare Python PDF Libraries The Python PDF libraries worth comparing in 2026 are fpdf2, ReportLab, WeasyPrint, Playwright and xhtml2pdf. All five are free on PyPI, and only WeasyPrint and Playwright need anything outside pip. | Library | Build the page with | Needs outside pip | | :------------- | :---------------------------------- | :----------------- | | **fpdf2** | Python calls, built-in tables | Nothing | | **ReportLab** | Python calls (canvas or platypus) | Nothing | | **WeasyPrint** | HTML and CSS, no JavaScript | Pango 1.44 or newer | | **Playwright** | HTML, CSS and JavaScript (Chromium) | A Chromium download | | **xhtml2pdf** | HTML and CSS 2.1 | Nothing | Popularity and release dates, from [PyPI](https://pypi.org/ "target=_blank rel=nofollow") and [pypistats.org](https://pypistats.org/ "target=_blank rel=nofollow") on October 12, 2026: | Library | Latest version | Downloads last month | | :------------- | :--------------------- | :------------------- | | **fpdf2** | 2.8.9, Sep 29, 2026 | 16.6M | | **ReportLab** | 5.0.1, Aug 20, 2026 | 66.0M | | **WeasyPrint** | 70.0, Sep 8, 2026 | 31.9M | | **Playwright** | 1.63.0, Sep 15, 2026 | 97.0M | | **xhtml2pdf** | 0.2.23, Oct 8, 2026 | 3.6M | Download counts include CI runs and installs pulled in by other packages. Playwright is mostly used for browser testing, so its count says little about PDFs. ### How I Tested I built one A4 invoice (title, client, 25 line items, total) in each library and opened every PDF to check it. The HTML libraries shared one Jinja2 template. The code in this post is that code, trimmed to three rows. - **Machine.** Apple M5 Pro, Python 3.14.7, October 12, 2026. - **New process.** A fresh `python` process per PDF, imports included. Median of 5 runs, after one untimed run to warm disk caches. - **Kept warm.** 20 renders in one process, median. Playwright reused one open page. - **Not tested.** Docker, AWS Lambda and Windows. Setup notes come from each project's docs, read the same day. ### How Fast Each Library Generates a PDF ReportLab generated the invoice in 1.1 ms once loaded, and fpdf2 in 7.0 ms. WeasyPrint was the slowest warm library at 55.8 ms, while Playwright printed it in 3.8 ms on an open Chromium page. ![Bar chart of Python PDF render times for one 25-row invoice: xhtml2pdf 324 ms in a new process and 16.3 ms warm, Playwright 318 and 3.8 ms, WeasyPrint 273 and 55.8 ms, fpdf2 163 and 7.0 ms, ReportLab 78 and 1.1 ms, no library 16 and 0.05 ms](https://orshot.com/blog/python-generate-pdf/render-times.webp) | Library | New process | Kept warm | File size | | :------------- | :---------- | :-------- | :-------- | | **ReportLab** | 78 ms | 1.1 ms | 2.7 KB | | **fpdf2** | 163 ms | 7.0 ms | 2.7 KB | | **WeasyPrint** | 273 ms | 55.8 ms | 35.6 KB | | **Playwright** | 318 ms | 3.8 ms | 26.2 KB | | **xhtml2pdf** | 324 ms | 16.3 ms | 3.5 KB | Speed rarely decides it. At 55.8 ms, one WeasyPrint process still makes about 64,000 PDFs an hour. What decides it is where your layout lives: in Python code, in HTML, or in a design file someone else edits. File size is mostly fonts. ReportLab, fpdf2 and xhtml2pdf used the built-in Helvetica without embedding it. WeasyPrint and Chromium embedded the system font, so their files are about 10 times bigger. ## 1. Generate a PDF from Data with fpdf2 or ReportLab fpdf2 and ReportLab write PDF bytes directly from Python, with no browser and no system packages. You describe the page in code: text, tables, images and page breaks. **Pick this if** your PDF is built from data (invoices, receipts, tickets, statements) and you'd rather not write HTML. ![The same Northwind Traders invoice built in Python code: fpdf2 with a filled blue header row and black row rules in 7.0 ms, ReportLab with a centered title and light row rules in 1.1 ms, and a no-library PDF with plain text columns in 0.05 ms](https://orshot.com/blog/python-generate-pdf/same-invoice-python-code.webp) ### Step 1: Make a simple PDF with fpdf2 [fpdf2](https://py-pdf.github.io/fpdf2/ "target=_blank rel=nofollow") is pure Python. `pip install fpdf2` pulls in Pillow, fontTools and defusedxml, and that's the whole setup. ```python from fpdf import FPDF from fpdf.fonts import FontFace rows = [("Design work", 6, 40.00), ("Hosting", 7, 250.00), ("Support hours", 1, 25.00)] total = sum(qty * price for _, qty, price in rows) pdf = FPDF(format="A4") pdf.add_page() pdf.set_font("Helvetica", "B", 20) pdf.cell(text="Invoice #1042", new_x="LMARGIN", new_y="NEXT") pdf.set_font("Helvetica", size=10) pdf.set_text_color(102) pdf.cell(text="Billed to Northwind Traders", new_x="LMARGIN", new_y="NEXT") pdf.ln(6) pdf.set_text_color(17) header = FontFace(emphasis="BOLD", color=255, fill_color=(43, 66, 212)) with pdf.table(col_widths=(60, 15, 25), text_align=("LEFT", "RIGHT", "RIGHT"), headings_style=header, borders_layout="HORIZONTAL_LINES", line_height=7) as table: table.row(["Item", "Qty", "Price"]) for name, qty, price in rows: table.row([name, str(qty), f"${price:,.2f}"]) table.row(["Total", "", f"${total:,.2f}"]) pdf.output("invoice.pdf") ``` `pdf.table()` handles row heights, borders and page breaks. Passing `headings_style=None` raised a `ValueError` in fpdf2 2.8.9, so give the header row a `FontFace`. ### Step 2: Build long reports with ReportLab [ReportLab](https://docs.reportlab.com/ "target=_blank rel=nofollow") has two levels. The `canvas` places text at x and y coordinates from the bottom left. Platypus takes a list of paragraphs, tables and spacers and flows them across as many pages as it needs. ```python from reportlab.lib import colors from reportlab.lib.pagesizes import A4 from reportlab.lib.styles import getSampleStyleSheet from reportlab.lib.units import mm from reportlab.platypus import Paragraph, SimpleDocTemplate, Spacer, Table, TableStyle rows = [("Design work", 6, 40.00), ("Hosting", 7, 250.00), ("Support hours", 1, 25.00)] total = sum(qty * price for _, qty, price in rows) data = [["Item", "Qty", "Price"]] + [[n, str(q), f"${p:,.2f}"] for n, q, p in rows] data.append(["Total", "", f"${total:,.2f}"]) table = Table(data, colWidths=[300, 60, 100]) table.setStyle(TableStyle([ ("BACKGROUND", (0, 0), (-1, 0), colors.HexColor("#2B42D4")), ("TEXTCOLOR", (0, 0), (-1, 0), colors.white), ("LINEBELOW", (0, 1), (-1, -2), 0.5, colors.HexColor("#DDDDDD")), ("ALIGN", (1, 0), (-1, -1), "RIGHT"), ("FONTNAME", (0, -1), (-1, -1), "Helvetica-Bold"), ])) styles = getSampleStyleSheet() doc = SimpleDocTemplate("invoice.pdf", pagesize=A4, leftMargin=18 * mm, rightMargin=18 * mm, topMargin=18 * mm) doc.build([Paragraph("Invoice #1042", styles["Title"]), Paragraph("Billed to Northwind Traders", styles["Normal"]), Spacer(1, 12), table]) ``` ReportLab also draws bar, line and pie charts as vectors with `reportlab.graphics.charts`, so a report doesn't need matplotlib. And `canvas.acroForm` adds fillable form fields. ### Step 3: Add a Unicode font, a logo and page numbers The built-in Helvetica only covers Latin-1. "Müller" works, but "€" in fpdf2 raises `FPDFUnicodeEncodingException`, and Greek, Cyrillic or CJK text fails too. Ship a TTF font with your code; both libraries embed only the characters you use. ```python from fpdf import FPDF class InvoicePDF(FPDF): def footer(self): self.set_y(-15) self.set_font("DejaVu", size=8) self.cell(w=0, h=10, text=f"Page {self.page_no()} of {{nb}}", align="C") pdf = InvoicePDF(format="A4") pdf.add_font("DejaVu", fname="DejaVuSans.ttf") pdf.add_page() pdf.image("logo.png", x=170, y=10, w=25) pdf.set_font("DejaVu", size=14) pdf.cell(text="Rechnung für Müller GmbH · 1 250,00 €", new_x="LMARGIN", new_y="NEXT") pdf.output("invoice.pdf") ``` ```python from reportlab.lib.pagesizes import A4 from reportlab.lib.styles import ParagraphStyle from reportlab.lib.units import mm from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont from reportlab.platypus import Image, Paragraph, SimpleDocTemplate pdfmetrics.registerFont(TTFont("DejaVu", "DejaVuSans.ttf")) body = ParagraphStyle("body", fontName="DejaVu", fontSize=14) def footer(canvas, doc): canvas.setFont("DejaVu", 8) canvas.drawRightString(A4[0] - 18 * mm, 10 * mm, f"Page {doc.page}") doc = SimpleDocTemplate("invoice.pdf", pagesize=A4) doc.build([Image("logo.png", width=25 * mm, height=25 * mm), Paragraph("Rechnung für Müller GmbH · 1 250,00 €", body)], onFirstPage=footer, onLaterPages=footer) ``` fpdf2 replaces `{nb}` with the total page count when it saves the file. ReportLab only knows the current page, so "Page 3 of 7" needs a custom canvas that counts pages on a first pass. ### What to Know Before You Pick One - **The fpdf package name trap.** fpdf2 imports as `fpdf`, but `pip install fpdf` gets you PyFPDF 1.7.2 from 2015. Tutorials that pass `txt=` or `ln=1` to `cell()` are old: fpdf2 prints deprecation warnings for both. - **fpdf2 doesn't really do HTML.** Its [HTML docs](https://py-pdf.github.io/fpdf2/HTML.html "target=_blank rel=nofollow") say the HTML 5 spec "is not supported, and neither is CSS". `write_html()` reads a handful of tags. - **ReportLab has a paid twin.** The open source ReportLab Toolkit is BSD licensed. ReportLab PLUS, sold separately, adds the RML template language. Posts that show RML are describing the paid product. - **ReportLab's default title is centered.** The `Title` style centers text, which is why its invoice above looks different. Copy the style and set `alignment=0` for left aligned. - Pure Python: nothing to install at the OS level, so it runs in slim Docker images and Lambda - 1 to 7 ms per invoice once loaded, and 2.7 KB files - ReportLab flows long tables across pages and draws vector charts Cons: - Every layout change is a code change and a deploy - No CSS, so styling a branded design takes a lot of code - Non-Latin text needs a TTF font you ship with your code (step 3 shows how) **Best for:** fpdf2 suits receipts, tickets, labels and certificates; ReportLab suits multi-page reports and statements with charts, both built from data with no browser. ## 2. Convert HTML to PDF in Python with WeasyPrint To convert HTML to PDF in Python, `pip install weasyprint` and call `HTML(string=html).write_pdf("out.pdf")`. WeasyPrint is its own layout engine, not a browser, and it supports CSS paged media like page counters and running footers. **Pick this if** you already render HTML in Django, Flask or FastAPI, or your team would rather style the PDF with CSS. ![HTML to PDF with WeasyPrint in three steps: template.render fills the Jinja2 template, HTML(string=html) lays out the page, write_pdf saves invoice.pdf, shown beside the real 36 KB invoice with a blue header row](https://orshot.com/blog/python-generate-pdf/html-to-pdf-weasyprint.webp) ### Step 1: Convert HTML with WeasyPrint ```python from weasyprint import HTML html = """

Invoice #1042

Billed to Northwind Traders

""" HTML(string=html).write_pdf("invoice.pdf") ``` `HTML("https://example.com/invoice/1042")` works too, if the page is already online. WeasyPrint fetches its CSS and images. ### Step 2: Fill the HTML from a Jinja2 template Hard-coding HTML in a string gets old fast. Keep the layout in a Jinja2 file and pass it the data: ```python from jinja2 import Environment, FileSystemLoader from weasyprint import HTML rows = [("Design work", 6, 40.00), ("Hosting", 7, 250.00), ("Support hours", 1, 25.00)] total = sum(qty * price for _, qty, price in rows) env = Environment(loader=FileSystemLoader("templates"), autoescape=True) template = env.get_template("invoice.html") html = template.render(invoice=1042, client="Northwind Traders", rows=rows, total=total) HTML(string=html, base_url="templates").write_pdf("invoice.pdf") ``` ```html

Invoice #{{ invoice }}

Billed to {{ client }}
{% for name, qty, price in rows %} {% endfor %}
ItemQtyPrice
{{ name }}{{ qty }} ${{ "{:,.2f}".format(price) }}
Total${{ "{:,.2f}".format(total) }}
``` Keep `autoescape=True` so a client name with `<` or `&` doesn't break the markup. And pass `base_url`, so relative paths to images and stylesheets resolve. ### Step 3: Switch to Playwright when the page needs a browser WeasyPrint never runs JavaScript, so Chart.js charts come out blank. [Playwright for Python](https://playwright.dev/python/docs/api/class-page#page-pdf "target=_blank rel=nofollow") prints the same HTML in real Chromium: ```bash pip install playwright playwright install chromium ``` ```python from playwright.sync_api import sync_playwright # html comes from template.render(...) in step 2 with sync_playwright() as p: browser = p.chromium.launch() page = browser.new_page() page.set_content(html, wait_until="networkidle") page.pdf(path="invoice.pdf", format="A4", print_background=True) browser.close() ``` Launch the browser once and reuse the page. In my test each extra PDF took 3.8 ms on an open page, while a fresh process with a new Chromium took 318 ms. `playwright install chromium` downloaded 554 MB of browser files to my disk (Chromium plus its headless shell), on top of a 135 MB Python package. Headless renders only use the shell, so in Docker `playwright install --only-shell chromium` skips the full browser. ### Which Python HTML to PDF Library Should You Use? Use WeasyPrint for HTML and CSS you control, and Playwright when the page needs JavaScript or must match Chrome exactly. xhtml2pdf suits simple layouts where you can only install pure Python packages. Skip pdfkit for new code. | Library | Renders with | Runs JavaScript | Install | | :------------- | :------------------------------ | :-------------- | :------------------------- | | **WeasyPrint** | Its own engine, CSS paged media | No | pip plus Pango | | **Playwright** | Chromium | Yes | pip plus 554 MB of browser | | **xhtml2pdf** | ReportLab, CSS 2.1 | No | pip only | | **pdfkit** | wkhtmltopdf (old Qt WebKit) | Partly | Deprecated, archived 2023 | On the same invoice template, warm renders took 55.8 ms in WeasyPrint, 16.3 ms in xhtml2pdf and 3.8 ms in Playwright. xhtml2pdf also warned that it ignores `border-collapse`, which shows in the header row of its output. ### Fix Common HTML to PDF Problems Most HTML to PDF problems in Python come from print rules, not from your code. - **WeasyPrint can't find Pango.** WeasyPrint 70 needs Pango 1.44 or newer from the OS. On Debian 11 or newer install `libpango-1.0-0 libpangoft2-1.0-0 libharfbuzz-subset0` (Ubuntu also needs `libharfbuzz0b`). On macOS, `brew install weasyprint`. - **Flexbox and grid look off in WeasyPrint.** Its [API docs](https://doc.courtbouillon.org/weasyprint/stable/api_reference.html "target=_blank rel=nofollow") say both work "for simple" cases, and list subgrid and `repeat(auto-fill, ...)` as unsupported or untested. - **Backgrounds disappear in Playwright.** Chromium drops background colors when printing unless you pass `print_background=True`. - **The PDF looks different from the screen.** Playwright prints with `print` CSS. Call `page.emulate_media(media="screen")` first. - **Rows split across pages.** Add `tr { break-inside: avoid; }` to your CSS. It works in both. To preview how a page prints before you write any Python, paste it into the free [HTML to PDF converter](https://orshot.com/tools/html-to-pdf). There's no sign-up. - Style the PDF with the HTML and CSS your team already writes - WeasyPrint does page counters, running headers and PDF/A without a browser - Playwright matches what Chrome shows, JavaScript charts included Cons: - WeasyPrint needs Pango from the OS and runs no JavaScript - Playwright adds 554 MB of browser files and a browser's memory per worker - Print CSS is its own skill: page breaks, margins and fonts need tuning **Best for:** WeasyPrint suits invoices and reports from HTML you control; Playwright suits pages with JavaScript charts or modern CSS that must match Chrome. ## 3. Generate PDFs from a Template in Python To generate PDFs from a template in Python, design the layout once, mark the fields that change, and send only data from your code. A hosted API like Orshot keeps the design out of your repository. **Pick this if** someone other than a developer owns the layout (certificates, branded invoices, reports, quotes), or every design tweak costs you a deploy. ### Step 1: Design the template in Orshot Studio Orshot is an API that turns design templates into PDFs, images and videos. You design in [Orshot Studio](https://orshot.com/features/orshot-studio), which works like Figma, and every layer you mark as dynamic becomes an API parameter. (Disclosure: I built Orshot.) Below is the course certificate I used. Click a layer to see its parameter name, or copy the template into your own workspace. ### Step 2: Generate the PDF from Python with one API call Your code sends the template ID and the values, and gets a hosted PDF link back in `data.content`. No fonts, no Pango, no Chromium in your deploy. ![Orshot API request from Python for a PDF beside the result: requests.post to /v1/studio/render with templateId, recipient_name and course_name in the json body and format pdf, and the rendered course certificate PDF for Priya Sharma that data.content links to](https://orshot.com/blog/python-generate-pdf/orshot-api-call.webp) Each key is a layer's parameter name from step 1. ```python import os import requests res = requests.post( "https://api.orshot.com/v1/studio/render", headers={"Authorization": f"Bearer {os.environ['ORSHOT_API_KEY']}"}, json={ "templateId": "YOUR_TEMPLATE_ID", "modifications": { "recipient_name": "Priya Sharma", "course_name": "Advanced Data Analysis", "completion_date": "October 12, 2026", "certificate_id": "CERT-2026-1042", }, "response": {"type": "url", "format": "pdf"}, }, timeout=60, ) res.raise_for_status() print(res.json()["data"]["content"]) # https://storage.orshot.com/.../certificate.pdf ``` The same call with the `orshot` package from PyPI, plus print settings. ```python import os import orshot client = orshot.Orshot(os.environ["ORSHOT_API_KEY"]) result = client.render_from_studio_template({ "template_id": "YOUR_TEMPLATE_ID", "modifications": {"recipient_name": "Priya Sharma", "course_name": "Advanced Data Analysis"}, "response": {"type": "url", "format": "pdf"}, "pdf_options": {"dpi": 300, "color_mode": "cmyk"}, }) ``` Long documents can render in the background. Pass your own ID as `metadata` and it comes back in the webhook. ```python res = requests.post( "https://api.orshot.com/v1/studio/render", headers={"Authorization": f"Bearer {os.environ['ORSHOT_API_KEY']}"}, json={ "templateId": "YOUR_TEMPLATE_ID", "modifications": {"recipient_name": "Priya Sharma"}, "response": {"mode": "async", "type": "url", "format": "pdf"}, "webhook_url": "https://acme.com/hooks/orshot", "metadata": "order-8412", }, timeout=30, ) # Your webhook receives: # {"event": "render_job.finished", # "job": {"id": 1204, "status": "succeeded", "finished": true, # "result": {...}, "metadata": "order-8412"}} ``` I rendered the certificate template with exactly these values on October 12, 2026. The PDF came back at 106 KB as a real A4 landscape page with selectable text and embedded fonts, script signature included. Orshot customers have rendered more than 24,000 PDF pages since July 2025, and 96% of them came from automated jobs rather than someone clicking export. n8n, Zapier, the REST API and AI agents send most of them. ![Orshot customers have generated 24,000+ PDF pages from templates since July 2025, 96% from automated jobs: n8n 33%, Zapier 19%, API 16%, AI agents 15%, Make 10%, shown beside a fanned stack of real Orshot PDFs (a two-page quote, an invoice and a course certificate), with the largest PDF at 81 pages](https://orshot.com/blog/python-generate-pdf/orshot-pdf-pages.webp) What's built in that you'd otherwise write yourself: - **Multi-page and long content.** Fill every page in one call with `page2@field` keys, or let a long text layer flow onto new pages. - **Print settings.** `pdfOptions` sets margins, DPI, CMYK and image compression. - **Hosting.** Files are kept for at least a year, or on paid plans renders go to your own S3, R2, Google Drive or Dropbox. - **Other formats from the same design.** Change `format` to `png` and the certificate becomes a LinkedIn share image. Full options are in the [PDF generation docs](https://orshot.com/docs/pdf-generation) and the [Python SDK reference](https://orshot.com/docs/sdks/python). > Orshot solved every challenge with clarity and precision, and the entire PDF automation came together flawlessly. > I've never felt more confident in a technical build. Highly recommend Orshot. > > — David Furlong, Founder, Return to Centre **Generate PDFs from a template with Python** — Design the layout in Studio, send data from requests, and get a PDF link back. 100 free credits a month. [Start free](https://orshot.com/pricing?via=blog-python-pdf-middle) ### When a Template API Is the Wrong Choice - A designer changes the layout without a deploy - No fonts, Pango or Chromium in your app: one HTTP call - Hosted links, print settings and multi-page fills built in Cons: - A network round trip, so it suits queues and background jobs more than a synchronous click - Paid per page after 100 free credits a month, while ReportLab costs nothing per page - You send data, not HTML, so arbitrary HTML belongs in part 2 Orshot pricing, checked October 12, 2026: 100 free credits a month (1 credit = 1 PDF page), then \$39 a month for 1,500 pages, \$160 for 20,000 or \$349 for 75,000. Orshot fits PDFs that run on a schedule or a trigger, like a [Google Sheets invoice generator](https://orshot.com/workflows/invoice-generator) that saves each PDF to Drive. The [automated invoice generation guide](https://orshot.com/blog/automated-invoice-generation) covers batch runs. **Best for:** Orshot suits PDFs a designer owns that run on a schedule or trigger, called from Python, n8n, Make, Zapier or an AI agent. ## 4. Merge or Fill Existing PDFs with pypdf [pypdf](https://pypdf.readthedocs.io/ "target=_blank rel=nofollow") (126M downloads last month, BSD licensed) merges, splits, crops and fills PDFs in pure Python. pypdf doesn't lay out new pages, so pair it with a generator above. **Pick this if** the PDF already exists and you need to merge files, fill a form, or split pages out. ![Merging PDFs with pypdf in three calls: PdfWriter() starts an empty PDF, writer.append adds invoice.pdf and then form.pdf, writer.write saves merged.pdf, shown beside the real two-page result with the invoice and the filled client name form](https://orshot.com/blog/python-generate-pdf/merge-pdfs-pypdf.webp) ```python from pypdf import PdfWriter writer = PdfWriter() for path in ["invoice.pdf", "form.pdf"]: writer.append(path) writer.write("merged.pdf") ``` ```python from pypdf import PdfWriter writer = PdfWriter(clone_from="form.pdf") writer.update_page_form_field_values( writer.pages[0], {"client_name": "Northwind Traders"}, auto_regenerate=False ) writer.write("filled.pdf") ``` I ran both with pypdf 6.20.0 on October 12, 2026. The merge produced a two-page file, and reading `filled.pdf` back returned "Northwind Traders" for the `client_name` field. PyMuPDF does the same jobs and more, and renders pages to images. PyMuPDF is AGPL-3.0 or a paid license, so check the license section below before shipping it in a closed product. **Best for:** pypdf suits merging generated PDFs with existing files, filling form fields and splitting pages, never laying out new ones. ## 5. Generate a PDF without External Libraries Python's standard library has no PDF module. You can still write a valid PDF by hand: a few objects as bytes, a cross-reference table and a trailer. The invoice above took 35 lines and 0.05 ms. **Pick this if** you can't install packages (a locked-down server, an embedded device) and the PDF is plain text. ![A PDF with no third-party packages in three steps: objs lists six PDF objects as bytes, offsets records where each one starts, and the xref table plus trailer finish the file, shown beside the real 2.9 KB invoice in plain Helvetica columns](https://orshot.com/blog/python-generate-pdf/pdf-without-libraries.webp) ```python rows = [("Design work", 6, 40.00), ("Hosting", 7, 250.00), ("Support hours", 1, 25.00)] total = sum(qty * price for _, qty, price in rows) def esc(s): return s.replace("\\", "\\\\").replace("(", "\\(").replace(")", "\\)") lines = ["BT /F2 20 Tf 50 780 Td (Invoice #1042) Tj ET", "BT /F1 10 Tf 50 762 Td (Billed to Northwind Traders) Tj ET"] y = 730 for name, qty, price in [("Item", "Qty", "Price")] + [(n, str(q), f"${p:,.2f}") for n, q, p in rows]: lines.append(f"BT /F1 10 Tf 50 {y} Td ({esc(name)}) Tj 300 0 Td ({qty}) Tj 80 0 Td ({esc(price)}) Tj ET") y -= 18 lines.append(f"BT /F2 10 Tf 50 {y - 4} Td (Total) Tj 380 0 Td ({esc(f'${total:,.2f}')}) Tj ET") stream = "\n".join(lines).encode("latin-1") objs = [b"<< /Type /Catalog /Pages 2 0 R >>", b"<< /Type /Pages /Kids [3 0 R] /Count 1 >>", b"<< /Type /Page /Parent 2 0 R /MediaBox [0 0 595 842] /Contents 4 0 R " b"/Resources << /Font << /F1 5 0 R /F2 6 0 R >> >> >>", b"<< /Length %d >>\nstream\n" % len(stream) + stream + b"\nendstream", b"<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >>", b"<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >>"] out = bytearray(b"%PDF-1.4\n") offsets = [] for i, obj in enumerate(objs, 1): offsets.append(len(out)) out += b"%d 0 obj\n" % i + obj + b"\nendobj\n" xref = len(out) out += b"xref\n0 %d\n0000000000 65535 f \n" % (len(objs) + 1) out += b"".join(b"%010d 00000 n \n" % o for o in offsets) out += b"trailer\n<< /Size %d /Root 1 0 R >>\nstartxref\n%d\n%%%%EOF\n" % (len(objs) + 1, xref) with open("invoice.pdf", "wb") as f: f.write(out) ``` The limits show up fast. Text must fit Latin-1 with the 14 built-in fonts, nothing wraps, and you place every line yourself. Keep the `/Encoding /WinAnsiEncoding` entries, or accented letters like é print as the wrong glyph. For anything longer than a page, `pip install fpdf2` is worth the roughly 40 MB it installs with Pillow and fontTools. **Verdict:** The standard library works for a one-page text PDF where installs are banned; anywhere else, fpdf2 or ReportLab saves you the byte counting. ## Return the PDF from Flask, FastAPI or Django To return a generated PDF from a Python web app, build it in memory and send the bytes with `application/pdf`. Every library above can skip the file on disk. - **fpdf2:** `pdf.output()` with no file name returns a `bytearray`. - **ReportLab:** pass a `BytesIO` to `SimpleDocTemplate` and read `buffer.getvalue()`. - **WeasyPrint:** `HTML(string=html).write_pdf()` returns `bytes`. - **Playwright:** `page.pdf()` without `path` returns `bytes`. ```python from io import BytesIO from flask import Flask, send_file from weasyprint import HTML app = Flask(__name__) @app.get("/invoices/.pdf") def invoice_pdf(invoice_id): # template, rows and total come from part 2, step 2 html = template.render(invoice=invoice_id, client="Northwind Traders", rows=rows, total=total) pdf = HTML(string=html).write_pdf() # bytes, nothing written to disk return send_file(BytesIO(pdf), mimetype="application/pdf", download_name=f"invoice-{invoice_id}.pdf") ``` ```python from fastapi import FastAPI, Response from weasyprint import HTML app = FastAPI() @app.get("/invoices/{invoice_id}.pdf") def invoice_pdf(invoice_id: int): # plain def: FastAPI runs it in a thread pool html = template.render(invoice=invoice_id, client="Northwind Traders", rows=rows, total=total) pdf = HTML(string=html).write_pdf() return Response(pdf, media_type="application/pdf", headers={"Content-Disposition": f'inline; filename="invoice-{invoice_id}.pdf"'}) ``` ```python from django.http import HttpResponse from django.template.loader import render_to_string from weasyprint import HTML def invoice_pdf(request, invoice_id): html = render_to_string("invoice.html", {"invoice": invoice_id, "client": "Northwind Traders"}) pdf = HTML(string=html, base_url=request.build_absolute_uri("/")).write_pdf() response = HttpResponse(pdf, content_type="application/pdf") response["Content-Disposition"] = f'attachment; filename="invoice-{invoice_id}.pdf"' return response ``` I ran all three with their test clients on October 12, 2026, and each returned a 200 with a valid PDF. In Flask, add `as_attachment=True` to `send_file` to force a download instead of opening the PDF in the browser. PDF rendering blocks the worker, so keep FastAPI handlers as plain `def`, not `async def`. For hundreds of PDFs at once, move the work to a queue like Celery or RQ and email or store the result. ## ReportLab vs fpdf2: Which to Use Use fpdf2 for short documents you want to write quickly: it has a table helper, readable docs and a small API. Use ReportLab for long reports, since platypus flows content across pages and draws charts. | Question | fpdf2 | ReportLab | | :--------------------- | :-------------------------- | :-------------------------------- | | Time per invoice, warm | 7.0 ms | 1.1 ms | | Long content | `table()` breaks pages | Platypus flows any content | | Charts and forms | Images only | Vector charts and AcroForm fields | | License | LGPL-3.0 | BSD | Both make 2.7 KB files with built-in fonts and install with pip alone. ## Check the License Before You Ship Most Python PDF libraries are permissively licensed, but two common ones need a paid license for closed source SaaS. That matters more than speed if you sell software. | License | Libraries | In a closed source app | | :--------------------- | :------------------------------------------------------------- | :----------------------------------------------------------- | | BSD, MIT or Apache-2.0 | ReportLab, WeasyPrint, Playwright, xhtml2pdf, pypdf, pdfplumber | Use freely and keep the license notices | | LGPL-3.0 | fpdf2 | Fine to import; changes to fpdf2 itself fall under the LGPL | | AGPL-3.0 or commercial | PyMuPDF, borb | The AGPL covers apps used over a network, so buy the license | borb's [PyPI page](https://pypi.org/project/borb/ "target=_blank rel=nofollow") says commercial use needs a paid license, "especially" for paid PDF services such as PDF generation in cloud apps. PyMuPDF's README calls the AGPL build free for open source and points proprietary apps to Artifex. This isn't legal advice. ## pdfkit, xhtml2pdf, PyMuPDF and Other Names You'll See Older tutorials and Stack Overflow answers name libraries that are deprecated or do something else. Here is where each one stands as of October 12, 2026. - **pdfkit** wraps the wkhtmltopdf command line tool. Its [README](https://github.com/JazzCore/python-pdfkit "target=_blank rel=nofollow") says it is deprecated "to match the wkhtmltopdf project status". wkhtmltopdf's repository was archived on January 2, 2023, and its last release, 0.12.6, came out in June 2020. It still had 3.0M downloads last month. - **xhtml2pdf** converts HTML to PDF in pure Python on top of ReportLab, with CSS 2.1. In my test xhtml2pdf logged that it ignores `border-collapse`, so keep layouts simple. - **pyppeteer** now says it is unmaintained and points to Playwright. - **PyMuPDF** (imported as `pymupdf`; `fitz` is the old name and now prints a deprecation warning) reads, edits and renders PDFs. It's AGPL-3.0 or commercial. - **pdfplumber** extracts text and tables from PDFs. It reads PDFs; it doesn't create them. ## Pick the Right Python PDF Library Pick by what your PDF starts from. Data built in code points to fpdf2 or ReportLab, HTML to WeasyPrint or Playwright, and an existing PDF to pypdf. A layout a designer owns points to a template API like Orshot. A server where you can't install anything points to the standard library. ![Picker for Python PDF libraries: data built in code to fpdf2 or ReportLab, HTML and CSS to WeasyPrint or Playwright, a designer's template to the Orshot API, an existing PDF to pypdf, and no pip install allowed to the standard library](https://orshot.com/blog/python-generate-pdf/pick-a-library.webp) For hosted options beyond Orshot, I keep a [comparison of PDF generation APIs](https://orshot.com/blog/best-pdf-generation-apis), with verified pricing at three volumes. Writing JavaScript too? The [Node.js PDF generator comparison](https://orshot.com/blog/nodejs-pdf-generator) runs the same invoice through Puppeteer, PDFKit and pdfmake. ## Python PDF Generator FAQ **Q: What is the best PDF library for Python?** The best Python PDF library depends on your input. ReportLab is the most complete for reports built in code, fpdf2 is the simplest for receipts and certificates, WeasyPrint is best for HTML and CSS without a browser, and Playwright is the choice when the page needs JavaScript. For layouts a designer owns, a template API like Orshot keeps design changes out of your code. **Q: How do I convert HTML to PDF in Python?** Use WeasyPrint: `HTML(string=html).write_pdf('out.pdf')`. WeasyPrint needs Pango 1.44 or newer on the system and runs no JavaScript. If the page relies on JavaScript or modern CSS, use Playwright with Chromium and call `page.pdf()`. Avoid pdfkit for new projects, since wkhtmltopdf was archived in January 2023. **Q: Can Python generate a PDF without external libraries?** Yes, but only simple ones. Python's standard library has no PDF module, so you write the PDF objects, cross-reference table and trailer as bytes yourself. My 35-line version made a one-page invoice in 0.05 ms. It only supports the 14 built-in fonts and Latin-1 text, with no wrapping or tables. **Q: Is ReportLab free?** Yes. The ReportLab Toolkit on PyPI is open source under a BSD license, including commercial use. ReportLab PLUS is a separate paid product from the same company that adds the RML template language. Tutorials that use RML are describing ReportLab PLUS. **Q: How do I generate a PDF report with tables and charts in Python?** Use ReportLab's platypus layer: a `Table` flows across pages, and `reportlab.graphics.charts` draws bar, line and pie charts as vectors. You can also save a matplotlib chart as an image and place it with fpdf2. With Orshot, pass the chart image URL as a template parameter. **Q: How do I export a .py file as a PDF?** Turn the code into highlighted HTML with Pygments, then convert it with WeasyPrint: `HTML(string=highlight(code, PythonLexer(), HtmlFormatter(full=True))).write_pdf('code.pdf')`. That gave me a one-page, color-highlighted PDF from a 23-line script. For a Jupyter notebook, run `pip install "nbconvert[webpdf]"`, then `jupyter nbconvert --to webpdf --allow-chromium-download notebook.ipynb`. **Q: How can I generate a PDF from Python online for free?** Run fpdf2 or ReportLab in a free notebook like Google Colab. Both install with pip and need no system packages. For a designed template instead of code, Orshot's free plan includes 100 credits a month, where 1 credit is one PDF page, and you call it from Python with requests. **Q: How do I generate a PDF from a template in Python?** Use Jinja2 with WeasyPrint if a developer owns an HTML template: render the template with your data, then call `write_pdf()`. Use a template API like Orshot if a designer owns the layout: design it in Orshot Studio and send the field values from Python in one request. **Q: Is pdfkit still maintained?** No. pdfkit's README says it is deprecated to match wkhtmltopdf, and pdfkit's last release, 1.0.0, came out in November 2021. The wkhtmltopdf repository was archived on January 2, 2023, after a last release in June 2020. WeasyPrint and Playwright are the usual replacements. **Q: Can I use PyMuPDF in a commercial product?** Only under its terms. PyMuPDF is dual licensed under the AGPL-3.0 and a commercial license from Artifex. The AGPL requires you to publish your source if users reach your software over a network, so most closed source SaaS products buy the license or use pypdf, which is BSD licensed. **Q: Does Orshot have a Python SDK?** Yes. `pip install orshot` installs the official Orshot package, or you can call the REST endpoint with requests. Set the response format to pdf and the type to url to get a hosted PDF link back, kept for at least a year. **Q: What is Orshot?** Orshot is an API for automated image, PDF and video generation from templates. You design a template in Orshot Studio, mark the fields that change, and generate PDFs from Python, Node.js, n8n, Make, Zapier or an AI agent by sending those fields as data. ## Generate Your First PDF from Python [Sign up](https://orshot.com/pricing?via=blog-python-pdf-footer), copy the certificate template above and call it with the `requests` example in part 3. You get 100 free credits a month, no card needed. If something doesn't work the way you expect, hit the chat button. I'm usually the one on the other end. --- ### [Generate Dynamic OG Images in Astro with Orshot](https://orshot.com/blog/astro-dynamic-og-images) > Skip Satori JSX. Design OG templates visually in Orshot Studio and render dynamic social images from Astro Content Collections via one API call. If you run a blog or documentation site with Astro, you're probably adding a `title` and `description` to the frontmatter for every post. Ideally, your social previews (OG images) come from this same data. In reality, most teams either use a single static `og.jpg` across the whole site, get stuck manually designing OG cards in Figma and exporting new PNGs by hand for every content change, or struggle writing code-first Satori JSX with time spent on learning how to load custom fonts and wrangle limited CSS just to match the design given to them in Figma. The approaches above work, and there are solid tutorials, integrations and [image generation APIs](https://orshot.com/blog/template-based-image-generation-tools) for it but it also means every layout tweak is a pull request, every new font is more boilerplate, and you are debugging flexbox in a constrained runtime instead of moving type on a canvas. Marketing or DevRel team cannot adjust the card without asking an engineer to touch code and re-deploy. In this guide, you'll separate and save your OG image template layers in Orshot, allowing anyone to make updates visually in Orshot Studio without ever needing to change the site code again after setup. Design a single OG template in [Orshot Studio](https://orshot.com/features/orshot-studio), mark text or image fields (such as `title`, `description`, and `tag`) as parameters, and then use an Astro route to call the [Orshot Image Generation API](https://orshot.com/docs/image-generation), passing in values from your Content Collection entry. This workflow also applies to [Starlight](https://starlight.astro.build/ "target=_blank rel=nofollow") docs, where each guide has its own frontmatter. You can generate OG images on demand at request time from the server, or prefetch them during the build process. ## What you'll build By the end of this guide, every blog post on your Astro site will automatically get a unique OG image rendered from your Content Collection frontmatter — no manual exports, no Satori JSX. ![Designing an OG image template in Orshot Studio](https://orshot.com/blog/orshot-agent-template-astro.webp) ## Prerequisites - Node.js and npm installed. The demo app in this tutorial uses version 22 of Node.js. - An [Orshot](https://orshot.com/) account ## Why the code-only OG Image path gets old fast Satori expects you to express the whole design as JSX with a limited CSS subset. That is fine for a minimal title-on-gradient card. It gets tiring when you want brand rules, multi-line titles that shrink gracefully, author avatars, category pills, and background images that marketing refreshes every quarter. Each change means editing code, running the dev server, opening a preview URL, and comparing output in Discord or Twitter Card Validator until it looks right. The deeper issue is ownership. OG images are marketing surface area. Locking them inside `OgImage.tsx` turns every headline experiment into an engineering task. Orshot does not remove the need for a template, but it moves the template into a visual editor where parameterized layers map cleanly to the same `modifications` object you would have built by hand in code. ## Design the OG template in Orshot Studio You can design the OG card in [Orshot Studio](https://orshot.com/studio) the same way you would any other template. I kept the first version simple i.e. a logo and site name at the top left, a large bold headline in the middle, and a lighter description underneath. No photos, no clutter, just strong hierarchy that stays readable at thumbnail size. [Open the embed](https://orshot.com/templates/shared/s2q2y5jh/embed?view=play) Here's a prompt that works: > Design an Open Graph social card template for blog link previews. Canvas 1200×630. Dark charcoal to black background, minimal and high contrast. Top left: small white circular logo placeholder and site name text "ACME" in white uppercase sans-serif. Main content aligned left with generous padding: large bold white headline spanning up to two lines ("Title of the blog in two lines."), then a smaller light gray description below spanning up to two lines ("Description in two lines."). No clutter, no photos, no CTA button. Keep strong hierarchy and readable type at thumbnail size. Parameterize: `title` (text), `description` (text), `site_name` (text), `logo` (imageUrl). Use text fit or truncate on title and description so long Astro frontmatter does not overflow. Before integrating with Astro, use the preview or Automate panel in Orshot Studio to generate a sample image with mock content. If you notice issues with how the title wraps or scales, take this opportunity to adjust width constraints or text fit settings directly within Studio, rather than waiting until after you've connected the endpoint. Finally, make a note of your template's ID and double-check the names of all modification keys. These identifiers are visible in the template playground or within the API documentation, and must exactly match the keys you will send from Astro, including letter casing and any underscores. ## Build the Astro application We will scaffold a minimal Astro app, add a blog Content Collection, expose `/og/[slug].png` as an API route, and point the layout meta tags at that URL. ### Step 1. Scaffold a new Astro project From an empty directory, create a minimal TypeScript project and start the dev server to confirm the baseline works. ```bash npm create astro@latest og-orshot-demo cd og-orshot-demo npm run dev ``` Open `http://localhost:4321` once. Stop the server before the next step. Set your production site origin in `astro.config.mjs`. Crawlers require absolute URLs in `og:image`. ```javascript title="astro.config.mjs" import { defineConfig } from "astro/config"; export default defineConfig({ site: "https://example.com", }); ``` ### Step 2. Install dependencies for on-demand OG routes On-demand OG Image routes need server output in production, so add the Node adapter and switch to hybrid mode so static pages stay static while `/og/*` renders at request time. ```bash npx astro add node --yes npm install zod ``` Then, add secrets for local development. Copy your values from [Orshot **Workspace → API Keys**](https://orshot.com/docs/quick-start/get-api-key) and from the template ID from the Studio. ```bash title=".env" ORSHOT_API_KEY="your_api_key_here" ORSHOT_OG_TEMPLATE_ID="12345" ``` Finally, reference them in `src/env.d.ts` so TypeScript knows about `import.meta.env`: ```typescript title="src/env.d.ts" /// interface ImportMetaEnv { readonly ORSHOT_API_KEY: string; readonly ORSHOT_OG_TEMPLATE_ID: string; } interface ImportMeta { readonly env: ImportMetaEnv; } ``` ### Step 3. Create a sample blog Content Collection First, define the collection schema in `src/content.config.ts`. ```typescript title="src/content.config.ts" import { z } from "astro/zod"; import { glob, file } from "astro/loaders"; import { defineCollection } from "astro:content"; const blog = defineCollection({ loader: glob({ base: "./src/content/blog", pattern: "**/*.{md,mdx}" }), schema: z.object({ title: z.string(), description: z.string(), pubDate: z.coerce.date(), }), }); export const collections = { blog }; ``` Then, add a sample post at `src/content/blog/hello-orshot.md` as follows: ```markdown title="src/content/blog/hello-orshot.md" --- title: "Hello Orshot OG images" description: "Dynamic social previews from Content Collections without Satori JSX." pubDate: 2026-05-19 --- This post exists so we have frontmatter to feed into the Orshot template. ``` Next, create a blog page at `src/pages/blog/[slug].astro` that renders the entry body. ```astro title="src/pages/blog/[slug].astro" --- import { getCollection, getEntry, render } from "astro:content"; export async function getStaticPaths() { const posts = await getCollection("blog"); return posts.map((post) => ({ params: { slug: post.data.slug } })); } const { slug } = Astro.params; const entry = await getEntry("blog", slug!); if (!entry) return Astro.redirect("/404"); const { Content } = await render(entry); --- {entry.data.title}

{entry.data.title}

``` Run the dev server again and confirm `http://localhost:4321/blog/hello-orshot` loads. Stop the server before the next step. ### Step 4. Configure the OG image API endpoint Add `src/pages/og/[slug].png.ts` with the following code (social crawlers request this URL with `GET`). The handler loads the blog entry, posts to Orshot, and returns PNG bytes from your domain. ```typescript title="src/pages/og/[slug].png.ts" import type { APIRoute } from "astro"; import { getEntry } from "astro:content"; export const prerender = false; export const GET: APIRoute = async ({ params }) => { const slug = params.slug as string; const entry = await getEntry("blog", slug); if (!entry) { return new Response("Not found", { status: 404 }); } const orshotRes = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${import.meta.env.ORSHOT_API_KEY}`, }, body: JSON.stringify({ templateId: import.meta.env.ORSHOT_OG_TEMPLATE_ID, modifications: { title: entry.data.title, description: entry.data.description, }, response: { format: "png", type: "base64", }, }), }); if (!orshotRes.ok) { const errorText = await orshotRes.text(); console.error("Orshot render failed", orshotRes.status, errorText); return new Response("Render failed", { status: 502 }); } const json = await orshotRes.json(); const raw = String(json.data.content).replace(/^data:image\/png;base64,/, ""); const bytes = Buffer.from(raw, "base64"); return new Response(bytes, { status: 200, headers: { "Content-Type": "image/png", "Cache-Control": "public, max-age=86400", }, }); }; ``` Test the endpoint directly in the browser by visiting `http://localhost:4321/og/hello-orshot.png` directly (or with a curl) once the dev server is running. > If you prefer not to proxy bytes through Astro, set `response.type` to `"url"` in the Orshot payload and return `Response.redirect(json.data.content, 302)` instead. Most teams keep the `/og/...` path on their own domain for stable crawler behavior. ### Step 5. Use the OG URL in SEO meta tags Extract a small layout component so every blog page exposes consistent Open Graph and Twitter tags. Create `src/components/Seo.astro` with the following code: ```astro title="src/components/Seo.astro" --- interface Props { title: string; description: string; slug: string; } const { title, description, slug } = Astro.props; const canonical = new URL(Astro.url.pathname, Astro.site); const ogImage = new URL(`/og/${slug}.png`, Astro.site); --- ``` Finally, import it in `src/pages/blog/[slug].astro` inside ``. ```astro title="src/pages/blog/[slug].astro" --- import Seo from "../../components/Seo.astro"; // ...existing frontmatter --- ``` Now, view page source of `http://localhost:4321/blog/hello-orshot` and confirm `og:image` resolves to `https://example.com/og/hello-orshot.png`. Paste that OG URL into a social debugger or Slack to verify the preview matches your Orshot template. ## Conclusion Astro Content Collections already give you structured metadata per page. Orshot gives you a visual, parameterized template that non-engineers can evolve. The glue between them is one API call in a dynamic route, which is smaller than maintaining a parallel Satori layout in JSX for every brand refresh. If you are starting from a single shared `og.jpg`, this is a reasonable next step before you invest in a full programmatic layout in code. If you already have Satori working, compare how often you change design versus copy. When design changes are frequent, moving the canvas to Studio and keeping Astro for data usually saves time. ## Resources - [GitHub Repository](https://github.com/rishi-raj-jain/og-orshot-astro "target=_blank rel=nofollow") --- ### [How Brendi Automates Marketing for 5,000+ Restaurants](https://orshot.com/blog/brendi-restaurants-marketing-automation) > Brendi uses Orshot to auto-generate branded marketing images for 5,000+ restaurant clients across Brazil — one template, thousands of unique outputs When you're a platform serving **5,000+ restaurants** across Brazil, every client expects polished marketing visuals — menu promotions, delivery campaigns, seasonal offers. Hiring designers for each one doesn't scale. That's the problem Brendi solved with Orshot. ## What Brendi Does ![The Brendi restaurant marketing homepage](https://orshot.com/blog/brendi-home.webp) [Brendi](https://brendi.com.br "target=_blank") is a foodtech SaaS platform that helps restaurants across Brazil run their own direct-to-customer sales channels. Think AI-powered WhatsApp ordering, digital menus, loyalty programs, and automated marketing — all designed to help restaurants sell more without relying on third-party delivery apps. The numbers behind the platform are impressive: - **5,000+ active restaurant clients** across Brazil - **$100M+** in revenue generated through the platform - **10M+ orders** processed to date Their clients include popular chains like **Will The Burguer**, **La Brasa**, **Johnnie Grill**, **Primeiro Reino Burguer**, **Moot Burguer**, and more — all relying on Brendi's platform to power their direct sales and marketing. A critical part of that marketing stack? **On-brand visual content** for every restaurant, generated on demand using [Orshot](https://orshot.com/pricing). ## The Problem: Visuals That Don't Scale Each of Brendi's restaurant clients has their own brand — logos, colors, food photography, promotional messaging. Creating unique marketing images manually for thousands of restaurants means: - **Designers bottlenecked** on repetitive, templated work - **Days of turnaround** for simple promotional banners - **Inconsistent quality** across the client base - **No way to run personalized campaigns** at the scale their platform demands When you're powering marketing automation for thousands of businesses, the images need to be as automated as the messages. ## The Solution: Orshot Templates + API Brendi uses [Orshot Studio](https://orshot.com/features/orshot-studio) to design reusable marketing templates, then renders unique images for each restaurant via the [Orshot API](https://orshot.com/docs/api-reference/render-from-studio-template). - **Template design in Studio**: Marketing templates built once with placeholders for restaurant logos, product photos, brand colors, and promo text. - **Dynamic rendering via API**: Each restaurant's brand assets and copy are swapped in at render time — one template, thousands of unique outputs. - **Integrated into their platform**: Image generation is baked into Brendi's marketing automation — restaurants get visuals without lifting a finger. ### One Template, Thousands of Brands The key insight: Brendi doesn't create a new design for every restaurant. They design a template once — say, a promotional banner layout — and use [dynamic parameters](https://orshot.com/docs/orshot-studio/setting-parameters) to inject each restaurant's: - **Logo and branding** - **Product photography** - **Custom promotional copy** - **Brand colors** The result is a unique, on-brand image for every client, generated in seconds. ## Try It Yourself: Food & Restaurant Templates Orshot has a library of ready-made [food & restaurant templates](https://orshot.com/templates/g/food) you can clone and customize. Here are a few examples similar to what Brendi generates for their clients: ### Restaurant Pasta Promo [Open the embed](https://orshot.com/studio?community_template_id=843) ### Daily Special Announcement [Open the embed](https://orshot.com/studio?community_template_id=160) ### Restaurant Grand Opening [Open the embed](https://orshot.com/studio?community_template_id=370) Each template above is fully editable — swap in your brand, photography, and copy, then render via API at any scale. Browse all [food templates →](https://orshot.com/templates/g/food "target=_blank") ## The Results - **Thousands of marketing images generated every month** — unique visuals for each restaurant client - **5,000+ restaurants** served with personalized, on-brand visuals - **Seconds, not hours** — from data to finished image - **Zero per-client design work** — templates scale automatically - **Consistent quality** across every restaurant's marketing materials What previously required a design team working around the clock now runs on autopilot as part of Brendi's platform. As they onboard more restaurants, the image generation scales with zero additional design effort. ## Why This Matters for Platforms Brendi's use case highlights a pattern we see across SaaS platforms, agencies, and marketplaces: **your users need visual content, but you can't hire designers for each one.** Whether you're generating: - Restaurant promotions like Brendi - [Personalized certificates](https://orshot.com/blog/google-sheets-certificates-automation) for education platforms - [Social media graphics](https://orshot.com/use-cases/t/auto-generate-social-media-images) for marketing tools - Product cards for e-commerce marketplaces The approach is the same — design once in Studio, render at scale via API. > If your platform needs to generate branded visuals for your users, you're solving the same problem Brendi did. ## Get Started Orshot gives you a visual editor to design templates and a REST API to render them with dynamic data. No complex infrastructure, no per-image design work. [Start generating images at scale →](https://orshot.com/pricing) --- ### [How Cashew.sg Posts a Carousel a Day With Claude](https://orshot.com/blog/cashew-claude-carousel-automation) > Cashew.sg is a mortgage advisory in Singapore. Seven weeks with Orshot took them from an hour a graphic to 875 renders, almost all asked for by Claude. ![The Cashew homepage](https://orshot.com/blog/cashew-home.webp) [Cashew.sg](https://cashew.sg "target=_blank") is a mortgage advisory in Singapore. Eleven advisors, one Instagram account, and marketing that runs on property news. News goes stale fast. That is the whole problem. They signed up on 28 July 2026. ![875 renders in seven weeks, 871 asked for by Claude, 99 templates built, 26 posts published through Orshot](https://orshot.com/blog/cashew-numbers.webp) ## Before, an hour a graphic Roshni ran the content, and designed every piece by hand. > I was building with Claude Design, but consistency was tough and I couldn't connect it to any other workflow, so each piece took at least an hour. They were posting about twice a week. ## Now, the brief is the only handoff Their daily news scan already ran in n8n. Everything after it is new. Orshot holds the templates and renders the finished images. Claude calls it through [Orshot for agents](https://orshot.com/agents). ![Cashew Radar in n8n, then one md brief, then Claude calling Orshot, then the carousel posted to at cashew underscore sg](https://orshot.com/blog/cashew-pipeline.webp) Each article becomes one `.md` brief, always the same shape. Claude reads it and fills a carousel template, slide by slide. The templates are Cashew.sg's own, drawn once in Orshot and kept as reusable parts: a stat grid, a key takeaway, a full-bleed cover. A new story inherits the brand instead of restating it. ## What changed ![July 9 posts before Orshot, August 14 posts, September 12 posts in 18 days](https://orshot.com/blog/cashew-cadence.webp) Cadence, mostly. Posting close to daily is the thing an hour per graphic makes impossible. Twenty-six of those went out through Orshot itself: brief, render, published, without leaving the pipeline. > Orshot turned content production from an hour-a-piece design exercise into something that runs off our existing workflow. > Consistent, on-brand, and fast enough that we actually ship daily. > > — Roshni Mahbubani, Growth Marketer, Cashew.sg ## The use nobody planned Advisor cards. One per advisor, carrying that person's name, title and phone number, handed to B2B clients and property agents. Fixed layout, data per person, no design tool. Cashew.sg itself crossed S$1.06 billion in annualised mortgage volume over the same stretch, ten months after its first loan. {/* Narrow and centred on desktop: the post is text-heavy and at full column width it dominated the article. LazyEmbed puts `style` and `className` on BOTH its wrapper and the iframe, so the width has to come from a plain div around it. The height ladder is not decoration. A cross-origin iframe cannot report its content height, and with `scrolling="no"` anything too short is silently CLIPPED. Measured on the real embed: it needs 1231px at 446px wide (the desktop 62%), 1357px at 358px, and 1454px at 330px, so the narrower the column the taller the frame has to be. If this post is ever swapped, re-measure rather than reusing these numbers. */} [Cashew on LinkedIn: $1 billion annualised run rate in mortgages](https://www.linkedin.com/embed/feed/update/urn:li:activity:7505454288278687745) ## If your content already starts as text Then the graphic is a rendering step, not a design project. A newsletter, a changelog, a news scan, a CMS: anything that produces the words can hand a brief to your agent and get the visual back. Draw the template once, connect your agent, and it runs from there. 100 free credits a month, no card needed. [Generate your first carousel](https://orshot.com/pricing?via=blog-cashew-case-study) --- ### [How ClickUp is Automating Banner Generation using Orshot](https://orshot.com/blog/clickup-banner-generation) > ClickUp uses Orshot to auto-generate yearly wrap banners for over 100,000 users, producing 300+ banners per minute after just 30 minutes of template design. When you're serving over 100,000 users and need to generate personalized yearly wrap banners for each one, manual design simply isn't an option. That's exactly the challenge [ClickUp](https://clickup.com "target=_blank") faced — and why they turned to Orshot for a scalable solution. If you see any of the below ClickUp's 2025 Wrapped banner in the wild, it's generated with Orshot. ![A ClickUp Wrapped banner generated with Orshot](https://orshot.com/blog/clickup-wrapped-banner.webp) ## The Challenge ClickUp wanted to create a memorable end-of-year experience for their users by generating personalized yearly wrap banners. With over 100,000 users to serve, they needed a solution that was both fast to set up and powerful enough to handle massive scale. ## The Solution: Orshot Studio + API ClickUp chose Orshot to automate their banner generation workflow. Using [Orshot Studio](https://orshot.com/features/orshot-studio), their team designed a dynamic template that could be personalized with each user's data — productivity stats, achievements, and custom branding elements. ### Quick Setup The template design process was remarkably efficient. Using Orshot Studio's intuitive interface, the ClickUp team went from concept to production-ready template in **just about 30 minutes**. No complex design tools or lengthy development cycles required. They simply: 1. Designed their banner template in Studio 2. Set up [dynamic parameters](https://orshot.com/docs/orshot-studio/setting-parameters) for user data 3. Connected their backend to the [Orshot API](https://orshot.com/docs/api-reference/render-from-studio-template) ## The Results The numbers speak for themselves: - **300+ banners per minute** — consistent, reliable generation at scale - **100,000+ personalized banners** — unique to each user - **30 minutes** — from blank canvas to production template - **Zero maintenance** — fully automated workflow What would have taken weeks of design work and custom development was accomplished in a fraction of the time, letting the ClickUp team focus on what matters: creating value for their users. ## Why It Works Orshot's combination of visual design tools and powerful API infrastructure makes it ideal for this kind of automation: - **No-code template design** — designers work directly in Studio without developer handoff - **Instant API integration** — templates are immediately available via REST API - **Proven scale** — built to handle thousands of renders per minute - **Flexible output** — generate images, PDFs, or videos from the same template Whether you're [generating certificates](https://orshot.com/blog/google-sheets-certificates-automation), [social media graphics](https://orshot.com/use-cases/t/auto-generate-social-media-images), personalized reports, or yearly wrap banners like ClickUp, Orshot gives you the tools to design once and generate at scale. Ready to automate your image generation? [Get Started for free](https://orshot.com/pricing) --- ### [How CreatorCore Automates 100k+ Visuals for Influencers](https://orshot.com/blog/influencer-marketing-automation-creatorcore) > CreatorCore runs influencer campaigns for agencies and music labels. See how they've automated 100,000+ visuals for influencers using Orshot. CreatorCore is an all-in-one platform for the creator economy. Agencies, talent managers, brands and music labels use it to run influencer campaigns end to end: discover creators, manage campaigns, build media kits, track performance and handle payouts. Teams working with Capitol Records, Atlantic Records and Warner Bros. run their operations on it. Every one of those campaigns needs its own graphics. Since April 2025, CreatorCore has generated them through Orshot: - **100,000+ images** rendered through the API - **10,000+ images a month** at the current pace - **99.7%** of requests successful - **Zero** designers involved ![The CreatorCore homepage](https://orshot.com/blog/creatorcore-home.webp) ## The Migration [CreatorCore](https://creatorcore.co "target=_blank") originally generated their images through Pika, another product of ours. When the Pika API was retired in favor of Orshot, they were one of the teams we reached out to directly and helped move across. The migration was straightforward, and once it was done the integration largely disappeared into the background, which is the outcome everyone wants from infrastructure. > — Nic Campanile, Co-Founder, CreatorCore ## The Problem Every Platform Runs Into CreatorCore's customers are agencies, and every agency has clients of its own. Every client runs campaigns, and every campaign needs graphics on that client's branding, usually the same week the numbers land. That leaves a platform with three unappealing options: staff designers to rebuild the same layout a thousand times, ask customers to make their own graphics elsewhere, or ship without the visuals and let the product feel incomplete. The work itself is repetitive by nature. Same layout, different data. That is what makes it a good fit for automation. ## How They Set It Up CreatorCore did not commission a custom design. They chose a ready-made social media template from the Orshot library, connected it to the [render API](https://orshot.com/docs/api-reference/render-from-template) and passed their customers' data through it. - **A template from the library**: Chosen off the shelf rather than designed from scratch, with dynamic parameters for text, images and branding already in place. - **One API call per image**: Their platform sends each customer's data and receives a finished image in seconds. One template produces thousands of distinct outputs. - **Invisible to the end customer**: The graphics appear inside CreatorCore as part of their product. Nobody has to open a design tool. ## Try the Same Template Below is a template from the Orshot library, similar to the kind CreatorCore started with. Change the photo, the caption or the username to see how it responds. If it is useful, save it to your workspace and start rendering it through the API. [Open the embed](https://orshot.com/templates/shared/ldk8htdg/embed?view=view) There are plenty more in the [social media templates](https://orshot.com/templates/g/social-media) and [Instagram templates](https://orshot.com/templates/g/instagram) collections. ## The Same Pattern, Across Industries CreatorCore is not an unusual case. [Brendi](https://orshot.com/blog/brendi-restaurants-marketing-automation) does the same for more than 5,000 restaurants across Brazil, and [agencies](https://orshot.com/solutions/ai-marketing-automation-for-agencies) run the same setup across their whole client roster. The shape is consistent: your users expect visual content, staffing a design team for each of them is not realistic, so image generation becomes a feature you ship rather than a queue you manage. Choose a template or design your own, connect it to the API, and it runs quietly from there. 100 credits free every month, no card needed. [Start generating images at scale](https://orshot.com/pricing?via=blog-creatorcore-case-study) --- ### [How Ivan is cross-posting Twitter Threads on Instagram and TikTok](https://orshot.com/blog/twitter-thread-to-carousel) > Meet Ivan, a writer, storyteller and author who has automated carousel generation for Intsgram and Tiktok from his Twitter threads using this free tool Meet Ivan, a writer, storyteller and author who was spending good time manually converting his Twitter threads into Instagram carousels and TikTok videos. Today, he's automated this process using Orshot, saving him time and manual effort ## The Story ![Customer testimonial from Ivan about Orshot](https://orshot.com/blog/ivan-testimonial.webp) About last week Ivan signed up on Orshot, he was looking to automate cross-posting his Twitter threads on his Instagram and Tiktok Ivan is a writer, storyteller and a published author, and has a huge following on his socials with [130k+ on X](https://x.com/ivanfamil), [53k+ on Instagram](https://www.instagram.com/ivanfamil) and LinkedIn He didn't want to manually screenshot his Thread tweets and then resize them for Instagram/Tiktok and then upload them, so he was looking for a tool that could help him automatically screenshot those threads and put them in size ready to be posted on his other socials. There were [tools like TweetPik](https://orshot.com/blog/tweetpik-api-alternative) which could do that, but they don't support Twitter threads Ivan figured Orshot wouldn't solve his problem, since there was no direct option to automate Twitter thread screenshot and automatically resize them for other social platforms I instantly sent him an email asking about his use case, his first reply was "... yeah I tried but I don't think Orshot can help me with that" 😅 The best thing about this reply was I instantly knew what exactly Ivan was trying to do. And now that I understood the problem, and that i was something that didn't exist in Orshot at that point, but can be done, I told Ivan that I can add this feature in Orshot Ivan agreed to give it a try and joined Orshot's Slack, where we discussed specifics about his use case And after bunch of automation explorations on Zapier, new APIs, trials and testing we built this tool which helps him auto-generate carousels for his Instagram, LinkedIn and Tiktok from his Twitter threads I built this tool with Ivan with lots of feedback from him Here's a quick demo of the tool in action: [Watch the video](https://www.youtube.com/watch?v=jgvvWEmz6l4) ## How Ivan is using Orshot Ivan writes lots of threads on Twitter. And to repurpose his content for other social platforms, all he does now is paste the link to those threads in [**Twitter Carousel Generator**](https://orshot.com/tools/twitter-carousel-generator) and the tool automatically generates carousel slides for him, in just a matter of seconds ![The Orshot Twitter thread to carousel generator](https://orshot.com/blog/twitter-carousel-generator-tool.webp) You can select the platform for which you want the slides for from LinkedIn, Instagram, Tiktok. On top of that, you can also customize the appearance of the carousel images Once the carousel is generated, you can download them as images or PDF — or skip the download entirely and post straight to Instagram, TikTok, LinkedIn, and 10+ other platforms using [Orshot Social Publish](https://orshot.com/docs/publish/introduction). What used to take minutes and lots of manual screenshotting and resizing, can now be done within seconds with this tool [**Try Twitter Carousel Generator**](https://orshot.com/tools/twitter-carousel-generator)(free) --- ### [How to add Image and PDF Attachment Automations in Airtable](https://orshot.com/blog/airtable-image-automation) > Automatically add branded image and PDF attachments to Airtable records. Render via a script or Make, Zapier, or n8n and write the file back. 100 free credits a month. Airtable is great at holding data — testimonials, products, listings, events. It's just not built to turn that data into finished graphics. So the work lands on you: export to a sheet, open Canva, rebuild the same layout for every row. This is about automating that away. Design the layout once in Orshot, point an [Airtable automation](https://www.airtable.com/platform/automations "target=_blank rel=nofollow") at it, and every record renders itself into a branded image or PDF — with the file written straight back into an attachment field. Quick expectation-check, since "images from Airtable" gets used two ways: - **AI art from a prompt** — type "a watercolor fox," get a fox. That's a text-to-image model, not this. - **Designed graphics and PDFs from your records** — every row becomes an on-brand card, certificate, or social post. That's what we're doing, basically [template-based graphics from your Airtable data](https://orshot.com/blog/template-based-image-generation-tools). [**Try it on your own base free**](https://orshot.com/pricing "target=_blank") **— 100 credits a month, no card.** ## What you'll build Here's the end state. This is a testimonials table where every quote rendered itself into a branded review card, dropped right into the Attachments field: ![An Airtable testimonials table where each quote has rendered into a branded review card in the Attachments column](https://orshot.com/blog/airtable-image-automation/04-airtable-result.webp) Same idea works for product cards, event banners, listing graphics, or per-record certificates — you template the design once, then every row fills it in. ## Step 1 — your table You need a **Quote** column for the text and an **Attachments** field for the finished card. Add a column for anything else each card should pull from your data — a name, a company, a stat — then map it in the next step. ## Step 2 — a template The Attachments column fills from an Orshot template — the design your rows pour into. This is the review card open in [Studio](https://orshot.com/features/orshot-studio), with the quote, stat, photo, and name all set up as fields: ![The review-card template open in Orshot Studio, with the quote, stat, photo, and customer fields](https://orshot.com/blog/airtable-image-automation/05-studio-template.webp) Build your own from scratch, generate one with AI, or paste a Canva link and start from that: Mark the parts you want driven by data — the quote, a name, a stat — as dynamic, and you're ready to wire it up. ## Step 3 — the render This is the part that calls Orshot and writes the card back. In Airtable it runs in the Scripting extension (fired by a button) or an Automation's _Run a script_ action — both are on Airtable's paid (Team) plans. On the Free plan, skip to the [no-code route](#no-code-make-zapier-or-n8n) below; it works on any plan. You don't have to write the script from scratch. Open your template, hit **Automate → Airtable**, and Orshot hands you a ready-made script for that template with its fields already mapped — here's a trimmed version that drives the card from a couple of columns: ![Orshot's Quick Connect sheet on the Airtable tab — the ready-made Airtable Scripting code for this template](https://orshot.com/blog/airtable-image-automation/06-quick-connect-airtable.webp) It reads a row, sends its fields to Orshot, and saves the returned file to the attachment field: ```javascript // Airtable script — render a review card from each row const table = base.getTable("Testimonials"); const record = await input.recordAsync("Pick a record", table); const res = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_ORSHOT_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your_template_id", modifications: { // map each column to a field in your template quote: record.getCellValueAsString("Quote"), customer_name: record.getCellValueAsString("Customer"), customer_title: record.getCellValueAsString("Title"), // add company, stat_number, stat_label, customer_photo to drive the rest }, response: { type: "url", format: "png" }, // "pdf" gives a document instead }), }); const { data } = await res.json(); await table.updateRecordAsync(record, { Attachments: [{ url: data.content }] }); ``` `modifications` maps your columns onto the template. The render comes back as a hosted URL, and `updateRecordAsync` drops it into the Attachments field — that attachment URL is what shows the card right in the record — the same card you saw up top. (Quick Connect names the field `Orshot Image`; I used Airtable's default `Attachments` — use either, just match it in the script, and keep your key in the script's secrets, not in a shared base.) ## No-code: Make, Zapier, or n8n On a Free Airtable plan, or if you'd rather not touch code, wire it up in a no-code tool instead. Orshot connects to Zapier, Make, n8n, and Pipedream directly: ![Orshot's no-code connectors — Airtable, Zapier, Make, n8n, and Pipedream](https://orshot.com/blog/airtable-image-automation/01-integrations.webp) The recipe's the same in all of them: - **Trigger** — a new or updated Airtable record - **Render** — send the fields to an Orshot render step - **Write back** — update the record with the URL that returns On Make, you can skip the setup and [start from the ready-made Airtable template](https://www.make.com/en/integration/19852-attach-orshot-image-or-pdf-files-to-new-airtable-records?templatePublicId=19852 "target=_blank"). Full walkthroughs for [Make](https://orshot.com/blog/orshot-make-integration) and [n8n](https://orshot.com/blog/n8n-marketing-automation-tutorial). If you've built a [Sheets-to-image flow](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets) before, this is the same shape against your base. ## Then let it run One render is a demo. The point is never thinking about it again. With the [content automation](https://orshot.com/solutions/ai-marketing-automation-for-agencies) in place, every new row turns itself into a finished file — like this base quietly rendering content and listings on its own: ![Orshot Automations — Airtable records turning into images and PDFs automatically](https://orshot.com/blog/airtable-image-automation/02-automations.webp) A few things worth knowing: - **PDFs, not just images** — switch `format` to `pdf` and the same template becomes a per-record certificate, invoice, or one-pager. `mp4` gives you a short clip. - **Backfill** old rows by looping the script over a view, or batch the whole set at once - **It scales** — renders run in parallel, so a big batch doesn't crawl [**Point it at your base →**](https://orshot.com/pricing "target=_blank") — free, 100 credits a month, no card. ## Common questions **Q: Is this an Airtable automation, or do I click a button?** Both work, on a paid Airtable plan: the Scripting extension fires on a button click, and Airtable's Automations can run the same script on a 'record created' or 'record updated' trigger. On any plan — including Free — Make, Zapier, or n8n can watch the base and render automatically. **Q: Can Orshot make AI art from an Airtable prompt field?** No. Orshot renders from templates, not text prompts — it turns your records into branded graphics, it doesn't invent artwork. For DALL·E-style art, use a text-to-image model. Orshot does use AI to [build a starting template](https://orshot.com/features/ai-template-generator) and for background removal, but the render itself is template-based. **Q: Can it generate PDFs, not just images?** Yes — set the response format to `pdf` and the same template renders a document instead of an image. It's how people generate per-record certificates, invoices, and one-pagers. Video (mp4/webm/gif) works the same way. See the [render API](https://orshot.com/solutions/image-generation-api). **Q: How does the finished file get back into Airtable?** Orshot returns a hosted URL. You write it into an Airtable attachment field on the same record — that attachment URL is what displays the rendered card in the cell. The script's updateRecordAsync step, or the automation's 'Update record' action, does it for you. **Q: Do I have to write the script myself?** No. Every Orshot template has a Quick Connect sheet — open it and hit the Airtable tab, and you get the Scripting snippet with all of that template's fields already mapped. Copy, paste, swap in your API key. **Q: Can I run it across thousands of existing records?** Yes. Loop the script over a view, batch the set, or use Orshot's bulk render to backfill. Renders run in parallel, so large jobs stay quick. ## Bottom line If you meant AI art, grab a text-to-image model — Orshot isn't that. If you meant automating Airtable to spit out clean, designed images and PDFs from the records you already keep, that's the whole job: template the design once, connect it through a script or a no-code automation, and every row renders its own. The same approach works from [Google Sheets](https://orshot.com/blog/auto-generate-instagram-carousels-google-sheets) and most data sources. Try it on the free credits, and if the field mapping trips you up, hit the chat — I'll walk you through it. --- ### [How to Auto-Generate Social Media Graphics at Scale using AI](https://orshot.com/blog/automate-social-media-graphics) > Learn how to automate social media graphics with AI. Create templates, generate branded visuals via API, and publish to 15+ platforms — no designer needed. Every blog post, product launch, or customer quote needs graphics sized for Instagram, Twitter/X, LinkedIn, and Facebook. That's 4+ visuals per piece of content — resized, branded, and captioned. Manually. Every time. In this guide, you'll set up a workflow that automatically generates branded social media graphics whenever you add a row to a spreadsheet. No design skills, no code. By the end, you'll have an automation that turns data into ready-to-post visuals in seconds using [Orshot](https://orshot.com/pricing) and [Make](https://orshot.com/docs/integrations/make "target=_blank nofollow") ![Animated social media graphic generated with Orshot — auto-generate graphics like this](https://orshot.com/blog/automate-social-media-graphics/happy-customers-new.gif) ## Why Automate Your Social Visuals? If you're still making each social graphic by hand, you already know the pain: - **Hours lost on repetitive work** — Same template, different headline, different image. Over and over. - **Brand inconsistency** — When three people make graphics in Canva, you get three different versions of your brand. - **Designer bottleneck** — Your designer is swamped. Marketing waits. Posts get delayed. - **Missed posting windows** — By the time the graphic is ready, the moment has passed. - **Scaling means more manual work** — More content = more graphics = more hours in Canva. It doesn't scale. The fix isn't hiring more designers. It's automating the graphics themselves. Design the template once, then let data do the rest. ## What You'll Build A no-code workflow where adding a row to Google Sheets automatically generates a branded social media graphic via Orshot and saves the image URL back to your sheet — ready to post or feed into your publishing pipeline **The flow:** ![Automation flow: Google Sheets to Make to Orshot](https://orshot.com/blog/automate-social-media-graphics/flow.png) ### What You'll Need - **[Orshot Account](https://orshot.com/pricing)**: free plan with 100 credits every month, no credit card required. This is where your templates and image generation API live. - **A social media template in Orshot** — We'll pick one in Step 1. - **Google Sheets** — Your data source (headlines, images, colors). - **[Make.com account](https://make.com "target=_blank nofollow")** — Free tier works fine for this. This connects everything. > **Using n8n or Zapier?** The same approach works. See our [n8n tutorial](https://orshot.com/blog/n8n-marketing-automation-tutorial) or [Zapier docs](https://orshot.com/docs/integrations/zapier) for platform-specific setup. ## Step 1: Pick a Social Media Template Head to Orshot's [template library](https://orshot.com/templates) and pick a social media template that fits your use case — quote cards, product promos, event announcements, or general-purpose social graphics. Here's a template you can copy and start using: [Open the embed](https://orshot.com/templates/shared/ud9ovrbl/embed?view=play) You can also design your own from scratch in [Orshot Studio](https://orshot.com/features/orshot-studio), or import existing designs from [Canva](https://orshot.com/docs/importing-templates/import-from-canva) or [Figma](https://orshot.com/docs/importing-templates/import-from-figma). Or skip manual design entirely — use Orshot's [AI Design Agent](https://orshot.com/blog/introducing-design-agent) to generate a complete template from a text prompt. Describe what you need ("Instagram promo card with headline, subtitle, logo, and CTA button on a gradient background") and the agent builds it for you in seconds, ready to parameterize. [Orshot AI Design Agent Demo](https://www.youtube.com/watch?v=t-Xt1W5XzEY) Once you have a template, open it in Orshot Studio and **parameterize** the dynamic fields — the parts that change between posts. Select a layer, toggle **"Parameterize"** in the properties panel, and assign a key name. For a typical social media graphic, you'll want these parameters: | Field | Parameter Key | Example Value | | ---------------- | ------------- | ---------------------------------- | | Headline | `headline` | `Summer Sale: 50% Off` | | Subtitle | `subtitle` | `Limited time offer — ends Friday` | | Background Image | `bg_image` | `https://cdn.example.com/bg.jpg` | | Logo | `logo` | `https://cdn.example.com/logo.png` | | Brand Name | `brand_name` | `Your Brand` | | CTA Text | `cta_text` | `Shop Now` | Once saved, this template becomes an API endpoint. Every social post can now generate a unique branded graphic by passing different data to the same template. ## Step 2: Set Up Your Data Source (Google Sheets) Create a new Google Sheet with columns that match your template parameters, plus an output column for the generated image: | headline | subtitle | bg_image | logo | brand_name | cta_text | imageUrl | | ---------------------- | ------------------------------------------ | ---------------------------------- | -------------------------------- | ---------- | ----------- | --------------- | | Summer Sale: 50% Off | Limited time — ends Friday | https://cdn.example.com/summer.jpg | https://cdn.example.com/logo.png | Acme Store | Shop Now | _(auto-filled)_ | | New Feature: Dark Mode | Now available for all users | https://cdn.example.com/dark.jpg | https://cdn.example.com/logo.png | Acme Store | Try It Free | _(auto-filled)_ | | Customer Spotlight | "Orshot saved us 10 hours/week" — Sarah K. | https://cdn.example.com/sarah.jpg | https://cdn.example.com/logo.png | Acme Store | Read More | _(auto-filled)_ | Add 3-5 rows with real data. The `imageUrl` column stays empty — your automation will fill it in. ## Step 3: Build the Automation in Make Open [Make.com](https://make.com "target=_blank nofollow") and create a new scenario. You'll add three modules: Prefer a head start? [Open the ready-made Make template](https://www.make.com/en/integration/19850-render-branded-social-images-from-new-google-sheets-rows-with-orshot?templatePublicId=19850 "target=_blank"). It has all three modules wired up, so you only pick your sheet and Orshot template. ### 3a. Google Sheets — Watch New Rows Add the **Google Sheets > Watch New Rows** module as your trigger: - **Connection**: Connect your Google account - **Spreadsheet**: Select the sheet you created in Step 2 - **Sheet**: Choose the correct tab - **Limit**: Set to 10 (processes up to 10 new rows per run) This module fires every time a new row appears in your sheet. ### 3b. Orshot — Generate Image Add the **Orshot** module next. Search for "Orshot" in Make's module list — [it's a native integration](https://orshot.com/docs/integrations/make). - **Connection**: Add your Orshot API key (find it in Orshot Dashboard → Settings → API Key) - **Operation**: Generate Image From an Orshot Studio Template - **Template**: Select your social media template from Step 1 - **Response Type**: URL - **Response Format**: PNG Then map your Google Sheets columns to the Orshot template parameters: | Orshot Parameter | Google Sheets Column | | ---------------- | -------------------- | | `headline` | `{{headline}}` | | `subtitle` | `{{subtitle}}` | | `bg_image` | `{{bg_image}}` | | `logo` | `{{logo}}` | | `brand_name` | `{{brand_name}}` | | `cta_text` | `{{cta_text}}` | Make's visual mapper lets you drag column values directly into each parameter field. ### 3c. Google Sheets — Update Row Add a **Google Sheets > Update a Row** module to save the generated image URL back: - **Spreadsheet**: Same sheet as the trigger - **Row Number**: Map from the trigger module's row number - **imageUrl column**: Map the image URL from the Orshot module's output That's the full workflow: new row → generate graphic → save URL. ### 3d. Turn It On Set the scenario to run on a schedule (every 15 minutes, hourly, or on-demand) and activate it. Every new row you add will automatically produce a branded social media graphic. ## Step 4: Test and Scale Add a new row to your sheet and watch the automation run. Within seconds, the `imageUrl` column fills in with a link to your generated graphic. Click it — that's a ready-to-post social media visual, generated from your template and data, with zero manual design work. Here's an animated graphic generated from the template — with staggered, spring-based entrance animations on every element: ![Animated social media graphic with spring animations generated with Orshot](https://orshot.com/blog/automate-social-media-graphics/animated-spring-new.gif) Orshot generates **static images, animated GIFs, and videos** from the same template — just change the format from `png` to `gif` or `mp4`. Here are four static graphics generated from the **same template** with different data — each row in your spreadsheet produces a unique, branded visual: ![Summer sale social media graphic generated with Orshot](https://orshot.com/blog/automate-social-media-graphics/summer-sale.png) ![Dark mode launch social media graphic generated with Orshot](https://orshot.com/blog/automate-social-media-graphics/dark-mode.png) ![Conference event social media graphic generated with Orshot](https://orshot.com/blog/automate-social-media-graphics/webconf-2026.png) ![Customer testimonial social media graphic generated with Orshot](https://orshot.com/blog/automate-social-media-graphics/customer-testimonial.png) Same template, different data. That's the power of parameterized templates — design once, generate thousands. ### Scale It Up Once the basic workflow runs, you can extend it: - **Automate posting too** — Add [Orshot Social Publish](https://orshot.com/blog/introducing-orshot-publish) to your API call and post directly to Instagram, X, LinkedIn, Facebook, and [10+ more platforms](https://orshot.com/blog/social-media-automation-tools). No [Buffer needed](https://orshot.com/blog/buffer-alternative). - **Trigger from your CMS** — Replace the Sheets trigger with a webhook from [WordPress](https://orshot.com/solutions/wordpress), Shopify, or your headless CMS. New blog post published? Social graphic generated automatically. - **Multiple sizes from one row** — Generate an Instagram square, Twitter card, and LinkedIn banner from the same data by calling multiple templates in sequence. - **Connect an RSS feed** — Use Make's RSS module to pull new blog posts and feed titles + images into Orshot automatically. If you'd rather not maintain a Make scenario at all, Orshot can run a loop like this natively. The workflow below posts a fresh quote graphic every day, and it's ready-made: one click on **Use this workflow** copies it into your workspace. [Post daily quote graphics automatically workflow on Orshot](https://orshot.com/workflows/daily-quote-graphics/embed) ## Other Ways to Generate Graphics at Scale The no-code workflow above is the most accessible method, but it's not the only one. Here are three alternatives depending on your setup: ### REST API — For Developers If you're already writing code, call Orshot's [Image Generation API](https://orshot.com/solutions/image-generation-api) directly: ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer YOUR_API_KEY", }, body: JSON.stringify({ templateId: "YOUR_TEMPLATE_ID", modifications: { headline: "Summer Sale: 50% Off", subtitle: "Limited time offer", bg_image: "https://cdn.example.com/summer.jpg", brand_name: "Acme Store", cta_text: "Shop Now", }, response: { type: "url", format: "png" }, }), }); const { data } = await response.json(); const url = data.content; // the rendered image URL ``` SDKs available for [Node.js](https://github.com/rishimohan/orshot-nodejs-sdk "target=_blank"), [Python](https://github.com/rishimohan/orshot-python-sdk "target=_blank"), [PHP](https://github.com/rishimohan/orshot-php-sdk "target=_blank"), and [Ruby](https://github.com/rishimohan/orshot-ruby-gem "target=_blank"). ### Dynamic Image URLs — Simplest Method Change URL parameters and get a new image instantly — no API call needed. Great for OG images and share cards: ```markdown https://api.orshot.com/v1/dynamic/YOUR_TEMPLATE_ID?headline=Summer+Sale&subtitle=50%25+Off ``` Embed this URL anywhere — email signatures, CMS pages, social bios — and it renders a fresh image on the fly. [Learn more about dynamic parameters](https://orshot.com/blog/dynamic-parameters-prompt-href). ### Bulk Generation from Spreadsheets If you need 100+ graphics at once (campaign launches, product catalogs), use Orshot's built-in spreadsheet import. Upload a CSV, map columns to template parameters, and generate everything in one batch. No Make or Zapier required. ### MCP Server — For AI Agent Workflows If you're building with AI agents (Cursor, Windsurf, Claude, or custom LLM pipelines), Orshot's [MCP server](https://orshot.com/blog/orshot-remote-mcp-server) lets any AI agent design templates, generate images, and manage your workspace directly. Your AI coding assistant becomes a design assistant too — create and iterate on social media templates without leaving your editor. ## What Types of Graphics Can You Automate? Pretty much anything that follows a repeatable template: - **Quote and testimonial cards** — Customer reviews, team quotes, inspirational content - **Product promotion banners** — Sale announcements, new arrivals, feature launches - **Blog post share images** — Auto-generate OG images when you publish articles - **Event announcements** — Webinar promos, conference updates, live stream alerts - **Sale and discount graphics** — Flash sale banners, seasonal promotions, coupon codes - **Job posting visuals** — Open roles formatted for LinkedIn, X, and Instagram - **Real estate listings** — Property cards with price, photos, and details → [full tutorial](https://orshot.com/blog/automate-real-estate-listings-instagram-facebook) - **eCommerce product cards** — Product shots with pricing overlays → [full tutorial](https://orshot.com/blog/automate-ecommerce-product-images) - **Tweet-to-Instagram conversions** — Screenshot tweets and repost as images → [full tutorial](https://orshot.com/blog/automate-tweet-to-instagram) If you're making the same kind of graphic more than twice a week, it's worth automating. ## Why Orshot? Most social media tools stop at scheduling. They assume you already have your visuals ready. Orshot starts where the real bottleneck is: **creating the graphics themselves**. - **Canva-like Template Editor**: Design social media templates with a drag-and-drop editor. No design skills required. Or let the AI Design Agent build one from a text prompt. - **AI Design Agent**: Describe what you need in plain text and the AI agent builds a production-ready template in seconds — layout, styling, and parameterization included. - **100+ Ready-Made Templates**: Social media graphics, product banners, certificates, and more — ready to customize and automate. - **REST API, SDKs & MCP Server**: Generate images via API with SDKs for Node.js, Python, PHP, and Ruby — or connect AI agents through the MCP server. - **No-Code Integrations**: Native integrations with Make, Zapier, and n8n. Connect to Google Sheets, CRMs, databases, and 1000+ apps. - **Built-in Social Publishing**: Post directly to 15+ platforms — Instagram, X, LinkedIn, TikTok, Facebook, and more. Schedule, draft, or publish instantly. - **$39/month — All Included**: Visual generation, template editor, API access, and social publishing. No separate subscriptions for scheduling or posting. **Pricing:** 100 free credits every month, no credit card required. Paid plans from $39/mo with social publishing included. [Try Orshot free →](https://orshot.com/pricing) **Q: What does it mean to automate social media graphics?** It means using a template-based system where you design once and generate unlimited variations by swapping text, images, and colors via an API or no-code tool. With Orshot, you can create templates manually in the visual editor, or have the AI Design Agent generate one from a text prompt. Parameterize the dynamic fields, then generate branded graphics by passing data from Google Sheets, a CMS, or any other source — no manual design work per post. **Q: Do I need to write code to set this up?** No. Orshot has native integrations with Make, Zapier, and n8n. You connect your data source (Google Sheets, Airtable, a CRM) to Orshot's module, map columns to template parameters, and every new row automatically generates a graphic. You can even use the AI Design Agent to create your template without touching the editor. The full tutorial in this guide uses Make.com with zero code. **Q: What formats can Orshot generate — just images?** Orshot generates PNG, JPEG, WebP, PDF, animated GIF, and MP4 video — all from the same template. Add entrance animations in the Studio editor and switch the format parameter from 'png' to 'gif' or 'mp4'. One template, every format. **Q: How much does this cost?** Orshot gives you 100 free credits every month — no credit card required. Paid plans start at $39/month and include the template editor, image generation API, SDK access, and built-in social publishing to 15+ platforms. Make.com and Google Sheets both have free tiers, so you can build the full workflow for $0 upfront. **Q: Can I publish directly to social media from Orshot?** Yes. Orshot Publish lets you connect Instagram, X/Twitter, LinkedIn, Facebook, TikTok, Pinterest, YouTube, and 6 more platforms. You can publish directly via the API — generate a graphic and post it in the same automation step, no Buffer or Hootsuite needed. **Q: Can I generate multiple sizes from one template?** Yes. Create separate templates for each size — Instagram square (1080×1080), Twitter/X card (1600×900), LinkedIn banner (1200×627) — and call each in a single automation run. Orshot's multi-page templates also let you store all sizes in one template and render specific pages. **Q: How do I maintain brand consistency across automated graphics?** Your brand fonts, colors, logos, and layout are locked into the Orshot template. Only the dynamic content — headlines, images, CTAs — changes per generation. Orshot also supports Brand Kits where you store brand colors, fonts, and logos that any template can reference. Every output is pixel-perfect and on-brand, no matter who triggers the automation. **Q: Can I use my own custom fonts in Orshot templates?** Yes. Upload any .ttf or .otf font file to your Orshot workspace and use it in templates. The font is embedded during rendering, so your generated graphics always display correctly — even if the font isn't installed on the viewer's device. **Q: How does Orshot's AI Design Agent work?** Describe the template you need in plain text — e.g. 'Instagram promo card with headline, logo, and CTA on a dark gradient.' The AI agent generates a fully styled, parameterized template in seconds. You can refine it further in Studio or start generating images immediately. It also works via the MCP server, so AI coding assistants like Cursor or Claude can create and edit templates on your behalf. --- ### [How to Automate Document Generation via API](https://orshot.com/blog/document-generation-api) > Automate document generation with an API. Generate NDAs and other contracts as PDFs from your app or CRM in a step by step tutorial with real screens To automate document generation via API, design a template once and send only the changing data in each request. A document generation API merges the two and returns a finished PDF, like a contract or an invoice. Below I build a two-page mutual NDA in Orshot and generate it from code, HubSpot or n8n, with a real screen for each step. The same steps work for [invoices, offer letters and certificates](#1-design-the-document-template-in-orshot-studio). The finished NDA came back in 1.5 seconds as a two-page PDF. It has selectable text, a "Page 1 of 2" footer and the signature block on page 2. ![An Orshot render request with the NDA template ID and contract fields like effective date, company, counterparty, purpose, term and signers, and the two-page mutual NDA PDF it returns with selectable text](https://orshot.com/blog/document-generation-api/request-to-pdf.webp) | Step | Where you do it | What you get | | --- | --- | --- | | 1. Design the template | Orshot Studio | A template with flowing pages | | 2. Mark the fields | Studio API tab | One key per placeholder | | 3. Test it | Template page, Connect | A real PDF in the dashboard | | 4 to 6. Automate it | Your code, HubSpot, n8n | A PDF URL, ready to sign | ## What Is Document Generation Document generation is the automatic creation of documents like contracts, invoices and letters from a template plus data. Template-based document generation keeps the layout and wording fixed and fills only the dynamic fields. A document generation API does this over HTTP. Your app, CRM or workflow tool sends names, dates and terms, and gets a finished file back. That is what makes it automated document generation instead of copy and paste. Because each document is one request, the same template handles one NDA a week or a high-volume run. Bulk document generation is a loop over your rows in code, n8n, Make or Zapier. Contract software is a different tool. It handles drafting, redlines and approvals. A document generation API only makes the file, so it fits when your wording is settled and the data already lives in your app or CRM. ![How a document generation API works in Orshot: the NDA template with 12 fields, a JSON body with the contract data, one POST request to /v1/studio/render, and the two-page PDF that comes back, ready for e-signature, a CRM record or storage](https://orshot.com/blog/document-generation-api/how-it-works.webp) ## 1. Design the Document Template in Orshot Studio Orshot Studio is the template editor. Every document in it, from an NDA to an invoice, is a template with a fixed layout and fields that change per file. Disclosure: I built Orshot. Every step below was run on October 24, 2026. I made four templates for this post: an NDA, an invoice, an offer letter and a certificate. The steps below use the NDA, and the same steps work for the other three. ![Four documents generated from Orshot templates: a two-page mutual NDA, an invoice with four line items, a job offer letter and a landscape certificate of completion](https://orshot.com/blog/document-generation-api/document-gallery.webp) | Document | What changes per file | Template | | --- | --- | --- | | Invoice | Client, dates, line items, totals | [Copy the invoice](https://orshot.com/templates/shared/frnnpg3o/preview?view=play) | | Offer letter | Role, start date, salary, equity | [Copy the offer letter](https://orshot.com/templates/shared/vhhcg50o/preview?view=play) | | Certificate | Recipient, course, date, signer | [Copy the certificate](https://orshot.com/templates/shared/qjz6s040/preview?view=play) | The offer letter uses inline fields like the NDA, so the letter text stays in one layer. The invoice has four fixed rows with one field per cell. Add rows in Studio if your invoices run longer. ### Step 1: Lay Out the First Page I used a 1000 by 1414 pixel canvas, the A4 ratio. The NDA header has a logo, the company name and an agreement number. Under the title sits one text box with every clause and the signature lines. ![The mutual NDA template in Orshot Studio in three parts: a fixed header and title, one agreement body text layer set to Flow with fields like effective_date and counterparty_name, and a footer that repeats on every page with Page X of Y](https://orshot.com/blog/document-generation-api/template-anatomy.webp) ### Step 2: Set the Agreement Body to Flow Select the agreement text and set **Text Autofit** to **Flow** in the Styles panel. Flow mode moves text that doesn't fit onto new pages. A short NDA stays at one page and a long one gets as many pages as it needs. ![Orshot Studio with the mutual NDA template open, the agreement body selected, Text Autofit set to Flow, a Flow Preview button on the canvas and the layer's API field name nda](https://orshot.com/blog/document-generation-api/studio-flow-layer.webp) ### Step 3: Repeat the Footer and Number the Pages Turn on **Repeat on extra pages** for the footer layers. Then write `Page {{_page_number}} of {{_total_pages}}` in the footer text, and Orshot fills in the numbers on every page. The **Flow Preview** button shows the pages before you render. Its settings set the top margin on extra pages and keep at least two lines together at a page break. ![The Orshot Flow Preview for the NDA showing 2 pages total, with Flow Settings for a 90 px top margin and 134 px bottom margin on extra pages, split by line, and at least 2 lines at the end and start of a page](https://orshot.com/blog/document-generation-api/flow-settings.webp) The [flowing content docs](https://orshot.com/docs/orshot-studio/flowing-content) cover flow zones and break rules in more detail. ## 2. Mark the Fields That Change per Contract Type each changing value as a placeholder in double braces inside the clause text, like `{{effective_date}}` or `{{counterparty_name}}`. Then open the **API** tab, switch on **Parameterize** and give the layer an ID. I used `nda`. Orshot then lists every placeholder as its own key: `nda:effective_date`, `nda:company_name` and so on. Your API call sends only those values, never the wording around them. ![The Orshot Studio API tab for the NDA body with Parameterize on, Parameter ID nda, and API usage examples listing inline keys like nda:effective_date, nda:company_name, nda:company_address and nda:counterparty_name](https://orshot.com/blog/document-generation-api/api-tab-fields.webp) **Copy this NDA template free** — Copy the mutual NDA into a free Orshot workspace, then swap in your logo, clauses and fields. No credit card required. [Copy template](https://orshot.com/templates/shared/utvzb1ug/preview?view=play) ## 3. Test the Contract from the Dashboard Open the template's page and click **Connect**. The API tab holds a request you can edit and run, so you see the real PDF before writing any code. I pasted my NDA values, picked PDF and ran it. Both pages showed up in the preview, and the API's own timer read 1.5 seconds. ![The Orshot Connect panel with the NDA render request filled in for Northwind Labs and Brightline Analytics, response format PDF, and a live preview of the two-page PDF that rendered in 1.9 seconds](https://orshot.com/blog/document-generation-api/test-render.webp) Each run uses credits, 1 per PDF page. This test used 2. ## 4. Generate the PDF from Your App Your app sends the same request to `POST /v1/studio/render` with the template ID and the contract fields. Keep the API key on your server. ```javascript const res = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${process.env.ORSHOT_API_KEY}`, }, body: JSON.stringify({ templateId: 29275, // your copy of the NDA template modifications: { "nda:effective_date": deal.signedOn, // "October 24, 2026" "nda:company_name": "Northwind Labs Inc.", "nda:company_address": "500 Market Street, San Francisco, CA 94105", "nda:counterparty_name": deal.company, "nda:counterparty_address": deal.address, "nda:purpose": "a possible data partnership", "nda:term_years": "two (2)", "nda:governing_state": "Delaware", "nda:company_signer": "Maya Chen", "nda:company_signer_title": "COO", "nda:counterparty_signer": deal.contactName, "nda:counterparty_signer_title": deal.contactTitle, }, response: { type: "url", format: "pdf" }, }), }); const { data } = await res.json(); ``` The response is short. `data.content` is the PDF's URL, which you save on the contract record or hand to the signing step. ```json { "data": { "content": "https://storage.orshot.com/cloud/w-11/renders/images/jkRJIARKkBq.pdf", "type": "url", "format": "pdf", "responseTime": 1493.86 } } ``` Paid plans can also push each file to your own storage bucket. ## 5. Generate Contracts from HubSpot, n8n, Make or Zapier If the contract data sits in HubSpot, the Orshot workflow action makes the same call without code. Trigger it when a deal reaches a stage like "Contract sent", then map deal properties to the `nda:` fields. The action can save the PDF to HubSpot's File Manager and write its URL onto a deal property. The [HubSpot integration docs](https://orshot.com/docs/integrations/hubspot) show the setup. ![A HubSpot workflow that generates the NDA: the deal moves to Contract sent, the Orshot action renders the template, the PDF is saved in HubSpot File Manager and its link is written to a deal property, with the same template usable from n8n, Make and Zapier](https://orshot.com/blog/document-generation-api/crm-flow.webp) In n8n, Make and Zapier, the Orshot step takes the same template ID and fields. The trigger can be a form, a new database row or a signed-up customer. ## 6. Send the PDF for Signature Orshot makes the contract but doesn't collect signatures. Pass the PDF to your e-signature tool in the next step of the same workflow. The PDF has real text, not a picture of text. E-signature tools that place fields by searching the document can find each "Signature:" line. DocuSign calls this [anchor tagging](https://developers.docusign.com/docs/esign-rest-api/esign101/concepts/tabs/auto-place/ "target=_blank rel=nofollow"). ![The signature block on page 2 of the generated NDA with each Signature line highlighted as searchable text, next to the three things the signing step does: get the PDF URL, search for the anchor text and add a sign-here field](https://orshot.com/blog/document-generation-api/signature-anchors.webp) ## Where Orshot Falls Short for Contracts Orshot is built for contracts with settled wording and changing data. It isn't a contract editor, and it has gaps you should know before you start. - Designers edit the contract look in Studio, no HTML - Long clauses flow onto new pages with footers and page numbers - Selectable text that e-signature tools can search - Same template from the API, HubSpot, n8n, Make, Zapier or an AI agent Cons: - PDF only, no Word or DOCX output - No e-signature, you pass the PDF to another tool - No if/else clause rules inside the template - No table element, so line items are fixed rows For clauses that change per contract, build the clause text in your code and send the whole body as `nda`. You can also hide a separate layer by sending `"layer.opacity": 0`. **Verdict:** Orshot fits teams that send the same few contracts again and again from app or CRM data. It doesn't fit legal teams that negotiate every clause. ## What Document Generation Costs on Orshot Orshot charges 1 credit per PDF page, so a two-page NDA costs 2 credits. The free plan includes 100 credits a month with API access, enough for 50 two-page NDAs (checked October 24, 2026). **Generate your first contract free** — Copy the NDA template, run it from the dashboard, then connect your app, HubSpot, n8n, Make or Zapier. 100 free credits a month. [Start free](https://orshot.com/pricing?via=blog-docgen-pricing) ## Document Generation API FAQ **Q: What is a document generation API?** A document generation API is a web service that merges your data into a template and returns a finished file, usually a PDF. You send a template ID and values like names, dates and amounts. The API returns the document, ready to email, store or send for signature. **Q: How do I generate documents in bulk?** Send one API request per document from a loop in your code, or let n8n, Make or Zapier run the loop over a sheet or database. Orshot renders each request from the same template. Each PDF page uses 1 credit, so 500 two-page NDAs use 1,000 credits. **Q: Can Orshot generate Word or DOCX files?** No. Orshot generates PDF, PNG, JPG, WebP and video files, not Word or DOCX. If your team must edit the contract in Word after it's generated, a Word-based document generation tool fits better. For a final contract that goes straight to signature, a PDF is usually what you want. **Q: Can the clauses change for each contract?** Yes, but your code decides which clauses go in. Orshot templates have no if/else rules. Build the clause text in your app and send it as the body field, or hide an optional layer by setting its opacity to 0 in the request. **Q: Is a PDF contract made by an API legally binding?** A PDF contract is binding when the parties sign it under the law that applies to them, no matter which tool made the file. Orshot only produces the document. Your e-signature tool records the signatures. Ask a lawyer about your own contracts. **Q: How many pages can a generated contract have?** Orshot's flow mode adds as many pages as the text needs. The header and footer repeat on each page, and page numbers update on their own. Each page in the PDF uses 1 credit, so a five-page agreement costs 5 credits. **Q: What is Orshot?** Orshot is an API for automated image, PDF and video generation from templates. You design a template in Orshot Studio, mark the fields that change, and generate files from your API, n8n, Make, Zapier, HubSpot or an AI agent by sending the values. ## Generate Your First NDA Your first contract takes about ten minutes: 1. [Sign up free](https://orshot.com/pricing?via=blog-docgen-footer). 100 credits a month, no credit card. 2. Copy the NDA template and swap in your logo, clauses and fields. 3. Run it once from the Connect panel with real values. 4. Connect it to your app with the code in step 4, or to HubSpot as in step 5. If something doesn't work the way you expect, hit the chat button. I'm usually the one on the other end. --- ### [How to Automate Faceless Videos with n8n](https://orshot.com/blog/how-to-make-faceless-videos-with-n8n) > Generate faceless videos with n8n and Orshot, then post to Instagram and TikTok: a lip-synced AI presenter, voiceover and captions from two API calls **TL;DR:** Most faceless video guides stitch together five services: a script writer, ElevenLabs for voice, Whisper for captions, a stock or AI-footage provider, and Shotstack or ffmpeg to render. Five signups, five API keys, five bills. This tutorial uses two tools: n8n to move the data, and [Orshot](https://orshot.com/) to make the video. Two calls to one Orshot API generate a lip-synced presenter from your script and render it into a finished short with karaoke captions. Change the fact, get a new video. Run it on a schedule and the channel posts itself. **Get the n8n workflow** — Download the ready-made workflow JSON, import it, and follow along. [Download the workflow](https://orshot.com/blog/n8n-faceless-video-orshot.json) ## What you're building Faceless videos are short clips you publish without filming yourself. This tutorial shows how to automate faceless videos with n8n and Orshot: n8n sends a fact, Orshot generates the video, and the finished short comes back ready to post. The output is a daily "one fact" short: a hook on screen, a presenter who speaks the fact, a stat badge, and captions that light up word by word. Here is a real render straight from the workflow, nothing edited after: [Watch the video](https://orshot.com/blog/n8n-faceless-guide/hero.mp4) The presenter, her voice, the "OCEAN FACTS" pill, the hook, the "3 HEARTS" badge and the captions all came from Orshot. No ElevenLabs, no caption service, no video editor. ## Why faceless videos are usually a pain If you read the r/n8n and r/automation threads on faceless pipelines, the same complaints come up again and again. This tutorial is built to answer them. - **Too many services and signups.** The typical build wires GPT for the script, ElevenLabs for the voice, Whisper for captions, Pexels or an AI model for footage, and Shotstack or ffmpeg to stitch it together. That is five accounts, five API keys and five things that break. - **Credentials eat your first day.** People spend more time wiring OAuth and hunting voice IDs than making videos. - **Captions never line up.** Getting word-synced captions to match the voice is the step that kills most builds. - **Cost creep and pricing surprises.** Stacking paid tools per video adds up, and AI-generated footage can cost far more than people expect, sometimes 15 to 25 times a stock pipeline. - **"Connecting nodes" is not shipping.** Plenty of builds are a canvas of nodes that never render a real video. This one renders on the first run. ## How Orshot changes the setup The fix is to collapse the whole "make the video" half into one service. n8n stays great at what it is good at: triggers, data, HTTP and hundreds of app nodes. Orshot handles everything visual and audible: - **You do not sign up for ElevenLabs, fal, Runway, HeyGen, Whisper or [Shotstack](https://orshot.com/blog/shotstack-api-alternative).** Orshot generates the talking presenter, the voice and the captions itself. One Orshot account, one API key. - **You generate from a script.** Pass the words and a reference photo, and Orshot produces a lip-synced presenter speaking them. No voice service, no avatar tool. - **Captions come from that same audio,** so they are always in sync. And the render composes the on-brand text and badges on top. It is two quick calls to one API: one to generate the presenter, one to render the short. No extra tools in between. ## What you'll need - An [Orshot account](https://orshot.com/pricing "target=_blank") and an API key. - n8n (cloud or self-hosted). - Five minutes. ## Step 1: The template You design the video once in Orshot Studio and mark the parts that change as parameters. Everything else stays locked, so your look never drifts. ![The faceless short template in Orshot Studio, with the presenter, hook, stat badge and timeline](https://orshot.com/blog/n8n-faceless-guide/04-studio-template.webp) **[Copy this template into your workspace](https://orshot.com/templates/shared/udm15ocp/preview?view=play "target=_blank")** and change the words to your niche. It already includes: - A **presenter** video layer. The workflow drops in a lip-synced clip generated from your script. - A **topic** pill, a big **hook** line, a **stat** badge and a **handle**, all editable per render. - **Captions** set to transcribe the presenter's audio, karaoke style, centered at the bottom. No Whisper account. The parameters this template exposes: `clip`, `topic`, `hook`, `stat_number`, `stat_label`, `handle`. The workflow fills them in. Want a different presenter, or b-roll instead of a talking head? You can generate any clip right in Studio. Open the **Video** picker, switch to the **AI Generator** tab, describe the clip, and toggle **Make it speak** for a talking presenter. Same thing the workflow does, just by hand. ![The Insert Video picker in Orshot Studio on the AI Generator tab, with a prompt field, clip-type and look presets, and a Make it speak toggle](https://orshot.com/blog/n8n-faceless-guide/08-ai-generate.webp) ## Step 2: Get your API key In the Orshot dashboard, open **API Keys** and copy one (or create a new one). You will paste it into n8n in the next step. This is the only key the whole pipeline needs. ![The Orshot API Keys page](https://orshot.com/blog/n8n-faceless-guide/05-api-keys.webp) ## Step 3: The workflow Import the [workflow JSON](https://orshot.com/blog/n8n-faceless-video-orshot.json "target=_blank") into n8n. It is four nodes. ![The n8n workflow: schedule, edit fields, generate presenter, and render](https://orshot.com/blog/n8n-faceless-guide/01-workflow.webp) **Every day at 9am** is a Schedule trigger. Swap it for a Google Sheets trigger, a webhook, or an RSS node. Anything that sends data works. **Today's fact** is an Edit Fields node holding one fact: `topic`, `hook`, `script`, `stat_number`, `stat_label`, `handle`. ![The Edit Fields node with topic, hook, script, stat and handle](https://orshot.com/blog/n8n-faceless-guide/02-todays-fact.webp) **Generate presenter (Orshot)** turns the script into a lip-synced clip. `POST` to the AI video endpoint with a reference photo and the script. This is what replaces ElevenLabs plus an avatar tool. ![The HTTP Request node posting to the Orshot AI video endpoint](https://orshot.com/blog/n8n-faceless-guide/07-generate-node.webp) ```json { "imageRef": "https://your-cdn.com/presenter.jpg", "script": "{{ $json.script }}", "voice": "hpp4J3VqNfWAUOO0d1Us", "consent": true, "aspect": "9:16", "sync": true } ``` `imageRef` is the face that speaks (use the same photo every day for a consistent creator). `sync: true` waits for the clip and returns its `url`. For longer clips, drop `sync` and poll the job or pass a `webhook_url`. **Render short (Orshot)** drops that clip into the template and burns in the captions and on-brand elements. ![The HTTP Request node posting to the Orshot render API](https://orshot.com/blog/n8n-faceless-guide/03-render-node.webp) ```json { "templateId": 19503, "response": { "type": "url", "format": "mp4" }, "modifications": { "clip": "{{ $json.url }}", "topic": "{{ $('Today\\'s fact').item.json.topic }}", "hook": "{{ $('Today\\'s fact').item.json.hook }}", "stat_number": "{{ $('Today\\'s fact').item.json.stat_number }}", "stat_label": "{{ $('Today\\'s fact').item.json.stat_label }}", "handle": "{{ $('Today\\'s fact').item.json.handle }}" }, "videoOptions": { "fps": 30, "subtitleSource": [{ "page": 1, "url": "{{ $json.url }}" }] } } ``` `clip` is the generated presenter. `subtitleSource` is Orshot's built-in auto-subtitle: give it a media URL and it transcribes the audio into karaoke captions automatically, no separate caption service. You point it at the presenter clip because that clip changes every run, so the captions always match the new voice. You get back one MP4 URL with everything baked in. > Prefer not to hand-roll the HTTP nodes? Orshot ships a [verified n8n node](https://orshot.com/integrations). Search "Orshot", connect your key, and the fields fill in automatically. ## Step 4: A new video from new data Change the fields and you get a different video. Same presenter, new topic, new script, new stat: [Watch the video](https://orshot.com/blog/n8n-faceless-guide/example-space.mp4) Point the trigger at a Google Sheet of facts and the workflow makes one video per row. That is a whole content calendar, rendered in one run. ## Step 5: Post it The render gives you a finished MP4, so the last step is publishing. Hand the URL to a YouTube, TikTok or Instagram node, or let Orshot publish it for you. ![The Orshot social accounts page with connected accounts](https://orshot.com/blog/n8n-faceless-guide/06-social.webp) Connect an account under **Social**, then add a `publish` block to the same render call. The full request looks like this: ```json { "templateId": 19503, "response": { "type": "url", "format": "mp4" }, "modifications": { "clip": "{{ $json.url }}", "topic": "{{ $('Today\\'s fact').item.json.topic }}", "hook": "{{ $('Today\\'s fact').item.json.hook }}", "stat_number": "{{ $('Today\\'s fact').item.json.stat_number }}", "stat_label": "{{ $('Today\\'s fact').item.json.stat_label }}", "handle": "{{ $('Today\\'s fact').item.json.handle }}" }, "videoOptions": { "fps": 30, "subtitleSource": [{ "page": 1, "url": "{{ $json.url }}" }] }, "publish": { "accounts": [15, 22], "content": "{{ $('Today\\'s fact').item.json.hook }} #facts" } } ``` A note from experience, and from the threads: do not fully auto-post on day one. Platforms watch for automated spam, and a channel still needs a human eye. Render on a schedule, but review the first weeks before they go out, and space uploads instead of dumping ten at once. Orshot can post immediately, schedule, or save as a draft, so you keep a person in the loop while the making is automated. ## Or just ask an agent You do not have to build any of this by hand. Connect Claude, ChatGPT or Cursor through [Orshot for agents](https://orshot.com/agents) and set the whole thing up in plain language: > "Make a faceless shorts template with a talking presenter, a hook and karaoke captions. Then render one short a day from my list of facts and post them to TikTok." The agent creates the template, generates the clips, wires the render and handles posting. Same result, no nodes. ## Faceless niches you can run with this The template is just a shape. Change the script, the words and the schedule and the same workflow runs any of these: - **Daily facts** (ocean, space, history, science) from a spreadsheet of one-liners. - **Motivation and quotes**, one per day, spoken by your presenter. - **Product tips or feature highlights** for a SaaS, rendered from your changelog. - **Book and article summaries**, one short per entry in a reading list. - **Local or niche news** pulled by an RSS trigger and narrated automatically. Because the presenter, voice and captions are generated from a script, switching niche is a wording change, not a new tool stack. ## What it costs Orshot bills in credits and you only pay for what comes back. A short like this uses AI video credits for the presenter clip, billed per second, with captions generated from its audio at no extra service. There is no separate voice bill, caption bill or stitching bill. The per-second rate is fixed, so the cost of a video is predictable before you make it, which is the opposite of stacking metered tools. See the full breakdown on the [pricing page](https://orshot.com/pricing). ## Wrapping up A faceless channel does not need a rack of AI services glued together. It needs data and a renderer. n8n moves the data. Orshot turns each row into a finished, on-brand, captioned short with a lip-synced presenter, in two calls to one API, with no extra signups. Wire it once, point it at a list, and the hard part runs on its own. Grab the [workflow JSON](https://orshot.com/blog/n8n-faceless-video-orshot.json "target=_blank"), [copy the template](https://orshot.com/templates/shared/udm15ocp/preview?view=play "target=_blank"), and make your first short today. ## FAQ **Q: How do I automate faceless videos with n8n?** Use n8n to send the data and Orshot to make the video. A schedule or Google Sheets trigger sends a fact, one call generates a lip-synced presenter from your script, and a second call renders it into a short with karaoke captions. Import the free workflow in this post to run it end to end. **Q: Do I need ElevenLabs, fal, HeyGen, Whisper or Shotstack to make faceless videos with n8n?** No. That is the point of this setup. Orshot generates the talking presenter, the voice and the captions itself, so you do not sign up for a voice service, an avatar tool, a transcription service or a stitching tool. One Orshot API key covers all of it, and n8n just sends the data. **Q: Does the AI presenter actually lip-sync the script?** Yes. You pass a reference photo and the script, and Orshot generates a clip of that person speaking the words, lip-synced. Use the same photo every day and you get a consistent creator across the whole channel. **Q: How do the karaoke captions stay in sync with the audio?** The render transcribes the presenter clip's own audio to build the captions, so they always match the voice. There is no caption file to upload and no timing to line up by hand. **Q: Why is it two calls instead of one?** The first call generates the lip-synced presenter from your script; the second renders that clip into the template with the captions and on-brand elements. Both go to the same Orshot API with the same key, so it is still one service. **Q: Can I make a whole batch of faceless videos at once?** Yes. Point the trigger at a Google Sheet or a list and the workflow runs the two calls per row, so a full content calendar comes out in a single run. **Q: How much does each video cost?** You pay in credits and only for what comes back. A short like this uses AI video credits for the presenter clip, billed per second, with captions included. The per-second rate is fixed, so cost is predictable. See the [pricing page](https://orshot.com/pricing) for the breakdown. **Q: Should I auto-post the videos straight to my channel?** Automate the making, but keep a person in the loop at first. Platforms watch for automated spam, so review the early videos, space your uploads, and use Orshot's draft or schedule options rather than posting everything at once. Design, render and post your first faceless short. No card required. [Start free with 100 credits a month](https://orshot.com/pricing?via=blog-n8n-faceless-footer) --- ### [How to Automate Real Estate Property Listings for Instagram & Facebook](https://orshot.com/blog/automate-real-estate-listings-instagram-facebook) > Automate property listing visuals for Instagram and Facebook using Orshot. Generate professional real estate marketing images from MLS data with API or no-code tools You have 40 active listings. Each one needs an Instagram post, a Facebook ad, an "Open House" story, and a "Just Sold" graphic. That's 160+ images—before you even think about seasonal promotions or price updates Doing this manually eats hours. Doing it with [Orshot](https://orshot.com/pricing) takes seconds per listing This guide shows you how to automate real estate property listing visuals for Instagram and Facebook using Orshot's templates and API **Relevant** → [Auto-generate Real Estate Banners](https://orshot.com/use-cases/t/auto-generate-real-estate-banners) ![Designing a real estate listing template in Orshot](https://orshot.com/blog/real-estate-visuals/real-estate-template-design.webp) ## What You'll Build An automation that takes your property data (address, price, photos, bedrooms, etc.) and generates ready-to-post social media visuals—automatically - **New Listing** → Instagram post + Facebook ad generated instantly - **Price Change** → All visuals update automatically - **Sold/Closed** → "Just Sold" graphic generated and ready to post ### Bonus: Post Directly with Social Publish With [Orshot Social Publish](https://orshot.com/docs/publish/introduction), you can skip the manual posting step entirely. Add a `publish` object to your API call and Orshot posts the generated image directly to Instagram, Facebook, LinkedIn, or any of [15+ supported platforms](https://orshot.com/blog/social-media-automation-tools). No Buffer, no Zapier — just render and post. ## What You'll Need - [Orshot Account](https://orshot.com/pricing "target=_blank") (free plan, 100 credits every month): For real estate templates and dynamic image generation API - Property data source (Google Sheets, CRM, MLS export, or database) - Optional: [n8n](https://n8n.io), [Make](https://www.make.com), or [Zapier](https://zapier.com) for no-code automation ## Step 1: Pick a Real Estate Template Orshot has ready-to-use [real estate templates](https://orshot.com/templates/g/real-estate) designed for social media. Browse the collection and pick one that fits your brand Here's a property sale banner template you can copy to your workspace and start using right away: [Open the embed](https://orshot.com/studio?community_template_id=22) Or build your own from scratch using [Orshot Studio](https://orshot.com/features/orshot-studio). You can also import existing designs from [Canva](https://orshot.com/docs/importing-templates/import-from-canva) or [Figma](https://orshot.com/docs/importing-templates/import-from-figma) ## Step 2: Parameterize Your Template Open your template in Orshot Studio and make the dynamic fields parameterizable. For a typical property listing, you'll want: | Field | Parameter Key | Example Value | | -------------- | --------------- | ------------------------------- | | Property Image | `propertyImage` | `https://mls.com/photo-123.jpg` | | Price | `price` | `$875,000` | | Address | `address` | `123 Oak Avenue, Austin TX` | | Bedrooms | `bedrooms` | `4` | | Bathrooms | `bathrooms` | `3` | | Square Footage | `sqft` | `2,400 sq ft` | | Agent Name | `agentName` | `Sarah Johnson` | | Status Badge | `status` | `Just Listed` | To parameterize a field: 1. Select the layer in Orshot Studio 2. Toggle **"Parameterize"** in the properties panel 3. Assign the parameter key Once saved, this template becomes an API endpoint. Every property listing can now generate a unique image by passing different data to the same template ![A real estate template exposed as an Orshot API endpoint](https://orshot.com/blog/real-estate-visuals/real-estate-template-api.webp) ## Step 3: Generate Listing Images with the API With your template ready, generate images by sending property data to Orshot's [Image Generation API](https://orshot.com/solutions/image-generation-api) ### API Endpoint ```markdown POST https://api.orshot.com/v1/studio/render ``` ### JavaScript Example ```javascript async function generateListingImage(property) { const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer YOUR_API_KEY", }, body: JSON.stringify({ templateId: "YOUR_TEMPLATE_ID", modifications: { propertyImage: property.photo_url, price: property.price, address: property.address, bedrooms: `${property.beds} Beds`, bathrooms: `${property.baths} Baths`, sqft: `${property.sqft} sq ft`, agentName: property.agent, status: "Just Listed", }, response: { type: "url", format: "png", }, }), }); const result = await response.json(); return result.content; // Image URL ready to post } // Example usage const listing = { photo_url: "https://images.mls.com/property-456.jpg", price: "$875,000", address: "123 Oak Avenue, Austin TX", beds: 4, baths: 3, sqft: "2,400", agent: "Sarah Johnson", }; const imageUrl = await generateListingImage(listing); console.log(`Listing image: ${imageUrl}`); ``` ### Python Example ```python import requests def generate_listing_image(property_data): url = "https://api.orshot.com/v1/studio/render" payload = { "templateId": "YOUR_TEMPLATE_ID", "modifications": { "propertyImage": property_data["photo_url"], "price": property_data["price"], "address": property_data["address"], "bedrooms": f"{property_data['beds']} Beds", "bathrooms": f"{property_data['baths']} Baths", "sqft": f"{property_data['sqft']} sq ft", "agentName": property_data["agent"], "status": "Just Listed" }, "response": { "type": "url", "format": "png" } } response = requests.post(url, json=payload, headers={ "Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json" }) return response.json()["content"] # Generate for a single listing listing = { "photo_url": "https://images.mls.com/property-456.jpg", "price": "$875,000", "address": "123 Oak Avenue, Austin TX", "beds": 4, "baths": 3, "sqft": "2,400", "agent": "Sarah Johnson" } image_url = generate_listing_image(listing) print(f"Listing image: {image_url}") ``` ### Batch Generation for Multiple Listings When you have dozens of listings to process at once: ```python def generate_all_listing_images(listings): results = [] for listing in listings: try: url = generate_listing_image(listing) results.append({ "address": listing["address"], "image_url": url, "status": "success" }) except Exception as e: results.append({ "address": listing["address"], "status": "failed", "error": str(e) }) return results ``` ## Step 4: Automate with No-Code (Make / n8n / Zapier) Prefer not to write any code? Use no-code platforms to connect your data source directly to Orshot **Explore integrations**: [Orshot Integrations](https://orshot.com/integrations) ### Example Workflow with Make 1. **Trigger**: New row added to Google Sheets (or CRM webhook) 2. **Action 1**: Orshot — Generate image from studio template 3. **Action 2**: Save image URL back to Google Sheets 4. **Action 3** (optional): Post to Instagram/Facebook via Buffer or Meta API ### Example Workflow with n8n 1. **Google Sheets Trigger**: New property row added 2. **Orshot Node**: Generate listing image with property data mapped to template parameters 3. **Google Drive Node**: Save the generated image 4. **Slack/Email Node**: Notify the agent with the image link Learn more: [n8n Integration Docs](https://orshot.com/docs/integrations/n8n) · [Make Integration Docs](https://orshot.com/docs/integrations/make) · [Zapier Integration Docs](https://orshot.com/docs/integrations/zapier) Before you open Make or n8n, know that this exact setup already exists as a ready-made Orshot workflow: a new row in your Google Sheet triggers a listing card render, and the result gets posted to Instagram. Adding it to your workspace takes one click, with every step connected for you [Real estate listing cards workflow on Orshot](https://orshot.com/workflows/real-estate-listing-cards/embed) ## Dynamic URLs: The Simplest Approach For email campaigns or landing pages, use [Dynamic URLs](https://orshot.com/docs/integrations/dynamic-urls) to generate listing images without any backend code: ```markdown https://orshot.com/v1/studio/dynamic-url/property-listing.png?price=$875,000&address=123+Oak+Avenue&bedrooms=4+Beds&status=Just+Listed ``` Change the URL parameters, and the image updates instantly. Use this in: - Property alert emails (unique image per listing) - MLS website embeds - [Facebook dynamic ads](https://orshot.com/blog/meta-catalog-ads) ## Why This Works for Real Estate - **Speed**: Generate a listing image in under 3 seconds - **Consistency**: Every listing follows your brand guidelines via [Brand Assets Library](https://orshot.com/features/brand-assets-library) - **Scale**: 10 listings or 1,000—same effort - **Multi-format**: Generate Instagram square (1080×1080), Facebook ad (1200×628), and Story (1080×1920) from the same data - **Always current**: Price change? Regenerate the image with updated data instantly ## Common Questions **Q: Can I automatically post listings to Instagram and Facebook?** Yes, by connecting Orshot with tools like Zapier, Make (formerly Integromat), or n8n, you can create workflows that automatically generate images from your property data and post them directly to your social media accounts. **Q: How do I pull property data from my MLS or CRM?** Most Real Estate CRMs (like Follow Up Boss, LionDesk, or Salesforce) support webhooks or have APIs. You can use these to trigger image generation in Orshot whenever a new listing status is updated or added. **Q: Does this work for "Sold" and "Open House" posts too?** Absolutely. You can set up different templates for "Just Listed", "Price Reduced", "Open House", and "Sold" statuses. The logic in your automation tool (Zapier/Make) can choose the right template based on the property status. **Q: Can I generate carousels for Instagram?** Yes! Orshot supports multi-page templates. You can generate a slide for the living room, kitchen, bedroom, and details, and Orshot will export it as a multi-page PDF or separate images that you can post as a carousel. **Q: Is it possible to include the agent's photo and contact info?** Yes. You can pass dynamic images (like agent headshots) and text (phone numbers, emails) into the template just like property photos. This is great for keeping branding consistent across a team. **Q: What if my property photos are different sizes?** Orshot's Smart Object-contain/cover features and auto-resizing capabilities handle this. You can set images to "cover" their containers so they always look professional, regardless of the original aspect ratio. **Q: Do I need to know how to code?** No. While Orshot has a powerful API for developers, you can achieve full automation using "No-Code" platforms like Zapier or Make. You just map fields from your data source to the Orshot template. **Q: Can I save the images in Google Drive or Dropbox?** Yes, you can connect your Google Drive, Dropbox or S3-enabled storage in Orshot to automatically upload generated images in your account. ## Getting Started 1. **Browse templates**: Start with a [real estate template](https://orshot.com/templates/g/real-estate) or design your own in [Orshot Studio](https://orshot.com/features/orshot-studio) 2. **Parameterize fields**: Mark property data fields as dynamic 3. **Connect your data**: Use the [API](https://orshot.com/solutions/image-generation-api), [no-code integrations](https://orshot.com/integrations), or [Dynamic URLs](https://orshot.com/docs/integrations/dynamic-urls) 4. **Automate**: Set up workflows so every new listing automatically gets professional visuals Stop spending hours on Canva for every listing. Design one template, generate images for every property in your portfolio automatically --- ### [How to Automate Social Media Marketing with n8n](https://orshot.com/blog/n8n-marketing-automation-tutorial) > Step-by-step n8n social media marketing automation tutorial: render branded images and videos, auto-post to Instagram and LinkedIn. Free workflow template. **TL;DR:** Most n8n marketing automation guides stop at "send a Slack message." This one goes end-to-end: a new row of data → a branded **image** _and_ a **video** → auto-posted to **Instagram and LinkedIn**. n8n moves the data; [Orshot](https://orshot.com/) handles both the creation _and_ the posting — so one tool does the work of a design app, a video editor, and a social scheduler. **[📥 Download the n8n workflow (JSON)](https://orshot.com/blog/n8n-marketing-automation-orshot.json "target=_blank")** — import it into n8n and follow along. ## What we're building Take a travel company. Every time they add a new tour, they want a polished Instagram post **and** a short Reel-style video out the door, on both Instagram and LinkedIn, without anyone opening a design tool. Same pattern works for a SaaS shipping a feature, a store launching a product, or an events team announcing a webinar — anything where _new data_ should become _on-brand content_. The pipeline, at a glance: ![Pipeline: new tour data, then Orshot renders an image and video, then publishes to Instagram and LinkedIn](https://orshot.com/blog/n8n-marketing-guide/pipeline-diagram.png) Here's the actual output from one row of tour data — the **same template** produces both the static post and the animated version: ![Branded tour post (PNG) generated from one row of data](https://orshot.com/blog/n8n-marketing-guide/sample-render-image.png) [Watch the video](https://orshot.com/blog/n8n-marketing-guide/sample-render-reel.mp4) _Left: the static post (PNG). Right: the same template as an animated Reel (MP4)._ ## Why n8n needs Orshot for the visual n8n is excellent at moving data — triggers, HTTP calls, branching, hundreds of app integrations. What it can't do is _design_. You can generate copy with an LLM node in one line, but a branded graphic — right font, exact headline, your colors, a logo that doesn't drift — is where most marketing workflows give up and post plain text. You design the visual **once** in an Orshot template, mark the parts that change as parameters, and every run fills them in. The text stays real text, the colors stay your hex codes, and the output is pixel-identical every time. Then the same API call can **publish** it — so the picture never touches a human's desktop. That's the whole idea behind [social media content automation](https://orshot.com/blog/automated-content-creation-tools): one design, every format, posted automatically. | Node | What it does | | --------------------- | --------------------------------------------------------------------------- | | **Trigger** | Fires on new data (we use a manual click; swap for Sheets/Webhook/Schedule) | | **New Tour Data** | Maps your row to the template's parameters + the caption | | **Render Post Image** | `POST` to Orshot → branded PNG | | **Render Reel Video** | Same call, `format: mp4` → animated MP4 | | **Publish** | Adds a `publish` object → posts to Instagram + LinkedIn | ## What you'll need - An [Orshot account](https://orshot.com/pricing "target=_blank") and an API key (free tier = 100 credits a month). - An n8n instance (Cloud or self-hosted). - A template to render — we'll use a ready-made travel template (ID `12278`), but any of the [2,000+ library templates](https://orshot.com/templates) or your own design works. - Connected [social accounts](https://orshot.com/features/social-publishing) in Orshot (Instagram + LinkedIn) for the publish step. ## Step 1 — One template, image _and_ video In the Orshot Studio editor, the template is built once: a headline, a subheadline, three photo slots, a location tag, a handle, and a footer line. The layers that change per post are marked as **parameters** — everything else stays locked, so your brand can't drift. ![The travel template in the Orshot Studio editor, with an animation timeline](https://orshot.com/blog/n8n-marketing-guide/01-studio-editor.webp) This template is already animated, which is the key part: because the design has motion, the **exact same template** renders a static PNG _or_ an MP4 — you only change the output format. No separate video tool, no re-design. Open **Automate** on any template to see its parameters and the integration options. Note the **Template ID** and the parameter ids (`headline_top`, `location_text`, `hero_image`, …) — your n8n data maps onto these. ![The Integrate Template panel showing the template ID, n8n integration, and parameters](https://orshot.com/blog/n8n-marketing-guide/02-integrate-template-params.webp) We're using a travel template here, but the workflow is template-agnostic — swap in whatever your marketing calls for: ad creatives, product banners, quote cards, OG images, multi-slide carousels, certificates. You don't have to design from scratch either: pick from [2,000+ ready-made templates](https://orshot.com/templates) in the library, generate one from a prompt with the [AI Template Generator](https://orshot.com/features/ai-template-generator), or import an existing design from Canva or Figma. Parameterize it once and the same n8n flow drives it. ## Step 2 — Grab your API key In the Orshot dashboard, go to **API Keys** and copy one (or create a new one). You'll paste it into n8n in the next step. ![The Orshot API Keys page](https://orshot.com/blog/n8n-marketing-guide/04-api-keys.webp) ## Step 3 — Import the workflow into n8n The fastest way to start: [download the workflow JSON](https://orshot.com/blog/n8n-marketing-automation-orshot.json "target=_blank") and import it (**⋯ menu → Import from file**). You'll get the full pipeline wired up: ![The full n8n workflow: trigger, data, render image, render video, publish](https://orshot.com/blog/n8n-marketing-guide/06-n8n-workflow-overview.webp) Two nodes do the setup work: - **Run on a new tour** — a Manual Trigger so you can test with one click. In production, swap it for a **Google Sheets Trigger** (new row), a **Webhook** (form/CRM), or a **Schedule** node. Anything that can send data works; the rest of the flow doesn't change. - **New Tour Data** — an _Edit Fields_ node holding one tour's data. Each field name matches a template parameter, plus a `caption` and `booking_url` for publishing. ![The Edit Fields node mapping tour data to template parameters](https://orshot.com/blog/n8n-marketing-guide/07-node-new-tour-data.webp) In production you'd delete these literal values and map columns from your trigger instead — e.g. `{{ $json.tour_name }}`. ## Step 4 — Render the branded image The render node is a plain **HTTP Request**: `POST` to `https://api.orshot.com/v1/studio/render`, your key in the `Authorization` header, and a JSON body that maps the tour data onto the template. ![The HTTP Request node configured to render from Orshot](https://orshot.com/blog/n8n-marketing-guide/08-node-render-image.webp) The JSON body — note how each value pulls from the **New Tour Data** node: ```json { "templateId": 12278, "modifications": { "kicker_text": "{{ $json.category }}", "headline_top": "{{ $json.headline_top }}", "headline_bottom": "{{ $json.headline_bottom }}", "subheadline": "{{ $json.subheadline }}", "hero_image": "{{ $json.hero_image }}", "photo_two": "{{ $json.photo_two }}", "photo_three": "{{ $json.photo_three }}", "location_text": "{{ $json.location_text }}", "brand_handle": "{{ $json.brand_handle }}", "footer_note": "{{ $json.footer_note }}" }, "response": { "type": "url", "format": "png" } } ``` Prefer the terminal first? It's the same call: ```bash curl -X POST https://api.orshot.com/v1/studio/render \ -H "Authorization: Bearer YOUR_ORSHOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "templateId": 12278, "modifications": { "headline_top": "Aegean", "headline_bottom": "Sailing", "location_text": "SANTORINI, GREECE", "footer_note": "From $1,299 · Book now" }, "response": { "type": "url", "format": "png" } }' ``` You get back a hosted PNG URL you can hand to the next node, store, or attach to a Slack message. Prefer not to hand-roll the HTTP node? Orshot ships a [verified n8n node](https://orshot.com/integrations) — search "Orshot" in the node panel, connect your API key, pick the template, and the parameter fields populate automatically. Orshot even spells out the steps in-app: ![Orshot's in-app n8n integration steps](https://orshot.com/blog/n8n-marketing-guide/03-n8n-integration-steps.webp) ## Step 5 — Render the video from the same data This is the part most tutorials skip. The reel is the **same node, same body — one field changes**: ```json "response": { "type": "url", "format": "mp4" } ``` That's it. Because the template is animated, Orshot returns a ready-to-post MP4. Want to trim it or set the frame rate? Add `videoOptions`: ```json { "templateId": 12278, "modifications": { "headline_top": "Aegean", "headline_bottom": "Sailing" }, "response": { "type": "url", "format": "mp4" }, "videoOptions": { "duration": 6, "fps": 30 } } ``` One template, two formats, zero extra design work — exactly the kind of [automated image (and video) generation](https://orshot.com/solutions/image-generation-api) that's painful to do by hand and trivial to do on a schedule. ## Step 6 — Publish to Instagram and LinkedIn Here's where Orshot replaces a second tool. Instead of piping the file into Buffer or a separate scheduler, you add a `publish` object to the **same render call** and Orshot posts it for you. First, connect your accounts in Orshot under **Social Accounts** and note each account's **ID** — that's what the workflow targets. ![Connected social accounts in Orshot with their account IDs](https://orshot.com/blog/n8n-marketing-guide/05-social-accounts.webp) Then the publish node's body is your render body plus a `publish` block: ```json { "templateId": 12278, "modifications": { "headline_top": "Aegean", "headline_bottom": "Sailing" }, "response": { "type": "url", "format": "png" }, "publish": { "accounts": [19, 15], "content": "{{ $json.caption }}", "platformOptions": { "15": { "firstComment": "Book this tour 👉 {{ $json.booking_url }}" } } } } ``` - `accounts` — the IDs from your Social Accounts page (here `19` = Instagram, `15` = LinkedIn). **Replace these with your own.** - `content` — the caption used across platforms. - `platformOptions` — per-platform tweaks. LinkedIn gets the booking link as a first comment (keeps the caption clean and the link out of the post body). Instagram uses the default caption with hashtags. You can also `isDraft: true` to stage posts, or add a `schedule` block to post later — see the [Publish docs](https://orshot.com/docs/publish/introduction). > **Safety note:** In the downloadable workflow, the **Publish** node is **deactivated** on purpose — so importing and testing never posts to your accounts by accident. n8n confirms it: _"This node is disabled, and will simply pass the input through."_ Enable it only when your account IDs and caption are set. ![The Publish node, deactivated by default so nothing posts during testing](https://orshot.com/blog/n8n-marketing-guide/10-node-publish-disabled.webp) ## Make it run on its own Right now you click **Execute workflow** to test. To make it autonomous, replace the Manual Trigger: - **Google Sheets Trigger** — a content calendar; each new row ships a post. - **Webhook** — your CRM or a form (Tally, Typeform) fires a render the moment someone submits. - **Schedule** — a daily/weekly drop from a data source. The render and publish nodes don't change — only how the flow starts. For the Google Sheets version there's a shortcut: it exists as a ready-made workflow inside Orshot, no n8n instance needed. One click on **Use this workflow** drops it into your workspace with every step already wired up. [Turn spreadsheet rows into Instagram carousels workflow on Orshot](https://orshot.com/workflows/instagram-carousels-from-sheet/embed) ## Doing it in bulk Rendering one post per execution is the n8n-native way and keeps things simple. But if you need to fan out — a back-catalog of 200 tours, localized variants per market — call Orshot's **batch render** with an array of modification sets and get them all back in one request instead of 200 executions. For volume work that's faster and cheaper than looping in the workflow. ## What it costs n8n's self-hosted edition is free (you pay for the server); n8n Cloud starts around \$24/mo as of mid-2026. Orshot's free tier is **100 credits a month** with every feature included, and paid plans start at **\$39/mo for 1,500 credits** — 1 credit = 1 image, 1 PDF page, or 1 second of video. Publishing is an add-on at **\$12/mo per connected account**, with unlimited posts. 100 credits a month, no card needed. [Try Orshot free](https://orshot.com/pricing?via=blog-n8n-tutorial) **Q: What is n8n marketing automation?** It's using n8n — an open-source workflow automation tool — to run marketing tasks without manual work: pulling data, generating content, and publishing it. n8n handles the data flow and triggers; pair it with Orshot when the workflow needs branded images or videos and direct social posting, which n8n can't do on its own. **Q: Can n8n generate images and videos?** Not by itself. n8n moves data and calls APIs, but it can't design a branded graphic. Connect it to Orshot: you design a template once, mark the dynamic parts as parameters, and every workflow run renders a pixel-accurate image or video. The same animated template outputs both a PNG and an MP4 — you only change the format field. **Q: How do I auto-post to Instagram and LinkedIn from n8n?** Add a publish object to your Orshot render call with the account IDs from your Social Accounts page. Orshot renders the image or video and posts it to the chosen platforms in one step — with scheduling, drafts, and per-platform settings. No separate scheduler like Buffer needed. **Q: Do I need to code to use this workflow?** No. Download the JSON, import it into n8n, paste your Orshot API key, and replace the example data and account IDs. The only 'code' is a JSON body in an HTTP Request node, which is included and explained above. **Q: Will importing the workflow post to my socials by accident?** No. The Publish node ships deactivated, so importing and testing only renders — it never posts. You enable it deliberately once your account IDs and caption are set. **Q: Is n8n good for social media automation?** Yes, with one caveat: n8n social media automation covers the plumbing — triggers, data, API calls — but not the content. Pair it with Orshot and the same workflow renders the branded image or Reel and posts it to Instagram, LinkedIn and 13 other platforms. If you'd rather skip n8n entirely, Orshot's built-in workflows run the same loop natively. **Q: What does it cost to start?** n8n self-hosted is free; n8n Cloud starts around $24/mo. Orshot is free for 100 credits a month with no card, then $39/mo for 1,500 credits. Publishing is a $12/mo per-account add-on with unlimited posts. > **Bottom line:** n8n handles the data; Orshot handles the design _and_ the posting. Parameterize one template, import the workflow, point any trigger at it, and your marketing visuals — image and video — generate and publish themselves. --- ### [How to Automate Social Media Posting with OpenClaw](https://orshot.com/blog/automate-social-media-posting-openclaw) > OpenClaw can't post on its own. Here's how to automate social media carousels and videos and schedule them to 15 social platforms To automate social media posting with OpenClaw, install a posting route and connect your accounts. The Orshot plugin covers the whole loop: content creation, posting and scheduling, and social analytics, from one chat. Scheduler skills (Postiz, ContentStudio, Zernio) post text you already have, and a custom skill talks to one platform API. ![Three ways to post from OpenClaw: Zernio with a custom skill and API key for posting only, Postiz as a scheduler skill for posting and scheduling, and the Orshot plugin covering content creation, posting, scheduling and social analytics with Instagram, LinkedIn, X, TikTok, WhatsApp and Facebook icons](https://orshot.com/blog/automate-social-media-posting-openclaw/three-openclaw-posting-routes.webp) **Already on OpenClaw and want to post today?** Three steps, about ten minutes: 1. Run the two commands below (install the plugin, log in through your browser). 2. Connect one social account in your [free Orshot account](https://orshot.com/signup). 3. Send the prompt in step 3 to make your first post design. ```bash openclaw plugins install clawhub:orshot openclaw mcp login orshot ``` Once it is connected, these are the kinds of messages the plugin handles end to end: a carousel posted as a draft, a Reel scheduled at your best time, a link card sent to every connected account. ![A chat window with OpenClaw and the Orshot plugin connected, showing three example prompts and their results: a five-slide carousel queued to LinkedIn as a draft, a 15-second Instagram Reel scheduled at the best engagement time, and a link card posted to LinkedIn, Instagram, X and Facebook](https://orshot.com/blog/automate-social-media-posting-openclaw/openclaw-example-prompts.webp) The rest of this guide compares the routes, shows every step with real screenshots and ends with the costs. OpenClaw cannot post anywhere on its own. It is an open-source agent that runs on your machine and acts through skills (instruction files) and MCP servers (apps it can call). In my test on October 22, 2026, one message produced a five-slide LinkedIn carousel in 1.3 seconds and held it as a draft until I approved it. **TL;DR** — Which OpenClaw posting route fits? Pick by what the post contains: - **1. Content creation and posting in one plugin**: [Orshot](#1-create-content-post-and-read-analytics-from-openclaw-with-orshot) — The agent creates the post design, makes each post from it, publishes it as a draft and reads the social analytics. OAuth, no key. - **2. Text and links you already have**: [A scheduler skill: Postiz, ContentStudio or Zernio](#2-post-text-you-already-have-with-a-scheduler-skill) — Install one skill, paste an API key, and OpenClaw schedules text and uploaded files across 10 to 28 networks. - **3. One platform, your own rules**: [A custom SKILL.md against the platform API](#3-write-your-own-openclaw-posting-skill-for-one-platform) — Most control, most maintenance. The route the ranking Reddit threads took. | Route | What it covers | Setup | Cost shape | | :--- | :--- | :--- | :--- | | **1. Orshot plugin** | Content creation, posting, scheduling, social analytics | Plugin + OAuth login | 100 free credits, $12 per account for posting | | **2. Scheduler skill** (Postiz, ContentStudio, Zernio) | Posting and scheduling of text and uploads | Skill + API key | Free tier, then per channel | | **3. Custom skill** | Whatever one platform API allows | You write and host it | Platform API fees, your time | ## 1. Create Content, Post and Read Analytics from OpenClaw with Orshot The [Orshot plugin](https://clawhub.ai/orshot/plugins/orshot "target=_blank") gives OpenClaw the whole social media loop in one install: it creates the post design from a brief, makes each post from it with new copy, publishes or schedules the post, and reads the social analytics back. Orshot is an API for automated image, PDF and video generation from templates, where a template is a reusable post design. It connects to 15 social platforms and talks to OpenClaw over a hosted MCP server with OAuth. **Pick this if** you want designed posts (quote cards, carousels, weekly stat graphics, product posts) that look the same every week, without a designer or a second tool in the loop. Customers had published 604 posts through Orshot to 49 connected accounts on 8 platforms as of October 22, 2026, and 70 percent of those posts came from an AI agent rather than the dashboard. Disclosure: I built Orshot. **Before you start** you need three things: OpenClaw installed, a free Orshot account, and one social account connected in the Orshot dashboard. Publishing to that account needs a paid plan (costs are in the table below); drafts and previews work on the free plan. ### Step 1: Install the plugin and log in Two commands. The plugin registers the MCP server and loads four skills (images and video, social media scheduler, carousel, social media content). The login opens your browser once; there is no API key. ```bash openclaw plugins install clawhub:orshot openclaw mcp login orshot ``` ![Setting up Orshot in OpenClaw in three steps: install the plugin with openclaw plugins install clawhub:orshot, log in once with openclaw mcp login orshot through the browser OAuth page, then OpenClaw and Orshot are connected with 100 plus tools and four skills](https://orshot.com/blog/automate-social-media-posting-openclaw/orshot-openclaw-setup.webp) Prefer the MCP server alone? `openclaw mcp add orshot --url https://mcp.orshot.com/mcp --transport streamable-http --auth oauth` does that, per the OpenClaw [MCP CLI docs](https://docs.openclaw.ai/cli/mcp "target=_blank rel=nofollow"). Every command and the config-file form are on the [OpenClaw agent page](https://orshot.com/agents/openclaw). Once connected, the Agents & MCP page in your workspace shows what the agent did: tool calls, sessions, posts made and the tools it used most. ![The Agents and MCP page in the Orshot workspace showing 1.6K tool calls, 50 sessions, a 98 percent success rate, tool calls per day and the most used tools, the generate and design tools](https://orshot.com/blog/automate-social-media-posting-openclaw/orshot-agents-mcp.webp) ### Step 2: Connect the social accounts once Accounts are connected by a human in the Orshot dashboard, never by the agent. Open Social, then Accounts, pick a platform and sign in. Each connected account shows its id, followers and last post. ![The Social Accounts page in the Orshot workspace with a Connect an account card for WhatsApp, X, Instagram, Facebook, LinkedIn and TikTok, and two connected accounts, X and LinkedIn, with follower counts and ids](https://orshot.com/blog/automate-social-media-posting-openclaw/orshot-social-accounts.webp) Social publishing is an add-on on paid plans at $12 per connected account per month, with no extra credit per post, as of October 2026 (see the [publishing docs](https://orshot.com/docs/publish/introduction)). After that, `orshot_list_social_accounts` returns the numeric ids the agent posts with. ![What OpenClaw can do once Orshot is connected, the loop in four steps: create the post design from a brief, new copy on the same design in 1.3 seconds, a LinkedIn draft with Instagram, X, TikTok, WhatsApp and Facebook as other destinations, and the best time to post from your own analytics](https://orshot.com/blog/automate-social-media-posting-openclaw/openclaw-orshot-loop.webp) ### Step 3: Create the post design from a brief Describe the post in plain words. OpenClaw picks the fonts, colours and safe areas from the social media content skill and your brand kit, and sends a preview back in chat. Orshot saves what it made as a reusable design. From then on the agent only changes the words, so every post looks like the same brand. ![A brief to OpenClaw on the left asking for a weekly tip Instagram post, the created photo design in the middle with the headline Post the visual not just the link, and on the right the same design with new copy, Draft first post on approval, in 1.3 seconds](https://orshot.com/blog/automate-social-media-posting-openclaw/template-created-then-rendered.webp) The design above came back as design 28523 with five editable fields in one call on October 22, 2026. From here every post is the same design with new copy, never a redesign. Already have a design in Canva or Figma? Import it instead and skip this step. ### Step 4: Make a carousel and post it as a draft with one message This is the test behind the number in the opening. I asked for a five-slide LinkedIn carousel from an existing growth tips design and told the agent to hold it as a draft. ![An OpenClaw message on the left asking for a five-slide LinkedIn carousel, a speed ring showing 1.3 seconds, and on the right the five finished slides with the Orshot draft card showing LinkedIn @Orshot, status draft, post 2114](https://orshot.com/blog/automate-social-media-posting-openclaw/openclaw-message-to-linkedin-draft.webp) The make-and-queue call returned in 1,273 ms with five slide URLs and a `publish` entry for LinkedIn in `pending` status. The draft sat in the dashboard as post 2114 until I opened it. Nothing reached LinkedIn. **Make your first draft from OpenClaw** — Free plan: 100 images a month, no card. Posting is $12 per connected account on paid plans. [Start free](https://orshot.com/pricing?via=blog-openclaw-social-test) Under the hood the agent called `orshot_render_template` with a `publish` object. The same call works from any code over REST, which matters when you later move the job to a cron: ```json { "templateId": 12155, "modifications": { "page1@headline": "HOW TO\nGROW ON\nLINKEDIN", "page2@headline": "Post when your\naudience is\nactually online", "page3@headline": "Lead with the\nvisual, not\nthe link", "page4@headline": "Reply to every\ncomment in the\nfirst hour", "page5@cta_text": "FOLLOW @ORSHOTAPP" }, "response": { "type": "url", "format": "png" }, "publish": { "accounts": [15], "content": "Five slides, one message to an agent.", "status": "draft" } } ``` ```bash curl -s -X POST https://api.orshot.com/v1/studio/render \ -H "Authorization: Bearer $ORSHOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "templateId": 12155, "modifications": { "page1@headline": "HOW TO\nGROW ON\nLINKEDIN" }, "response": { "type": "url", "format": "png" }, "publish": { "accounts": [15], "content": "Five slides, one message.", "status": "draft" } }' ``` ![Five carousel slides side by side, 1080 by 1350, a red growth tips design with captions hook, tip 1, tip 2, tip 3 and CTA, and the platforms it posts to as a carousel: Instagram, LinkedIn, TikTok, Threads and Bluesky](https://orshot.com/blog/automate-social-media-posting-openclaw/four-carousel-slides.webp) A carousel is a multi-slide design: Orshot uploads every slide and posts it as a carousel on Instagram, LinkedIn, TikTok (photo mode), Threads and Bluesky. The `orshot-carousel` skill carries a six-slide formula and TikTok's safe zones. ### Step 5: Turn the design into a weekly content calendar Seven posts from the same design is seven posts with different copy, each created as a draft. The Posts Log shows them as a calendar: queue, drafts, published and anything that needs attention. Approve from there or from chat, and the approved ones get a `scheduled_for` time. ![The Posts Log in the Orshot workspace as a month calendar for October 2026 with queue, drafts, published and needs attention counters and scheduled LinkedIn posts on the 23rd, 24th and 25th](https://orshot.com/blog/automate-social-media-posting-openclaw/orshot-posts-log.webp) ### Step 6: Schedule at the best time your own data shows Orshot's `orshot_get_best_time_to_post` tool reads your account's engagement history and returns day-and-hour slots in UTC. For our LinkedIn page on October 22, 2026, the strongest slot with real evidence was Thursday 08:00 UTC at 2.7 engagements per post across 6 posts. The top slot, Wednesday 20:00 UTC, had one post behind it, and the tool says so. ![Bar chart of LinkedIn engagement per post by slot from Orshot analytics: Thursday 8am UTC 2.7 across six posts, Saturday 8am 2.6 across five, with a note that one-post slots are weak evidence](https://orshot.com/blog/automate-social-media-posting-openclaw/best-time-to-post-linkedin.webp) The agent takes the top slot with enough posts behind it, converts it to your timezone, and passes it as `scheduled_for`. On a new account the slots come back empty. The agent should ask for a time rather than invent one. ### Step 7: Read the social analytics and adjust The Analytics page and the `orshot_get_social_analytics` tool return the same numbers: impressions, engagement, posts published, followers, a day-by-day chart and a best-time heatmap per account. ![The Social Analytics page in the Orshot workspace showing 510 impressions, 20 engagements, 15 posts published and 209 followers for the last 30 days, a daily chart and a best time to post heatmap](https://orshot.com/blog/automate-social-media-posting-openclaw/orshot-social-analytics.webp) A daily loop is one prompt: read last week's posts, keep the hook styles of the top quarter, drop the bottom quarter, write next week's drafts. ### Step 8: Put it on a schedule The simplest schedule is an Orshot Workflow, which posts from a sheet without OpenClaw being awake; the scheduling section below shows the preset. If you want OpenClaw itself to run it, its cron jobs and heartbeat are documented in its [cron guide](https://docs.openclaw.ai/automation/cron-jobs "target=_blank rel=nofollow"). The daily job is one prompt: ### What It Costs | Item | Price, as of October 22, 2026 | | :--- | :--- | | Orshot free plan | 100 credits a month, no card | | Image post | 1 credit per image; video needs a paid plan | | Social publishing add-on | $12 per connected account per month, paid plans only | | Publishing a post | No extra credit | The add-on is per account, so one brand on Instagram, LinkedIn and X is three accounts. - **100 images a month**: Every post design, every template in the library, and new designs from a brief. No card. - **The plugin, MCP server and four skills**: Content creation, carousel, scheduler and images and video skills, with OAuth login and no key on your machine. - **Drafts, previews and the dashboard**: Queue posts as drafts, see the cards in chat, approve from the Posts Log. Publishing needs a paid plan plus the $12 add-on. ### Things That Bit Me - Modifications key by `parameterId`, not layer name. If a value is ignored, the key is wrong; the skill tells the agent to read the design first. - PDFs cannot be posted anywhere. Images cannot go to TikTok or YouTube, which take video or photo carousels. - `scheduled_for` must be at least 60 seconds ahead and only pairs with `status: "scheduled"`. - Instagram and TikTok publish asynchronously. A `processing` status is not a failure. - Content creation, posting, scheduling and social analytics in one plugin, 1.2 to 1.3 seconds per image in my tests - OAuth login, no API key on the OpenClaw machine - Drafts by default, visual preview cards in chat, best time from your own data Cons: - You create the post design once first, or let the agent do it - Social publishing is a paid add-on per account - 15 platforms, fewer than Postiz's list **Best for:** Orshot suits founders and small marketing teams who want OpenClaw to create, post and measure designed images, carousels and video every week without opening a design tool. ## 2. Post Text You Already Have with a Scheduler Skill A scheduler skill lets OpenClaw post text, links and uploaded media through a social media scheduler's API. Postiz, ContentStudio and Zernio each publish one on ClawHub, the OpenClaw skill registry. **Pick this if** your posts are copy and links, you already have a scheduler account, and you want the widest platform list. None of the three makes the image; you upload what you already have. Postiz's install is one line, documented on its [OpenClaw page](https://postiz.com/openclaw "target=_blank rel=nofollow"): ```bash openclaw skills install @nevo-david/postiz postiz auth:login ``` ContentStudio asks for three commands (skill, CLI, API key) and notes the first social account must be connected in its web app, per its [guide](https://contentstudio.io/blog/automate-social-media-openclaw "target=_blank rel=nofollow"). Zernio's skill reads a `ZERNIO_API_KEY` line from `~/.openclaw/.env`, per its [step-by-step post](https://zernio.com/blog/how-to-post-to-social-media-using-openclaw-step-by-step-guide "target=_blank rel=nofollow"). | Scheduler | Free tier | Paid, as of October 22, 2026 | | :--- | :--- | :--- | | Postiz | "Start for $0" | Paid plans add channels; prices on its pricing page | | ContentStudio | 7-day trial, no card | Plans on its pricing page | | Zernio | First 2 social accounts | $6 per account for accounts 3 to 10, less above | Two things bit me here: platform counts are marketing numbers (Postiz says 28+ in its skill and 30+ on its page), and the skill may not appear in `openclaw skills list` until the vendor CLI is installed globally. Using one of these already? Orshot still makes the visual: the `orshot-carousel` skill documents the Postiz hand-off (download the slides, `postiz upload`, `postiz posts:create`). **Best for:** Postiz, ContentStudio and Zernio suit teams that already write copy and have images, and want OpenClaw to schedule it across many networks. ## 3. Write Your Own OpenClaw Posting Skill for One Platform A custom posting skill is a `SKILL.md` file that tells OpenClaw how to call one platform's API with your credentials. This is the route in the Reddit threads that rank for this query. **Pick this if** you post to one network, you already have developer access to its API, and you would rather own the code than pay per channel. Three steps. Get platform API access: X, Meta's Graph API and LinkedIn each need an app, a review for posting scopes and a token that expires. Write the skill in OpenClaw's [skill format](https://docs.openclaw.ai/tools/creating-skills "target=_blank rel=nofollow") with the token in an environment variable. Then write the draft gate into the skill body: "Never call the publish endpoint until the user says post." What bit me: tokens expire, so the cron fails silently on day 60 without a refresh step; media upload is a second API with its own limits; and X's free tier allows only a few hundred posts a month. **Best for:** A custom OpenClaw skill suits a developer posting to one platform who wants to own the whole path, and accepts that nothing in it makes the image. ## Which OpenClaw Posting Route Should You Use? Use the Orshot plugin when the post is a visual and you want creation, posting and analytics in one place; a scheduler skill for text you already have; a custom skill only for one platform you control. | Question | Orshot plugin | Scheduler skill | Custom skill | | :--- | :--- | :--- | :--- | | Creates the content? | Yes, from a brief | No | No | | Makes the image or carousel? | Yes, from your design | No | No | | Credentials on the machine | OAuth token | API key | Platform token | | Platforms | 15 | 10 to 28 | 1 per skill | | Drafts and approvals | Yes, default | Yes | You write it | | Analytics and best time | Yes, from your own posts | ContentStudio, Postiz | No | | Time to first post | Under 10 minutes | Under 10 minutes | Days (API review) | ## Keep OpenClaw from Posting the Wrong Thing OpenClaw posts whatever its skill lets it post, so the controls live in the skill text and the account setup. Four rules kept my test boring, which is the goal. ![Four guard rails for OpenClaw posting: drafts by default with status draft, OAuth with PKCE instead of an API key in a config file, naming the account by its numeric id, and the ClawHub audit badge on the Orshot skills](https://orshot.com/blog/automate-social-media-posting-openclaw/openclaw-guard-rails.webp) - **Drafts by default.** The Orshot skills send `status: "draft"` unless the message says post now. Write the same rule into any custom skill. - **OAuth over keys.** A token the agent cannot read beats a key in `~/.openclaw/.env`. Orshot's MCP server uses OAuth with PKCE; Postiz offers a device-flow login as well. - **Name the account.** Two LinkedIn accounts have two numeric ids. The skill repeats platform and username before sending. - **Read the audit.** ClawHub scans every skill version. The four Orshot skills show a Pass audit; check the badge on anything you install. ## Can OpenClaw Post on Social Media? Yes, through a skill or plugin; OpenClaw has no built-in posting. The Orshot plugin creates the content, an image, carousel or video, and posts it to 15 platforms. Those platforms are X, Instagram, Facebook, LinkedIn, TikTok, YouTube, Pinterest, Reddit, Bluesky, Threads, Telegram, Snapchat and Google Business. The ContentStudio, Postiz and Zernio skills post text and uploaded media to 10 to 28 networks. ## Can OpenClaw Post to Instagram, LinkedIn and TikTok? OpenClaw can post to Instagram, LinkedIn and TikTok through any of the three routes, with one catch per platform. ![Where OpenClaw can post through Orshot and the catch on each of 15 platforms: Instagram publishes async, LinkedIn wants the link in the first comment, TikTok takes photos 2 to 35 or video, X 280 characters, YouTube video only, Bluesky 300 characters, Reddit no video via API, Google Business no video, Discord 2,000 characters, Snapchat in beta](https://orshot.com/blog/automate-social-media-posting-openclaw/openclaw-platform-matrix.webp) Instagram and TikTok publish asynchronously, so the agent should re-check status after a minute. TikTok takes video or a photo carousel of 2 to 35 images, never a single image. LinkedIn accepts a first comment, which is where the link belongs if you want the preview card suppressed. ## How Do I Schedule Posts from OpenClaw on a Cron? You do not need a cron. An [Orshot Workflow](https://orshot.com/workflows/images-from-sheet-to-social) is the scheduled job: connect a data source, map its columns to your post design, pick the connected accounts, and every new row becomes a finished post. OpenClaw creates the design and fills the sheet. The workflow does the posting on its own schedule, so nothing depends on your machine being on. The preset below is ready to copy into your workspace with one click on **Use this workflow**. [Auto-post images to social media from Google Sheets workflow on Orshot](https://orshot.com/workflows/images-from-sheet-to-social/embed) The same shape exists for LinkedIn carousels from Airtable or Notion, Pinterest pins from a sheet and daily quote graphics, and each runs on new rows or a fixed schedule. If you want OpenClaw itself to run the job, its cron and heartbeat run the same skills as an interactive message, so the job text is the prompt from step 8 above. Keep the draft gate either way. A job that publishes unreviewed posts is the failure mode every guide warns about. ## OpenClaw Social Media Automation FAQ **Q: Can OpenClaw post on social media?** Yes, with a skill or plugin. OpenClaw itself has no posting feature. The Orshot plugin creates the content, images, carousels and video, and posts them to 15 platforms over OAuth. Postiz, ContentStudio and Zernio publish OpenClaw skills that schedule text and uploaded media. **Q: How do I automate social media posting with OpenClaw?** Install the Orshot plugin or a posting skill from ClawHub, connect your social accounts in that vendor's dashboard, then send OpenClaw a message or a cron job prompt that says what to post and holds it as a draft. In my October 22, 2026 test, one message produced a five-slide LinkedIn carousel draft in 1.3 seconds. **Q: Can OpenClaw create the content, not just post it?** Yes, with the Orshot plugin. The orshot-social-media-content skill lets OpenClaw create an on-brand post design from a brief, and every later post reuses that design with new copy. Scheduler skills post media you upload; they do not make it. **Q: Is there an AI that automatically posts to social media for you?** Yes. OpenClaw with the Orshot plugin drafts, schedules and publishes posts on its own, with the visual made from your own design. Keep drafts on so a human approves each post; every tool in this guide supports that gate. **Q: Does OpenClaw social media automation need an API key?** Not with Orshot. The Orshot plugin logs in with OAuth and keeps no key on the machine. Postiz offers a device-flow login or an API key. ContentStudio and Zernio use an API key stored in the OpenClaw environment. **Q: How much does it cost to automate social media with OpenClaw?** OpenClaw is free and open source; you pay for the model and the posting route. As of October 22, 2026, Orshot's free plan has 100 images a month with posting at $12 per connected account on paid plans. Postiz starts at $0, ContentStudio has a 7-day trial, Zernio gives two accounts free. **Q: Do I need a paid Orshot plan to post from OpenClaw?** Not to start. The free plan makes images, carousel slides and drafts from OpenClaw with 100 images a month. Publishing to a connected account needs a paid plan plus the social publishing add-on at $12 per account per month, as of October 22, 2026. Video needs a paid plan. **Q: What is Orshot?** Orshot is an API for automated image, PDF and video generation from templates. You create a post design once, or let an agent create it, then fill it with new text and images from code, n8n, Make, Zapier or an AI agent such as OpenClaw, and post the result to 15 social platforms in the same call. Orshot Workflows run the same loop on a schedule from a sheet or database. ## Get Your First Post Out of OpenClaw Install the Orshot plugin, log in, connect one account, and send the design prompt from step 3. The preview comes back in chat, the first draft lands in the Posts Log, and you approve it from there. [Sign up](https://orshot.com/pricing?via=blog-openclaw-social-footer) for the free plan, which includes 100 images a month and no card. --- ### [How to Bulk Create from Canva Templates](https://orshot.com/blog/canva-bulk-create-alternative) > Free alternative to Canva bulk create. Import templates, automate Instagram posts & product images via spreadsheets or API. No CSV uploads. 100 free credits a month. I've spent way too many hours dealing with Canva's bulk create feature. You know the drill - download your CSV, upload it, wait for processing, download all the images, then manually organize everything. If you're creating 50+ Instagram posts for your product catalog or [bulk generating social media content](https://orshot.com/blog/social-media-automation-tools), it gets old fast. The worst part? You can't automate any of it. Every single batch means going through the same manual process again. No API, no integrations, just you and that CSV upload button. There are [much better tools for automated content creation](https://orshot.com/blog/automated-content-creation-tools) that handle this end-to-end. Here's what I found that actually works: import your Canva design once into Orshot, then generate as many variations as you need automatically. Whether you're using spreadsheets, hitting an API endpoint, or connecting to your favorite automation tools - it's all possible. [Orshot is a Canva alternative](https://orshot.com/blog/free-canva-alternatives), along with a Canva-like editor Orshot also gives you API and integrations for your templates In this guide, I'll walk you through exactly how I set this up. Takes about 30 minutes the first time, then it just runs. ## How to Use This Canva Bulk Create Alternative [Orshot](https://orshot.com/) - a **free alternative to Canva bulk create** with 100 free credits a month to get started (no credit card required). This tutorial shows you exactly how to set up automated bulk generation from your existing Canva templates. The process is simple: import your template, make fields dynamic, and use Orshot's spreadsheet feature to generate images automatically. ## Step 1: Import Your Canva Template ![Import Canva Template](https://orshot.com/blog/canva-spreadsheet-create/import-canva-template.webp) You don't need to rebuild your design from scratch. Orshot imports your existing Canva template directly. **How to import:** 1. Open your Canva design 2. Click the Share button and copy the link 3. Paste it below and import — no signup needed to preview: Wait about 30 seconds. Your design comes over with everything intact - fonts, colors, spacing, images. Once imported, you'll see it in Orshot Studio where you can make adjustments if needed. ## Step 2: Make Fields Dynamic ![Import Canva Template](https://orshot.com/blog/canva-spreadsheet-create/parameterize-template.webp) Now tell Orshot which parts should change with each generation. Unlike Canva's bulk create (limited to basic text), you can parameterize anything - text, images, colors, even element visibility. **How to parameterize:** 1. Open your imported template in Orshot Studio 2. Click on any text or image layer you want to make dynamic 3. In the right sidebar, toggle on "Parameterize" 4. Give it a parameter name like `productName` or `productImage` 5. Repeat for all dynamic elements **Example for Instagram product posts:** - Product name text → `productName` - Product image → `productImage` - Price text → `price` - Description text → `description` Unlike Canva's bulk create, alignment stays perfect across all generated posts automatically. ## Step 3: Use Orshot's Spreadsheet Feature to Bulk Generate ![Import Canva Template](https://orshot.com/blog/canva-spreadsheet-create/generate-from-spreadsheet.webp) This is where the magic happens. Orshot has a built-in spreadsheet feature - no need for external automation tools or manual CSV uploads like Canva. ### Access the Spreadsheet Feature 1. Go to **Workspace → Integrations → Spreadsheets** in Orshot 2. Click "Generate from Spreadsheet Data" 3. Select your template from the dropdown The spreadsheet interface will automatically create columns matching your parameterized fields. ![Import Canva Template](https://orshot.com/blog/canva-spreadsheet-create/spreadsheet-generation.webp) ### Add Your Data You have two options: **Option 1: Import a file** - Click the "Import" button - Upload a CSV or Excel file with columns matching your parameters - Data populates automatically **Option 2: Manual entry** - Click "Add Row" to create entries - Type or paste directly into cells - Copy/paste from Excel or Google Sheets Example data for Instagram product posts: | productName | price | description | productImage | | ----------------- | ------ | --------------------- | ----------------- | | Gold Chain Anklet | ₹1,299 | Elegant 18k plated | https://image1... | | Silver Ring Set | ₹899 | Set of 3 adjustable | https://image2... | | Pearl Earrings | ₹1,599 | Freshwater pearl drop | https://image3... | ### Generate in Bulk 1. Set your generation options: - **Format**: PNG, JPEG, WebP, AVIF, or PDF - **Response Type**: URL or Base64 - **Row Range**: Choose which rows (e.g., rows 1-50) - **Scale**: Image resolution 2. Click **"Start Generation"** 3. Watch as images generate in real-time with preview thumbnails 4. Download all images as a ZIP file or copy individual URLs **That's it!** You've replaced Canva's manual bulk create with Orshot's automated system. Add 50 rows and generate 50 Instagram posts with one click - no external tools needed. ### Connect the Automation You'll use an automation platform ([n8n](https://orshot.com/blog/n8n-marketing-automation-tutorial), Make, or Zapier) to connect your Google Sheet to Orshot: 1. Create a new workflow in your automation platform 2. Add trigger: "Google Sheets - When row is added or updated" 3. Add action: "HTTP Request" to Orshot API 4. Add action: "Google Sheets - Update row" with generated image URL **API request format:** ```javascript POST https://api.orshot.com/v1/studio/render Headers: Authorization: Bearer YOUR_API_KEY Content-Type: application/json Body: { "templateId": "your-template-id", "modifications": { "productName": "{{row.productName}}", "price": "{{row.price}}", "description": "{{row.description}}", "productImage": "{{row.productImage}}" } } ``` Map your sheet columns to the parameters. ### Test It Add a test row to your spreadsheet. Within a few seconds, the "Generated Post" column should populate with a URL. Click it to verify the image looks correct. If it works, activate your workflow. Now every time you add or update a row, an image generates automatically. **That's it!** You've replaced Canva's manual bulk create with an automated system. Add 50 rows to your sheet and watch 50 Instagram posts generate automatically. And if you'd rather skip the wiring entirely, this whole chain ships as a ready-made workflow inside Orshot: it reads your sheet on a schedule, renders the carousel, and posts it to Instagram and LinkedIn. One click adds it to your workspace, no external tools needed. [Instagram carousels from a spreadsheet workflow on Orshot](https://orshot.com/workflows/instagram-carousels-from-sheet/embed) ### Publish Directly to Social Media Once your images are generated, skip the download-upload-post cycle. Orshot's [Social Publishing](https://orshot.com/docs/publish/introduction) lets you post rendered images directly to 15+ platforms — Twitter/X, Instagram, LinkedIn, Facebook, TikTok, Discord, WhatsApp, and more — from the API or dashboard. Publish instantly, schedule for later, or save as a draft. $12/month per connected account, unlimited posts. --- ## More Ways to Generate Images Beyond the built-in spreadsheet feature above, here are other ways to use this **Canva bulk create alternative**: ### Via API (for Developers) If you're comfortable with code, you can generate images programmatically from any system - your app, a script, a cron job, etc. **Quick example:** ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer YOUR_API_KEY", }, body: JSON.stringify({ templateId: 12345, // Your template ID modifications: { productName: "Gold Chain Anklet", price: "₹1,299", description: "Elegant 18k plated", productImage: "https://example.com/anklet.jpg", }, response: { type: "url", // or "base64" format: "png", // png, jpeg, webp, avif, or pdf scale: 1, }, }), }); const data = await response.json(); console.log("Generated:", data.content); // URL to generated image ``` Perfect for integrating into your applications, processing data from databases, or building custom automation workflows. [See API docs](https://orshot.com/docs/api-reference/render-from-studio-template). ### Via Dynamic URLs Generate images just by changing URL parameters - no code needed. Great for email signatures, social sharing cards, or personalized links. **Example:** ``` https://api.orshot.com/render?template=abc123&productName=Anklet&price=1299 ``` Each URL with different parameters generates a unique image. [Learn more about dynamic URLs](https://orshot.com/docs/integrations/dynamic-urls). ### Automate with n8n, Make, or Zapier Connect Orshot to thousands of apps for automated workflows: - **Google Sheets** → Auto-generate when rows are added/updated - **Airtable** → Generate images when records are created - **Typeform** → Create certificates from form submissions - **Shopify** → Auto-generate product images from new listings - **Webhook triggers** → Generate on-demand from any system These integrations use Orshot's API to trigger generation based on events in other apps. [Browse all integrations](https://orshot.com/integrations). --- ## Common Questions **Q: Why automate with Orshot instead of Canva Bulk Create?** Canva's Bulk Create is manual. You have to upload CSVs and download zips every time. Orshot is fully automated. Connect it to [Airtable](https://orshot.com/docs/integrations/airtable) or [Zapier](https://orshot.com/docs/integrations/zapier) so images generate instantly as data comes in. **Q: Can I use conditional logic in my bulk generation?** Yes. In Canva, your data is static merge fields. With Orshot's API and integrations, you can use conditional logic (e.g., if price is above $50, show a sale badge). This allows for much more sophisticated dynamic templates. **Q: Does Orshot support multi-page PDFs?** Yes. Unlike Canva's bulk create which outputs individual files, Orshot can generate a single [multi-page PDF](https://orshot.com/blog/introducing-carousel-templates) with all your certificates, invoices, or reports in one clean document. **Q: Can I import my Canva designs to Orshot?** Yes. Use our [Canva import tool](https://orshot.com/solutions/canva-template-to-api) to move your designs over. You get the best of both worlds: design in Canva (if you prefer), then automate with Orshot's powerful engine. **Q: Is there a limit on how many images I can generate?** Practically, no. Orshot's scalable infrastructure can process thousands of records via API. Canva's browser-based bulk create can get sluggish or crash with very large datasets. **Q: Can I generate videos in bulk with Orshot?** Yes. Canva Bulk Create is primarily for static designs. Orshot allows you to automate video generation (MP4/WebM/GIF) in bulk just as easily as images. **Q: Is there an agency partner program?** Yes. Our [Agency Partner Program](https://orshot.com/partner-program) is free to join and includes unlimited sandbox workspaces, pooled credits up to 100k/month, and client handoff tools. **Q: What integrations does Orshot support?** Orshot integrates with [Zapier](https://orshot.com/docs/integrations/zapier), [Make](https://orshot.com/docs/integrations/make), [n8n](https://orshot.com/docs/integrations/n8n), [Airtable](https://orshot.com/docs/integrations/airtable), and more. We also offer Dynamic URLs for no-code generation and a full REST API. ## Wrapping Up Look, Canva is great for designing templates. But bulk create? It's painful when you're doing any real volume. The manual CSV uploads, the lack of automation, the inability to integrate with anything - it just doesn't scale. That's why so many teams are switching to **Canva bulk create alternatives** like Orshot. You import your Canva template once and then generate variations however you need - through spreadsheets if you want something simple, or via API if you're building it into an app. Takes about 30-45 minutes to set up the first time. After that, it runs on its own. And with 100 free credits a month, you can test this **free alternative to Canva bulk create** without any risk. ## Try This Free Canva Bulk Create Alternative Ready to switch from Canva's manual bulk create to an automated alternative? 1. [Sign up for Orshot](https://orshot.com/pricing) - 100 free credits every month, no credit card required 2. Import your Canva template using [this tool](https://orshot.com/solutions/canva-template-to-api) 3. Follow the spreadsheet or API steps above 4. Generate your first batch of images automatically This **free alternative to Canva bulk create** takes about 30 minutes to set up, then runs automatically. If you run into issues, use the chat button on the site and I'll help you get set up. [Try the free Canva bulk create alternative →](https://orshot.com/pricing) --- ### [How to Create and Automatically Post LinkedIn Carousels](https://orshot.com/blog/how-to-automatically-create-linkedin-carousels) > Create a LinkedIn carousel from a template, brand it in Studio, and auto-post it on a schedule. No manual designing, exporting, or uploading. LinkedIn carousels are one of the best formats for reach right now. The catch is the **production loop**: design five or seven slides in Canva, export a PDF, open LinkedIn, upload the file, write a caption, then do it all again from scratch next week. This guide is about skipping most of that with [Orshot](https://orshot.com/). Two ideas do the heavy lifting: - **A dynamic template.** Design the carousel once, then generate new ones by just swapping the text. No redesigning, no blank canvas. - **A workflow.** Connect LinkedIn once and let a spreadsheet row, a Notion page, or a schedule turn into a finished carousel that posts itself. ![Editing a LinkedIn carousel template in Orshot Studio](https://orshot.com/blog/how-to-automatically-create-linkedin-carousels/linkedin-carousel-templates.webp) I'll build it up step by step, so you can stop wherever it fits how you work. It all rests on one detail about LinkedIn carousels that most people miss, so let's start there. ## What a LinkedIn carousel actually is LinkedIn has no "carousel" button. A carousel is a **document post**: you upload a **PDF** and LinkedIn turns each page into a swipeable card in the feed. Get that right and it reads as a real native carousel instead of a flat multi-image post. The specs worth knowing: | Spec | What to use | | | --------- | -------------------------------------------------------------------------------- | --- | | Best size | 1080 x 1350 (portrait) fills the most feed space. Square 1080 x 1080 also works. | | | Format | PDF. This is what makes it a native swipeable carousel. | | | Pages | 5 to 12 slides is the sweet spot. LinkedIn allows many more. | | One thing to clear up: this guide is about **organic** carousels, the PDF document post. LinkedIn carousel _ads_ are a separate thing you set up as individual images in Campaign Manager. ## The manual way, and why it doesn't scale If you only ever post one carousel, doing it by hand is fine. Here's the flow: 1. Design your slides in Canva, Figma, or slides. 2. Export the whole thing as a single **PDF**. 3. On LinkedIn, click **Start a post**, then the document icon. 4. Upload the PDF, give it a title, write your caption, and post. It works, but it doesn't scale, and two headaches show up constantly: - The text comes out [blurry and pixelated after you upload it](https://www.reddit.com/r/LinkedInTips/comments/1f9org8/why_do_my_pdf_carousels_look_so_pixelated_when_i/ "target=_blank nofollow"), usually because the file was exported at the wrong size and LinkedIn compresses it hard. So you go back, re-export, and guess at settings until it looks right. - Export your slides as images instead of one PDF and the post [looks haywire rather than a real carousel](https://www.reddit.com/r/canva/comments/19cxnsa/how_to_schedule_a_carousel_pdf_to_linkedin/ "target=_blank nofollow"). On top of that, nothing batches. Every small change means redesign, re-export, and re-upload, and your brand drifts a little each time a different person makes one. That's the part we're going to fix. ## 1. Start from a template Instead of a blank canvas, start from a carousel that's already designed and just change the words. Head to the [LinkedIn templates gallery](https://orshot.com/templates/g/linkedin "target=_blank") and pick a carousel you like. The multi-page ones show a slide count on the thumbnail, so you can tell a real carousel from a single graphic. ![LinkedIn carousel templates in the Orshot gallery, each showing a slide count](https://orshot.com/blog/how-to-automatically-create-linkedin-carousels/templates-gallery.webp) A few good ones to start from: - [Dark Navy Editorial Listicle](https://orshot.com/templates/1740 "target=_blank") (6 slides) - [Brutalist Black & Yellow](https://orshot.com/templates/1731 "target=_blank") (5 slides) - [Money Tips Carousel Cover](https://orshot.com/templates/2052 "target=_blank") - [Creative Carousel Cover](https://orshot.com/templates/2111 "target=_blank") Here's one of them embedded live. Edit the text right here to see how fast it is to make it yours: [Open the embed](https://orshot.com/templates/shared/u59oefjv/embed?view=play) When you edit a template like this, every slide updates together, so the design stays consistent no matter what you type. And because LinkedIn wants a PDF, you export the whole set as one file. [Here's the actual PDF](https://orshot.com/blog/how-to-automatically-create-linkedin-carousels/linkedin-carousel-example.pdf "target=_blank") this template produced, ready to drop into a LinkedIn document post. Already have carousels designed in Canva? You don't have to rebuild them. Import your design and it becomes an editable Orshot template you can brand and automate like any other. ## 2. Make it on-brand in Studio Templates get you 90% there. To make it feel like _yours_, open it in [Orshot Studio](https://orshot.com/studio "target=_blank") and bring in your brand. ![Editing a LinkedIn carousel template in Orshot Studio](https://orshot.com/blog/how-to-automatically-create-linkedin-carousels/studio-editor-carousel.webp) In Studio you can: - Swap in your **brand colors** and **fonts** from your Brand Library, so every carousel matches without fiddling. - Drop in your **logo** and change photos or icons. - Adjust layouts, then save it as your own reusable template. ## 3. Connect your LinkedIn account Before you can post from Orshot, connect LinkedIn once. In Studio, go to **Publish > Social Accounts**, pick LinkedIn, and finish the connection. ![Connecting your LinkedIn account on the Orshot Social Accounts page](https://orshot.com/blog/how-to-automatically-create-linkedin-carousels/connect-social-accounts.webp) Once it's connected, you have two ways to post: straight from Studio, or fully automated. ## 4. Post a carousel from Studio (the quick way) If you just want to ship one carousel, open it in Studio and hit **Publish**. Pick the pages, choose your LinkedIn account, write a caption, and post it now, schedule it, or save it as a draft. ![Publishing a carousel to LinkedIn from Orshot Studio, with post now, schedule, and draft options](https://orshot.com/blog/how-to-automatically-create-linkedin-carousels/publish-from-studio.webp) That alone beats exporting a PDF and uploading it by hand. But if you post regularly, you can make it hands-off. ## 5. Automate it end to end with Workflows With [Workflows](https://orshot.com/features/workflow-automation-builder "target=_blank"), carousels generate and post themselves. If you have ever wished you could [hand over your content and a template and have it fill in each carousel for you](https://www.reddit.com/r/FigmaDesign/comments/1o6bhp0/creating_linkedin_carousels_at_scale/ "target=_blank nofollow"), this is that. A workflow is just: something happens, a carousel gets rendered, and it posts to LinkedIn. The trigger can be: - **A schedule** (post a new carousel every weekday morning) - **A new Google Sheets row** (fill a row, get a posted carousel) - **A new Airtable record** or **Notion page** (great if your content calendar already lives there) ![The auto-post workflow: a schedule triggers a Google Sheet, renders each row as a PDF carousel, and posts it to LinkedIn](https://orshot.com/blog/how-to-automatically-create-linkedin-carousels/workflow-builder.webp) Here's that same workflow, ready to fork. It takes rows from a Google Sheet, renders each as a carousel, and posts it to LinkedIn on a schedule: [Open the embed](https://orshot.com/workflows/linkedin-carousels-from-sheet/embed) There are two more presets set up the same way if your content lives elsewhere: one for **Notion** and one for **Airtable**. Fork whichever matches your setup. **One important setting:** in the render step, set the format to **PDF**. That's what makes LinkedIn treat it as a real swipeable document carousel. If you render as PNG instead, it posts as a multi-image swipe, which is fine but isn't the native carousel viewer. Orshot lets you send a PDF straight to LinkedIn, so use PDF when you want the true carousel. A couple of honest notes so there are no surprises: - Auto-posting runs through Orshot's **Social Publishing** add-on ($12 per connected account) plus a connected LinkedIn account. Rendering carousels is separate and doesn't need it. - The schedule and Google Sheets triggers work on every plan. **Airtable, Notion, and webhook** triggers are on the Grow plan and up. ## For developers: do it in one API call If you'd rather wire this into your own app, you don't need the visual builder at all. Render a carousel as a PDF with a single request: ```bash curl -X POST https://api.orshot.com/v1/studio/render \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "templateId": 8321, "modifications": { "page1@headline": "5 lessons from our first launch", "page2@body": "Ship before it feels ready.", "page3@body": "Talk to 10 users before writing 100 lines." }, "response": { "type": "url", "format": "pdf" } }' ``` You get back a PDF URL. From there you can post it to LinkedIn through the same [Social Publishing](https://orshot.com/features/social-publishing "target=_blank") accounts, so rendering and posting happen from one place. The full reference is in the [render API docs](https://orshot.com/docs/api-reference/render-from-studio-template "target=_blank"). If you want a worked example, we have a full [SvelteKit walkthrough](https://orshot.com/blog/automate-linkedin-carousels-sveltekit "target=_blank") too. ## Best practices for LinkedIn carousels A few things that consistently help: - **Lead with a strong cover.** The first slide decides whether anyone swipes. - **One idea per slide.** Carousels are for pacing, not paragraphs. - **Get them to the last slide.** LinkedIn rewards dwell time, so give people a reason to keep swiping. - **Keep it portrait** (1080 x 1350) so it fills more of the feed. - **End with a clear ask,** like follow, repost, or a link in the first comment. - **Stay consistent.** Same fonts and colors every time build recognition, which is exactly what templates and your Brand Library give you for free. ## FAQ **Q: How do I actually post a carousel on LinkedIn?** Click Start a post, then the document icon, and upload a PDF. LinkedIn turns each page of the PDF into a swipeable slide. There's no separate carousel button, it's a document post under the hood. **Q: What size should a LinkedIn carousel be?** 1080 x 1350 (portrait) or 1200 x 1500 work best because they take up more space in the feed. Square 1080 x 1080 is fine too. Export the slides as a single PDF. **Q: Can I automate posting carousels to LinkedIn?** Yes. With Orshot Workflows you connect LinkedIn once, then trigger new carousels on a schedule or from a Google Sheet, Airtable, or Notion. Each one renders as a PDF and posts on its own. Auto-posting uses the Social Publishing add-on and a connected LinkedIn account. **Q: Do I need design skills?** No. Start from a template in the LinkedIn gallery, change the text, and optionally swap in your brand colors and logo. The layout is already done for you. **Q: PDF or images, what's the difference on LinkedIn?** A PDF posts as a native swipeable document carousel. A set of images posts as a multi-image swipe, which looks similar but isn't the same viewer. For a true carousel, render and post a PDF. **Q: Why does my LinkedIn carousel look blurry or pixelated?** Almost always because the PDF was exported at the wrong size, and LinkedIn compresses uploads hard. Design at 1080 x 1350 and export a real PDF. Orshot renders the PDF at the correct carousel size on its servers, so you skip the export-and-guess loop that causes most of the blur. **Q: Can I schedule a carousel to post as a PDF instead of images?** Yes, and that is the whole point of rendering as PDF. Orshot posts your carousel to LinkedIn as a native document, on a schedule or straight from a Google Sheet, so it shows up as a real swipeable carousel instead of a set of images that looks off. ## Bottom line Making one LinkedIn carousel by hand is fine. Making them every week is where it falls apart. Start from a template so you never open a blank canvas, brand it once in Studio, and then let a workflow generate and post them for you. You keep the consistency and lose the busywork. If you want to try it, you can [start for free](https://orshot.com/pricing "target=_blank") and have your first carousel out today. --- ### [How to Generate Subtitle from Video using Node.js & OpenAI](https://orshot.com/blog/generate-subtitle-from-video-nodejs) > A complete guide to adding automated subtitles to videos. Compare the easy way using Orshot's Video API versus the manual DIY approach using FFmpeg and OpenAI Whisper Video content is dominant right now, but here is a statistic that matters: **over 80% of social media videos are watched on mute**. If you aren't burning subtitles into your videos, you are losing the vast majority of your audience. If you have researched this topic—perhaps scrolling through [Reddit threads on r/ffmpeg or r/node](https://www.reddit.com/r/ffmpeg/ "target=_blank")—you likely ran into the same common pain points: 1. **FFmpeg is complex:** "Filter complex", "stream mapping", and syntax errors are nightmares. 2. **Quality Loss:** Hardcoding subtitles requires re-encoding the video. If you don't know what `CRF` or bitrate to set, your crystal clear 4K video turns into a blocky mess. 3. **Styling Limitations:** Standard SRT files are ugly. Making them look like "TikTok style" captions requires advanced `libass` configs or custom drawing filters. In this guide, we will look at two ways to solve this: the **Automated API** method (using Orshot) and the **Manual Node.js** method (building it yourself). --- ## Method 1: The Automated Way (Orshot API) If you want to skip the engineering headaches of server-side FFmpeg, GPUs, and file storage, Orshot handles the entire pipeline in a single API request. Orshot's [Video Generation API](https://orshot.com/docs/video-generation/adding-subtitles) automatically: - Extracts audio from your video. - Transcribes it using high-quality AI. - Generates the subtitles with perfect sync. - **Burns them in** with custom styling (colors, fonts, backgrounds). - Returns the final `.mp4`. ### Example: Auto-Generate Subtitles You simply pass your video URL and styling preferences. You can even use **Google Fonts** instantly. ```javascript const response = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer YOUR_API_KEY", }, body: JSON.stringify({ templateId: "your-video-template", response: { format: "mp4" }, videoOptions: { // The magic happens here subtitleSource: "https://your-bucket.com/video.mp4", subtitleColor: "#FFFFFF", subtitleBackground: "rgba(0,0,0,0.6)", // Semi-transparent box subtitleFontFamily: "Inter", // Auto-loads Google Font subtitleFontSize: "32px", subtitleBottom: "80px", // Position from bottom }, }), }); ``` That's it. You get a finished URL back. No servers to manage, no `fluent-ffmpeg` callbacks to debug. - [**Get your API key**](https://orshot.com/pricing) - [**Read Documentation**](https://orshot.com/docs/video-generation/adding-subtitles) --- ## Method 2: The DIY Way (Node.js + OpenAI Whisper) If you prefer to build this pipeline yourself, we will use **Node.js**, **fluent-ffmpeg**, and **OpenAI's Whisper API**. ### Prerequisites - Node.js installed. - [FFmpeg installed](https://ffmpeg.org/download.html "target=_blank") on your system path. - An OpenAI API Key. ### Step 1: Install Dependencies ```bash npm install fluent-ffmpeg openai fs ``` ### Step 2: Extract Audio OpenAI's Whisper API accepts audio files. First, we need to strip the audio track from your video to reduce upload size and processing time. ```javascript const ffmpeg = require("fluent-ffmpeg"); function extractAudio(videoPath, audioPath) { return new Promise((resolve, reject) => { ffmpeg(videoPath) .output(audioPath) .noVideo() .audioCodec("libmp3lame") .on("end", resolve) .on("error", reject) .run(); }); } ``` ### Step 3: Transcribe with OpenAI Whisper We upload the audio to OpenAI. The pricing is **$0.006 per minute**. That means a 10-minute video costs about **$0.06** to transcribe. ```javascript const OpenAI = require("openai"); const fs = require("fs"); const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY }); async function transcribe(audioPath) { const transcription = await openai.audio.transcriptions.create({ file: fs.createReadStream(audioPath), model: "whisper-1", response_format: "srt", // Request SRT format directly }); return transcription; // Returns standard SRT string } ``` ### Step 4: Burn Subtitles into Video (Hardcoding) This is the tricky part. We need to take that SRT string, save it to a file, and use FFmpeg's `subtitles` filter to burn it in. **Critical Note on Quality:** By default, FFmpeg might re-encode your video at a low bitrate. To preserve quality, we use the `-crf` (Constant Rate Factor) flag. Lower is better quality. A CRF of **23** is standard, **18** is nearly visually lossless. ```javascript function burnSubtitles(videoPath, subtitlePath, outputPath) { return new Promise((resolve, reject) => { ffmpeg(videoPath) .outputOptions([ "-vf subtitles=" + subtitlePath, // The complex filter "-crf 23", // Maintain visual quality "-preset fast", // Encoding speed ]) .save(outputPath) .on("end", () => console.log("Subtitles burned successfully!")) .on("error", (err) => console.error("Error burning subs:", err)); }); } ``` ### The Full Pipeline Putting it all together, here is a complete script you can run. This handles audio extraction, transcription, and subtitle burning in one flow. ```javascript /* generate-subs.js */ const ffmpeg = require("fluent-ffmpeg"); const OpenAI = require("openai"); const fs = require("fs"); const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY }); async function extractAudio(videoPath, audioPath) { console.log("🔊 Extracting audio..."); return new Promise((resolve, reject) => { ffmpeg(videoPath) .output(audioPath) .noVideo() .audioCodec("libmp3lame") .on("end", resolve) .on("error", reject) .run(); }); } async function transcribe(audioPath) { console.log("🎙️ Transcribing with OpenAI Whisper..."); const transcription = await openai.audio.transcriptions.create({ file: fs.createReadStream(audioPath), model: "whisper-1", response_format: "srt", }); return transcription; } async function burnSubtitles(videoPath, subtitlePath, outputPath) { console.log("🔥 Burning subtitles (this may take a while)..."); return new Promise((resolve, reject) => { ffmpeg(videoPath) .outputOptions([ `-vf subtitles=${subtitlePath}`, "-crf 23", // Balanced quality "-preset fast", // Faster encoding ]) .save(outputPath) .on("end", resolve) .on("error", reject); }); } (async () => { try { const INPUT_VIDEO = "input.mp4"; const TEMP_AUDIO = "temp_audio.mp3"; const TEMP_SRT = "temp_subs.srt"; const OUTPUT_VIDEO = "output.mp4"; await extractAudio(INPUT_VIDEO, TEMP_AUDIO); const srtData = await transcribe(TEMP_AUDIO); fs.writeFileSync(TEMP_SRT, srtData); await burnSubtitles(INPUT_VIDEO, TEMP_SRT, OUTPUT_VIDEO); console.log("✅ Done! saved to", OUTPUT_VIDEO); // Cleanup temp files fs.unlinkSync(TEMP_AUDIO); fs.unlinkSync(TEMP_SRT); } catch (error) { console.error("❌ Error:", error); } })(); ``` ### Addressing Common Issues **Q: Why does my video quality look worse after adding subtitles?** This happens because FFmpeg re-encodes the video when burning subtitles. If you don't specify a bitrate or Constant Rate Factor (CRF), it defaults to a lower quality. Use `-crf 18` or `-crf 23` in your FFmpeg command to maintain visual quality. **Q: How can I change the subtitle font or color?** Standard SRT files don't support rich styling natively. To get custom fonts, colors, or backgrounds with FFmpeg, you typically need to convert your subtitles to **ASS (Advanced Substation Alpha)** format first, or mess with complex `drawtext` filters. Orshot handles this automatically via CSS. **Q: Is OpenAI Whisper accurate for non-English videos?** Yes, Whisper is currently state-of-the-art for multilingual transcription. It handles accents and multiple languages exceptionally well compared to older tools like Vosk or Tesseract. **Q: Can I run this on my laptop without a GPU?** Yes, but it will be slow. Transcribing is fast via API, but the 'burning' step (FFmpeg re-encoding) is CPU intensive. A 1-minute 4K video might take 5-10 minutes to render on a standard laptop CPU. **Q: Why creates the 'Stream mapping' error in FFmpeg?** This usually happens when your input video has multiple audio tracks or weird codecs. FFmpeg tries to map streams automatically and fails. You often need to explicitly map streams using `-map 0:v -map 0:a` flags. **Q: Can I adjust the subtitle timing if it's slightly off?** If you are using the manual Node.js method, you would need to parse the SRT file and shift the timestamps (e.g., add +500ms to every line) before burning it. This requires an extra parsing library/step. --- ## Conclusion Building your own subtitle generator is a great learning project. You get granular control and only pay for the OpenAI credits ($0.006/min). However, you inherit the maintenance of an FFmpeg pipeline, which includes managing file storage, server scaling for concurrent renders, and handling weird video formats. If you need a reliable, scalable solution that just works, give the [Orshot Video Generation API](https://orshot.com/pricing) a try. --- ### [How to implement WebMCP in any app](https://orshot.com/blog/webmcp-implementation) > A WebMCP tutorial from a real production rollout: working code, the auth design, tool limits, and the bugs a ChatGPT agent found in our first version. This tweet kept doing rounds on my timeline last week: I run Orshot. We spent months connecting it to agents the other way around, through a hosted MCP server that [Claude, ChatGPT, Cursor and Grok](https://orshot.com/agents) all talk to. WebMCP reverses the direction. The agent is already in your browser, it lands on your site, and the site hands it tools. I implemented WebMCP over a weekend and shipped it to production. A ChatGPT agent has used it, audited it, and found real bugs in my first version. This is the tutorial I wish existed when I started. I'll use our app as the example, but every step applies to any web app. Most of what ranks for WebMCP right now is theory. This isn't. **TL;DR** — Pick what you came for: - **The short version**: [22 tools on every page, zero connector setup](#what-is-webmcp) — 6 public tools, plus 16 workspace tools once you sign in. - **Show me the code**: [Both providers, trimmed from the real source](#step-1-expose-public-tools-for-every-visitor) — Tool registration, cookie-less fetches and the session-to-token bridge. - **What broke**: [ChatGPT audited us and found real bugs](#step-4-have-an-agent-audit-your-implementation) — 90 tools hit a limit that disabled WebMCP, plus a few validation gaps. - **Is my site agent-ready?**: [Test with a real runtime, not a checker](#how-to-check-if-your-website-is-ai-agent-ready) — Ask ChatGPT agent mode what your page exposes. Scanners can't see these tools. ## What is WebMCP? WebMCP is a W3C standard, pushed mainly by Google and Microsoft. Your page calls `document.modelContext.registerTool()` with a name, a description, a JSON schema and an execute function. That's the whole idea. Instead of an agent screenshotting your UI and guessing what "Add to cart" does, your page hands it an instruction manual: here are my tools, here's what they take, here's what they return. ## WebMCP vs MCP vs browser automation The question I see most on Reddit is some version of "how is this different from Playwright, or from just running an MCP server?" Different layers, different jobs: | | Browser automation (Playwright, computer use) | MCP (hosted server) | WebMCP (on-page) | | :-- | :-: | :-: | :-: | | How the agent acts | Clicks your human UI, guesses from pixels | Calls your backend from anywhere | Calls tools your page registers | | Setup for the user | None, but slow and brittle | Connector + OAuth flow | None. Tools appear on page load | | Auth | Whatever session the browser has | OAuth tokens in the client | Your existing login session | | Reliability | Breaks when your UI changes | Stable | Stable, and UI-independent | | Where it shines | Sites that expose nothing | Automation and workflows | In-browser help while you browse | Two takeaways from shipping all three: - WebMCP doesn't replace your MCP server. Ours does automation from anywhere; WebMCP serves the person already on the site. Ship both if you can. - Compared to browser automation, WebMCP is dramatically more token-efficient. The agent reads a tool list once instead of parsing screenshots on every step. ## Who supports WebMCP right now The consumer side moved fast in the last two weeks: - **ChatGPT**: agent mode consumes site tools in the in-app and cloud browser (GPT-5.6 Sol and Terra). Click the cursor icon in the in-app browser's URL bar and expand "Available site tools" to see what a page exposes. OpenAI has [docs for site builders](https://learn.chatgpt.com/docs/webmcp "nofollow target=_blank"). - **Chrome**: API behind a flag (`chrome://flags/#enable-webmcp-testing`) with an origin trial running. Gemini in Chrome is the intended consumer, and the Chrome team published [implementation guides](https://developer.chrome.com/docs/ai/webmcp "nofollow target=_blank") this week. - **Edge**: co-authored the spec with Google; experimental support tracks Chrome. - **Claude**: not yet. Anthropic's extension still works from screenshots and DOM snapshots. When that changes, WebMCP sites need zero extra work. The Chrome team shipped guides for the three things you'll actually need: writing secure tools, building the tools themselves, and evaluating whether an agent uses them correctly. On the consumer side, OpenAI moved WebMCP support from the desktop app's in-app browser into the cloud browser, which is what agent mode uses when it goes off and works on its own. Two weeks ago none of this existed. That's the whole reason the field is still open. ## Step 1: expose public tools for every visitor Start with what a logged-out visitor can do. For us that's six tools on every page: - `search_templates` and `get_template_details` search our [template library](https://orshot.com/templates) and return each template's render parameters - `open_template` navigates to a template page - `get_pricing` returns the live [pricing page](https://orshot.com/pricing) as markdown - `read_page_markdown` fetches any page of ours as markdown, which turns the whole docs site into agent context - `connect_agent` points the agent at our [hosted MCP server](https://orshot.com/blog/orshot-remote-mcp-server) for everything WebMCP can't do The provider, trimmed to what matters: ```jsx // webmcp-provider.jsx (trimmed) const TOOLS = [ { name: "search_templates", description: "Search Orshot's library of 2,000+ image, PDF, and video templates.", inputSchema: { type: "object", additionalProperties: false, properties: { query: { type: "string" }, category: { type: "string" }, limit: { type: "number" }, }, }, annotations: { readOnlyHint: true }, execute: async ({ query, limit } = {}) => { const size = Math.min(Math.max(Math.trunc(Number(limit)) || 10, 1), 30); const params = new URLSearchParams({ pageSize: String(size) }); if (query) params.set("search", query); const res = await toolFetch(`/api/templates/community?${params}`); const data = await res.json(); return { count: data.templates.length, templates: data.templates.map(compact) }; }, }, // ...5 more tools ]; export function WebMCPProvider() { useEffect(() => { const modelContext = document.modelContext || navigator.modelContext || null; if (!modelContext?.registerTool) return; // no-op in normal browsers const controller = new AbortController(); for (const tool of TOOLS) { swallowAbort( modelContext.registerTool(tool, { signal: controller.signal }), ); } return () => controller.abort(); }, []); return null; } ``` Three things in that snippet I only know because they went wrong: 1. **It's `document.modelContext` now.** The spec moved off `navigator.modelContext` in July 2026. My first provider registered on `navigator` and no runtime ever saw a single tool. If you copied WebMCP example code from a post older than a few weeks, check this first. 2. **OpenAI requires `additionalProperties: false`** on every input schema. It's in their docs, it's easy to miss, and nothing warns you. 3. **`registerTool` returns a Promise** that rejects with an AbortError when its signal fires on unmount. We didn't catch it at first. Every route change dumped a batch of unhandled rejections into error tracking. Security rules we set for this tier: - Every tool fetch goes through a `new URL()` same-origin check - Every request is sent with `credentials: "omit"`, so logged-out tools cannot return logged-in data even if we mess something else up If you want to skip the typing, hand this to Claude Code, Cursor, Codex or whatever agent already has your repo open. It encodes every gotcha in this post, including the ones that cost me a day. [Watch the video](https://orshot.com/blog/webmcp-implementation/diagram-how-it-works.mp4) ## Step 2: let the login be the integration Here's the part I haven't seen any other site ship. If you're signed in, the page bridges tools from our hosted MCP server onto `document.modelContext`. The agent in your browser can render images, list your templates, read your brand kit and prepare social drafts. No connector. No API key. No OAuth screen. Our funnel data says most people who start an MCP connector flow in ChatGPT never finish it. WebMCP has no flow to abandon. We didn't rewrite a single tool for this. Our MCP server already answers stateless HTTP requests (that's how ChatGPT's MCP client talks to it), so the bridge discovers and proxies: ```jsx // webmcp-bridge-provider.jsx (trimmed) const mint = async () => { // Trade the user's session for a short-lived, workspace-scoped token. // First-party client, 30-minute expiry, no refresh token, memory only. const res = await fetch(`${API_URL}/v1/oauth/browser-agent-token`, { method: "POST", headers: { Authorization: `Bearer ${sessionToken}` }, body: JSON.stringify({ client_id: CLIENT_ID, workspace_ids: [workspaceId] }), }); return (await res.json()).access_token; }; // Discover once per tab, register the curated set, proxy execution const { tools } = await mcpRequest("tools/list", {}, await bearer()); for (const t of tools.filter((t) => BRIDGED_TOOL_NAMES.has(t.name))) { modelContext.registerTool({ ...t, execute: (args) => mcpRequest("tools/call", { name: t.name, arguments: args }, bearer), }); } ``` Why this design: - The MCP server stays the single source of truth. Names, schemas and annotations pass through as-is. - Tokens are scoped to your active workspace, live only in page memory, and expire after 30 minutes. Logging out kills them. - There's no consent screen on purpose. Consent screens protect you from third parties. Here the client, the authorization server and the API are all us. "Allow Orshot to access Orshot?" is not a question. [Watch the video](https://orshot.com/blog/webmcp-implementation/diagram-login-integration.mp4) ## Step 3: register fewer tools than you want to My first bridge registered all 90 of our MCP tools, several with long descriptions. ChatGPT's response: > WebMCP is disabled for this page because the site's WebMCP configuration exceeds supported limits. Not degraded. Off. Including the public six. It also explained a flaky symptom I'd been ignoring, where tools appeared for a second and vanished once the app hydrated. What works: - A curated set covering the loop people actually run. For us: find a template, read its parameters, render, publish a draft. 16 workspace tools. - Descriptions capped at 1,500 characters. - 22 tools per page, total. Everything else stays on the MCP connector. ## Step 4: have an agent audit your implementation Before a human reviews your WebMCP, ask ChatGPT agent mode to use it, then to audit it. I asked it to find a LinkedIn carousel template through WebMCP. It did, with our own `search_templates` tool: ![ChatGPT confirming the site supports the WebMCP standard and listing the six public tools it discovered on the templates page](https://orshot.com/blog/webmcp-implementation/chatgpt-tool-discovery.png) Then I asked for a full audit: ![ChatGPT's audit finding that workspace pages hit WebMCP configuration limits, with the exact error and the list of affected URLs](https://orshot.com/blog/webmcp-implementation/chatgpt-audit-gaps.png) Besides the tool-count limit, it caught: - `open_template({})` navigated to `/templates/undefined`. Runtimes don't all enforce your schema's `required` list, so validate inside execute. - `search_templates({ limit: -1 })` returned a 500. A clamp I should have written on day one. - `get_template_details` promised parameters in its description and didn't return them. Agents notice when a tool under-delivers its own description, and they say so. Every fix shipped the same day, and the same prompt re-run confirmed them. Best QA I didn't pay for, and its bug report came with exact URLs and repro steps. ## How to check if your website is AI-agent ready In order of usefulness: 1. **Ask an agent.** Open your site in ChatGPT agent mode and ask what tools the current page exposes. 2. **Ask the browser.** In Chrome with the flag on, run `await document.modelContext.getTools()` in the console. 3. **Run the ecosystem verifiers.** The [webmcp.com directory](https://webmcp.com "nofollow target=_blank") scans implementations and lists the exact tools a site exposes. The [webmcp-kit](https://github.com/nekuda-ai/webmcp-kit "nofollow target=_blank") plugin ships a headless verification driver. 4. **Test both auth states.** Logged out should never show account tools. Signed in should actually survive registration (see step 3). One warning: skip the HTML-level "AI readiness checkers". One scored our site 28/100 for having "no navigator.modelContext integration" on the same day ChatGPT was actively calling our 22 tools. Imperative WebMCP registration is invisible to static scanners. They're grading a different thing and selling you the fix. ## Does WebMCP help SEO/GEO discovery? Not directly. Tools only exist once an agent is already on your page. WebMCP converts agent visits, it doesn't create them. The second-order effects are real though: - Agents come back to sites where tasks complete. - The directories that list real implementations are exactly the kind of source generative engines cite, and the list of production sites is still short enough that shipping gets you on it. - Pages describing your agent support (ours is [Orshot for browser agents](https://orshot.com/agents/for-browser-agents)) do the discovery work WebMCP itself can't. **Q: What is WebMCP in one sentence?** WebMCP is a W3C browser standard that lets a web page register callable, schema-described tools on document.modelContext so the AI agent in a visitor's browser can act on the site directly instead of scraping pixels. **Q: Do websites need to support WebMCP for agents to use them?** For WebMCP specifically, yes: the site has to register tools. Agents can still drive non-WebMCP sites through screenshots and DOM automation, just slower and less reliably. That fallback is exactly why adding tools is worth it: your site becomes the one where the agent's task actually completes. **Q: Why not just publish an API instead?** An API needs the agent to know it exists, hold credentials, and be set up ahead of time. WebMCP tools are discovered on the page, run in the visitor's existing session, and can reflect the current page state. In practice you want both, and our WebMCP tools are thin wrappers over the same APIs. **Q: Which browsers and agents support WebMCP today?** ChatGPT's browser consumes site tools in agent mode (GPT-5.6 Sol and Terra). Chrome ships the API behind a flag with an origin trial running, with Gemini in Chrome as the intended consumer. Edge tracks Chrome. Claude does not consume WebMCP yet. **Q: How many tools should a page register?** Fewer than you think. ChatGPT disabled WebMCP entirely when we registered 90 tools with long descriptions. We settled on 22 per page: 6 public plus 16 workspace tools, with descriptions capped at 1,500 characters. **Q: Do WebMCP tools need their own auth system?** No, and they should not have one. Reuse your existing session. Our signed-in tools exchange the session for a short-lived, workspace-scoped token from a first-party OAuth client, so agents act with exactly the permissions the logged-in user already has. **Q: How do I check if my website is AI-agent ready?** Open it in ChatGPT agent mode and ask what tools the page exposes, or run document.modelContext.getTools() in a WebMCP-enabled Chrome. Runtime checks beat static checkers, which cannot see imperative tool registration at all. ## The bottom line The whole implementation took about two days, and only because the tools wrap APIs and an MCP server we already had. If you have real user actions and an existing API, WebMCP is a weekend of work. The consuming agents are already here, and the list of production sites is short enough that you'd be early. If you'd rather use the app we made agent-ready than build one, Orshot generates on-brand images, PDFs and videos from templates, automatically. [Start free and see plans](https://orshot.com/pricing). 100 free credits a month, no credit card. --- ### [How to Make Personalized Video at Scale](https://orshot.com/blog/personalized-video-at-scale) > Generate a personalized video for every customer from a spreadsheet or API. Recorded vs AI avatar vs template platforms with real costs and render times To make personalized video at scale, pick one of three ways: record a clip per prospect (Sendspark, Loom), have an AI avatar read each script (HeyGen, Tavus), or render a template per row of data (Orshot, Idomoo, Plainly). To render personalized videos from a spreadsheet, design the template once and send one API call per row. My 1080p test videos took 15 to 24 seconds per row, or about 4.5 minutes with an AI presenter speaking each name. ![Three ways to personalize a video: a person records each one with Sendspark, Loom or Vidyard, an AI avatar speaks each script with HeyGen or Tavus, or a template renders each row with Orshot or Idomoo](https://orshot.com/blog/personalized-video-at-scale/three-ways-to-personalize-video.webp) Only the third way puts each customer's own numbers, photos and plan on screen. The first two put a face on screen and change the name or the script. **TL;DR** — Which personalized video platform fits your job? Pick what the video has to show: - **1. A real person talking to each prospect**: [Sendspark, Loom or Vidyard](#1-record-personalized-sales-videos-with-sendspark-or-loom) — Record once and swap the name, or record each clip by hand. Best for sales outreach. - **2. A presenter at volume without filming**: [HeyGen or Tavus](#2-generate-ai-avatar-videos-per-contact-with-heygen-or-tavus) — An AI avatar of you reads a script per contact. Metered per minute of video. - **3. Each customer's own data on screen**: [A template platform like Orshot](#3-render-personalized-videos-from-your-data-with-a-template) — One video per row of a sheet or API call: names, stats, photos, even an AI presenter. | Way | What changes per video | Billed by | | :--- | :--- | :--- | | **1. Recorded** (Sendspark, Loom) | Name, background page | Minutes of video | | **2. AI avatar** (HeyGen, Tavus) | Script, voice, language | Minutes of video | | **3. Data template** (Orshot, Plainly) | Any text, number, image or clip | Length rendered | ## What Personalized Video at Scale Means Personalized video at scale means every viewer gets a video made for them, without anyone editing each one. Personalized video software fills in the changing parts and renders a file per person from a CRM, a spreadsheet or a database. Video personalization covers two very different products: - **Personal-looking video.** A face on camera says your name. Sales teams use it for personalized video marketing, cold outreach and demos. - **Personal-data video.** The video shows your account: orders, a renewal date, a claim status, your store photo. Banks, insurers, SaaS and ecommerce teams use it for welcome sequences, abandoned carts, renewal reminders, statements and yearly recaps. Most "personalized video software" lists mix the two, so decide which one you need before comparing prices. ## Compare Personalized Video Platforms by Cost For 15-second personalized videos sent from an API, Orshot costs less than Sendspark and Plainly at 100 and at 10,000 videos a month, and Sendspark is the cheapest of the three at 1,000 (checked October 21, 2026). Idomoo, SundaySky and Blings publish no prices. ![Monthly cost of 15-second personalized videos sent from an API: Orshot $39 at 100 a month, $160 at 1,000 and $480 at 10,000, Sendspark $99, $99 and $659, Plainly $69, $649 and from $1,500, checked October 21, 2026](https://orshot.com/blog/personalized-video-at-scale/cost-per-month.webp) Each cell shows a 15-second video first, then a 30-second one: | Platform (kind) | 100 a month | 1,000 a month | 10,000 a month | | :--- | :--- | :--- | :--- | | **Orshot** (Studio template) | \$39 / \$99 | \$160 / \$280 | \$480 / \$600 | | **Sendspark** (recorded + AI name) | \$99 / \$99 | \$99 / \$171.50 | \$659 / \$1,079 | | **Plainly** (After Effects template) | \$69 / \$69 | \$649 / \$649 | \$1,500+ / \$1,500+ | | **Idomoo, SundaySky, Blings** | Quote | Quote | Quote | At 30 seconds, Sendspark costs less than Orshot at 1,000 videos a month, and Plainly's \$69 Starter is the lowest price at 100. Orshot stays the cheapest at 10,000 at both lengths. The prices also buy different things: | Platform | API on | Where the video lives | | :--- | :--- | :--- | | **Orshot** | Every plan | A file URL kept at least a year | | **Sendspark** | Growth (\$99) and up | Sendspark video pages | | **Plainly** | Every plan | Download within 24 hours to 7 days | Orshot's credits also cover images and PDF pages, so the email thumbnail comes out of the same plan. Plainly needs After Effects to build each template, \$22.99 a month for one license on Adobe's annual plan. Video rendering APIs cost less per video than all three. [Shotstack](https://shotstack.io/pricing/ "target=_blank rel=nofollow") charges \$39 a month for 250 render minutes, enough for 1,000 fifteen-second videos, and about \$249 for 10,000 (checked October 21, 2026). Shotstack renders video and images but no PDFs, and it bills render minutes rather than one credit pool. I compared the two in the [Shotstack alternative](https://orshot.com/blog/shotstack-api-alternative) post. ### How I Priced It I opened every pricing page on October 15, 2026, and rechecked them on October 21. I picked the cheapest public plan on monthly billing that covers each volume with API access. Personalized videos are short, so I priced 15 and 30 seconds. - **[Sendspark](https://www.sendspark.com/pricing "target=_blank rel=nofollow")** puts API and webhook access on Growth (\$99, 3 seats) and up. Its [help center](https://help.sendspark.com/en/articles/10486484-dynamic-videos-2026 "target=_blank rel=nofollow") says minutes used equal video length times contacts. 10,000 fifteen-second videos is 2,500 minutes: Team (\$299, 1,000 minutes) plus 1,500 at \$0.24. Business is \$699 for 3,000 minutes. - **[Plainly](https://www.plainlyvideos.com/pricing "target=_blank rel=nofollow")** counts each exported second. Starter is \$69 for 50 minutes, Explorer \$134 for 100, Team \$259 for 200, Pro \$649 for 600, and Unlimited starts at \$1,500. [After Effects](https://www.adobe.com/products/aftereffects/plans.html "target=_blank rel=nofollow") is extra. - **Orshot** bills 1 credit per second of video. The \$39 Launch tier has 1,500 credits, Grow is \$160 for 20,000 or \$280 for 40,000, and Scale is \$480 for 150,000 or \$600 for 300,000. - **Idomoo, SundaySky and Blings** quote per customer. Idomoo's pricing page says it is "based on volumes and level of support". AI avatar platforms and Orshot's AI presenter are left out of the table. Their cost depends on how long each speaking clip runs, so part 2 and part 3 cover them per clip. ## 1. Record Personalized Sales Videos with Sendspark or Loom Recorded personalized video is a real person on camera, either filmed once per prospect or filmed once and personalized with AI. Sendspark, Loom and Vidyard are the common picks for sales teams. **Pick this if** your video is a sales or success message where the viewer should see you, and only the recipient changes. ![Recorded personalized video with Sendspark: record once with a placeholder word, upload contacts in a CSV, the AI voice swaps in each name, and each contact gets a video page billed by minutes of video](https://orshot.com/blog/personalized-video-at-scale/sendspark-recorded-flow.webp) ### Step 1: Record once with a placeholder name In Sendspark's Dynamic Videos, you record one video and say a placeholder word like "watermelon" where the name goes. Sendspark clones your voice and swaps that word for each contact's first name. ### Step 2: Upload contacts and a background page You upload a CSV, or send contacts through Zapier or the API. Each row can set a website or LinkedIn profile as the scrolling background behind you. ### What to Know Before You Pick It - **The voice says the first name only.** Sendspark's [variables page](https://help.sendspark.com/variables-and-placeholders-in-sendspark-videos "target=_blank rel=nofollow") says voice cloning covers the first name, once, at the start. A beta on Growth and up adds company and job title, capped at 250 videos per campaign (checked October 21, 2026). - **Length drives cost.** A 30-second video for 1,000 contacts uses 500 minutes. Sendspark recommends 20 to 40 seconds. - **Loom is manual.** You record each clip yourself, which caps you at what one person can film in a day. - **Vidyard's personalized video is now a legacy feature.** Vidyard's [help center](https://knowledge.vidyard.com/hc/en-us/articles/360009868894-Introduction-to-personalized-video "target=_blank rel=nofollow") says it is available only to some accounts with contracts from before January 2022. - The viewer sees a real person, which suits cold outreach - Record once, personalize a name for thousands of contacts - Cheapest public price at 1,000 videos a month Cons: - Only spoken names and a background change, not account data - Every new script means filming again - Not built for onboarding, renewals or statements **Best for:** Sendspark suits sales reps who want one recorded pitch to greet each prospect by name. ## 2. Generate AI Avatar Videos per Contact with HeyGen or Tavus AI avatar video uses a digital twin trained on your footage to read a different script for each contact. HeyGen and Tavus both offer APIs for it, so a CRM row can become a talking-head video without filming. **Pick this if** the script itself changes per contact, or you need the same message in many languages. ![AI avatar video with HeyGen or Tavus: film a short training clip, write a script per contact from CRM fields, the API renders a talking head billed per minute, then send each MP4 or share link](https://orshot.com/blog/personalized-video-at-scale/ai-avatar-flow.webp) ### Step 1: Train an avatar from your footage Tavus says a custom replica needs one to two minutes of video. HeyGen's free plan includes stock avatars and one custom video avatar. ### Step 2: Send one script per contact Your code fills a script with each contact's details and calls the API. Tavus's [video docs](https://docs.tavus.io/sections/video/overview "target=_blank rel=nofollow") say output "can vary slightly even with the same script and face". ### What It Costs - **HeyGen** lists Creator at \$29, Pro at \$49 and Business at \$149 a month on its [pricing page](https://www.heygen.com/pricing "target=_blank rel=nofollow"). Its API pricing link opened a signed-in page when I checked on October 21, 2026. - **Tavus** lists developer plans from \$22 to \$975 a month on its [pricing page](https://www.tavus.io/pricing "target=_blank rel=nofollow"), plus \$0.90 to \$1 per extra minute of generated video. The page showed two different plan tables on October 21, 2026, so confirm before you budget. - A different script per contact, with no filming per video - Many languages from the same avatar - APIs for CRM and workflow triggers Cons: - Billed per minute of talking head, so long scripts add up - Output varies slightly between renders - Account data on screen still needs editing on top **Best for:** HeyGen and Tavus suit teams that need a presenter speaking a custom script to each contact. Orshot can also put a speaking AI presenter inside a template, as part 3 shows. That presenter is one layer made from a photo and a script, not an avatar trained on your footage. ## 3. Render Personalized Videos from Your Data with a Template Data-driven personalized video starts from a designed template with dynamic layers, then renders one finished MP4 per row of data. Orshot, Idomoo, SundaySky, Plainly and Blings all work this way. **Pick this if** the video shows each customer's own data: a recap, a renewal, an onboarding walkthrough, a claim update or a product they viewed. A template layer can be an AI clip too. To show it, I built the most common job here, a sales outreach video for a made-up company called Northwind. An AI presenter, Nina, says each prospect's name and company while their own numbers and a booking link fill the screen. Nina's portrait is AI-generated, so nobody's real likeness is used. ### Step 1: Design the video template Orshot is an API that turns design templates into images, PDFs and videos. You design in [Orshot Studio](https://orshot.com/features/orshot-studio), which works like Figma with a timeline. (Disclosure: I built Orshot.) Each layer you mark as dynamic becomes an API parameter, like `headline` or `cta_link`. The presenter is a video layer, so the render call can generate its clip from a photo and a script. Press play below to hear Nina speak to Dana at Brightline, click a layer to see its name, or copy the template into your workspace. The on-screen copy builds up while Nina talks, so the last frame doubles as the email thumbnail. ### Step 2: Render one video per prospect with the API Your code sends the template ID, the prospect's script and values, and gets an MP4 link back. The presenter clip is made inside the render, so run it as a background job. ![Orshot API request for a personalized sales video: fetch to /v1/studio/render with presenter.script, presenter.imageRef and headline in modifications and an async response, beside the rendered 13-second 1080p MP4 for Dana at Brightline that took 4.5 minutes with the AI clip](https://orshot.com/blog/personalized-video-at-scale/orshot-api-ai-presenter.webp) The `presenter.` keys ask Orshot to make the clip during the render: `imageRef` is the face, `script` is what it says, and `consent` confirms you may use that likeness. The other keys are layer names from step 1. ```javascript const headers = { Authorization: `Bearer ${process.env.ORSHOT_API_KEY}`, "Content-Type": "application/json", }; const row = { first_name: "Dana", company: "Brightline", headline: "Dana, Brightline could cut onboarding to 3 days.", stat_1_value: "9 → 3 days", cta_link: "northwind.so/nina/brightline", }; const start = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers, body: JSON.stringify({ templateId: "YOUR_TEMPLATE_ID", modifications: { headline: row.headline, stat_1_value: row.stat_1_value, cta_link: row.cta_link, "presenter.imageRef": "https://cdn.example.com/presenter.png", "presenter.script": `Hi ${row.first_name}, Nina from Northwind here. I made this for the ${row.company} team.`, "presenter.consent": true, "presenter.preset": "portrait-speak", }, response: { type: "url", format: "mp4", mode: "async" }, }), }); const job = await start.json(); // Poll the job (or pass webhook_url and skip this loop) let result; do { await new Promise((r) => setTimeout(r, 10000)); const res = await fetch( `https://api.orshot.com/v1/studio/render-jobs/${job.id}`, { headers }, ); result = await res.json(); } while (!result.finished); console.log(result.result.data.content); // MP4 URL for Dana ``` For a list of prospects, start each render as a background job. Orshot posts the finished video to your webhook with your own ID echoed back. ```javascript for (const row of prospects) { await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: `Bearer ${process.env.ORSHOT_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "YOUR_TEMPLATE_ID", modifications: { headline: row.headline, cta_link: row.cta_link, "presenter.imageRef": "https://cdn.example.com/presenter.png", "presenter.script": row.script, "presenter.consent": true, "presenter.preset": "portrait-speak", }, response: { mode: "async", type: "url", format: "mp4" }, webhook_url: "https://acme.com/hooks/orshot", metadata: row.contact_id, // comes back in the webhook }), }); } // Webhook body: { "event": "render_job.finished", // "job": { "status": "succeeded", "result": {...}, "metadata": "con_8412" } } ``` The [async render docs](https://orshot.com/docs/api-reference/async-render-start) cover polling, webhook retries and the 15-minute limit per job. ### Step 3: Run it from Google Sheets without code If your prospect list lives in a sheet, the [spreadsheet to video workflow](https://orshot.com/workflows/videos-from-spreadsheet) renders a video for each row with no code. Each column maps to a template parameter. In n8n, Make or Zapier, the same flow takes three steps: 1. **Trigger** on a new or updated row in Google Sheets, Airtable or your CRM. 2. **Render** with an HTTP request to the endpoint above in async mode, with the `presenter.` keys in `modifications`. 3. **Write back** the video URL to a column, so your email or sequencing tool can use it. Run five rows first and watch each video before you send the whole sheet. Long names, blank cells and wrong photos show up in those five. ### What Rendering Each Prospect Cost Without a presenter, a 12-second 1080p data video rendered in 15 to 24 seconds. With a speaking presenter, each 13-second video took 4.5 to 4.8 minutes on October 15, 2026, mostly to make the AI clip. ![One Orshot template with an AI presenter per prospect: Dana at Brightline in 271 seconds for 38 AI credits, Marcus at Fernway in 289 seconds for 41 AI credits, a re-render of Dana's video with the cached clip in 18 seconds, and a year-in-review video with no presenter in 19 seconds](https://orshot.com/blog/personalized-video-at-scale/ai-presenter-renders.webp) | Render | Time | AI credits | | :--- | :--- | :--- | | **Dana at Brightline** | 271 s | 38 | | **Marcus at Fernway** | 289 s | 41 | | **Dana again, same script** | 18 s | 0 (cached) | | **Year-in-review, no presenter** | 19 s | 0 | Every new script is a new clip, so speech can't be cached across prospects. Re-rendering the same script reuses the clip for free, and each video also used 13 render credits. ### What the AI Presenter Costs per Video A speaking presenter adds about 40 AI credits per 13-second video, roughly \$2.20 at Orshot's add-on price of \$11 for 200. Plans include 300 to 3,600 AI credits a month, and add-ons stretch that to about 215 presenter videos a month before you need an Enterprise plan. Per clip, a dedicated avatar API costs less: Tavus lists \$0.90 to \$1 per extra minute. Orshot's presenter earns its price when the same video also needs the prospect's own numbers and links on screen, because that part comes from the template with no editing step. ### Things That Bit Me - **The clip outlasted the page.** Dana's spoken clip ran 12.3 seconds on a 12-second page, so its end got trimmed. Set the page a second longer than your longest script. - **Long names overflow.** "For Marcus at Fernway" is far longer than "For Dana at Brightline". Set every dynamic text layer to fit its box, so long values shrink instead of spilling. - **Blank cells need a default.** Leave a key out of the request and that layer keeps the template's own text, so write template text that reads fine for anyone. - **Use a face you have rights to.** Orshot asks for `consent: true` before a photo speaks, so use a synthetic portrait or a teammate who agreed. ### How Teams Use This in Production Orshot customers have rendered more than 5,800 videos since January 2026, and 99% came from automated jobs rather than the editor. The API sent 89%, AI agents through MCP 9% and workflows about 1%. The median video took 18 seconds to render. These counts come from Orshot's render logs on October 15, 2026, customers only, with our own accounts left out. **Render a personalized video for every customer** — Design the video in Studio, then send each row from your API, n8n, Make or Zapier. Video plans start at $39 a month. [See plans](https://orshot.com/pricing?via=blog-personalized-video-middle) ### Other Template Platforms - **Creatomate** and **Shotstack** are video rendering APIs that fill a template from JSON, much like Orshot. The [Creatomate alternative](https://orshot.com/blog/creatomate-api-alternative) post compares the editors and pricing. - **Plainly** renders After Effects templates, so it fits teams whose motion designers already work in After Effects. I compared the two in the [Plainly alternative](https://orshot.com/blog/plainly-videos-alternative) post. - **Idomoo** and **SundaySky** sell enterprise personalized video with sales-led pricing and demos. - **Blings** makes interactive personalized videos and says its pricing is "unique to each client". - Each customer's own numbers, photos and dates on screen - A designer changes the template without touching your code - The same template renders the email thumbnail too - An AI presenter can speak each prospect's name in the same template Cons: - You design the template before the first video - Video needs a paid plan, from $39 a month - Length caps per plan: 3, 5 or 10 minutes per video - A speaking AI presenter adds about 40 AI credits and 4 minutes per video **Best for:** Orshot suits recurring personalized videos built from data, sent from an API, n8n, Make, Zapier or an AI agent. ## Deliver Personalized Videos by Email and on Landing Pages Email clients don't play MP4s inline, so personalized video emails send a still image that links to the video. Render that still from the same template as a JPG, and every customer sees their own frame before they click. ![From a sheet row to the inbox: a row in Google Sheets, Orshot renders an MP4 and a JPG with an async job and a webhook, the email shows the JPG and a click opens the video page, and the CRM keeps the video URL](https://orshot.com/blog/personalized-video-at-scale/sheet-to-inbox.webp) ### Step 1: Render a thumbnail from the same template Change `format` to `jpg` and the same row renders the final frame as an image. My 960 × 540 thumbnail came out at 85 KB, small enough for any email. ### Step 2: Shrink the video before you host it The default render favors quality over file size. Two ways to cut it: - **Pass `videoOptions.quality`.** Quality 50 took my largest year-in-review file from 27.7 MB to 19.3 MB. The presenter videos were already about 7 MB. - **Re-encode with ffmpeg.** `ffmpeg -i in.mp4 -c:v libx264 -crf 26 -preset slow -movflags +faststart out.mp4` made it 3.8 MB in 1.5 seconds, at an SSIM of 0.98 against the original. ![File size of one 12-second 1080p personalized video: default render 27.7 MB, quality 50 at 19.3 MB, ffmpeg crf 26 at 3.8 MB, and the JPG thumbnail at 85 KB](https://orshot.com/blog/personalized-video-at-scale/video-file-size.webp) The [video options docs](https://orshot.com/docs/video-generation/video-options) list every render setting, including fps and trimming. ### Step 3: Link to a page, not the raw file Put each video on a landing page that loads it by an opaque ID, like `/recap/8f3k2`. Never put an email address or a name in the URL, since links get forwarded and logged. ### Step 4: Write the video URL back to the CRM Save the MP4 and thumbnail URLs on the contact record. Your email tool then merges them like any other field, and you can resend later without rendering again. Orshot keeps files for at least a year. ### Step 5: Track plays and clicks per contact Log a play, a finish and a click on the landing page against the same opaque ID, then write those counts back to the CRM. Orshot renders the files but doesn't track who watched them, so this part lives on your page. ## When a Recorded or Avatar Tool Is the Better Choice A template platform is the wrong pick when the viewer needs to see a real person. Outreach from a rep's own face, a founder's thank-you or a demo walkthrough land better recorded, so Sendspark or Loom fit those jobs better. An AI presenter in a template is a stand-in for that person, and it costs more per video than Sendspark's name swap. Use it when the prospect's own numbers on screen matter as much as the face. A template is also overkill for a few dozen videos a rep sends by hand. Sendspark's \$49 Solo plan or recording each clip in Loom is quicker than designing a template first. ## Personalized Video FAQ **Q: How much does a personalized video cost?** A 15-second personalized video cost about 3 to 65 cents each at 1,000 to 10,000 a month on public plans with API access, checked October 21, 2026. For 10,000 videos, Shotstack was about $249, Orshot $480, Sendspark $659 and Plainly from $1,500. An AI presenter speaking each name adds about $2.20 per video on Orshot. **Q: What is the best personalized video software?** Sendspark is the best personalized video software for recorded sales outreach, HeyGen or Tavus for AI avatars that read a script per contact, and Orshot for videos that show each customer's own data from a sheet or API. Pick by what changes on screen, not by the feature list. **Q: How do I create a personalized video for every customer?** Design a video template with dynamic layers for the parts that change, then render it once per row of customer data. With Orshot, you send each row to the render API, or connect Google Sheets through n8n, Make or Zapier, and get one MP4 link per customer. **Q: How long does a personalized video take to render?** On Orshot, a 12-second 1080p personalized video took 15 to 24 seconds per render in my October 2026 test. With an AI presenter speaking each prospect's name, a 13-second video took about 4.5 minutes, because the speaking clip is made first. Use background jobs with a webhook for batches. **Q: Can an AI presenter say each customer's name?** Yes. In Orshot, a video layer can generate a speaking clip at render time from a portrait and a script, so each prospect hears their own name and company. It needs consent for the face, a paid plan, and about 40 AI credits for 12 seconds of speech. **Q: Can I make personalized videos without a developer?** Yes. Sendspark and HeyGen take a CSV upload. For videos that show each customer's data, Orshot's spreadsheet to video workflow renders one video per Google Sheets row, and n8n, Make or Zapier can send each new row to Orshot's render API without writing code. **Q: Can personalized videos be made in other languages?** Yes. HeyGen and Tavus avatars can read a script in many languages. In Orshot, adding a language code such as "es" to the render request translates every text layer in the video template before it renders, for 1 AI credit per 100 words. **Q: What is Orshot?** Orshot is an API for automated image, PDF and video generation from templates. You design a template in Orshot Studio, mark the layers that change, and render personalized videos, images or PDFs from your API, n8n, Make, Zapier or an AI agent by sending those values as data. ## Make Your First Personalized Video [Sign up](https://orshot.com/pricing?via=blog-personalized-video-footer), copy the sales video template above and send it your first prospect with the Node.js example in part 3. Video starts on the Launch plan at \$39 a month. If something doesn't work the way you expect, hit the chat button. I'm usually the one on the other end. --- ### [Image Editor SDKs Compared by What You Need to Ship](https://orshot.com/blog/image-editor-sdk) > Compare image editor SDKs for photo edits and design templates and see which ones let your app generate images from user edits at volume The right image editor SDK depends on what your users make. Use Pintura or the free Filerobot for photo edits, Polotno or IMG.LY CE.SDK for Canva-style design, and Orshot Embed when your backend must generate images from those designs. ![Three goals for an image editor SDK: 1. edit photos with Pintura, Filerobot or the IMG.LY Photo Editor SDK, 2. design from templates with Polotno, CE.SDK or Orshot Embed, 3. generate images at volume with Orshot Embed and its render API, shown as a real Pintura screen, a real Orshot Embed screen and three rendered product cards](https://orshot.com/blog/image-editor-sdk/picker.webp) How heavy is an image editor SDK? In my test, the self-hosted ones added 195 KB to 914 KB of gzipped JavaScript to a blank React app, and opened a canvas in 0.3 to 3.3 seconds. **TL;DR** — Which image editor SDK do you need? Pick what your users should do: - **1. Crop, filter and annotate photos**: [Pintura or Filerobot](#1-add-photo-editing-to-your-app-with-pintura-or-filerobot) — A photo editor SDK for uploads. Filerobot is MIT and free; Pintura is a paid license with support. - **2. Design from templates, Canva style**: [Polotno, CE.SDK or Orshot Embed](#2-embed-a-design-editor-with-polotno-cesdk-or-orshot-embed) — Layers, text, pages and templates. Self-host an SDK or embed a hosted editor. - **3. Users edit, your backend generates the files**: [Orshot Embed + render API](#3-let-users-edit-templates-and-generate-images-via-api) — Users edit a template in your app; your server renders images, PDFs or videos from it. ## Image Editor SDKs at a Glance An image editor SDK is a ready-made editing UI you drop into your own web app, so users edit images without leaving it. These are the options I tested on October 10, 2026, grouped by the job they do. | Goal | SDK | Open source? | Price shape | | :--- | :--- | :--- | :--- | | Photo edits | Filerobot | Yes, MIT | Free | | Photo edits | Pintura | No | From €169/yr | | Photo edits | IMG.LY Photo Editor SDK | No | Sales quote | | Design editor | Polotno | No | Sales quote | | Design editor | IMG.LY CE.SDK | No | Sales quote | | Design + render API | Orshot Embed | Wrapper only | From $39/mo | If you would rather build the editor yourself on a canvas library, my [Konva vs Fabric.js comparison](https://orshot.com/blog/konva-vs-fabric-js) shows how much of the editor each one leaves to you. For the fill and gradient controls, [Colorshot](https://orshot.com/open-source/colorshot) is the open source React color picker we built for Orshot Studio. ## 1. Add Photo Editing to Your App with Pintura or Filerobot A photo editor SDK handles one image at a time: crop, rotate, filters, finetune, annotations and resize, usually right before an upload. **Pick this if** your users upload photos (avatars, listings, product shots) and need to fix them, not design a layout. ![The same headphones photo open in two photo editor SDKs: Pintura 8.100 with its crop tool and side toolbar, and Filerobot 5 beta with its Adjust, Finetune, Filters, Annotate, Watermark and Resize tabs](https://orshot.com/blog/image-editor-sdk/photo-editors.webp) ### Step 1: Try Filerobot for free Filerobot Image Editor by Scaleflex is MIT licensed, with 1,920 GitHub stars and a React package that gets about 73,000 npm downloads a week. ```bash npm install react-filerobot-image-editor react-konva styled-components ``` ```jsx import FilerobotImageEditor, { TABS, TOOLS } from "react-filerobot-image-editor"; upload(saved.imageBase64)} tabsIds={[TABS.ADJUST, TABS.FILTERS, TABS.ANNOTATE, TABS.RESIZE]} defaultTabId={TABS.ADJUST} defaultToolId={TOOLS.CROP} /> ``` The v5 line is still published as a beta (5.0.0-beta.159, June 2026) and needs React 19. It added 331 KB of gzipped JS in my test, the most of the three photo editors. ### Step 2: Pay for Pintura when you need a supported license Pintura by PQINA is a paid JavaScript image editor with no dependencies. It added 218 KB in my test and works with React, Vue, Angular, Svelte or plain JS. ```js import { appendDefaultEditor } from "@pqina/pintura"; import "@pqina/pintura/pintura.css"; const editor = appendDefaultEditor("#editor", { src: "/photo.jpg" }); editor.on("process", ({ dest }) => upload(dest)); ``` **Pricing:** Pintura costs €169 a year for one product or €749 per developer seat a year, with a 60-day refund, per its [pricing page](https://pqina.nl/pintura/pricing/ "target=_blank rel=nofollow") checked October 10, 2026. The npm package is a test build that stamps "Unlicensed Pintura instance" on the image until you add a license. ### Step 3: Get native mobile with IMG.LY's Photo Editor SDK IMG.LY sells a [Photo Editor SDK](https://img.ly/products/photo-sdk "target=_blank rel=nofollow") for web, iOS, Android, React Native and Flutter. Use it when the same editor has to ship inside native apps. IMG.LY publishes no prices. You get a 30-day trial, then a quote based on platforms, components and AI features. [Picsart Create Editor](https://picsart.io/picsart-create-editor/ "target=_blank rel=nofollow") is another hosted photo and video editor SDK, billed in usage credits (5 free on signup). It needs a Picsart account, so I didn't benchmark it. ### Things That Bit Me - **TUI Image Editor is frozen.** Toast UI's [GitHub repo](https://github.com/nhn/tui.image-editor "target=_blank rel=nofollow") is archived and its last npm release was April 2022. It still loads fastest (0.30 s), but nobody fixes bugs. - **ente's photo-editor-sdk isn't on npm.** The MIT React editor from ente has 15 GitHub stars, and its README's package name returns a 404 on npm. - **Pintura's OEM clause.** If your customers build products with the editor, Pintura's pricing page says you likely need a custom OEM license. - Small next to design editors: 195 to 331 KB gzipped in my test - Opens an editable photo in under a second - A free MIT option (Filerobot) exists Cons: - One image at a time: no pages, templates or layouts - You still build storage, users and permissions - Paid options charge per product or seat, plus OEM terms for platforms **Best for:** Pintura and Filerobot fit apps where users fix one uploaded photo. Choose Filerobot to stay free and Pintura for a paid license with vendor support. ## 2. Embed a Design Editor with Polotno, CE.SDK or Orshot Embed A design editor SDK gives users a Canva-style canvas: layers, text, shapes, pages and saved templates. It is heavier than a photo editor SDK because it ships a layout engine. **Pick this if** your users build social posts, ads, flyers or print files from your templates. ![Two design editor SDKs in the same React app: Polotno 4.15 self-hosted with its side panel, toolbar and a license key missing badge, and Orshot Embed as a hosted iframe showing a five-page Instagram carousel template](https://orshot.com/blog/image-editor-sdk/design-editors.webp) ### Polotno for a Self-Hosted React Editor Polotno is a React design editor SDK built on Konva. It runs entirely in your app and exports PNG, JPEG, PDF, SVG, PPTX, MP4 and GIF in the browser. ```bash npm install polotno # React 19; use polotno@react18 on React 18 ``` Polotno added 914 KB of gzipped JS in my test, the largest bundle here. Without a key it shows a "License key is missing" badge on the canvas. **Pricing:** Polotno now quotes one license per use case, from "low hundreds" to "20-30k+" for enterprise, per its [pricing page](https://polotno.com/pricing "target=_blank rel=nofollow") on October 10, 2026. My [Polotno Studio alternative](https://orshot.com/blog/polotno-studio-alternative) post covers the build work around it, and the [Polotno migration guide](https://orshot.com/migrate/from-polotno) shows how existing designs move over. ### IMG.LY CE.SDK for Web and Native Apps IMG.LY CE.SDK (CreativeEditor SDK) is the design editor IMG.LY ships for web, iOS, Android and a Node renderer. Use it when the same design editor has to run in web and native apps. ```bash npm install @cesdk/cesdk-js ``` CE.SDK added 764 KB to the bundle, then fetched 8.2 MB of WebAssembly and assets from IMG.LY's CDN on first load. IMG.LY recommends hosting those files yourself in production. **Pricing:** CE.SDK has no public price. [IMG.LY's pricing page](https://img.ly/pricing "target=_blank rel=nofollow") offers a 30-day trial and a sales quote; without a license, CE.SDK watermarks exports. The [img.ly alternative](https://orshot.com/blog/imgly-sdk-alternative) post goes deeper, and the [IMG.LY migration guide](https://orshot.com/migrate/from-imgly) covers moving scenes out. ### Orshot Embed for a Hosted Editor [Orshot Embed](https://orshot.com/features/orshot-embed) puts the Orshot Studio editor in your app as an iframe, with optional React and Vue wrappers. The editor and its storage run on Orshot, so your bundle grows by about 1.8 KB. Try the live editor below. It's a demo workspace, so edits aren't saved. The trade-off is load time. The iframe downloaded 1.4 MB of JS and took 3.1 seconds to show an editable template, slower than every self-hosted editor except CE.SDK. - Polotno and CE.SDK run in your app, so user designs stay with you - Both export PNG and PDF in the browser with no server - CE.SDK also ships native iOS and Android editors Cons: - 764 to 914 KB of JS before your own code, plus 8.2 MB of CE.SDK assets - No public prices: both need a sales call - You still build users, storage and server rendering **Best for:** Polotno suits a React team that wants full control of a self-hosted design editor. CE.SDK suits teams that need the same editor on web and native mobile. ## 3. Let Users Edit Templates and Generate Images via API Orshot Embed pairs the hosted editor with a render API, so a template your user edits can generate images, PDFs or videos on your server at volume. Disclosure: I built Orshot. **Pick this if** your users edit a design once and your backend then generates many files from it: a product card per SKU, a certificate per attendee, a listing image per property. ![Your backend calls the Orshot render API: a POST to /v1/studio/render with a templateId and modifications for headline Weekend Deal and price $99 returns a PNG, shown as three rendered product cards from three rows of data at 1 credit each](https://orshot.com/blog/image-editor-sdk/render-api.webp) ### Step 1: Add the embed with a userId Paste the iframe into your app. Passing a `userId` gives each of your users a [private template library](https://orshot.com/docs/orshot-embed/per-user-data)*, created on their first visit. ```html ``` On React, `npm install @orshot/embed-react` gives you an `` component instead. ### Step 2: Listen for template updates Orshot sends a [webhook](https://orshot.com/docs/orshot-embed/webhooks)* to your server when a user creates, updates or deletes a template. The `template.update` event carries the template id you render from next. The [Embed launch post](https://orshot.com/blog/orshot-studio-embed) shows the settings screen. ### Step 3: Render each row with the API Call the render API with that template id and one row of your data. Each image costs 1 credit, and the response is a file URL. ```javascript const res = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: `Bearer ${process.env.ORSHOT_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ templateId: 23861, modifications: { headline: "Weekend Deal", price: "$99" }, response: { type: "url", format: "png" }, }), }); const { data } = await res.json(); // data.content is the PNG URL ``` The same Orshot templates also render from n8n, Make, Zapier or [Orshot for agents](https://orshot.com/agents), so non-developers on your team can run the job too. ### Things to Know Before You Pick Orshot - **It's an iframe, not an npm canvas.** You can't fork the editor's source or run it offline. It loads from orshot.com and took 3.1 s to open in my test. - **It's template-first.** Users edit designs you or they built in Orshot Studio. It is not a photo retouching tool. - **It's locked to your domains.** Loaded anywhere else, the embed shows "Access denied". That's good for security, but it means you add every staging domain. - **Some features sit on higher plans.** Items marked * are available on specific plans. **Put an editor and a render API in your app** — Embed Orshot Studio, then generate images, PDFs and videos from your users' templates. [See plans](https://orshot.com/pricing?via=blog-image-editor-sdk-middle) - About 1.8 KB added to your bundle; editor, storage and users are hosted - The same template renders by API, n8n, Make, Zapier or an AI agent - Per-user libraries*, webhooks* and white-label* without building a backend Cons: - Slower first open than self-hosted editors (3.1 s in my test) - Hosted by Orshot: there is no npm source to self-host - Embed starts on a paid plan; the free plan has no embed **Verdict:** Orshot Embed fits SaaS products where users edit a template once and the backend generates files from it at volume. For one-off photo fixes, a photo editor SDK is lighter and faster. ## How Much Does Each Image Editor SDK Add to Your App? The self-hosted image editor SDKs added between 195 KB and 914 KB of gzipped JavaScript to a blank React 19 app built with Vite 6.3. Orshot Embed added 1.8 KB because its editor lives in an iframe. ![Bar chart of gzipped JavaScript each image editor SDK adds to a React app bundle: Orshot Embed 1.8 KB, TUI Image Editor 195 KB, Pintura 218 KB, Filerobot 331 KB, IMG.LY CE.SDK 764 KB and Polotno 914 KB, with a note that Orshot's iframe loads 1.4 MB of JS and CE.SDK loads 8.2 MB at run time](https://orshot.com/blog/image-editor-sdk/bundle-size.webp) Bundle size is only half of it. What users feel is the wait before they can edit, so I timed that too. ![Bar chart of time to first editable canvas on a cold load at 50 Mbps: TUI Image Editor 0.30 s, Filerobot 0.36 s, Polotno 0.57 s, Pintura 0.83 s, Orshot Embed 3.1 s and IMG.LY CE.SDK 3.3 s](https://orshot.com/blog/image-editor-sdk/time-to-edit.webp) ### How I ran the test - **Setup:** one Vite 6.3 build per editor, React 19.3, the same 1600×1067 photo, the setup code from each README, and no license keys. - **Bundle:** gzipped JS in the production build, minus a blank React app (67.6 KB). - **Time:** headless Chrome on an Apple Silicon Mac, throttled to 50 Mbps and 40 ms, from navigation to the first editable canvas. I took the median of 5 cold loads. - **Caveat:** CE.SDK assets and the Orshot iframe came over the real internet; the rest came from a local server. Their times include real network latency. ## Image Editor SDKs Side by Side These tables use public data only: each vendor's pricing page and npm, checked on October 10, 2026. | SDK | License | Price | White-label | | :--- | :--- | :--- | :--- | | Filerobot | MIT | Free | Yes | | TUI Image Editor | MIT, archived | Free | Yes | | Pintura | Paid | €169/yr | OEM license | | Polotno | Paid | Quote | Yes | | IMG.LY CE.SDK | Paid | Quote | Yes | | Orshot Embed | Hosted | From $39/mo | Yes* | | SDK | Frameworks | JS (gzip) | Runs on | | :--- | :--- | :--- | :--- | | Filerobot | React, JS | 331 KB | Your app | | TUI Image Editor | JS | 195 KB | Your app | | Pintura | Any JS | 218 KB | Your app | | Polotno | React | 914 KB | Your app | | IMG.LY CE.SDK | Web, mobile | 764 KB | Your app | | Orshot Embed | Any, iframe | 1.8 KB | Orshot | CE.SDK also fetches 8.2 MB of assets at run time, and the Orshot iframe loads 1.4 MB of JS. Pintura says platforms whose customers build with it likely need an OEM license. ## Is There a Free Image Editor SDK? Yes. Filerobot Image Editor and TUI Image Editor are free and MIT licensed, though TUI's repo is archived. Both cover crop, filters and annotations. No free option includes a template design editor with users and storage. Pintura, Polotno and CE.SDK let you try them free: Pintura and Polotno with a watermark or badge, CE.SDK with a 30-day trial key or watermarked exports. Orshot's free plan includes 100 render credits a month but no embed. ## How I Picked and Tested These SDKs I started from the Google top 10 for "image editor sdk" on October 10, 2026: IMG.LY, Pintura, Picsart, ente on GitHub, npm and Polotno. Every result was a vendor page, with no neutral comparison. I installed each public npm package into the same scratch app, without keys or sign-ups. I opened every pricing page the same day and dropped any price I couldn't confirm. Picsart needs an account, so it isn't in the test. ## Image Editor SDK FAQ **Q: What is the best image editor SDK?** The best image editor SDK depends on the job. Pintura and Filerobot fit photo edits like crop and filters, Polotno and IMG.LY CE.SDK fit Canva-style design editors you host, and Orshot Embed fits apps that need a hosted editor plus an API to generate images from users' templates. **Q: Is there a free JavaScript image editor?** Yes. Filerobot Image Editor is a free, MIT-licensed JavaScript image editor with a React package, and TUI Image Editor is MIT too, but its GitHub repo is archived and its last npm release was April 2022. Both handle crop, filters, text and drawing. **Q: How much does Pintura cost?** Pintura costs €169 a year for one product on the Personal license or €749 per developer seat a year on the Developer license, as of October 2026. The image plus video editor costs €229 or €1,149. Enterprise and OEM licenses are quoted. **Q: How much does IMG.LY cost?** IMG.LY does not publish prices for CE.SDK or its Photo Editor SDK. IMG.LY prices by platform, components and AI features after a sales call, and every license starts with a 30-day free trial. Without a license, CE.SDK watermarks exports. **Q: What is a good img.ly alternative?** Polotno is the closest self-hosted img.ly alternative for a web design editor, and Pintura replaces the IMG.LY Photo Editor SDK for photo edits. Orshot Embed is a hosted img.ly alternative that adds per-user template libraries and an API that generates images from those templates. **Q: Is there a React image editor?** Yes. Filerobot ships react-filerobot-image-editor, Polotno is built in React, Pintura has a React adapter, and IMG.LY CE.SDK has a React integration. Orshot Embed has an @orshot/embed-react component that wraps its hosted editor. **Q: Can I white-label an image editor SDK?** Yes. Polotno, IMG.LY CE.SDK and Orshot Embed can all be restyled to match your brand, and open-source Filerobot can be changed freely. Pintura's pricing page says products whose customers build with the editor likely need an OEM license. **Q: Does Polotno include a UI?** Yes. Polotno ships a full editor UI as React components: side panel, toolbar, canvas workspace, pages and zoom controls. Each part can be replaced or hidden, and the Polotno store also works without React for custom interfaces. **Q: What is Orshot?** Orshot is an API for automated image, PDF and video generation from templates. You design templates in Orshot Studio or let your users edit them through Orshot Embed, then generate files by REST API, n8n, Make, Zapier or an AI agent. ## Ship an Image Editor in Your App This Week Start with the job. Add Filerobot or Pintura for photo edits, Polotno or CE.SDK for a self-hosted design editor, or Orshot Embed when your backend has to generate files from what users design. [Sign up](https://orshot.com/pricing?via=blog-image-editor-sdk-footer) to try the Orshot render API with 100 free credits a month; Embed starts on paid plans. If you get stuck, hit the chat button. I'm usually the one on the other end. --- ### [img.ly Alternative for a Hosted Embeddable Editor](https://orshot.com/blog/imgly-sdk-alternative) > Orshot Embed is a hosted img.ly alternative: a design and video editor in your app from $39/mo, with white-label, webhooks and per-user data from $160. If you're looking for an img.ly alternative, you want one thing: a real design editor inside your own product. Their CreativeEditor SDK (CE.SDK) is the editor itself, running in the browser or natively on mobile. The bill comes due around the editor. img.ly's SDK is _just_ the editor, and the rest is yours to build and run: - Host the rendering engine yourself - Build the backend it needs: template storage, per-user data, uploads, auth - Ship a heavy editor bundle to every user - Get the commercial price on a sales call I built [Orshot Embed](https://orshot.com/features/orshot-embed) for teams who want the editor without running all of that. Same editor we use in Orshot, hosted by us, dropped into your app with an iframe or a React/Vue component. Your users, your branding, your domain. Our storage, accounts, and rendering. Embed from $39/mo, API free to try. [Try Orshot Embed](https://orshot.com/pricing?via=blog-imgly-alternative-top) This is the editor your users would get: "Acme Studio" is a made-up brand running a real Orshot embed. Open the video or the invoice, edit anything, then press "Add to App" to send the design to this page the way your app would receive it. Nothing you change is saved. ## What actually changes Same job: your users editing designs in your app. The difference is who runs the editor and everything around it. | Feature | Orshot Embed | img.ly CE.SDK | | :--------------------------------------------------------------- | :--------------------------------------------------------------------------- | :--------------------------------------------- | | **Integration** | One iframe, or the React/Vue component | An npm package plus a WASM engine | | **First load** | 2.6 MB, no WASM engine | 9.8 MB, about 6 MB of it WASM | | **Hosting and storage** | Fully managed | You host the editor, designs and uploads | | **Templates and brand library per user** | Built in, private to each `userId`\* | You build it | | **[Lock actions per user](https://orshot.com/docs/orshot-embed/user-permissions)** | From the dashboard or a signed token | Scopes set in your code | | **Master templates** | [Open as copies](https://orshot.com/docs/orshot-embed/template-protection), originals stay safe | Roles, with storage yours | | **Embed analytics** | Returning vs one-time users\* | Not included | | **Render API** | PNG, JPG, WebP, AVIF, PDF, MP4, WebM, GIF from one POST | Run the headless engine yourself | | **Async renders with webhooks** | Built in | Your own queue | | **Zapier, Make, n8n, Airtable** | Native | Not included | | **Hosted MCP for AI agents** | [Claude, ChatGPT, Cursor](https://orshot.com/agents) | CoDesign, a local MCP | | **Social publishing** | Post and schedule to 15 networks | Not included | | **Template import** | Canva, Figma, Polotno, HTML | PSD, InDesign, PDF and PPTX importers | | **Price** | Public, from \$39/mo, renders included | Quote from sales, per platform and feature | \* Available on specific plans. See [pricing](https://orshot.com/pricing) for what each plan includes. ## The real work around an editor SDK CE.SDK gives you the editor. Shipping it to your users takes the rest of a product around it. ### 1. The platform is yours to build CE.SDK runs in your app, so the pieces around it are yours: template storage, per-user libraries, uploads, user accounts and who can do what. That's the backend most teams underestimate. With Orshot Embed, you pass a `userId` and each user already has private templates, uploads and brand assets, while your workspace templates stay shared. ### 2. The license is only the start There's no public price. CE.SDK is licensed through sales, priced on the platforms, components and AI features you ship. The servers, storage and render infrastructure are separate costs on top of the license. ### 3. A heavy first load The editor ships with a WASM engine, so your users download about 9.8 MB before they can edit, about 6 MB of it the engine. Orshot's editor loads 2.6 MB with no engine to download, because the rendering happens on Orshot's servers. ### 4. Templates don't become an API on their own A design your users make in CE.SDK is a scene file. Turning it into images or video at scale means running the headless engine in your own queue. In Orshot, every template your users save is already an API endpoint: send the template ID and your data, and get back a PNG, PDF or MP4. ### 5. Automation and distribution are extra work No-code tools like Zapier, Make and n8n, scheduled workflows, social publishing and a hosted MCP for AI agents come with Orshot. With an SDK, each of those is another project. ## What img.ly costs, and what Orshot costs img.ly doesn't publish prices. CE.SDK is licensed through sales, priced on the platforms and features you ship. Buyer data on Vendr puts the median at **\$17,500 a year**, with most deals between about \$11,400 and \$27,025. That's the license alone, before the servers, storage and user accounts you build around it. Orshot Embed has public pricing: | Price | What it adds | | ------------------------ | ------------------------------------------------------------------- | | \$39/mo (\$468/yr) | The embed with Orshot branding, 1,500 credits and the render API | | \$160/mo (\$1,920/yr) | White-label, per-user data, webhooks, events, downloads, 50 users | | from \$349/mo | Custom buttons, more embed users and credits | Hosting, storage, uploads and rendering are included on every plan. Prices checked September 2026. ### A real scenario **5,000 API images a month, plus your users designing and downloading in a white-label editor:** | Cost component | Orshot (\$160/mo) | img.ly CE.SDK | | :------------------------------- | :--------------------------------- | :----------------------------------------------- | | Plan or license | \$160/month | Quote; median about \$1,460/month (\$17,500/yr) | | 5,000 image renders | Included (20,000 credits) | Your headless engine and servers | | White-label editor | Included | Included in the license | | Hosting, storage, database | Included | Your cost | | Per-user libraries & permissions | 50 embed users | You build it | | **Monthly total** | **\$160** | **About \$1,460 plus your infrastructure** | **White-label embed with per-user data: $160/mo** — No sales call. $160/mo includes 20,000 credits, webhooks, events and 50 embed users. [See embed plans](https://orshot.com/pricing?via=blog-imgly-alternative-cost) ## When a self-hosted SDK fits better An SDK you run yourself is the better route if you need: - **Offline editing**, fully client-side with no network - **A native mobile editor** for iOS, Android or Flutter - **Engine-level control**, driving the engine from code and building your own UI on it If none of those are on your list, a hosted editor saves you the platform work. And if you're tempted to skip SDKs and build on an open-source library, [Konva vs Fabric.js](https://orshot.com/blog/konva-vs-fabric-js) shows what that takes, feature by feature. ## What you get with Orshot Embed If it's not your list, here's what's actually included: - **White-label it** with your own title, icon and accent color. Orshot branding comes off on some plans\*. - **Webhooks ping your backend** on `template.create`, `template.update` and `template.delete`, and `postMessage` events fire on save and export so your UI can react. - **[Per-user permissions](https://orshot.com/docs/orshot-embed/user-permissions)** lock actions like delete, upload or download for each user, from the dashboard or per session in a signed token (dashboard locks need per-user data\*). - **The same [render API](https://orshot.com/solutions/image-generation-api) underneath**: PNG, JPG, WebP, AVIF, PDF, and MP4/WebM/GIF from one template, any size via [Smart Resize](https://orshot.com/features/smart-resize). - **A [brand library](https://orshot.com/features/brand-assets-library) and [2,000+ templates](https://orshot.com/templates)** so nobody starts on a blank canvas. - **Me on the other end of the chat**, usually within the hour. The embed starts at \$39/mo with Orshot branding. \* Available on specific plans. See [pricing](https://orshot.com/pricing) for what each plan includes. ## The editor your users get ![The Orshot Studio editor, which is what loads inside your app via Orshot Embed](https://orshot.com/blog/imgly-alternative/01-studio-editor.webp) Like how that feels? Signing up is free, and the embed starts at \$39/mo. [**Build your own →**](https://orshot.com/pricing "target=_blank") ## Dropping it into your app Setup lives in your Orshot workspace: switch the embed on, add your allowed domains, set your branding, and decide what each user can do. ![Orshot Embed settings: allowed domains, branding, JWT and per-user data, with a live preview of the white-labelled editor](https://orshot.com/migrate/imgly/embed-setup.webp) Then wire it into your product. These are the pieces embed customers set up most: One iframe, with a `userId` so each of your users gets their own templates and uploads (per-user data\*). ```html ``` `@orshot/embed-react` mounts the same editor as a component, with callbacks for its events. There's a Vue package too. ```jsx import { OrshotEmbed } from "@orshot/embed-react"; export default function Editor() { return (
console.log("Created:", data)} onError={(err) => console.error(err)} />
); } ``` Listen for saves and downloads in your page to sync your database or track usage (with events on)\*. ```javascript window.addEventListener("message", (event) => { if (event.origin !== "https://orshot.com") return; const { type, data } = event.data; if (type === "orshot:template:update") saveToYourDb(data); if (type === "orshot:download:png") trackDownload(data); }); ``` Fill layers from your own UI or data without reloading the editor. Needs events on\*. ```javascript document.querySelector("iframe").contentWindow.postMessage( { type: "orshot:embed:control", modifications: { headline: "Hello from Acme", logo: "https://example.com/acme-logo.png", }, }, "*", ); ``` Add a webhook URL and your server gets a POST whenever a user creates, updates or deletes a template\*. Trimmed: ```json { "event_type": "template.create", "template": { "id": "abc123", "name": "Launch banner", "canvas_width": 1200, "canvas_height": 628, "thumbnail_url": "https://..." }, "workspace_id": "workspace_789", "user_id": "user_123", "timestamp": "2026-09-22T10:30:00Z" } ``` Turn on **Require signed token** and your server signs a short-lived JWT for each session. `sub` is the user, and `permissions` can lock actions for that session. ```javascript import jwt from "jsonwebtoken"; const token = jwt.sign( { sub: "user_123", permissions: { "template/delete": true } }, EMBED_SIGNING_SECRET, { expiresIn: "15m" }, ); const src = `https://orshot.com/embeds/YOUR_EMBED_ID?token=${token}`; ``` Need an image without anyone opening the editor? The same template is one POST away. ```bash curl -X POST https://api.orshot.com/v1/studio/render \ -H "Authorization: Bearer $ORSHOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "templateId": "YOUR_TEMPLATE_ID", "modifications": { "title": "Hello World", "image": "https://example.com/photo.jpg" }, "response": { "type": "url", "format": "png" } }' ``` Full references: [events](https://orshot.com/docs/orshot-embed/events), [controlling the embed](https://orshot.com/docs/orshot-embed/controlling-embed), [webhooks](https://orshot.com/docs/orshot-embed/webhooks) and [JWT authentication](https://orshot.com/docs/orshot-embed/jwt-authentication). New to the embed? Start with the [introduction](https://orshot.com/docs/orshot-embed/introduction) or this [walkthrough](https://orshot.com/blog/orshot-studio-embed). \* Available on specific plans. See [pricing](https://orshot.com/pricing) for what each plan includes. ## Embed features at a glance | Feature | What it does | | :-------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- | | **Branding** | Your accent color, title and icon. Orshot branding can be removed\* | | **Domain restrictions** | The embed only works on your specified domains | | **Template controls** | Show or hide templates, allow delete and rename, enable carousels | | **Download permissions** | Turn user downloads on or off: PNG, PDF, HTML, plus MP4 on video pages\* | | **[Per-user permissions](https://orshot.com/docs/orshot-embed/user-permissions)** | Lock actions per user from the dashboard\*, or per session in your JWT (any embed plan) | | **Multi-language** | 6 languages, with optional user switching | | **Webhooks** | Server-side notifications for template events\* | | **Browser events** | Real-time postMessage events for your frontend\* | | **Custom buttons** | Your own actions inside the editor, like "Add to App"\* | \* Available on specific plans. See [pricing](https://orshot.com/pricing) for what each plan includes. ## Moving your templates over There's no CE.SDK scene importer, so templates come over one of two ways: - **Import the source design** from Canva, Figma or [Polotno](https://orshot.com/docs/importing-templates/import-from-polotno), then rename its parameters to your variable names - **Send us the scene files** and we rebuild them with your names kept, up to 5 for free The full move, from editor to renders, is in the [img.ly migration guide](https://orshot.com/migrate/from-imgly). ## Common questions **Q: Is Orshot Embed self-hosted like img.ly's SDK?** No, and that's the main difference. Orshot hosts the editor and you load it via an iframe or the React/Vue SDK. img.ly runs client-side on your own infrastructure. If a fully self-hosted editor is a hard requirement, you want an SDK you host. More on the [Embed page](https://orshot.com/features/orshot-embed). **Q: Can I white-label it and lock it to my domain?** Yes. You set a custom title, icon, and accent color and restrict it to your allowed domains. Orshot branding comes off on plans from $160/mo. Pass a userId so each user gets their own templates and assets. Turn on Require signed token and every load needs a JWT your server signs, with its sub as the user id. That token can also lock actions for the session. See [JWT authentication](https://orshot.com/docs/orshot-embed/jwt-authentication). **Q: Does it work on native mobile?** It runs in mobile browsers and web views, but there's no native iOS, Android, or Flutter editor. If you need an on-device native editor, you'll want a native SDK. **Q: Where do my users' templates live?** On Orshot. Pass a userId and each person gets isolated templates and assets, while your workspace templates stay shared. So the backend you'd normally build around img.ly's SDK is already running. Per-user data is on plans from $160/mo. See [workspaces](https://orshot.com/features/team-collaboration). **Q: How much does img.ly cost?** img.ly doesn't publish prices; CE.SDK is licensed through sales, based on the platforms and features you ship. Buyer data on Vendr puts the median at $17,500 a year, with most deals between about $11,400 and $27,025, before the backend you build around it. Orshot Embed starts at $39/month with hosting included, and white-label with per-user data is $160/month. Checked September 2026. **Q: What is a good CE.SDK alternative for a web app?** If you want your users editing templates in your web app without hosting an editor engine, Orshot Embed is one iframe or React/Vue component. It loads 2.6 MB with no WASM engine, and the storage, per-user data, uploads and render API are already running. **Q: Can I bring my img.ly templates to Orshot?** There's no CE.SDK scene importer. Import the source design from Canva, Figma or Polotno instead and rename its parameters, or send us the scene files and we rebuild them with your names kept, up to 5 for free. See the [img.ly migration guide](https://orshot.com/migrate/from-imgly). **Q: What does it cost?** Pricing is public and starts at $39/mo, which includes the embed with Orshot branding. White-label, webhooks and per-user data start at $160/mo. You can build templates and test the render API free, with 100 credits a month (about 100 images) and no card. See [pricing](https://orshot.com/pricing). ## Bottom line If you need a self-hosted, client-side editor you own down to the engine, offline and native, an SDK you host is the route. If you just want your users editing on-brand templates inside your product, without building the platform behind it, that's the gap Orshot fills. Comparing other embeddable editors? It's the same hosted-vs-SDK question with [Polotno](https://orshot.com/blog/polotno-studio-alternative) and [Templated](https://orshot.com/blog/templated-io-alternative). I went deeper [here](https://orshot.com/blog/image-editor-sdk), and the step-by-step move is in the [img.ly migration guide](https://orshot.com/migrate/from-imgly). Embed starts at \$39/mo. Get stuck wiring it up? Hit the chat. I'll help you out. --- ### [Introducing AI Variant Generation: One Design, Multiple Sizes](https://orshot.com/blog/introducing-variant-generation) > Automatically generate multiple sizes and layout variations from your design using AI. Repurpose content for different platforms in seconds. Today we're introducing **Variant Generation**, a powerful new AI feature in Orshot Studio that helps you repurpose your designs for multiple platforms instantly. Instead of manually resizing your canvas and rearranging elements for every different social media format, let Orshot's AI do the heavy lifting. Here's a quick demo: [Watch the video](https://www.youtube.com/watch?v=JZR0ufeJNnQ) ### How it works Open the **Variant Generator** panel in the studio. ![Choosing sizes in the Orshot Variant Generator](https://orshot.com/blog/variant-gen/variant-generation-sizes.webp) 1. **Select Sizes**: Choose from presets like Instagram Story, Twitter Post, LinkedIn Banner, or enter custom dimensions. 2. **Generate**: Click "Generate". Orshot analyzes your current layout, identifying key elements like headlines, images, and branding. 3. **Reflow**: The AI intelligently rearranges and resizes these elements to fit the new dimensions while maintaining your design's aesthetic and hierarchy. ![AI-generated variants resized to fit each format](https://orshot.com/blog/variant-gen/variant-generation-results.webp) ### Why use it? - **Save Time**: Create a full campaign content set in minutes instead of hours. - **Consistency**: Ensure your branding looks consistent across all platforms, from vertical stories to horizontal banners. - **Multiply Content**: Turn one design into assets for Instagram, LinkedIn, Twitter, and more. ### Features & Details - **Add as Pages**: Once generated, you can add any variant as a new page within your current project to make further manual tweaks. - **Save as Templates**: Like a variant? Save it immediately as a new reusable template. - **Custom Sizes**: Need a specific ad banner size? Just enter the custom width and height. - **Usage**: Generating variants uses **AI Credits**. Each successful variant generation consumes credits based on your plan. We are continuously refining the layout models to handle more complex compositions. [Try it out in the studio](https://orshot.com/pricing) by clicking the "Variants" button! --- ### [Introducing Animations in Orshot Studio](https://orshot.com/blog/introducing-animations-in-studio) > Add enter/exit animations, visibility timing, and staggered choreography to your video templates. Now with a full visual timeline, page-level audio, and auto-subtitles. You can now animate individual layers in [Orshot Studio](https://orshot.com/features/orshot-studio) — fade ins, slide transitions, scale effects, staggered sequences — all configurable per layer, and rendered frame-perfectly in your video output. [Animations in Orshot Studio](https://www.youtube.com/watch?v=LN9xiTQsoYg) ## What You Can Do ### Animate Any Layer Select a layer, switch to the **Animate** tab, and pick from 9 enter and 9 exit animation types — fade, slide (4 directions), scale, and scale+slide combos. Each animation has configurable duration, easing (including a spring curve), and custom parameters. ### Control Visibility Timing Set exactly when each layer appears and disappears using **Show At** and **Hide At** values. A title can fade in at 0.5s, an image can slide in at 1s, and a CTA can scale in at 2s — all from the same template. ### Stagger Multiple Layers Select multiple layers and use the new **Stagger Delay** feature to create choreographed sequences. Set the delay between layers, drag to reorder the animation sequence, and hit **Apply Stagger** — Orshot sets the timing for you automatically. ### Preview Instantly Every change auto-previews on the canvas. You see exactly what the final video will look like before rendering. ### Copy & Paste Animations Right-click → **Copy Animation**, then paste it onto other layers. Fast way to keep consistent motion across your template. ## Works with Your Existing Workflow - **API renders include animations automatically** — no extra parameters needed for your existing video templates - **Override via API** — pass `title.showAt`, `title.enterType`, or `title.enterDuration` as dynamic parameters to control animations programmatically - **All video formats** — animations render in MP4, WebM, and GIF output - **Frame-perfect output** — every frame is deterministic, so renders are consistent every time ## Get Started Animations are available now for all plans. Open any template in [Orshot Studio](https://orshot.com/studio), select a layer, and switch to the **Animate** tab. For a full reference of animation types, easing options, and stagger configuration, check the [Animations documentation](https://orshot.com/docs/orshot-studio/animations). --- ### [Introducing Approval Flows for Templates](https://orshot.com/blog/introducing-approval-flows) > Approval flows let your team and your clients approve a template before the Orshot API and your automations generate anything from it Most Orshot templates end up wired into something that runs without anyone watching: an n8n workflow, a Zapier zap, a nightly API job. That's the point of them. It's also why a wrong logo or an unchecked claim in a template never stays one mistake. It goes out in every render until someone notices. Approval flows put a review between the design and the automation. Edit and preview a template as much as you like. The API renders it only once the right people have approved it. ## How it works ![How an approval flow works: a template moves from Draft through Brand review and Legal review to Automation approved, and Request changes sends it back to Draft](https://orshot.com/docs/approval-flows/explainer-how-it-works.webp) An approval flow is a set of stages. A template moves left to right: Draft, then one or more reviews, then Automation approved. In a review, approvers approve it or request changes with a comment. A change request sends it back to Draft, and earlier approvals stop counting. Each flow is a board with a column per stage. Cards say what they're waiting on, and the ones waiting on you have Approve right on them. ![The Approvals board with Draft, Brand review, Legal review and Automation approved columns](https://orshot.com/help/approval-flows/first-flow-3-board.webp) Start from a preset (Simple approval, Brand and legal, Agency and client or Marketing production), rename anything, then add templates. [Set up your first approval flow](https://orshot.com/help/set-up-your-first-approval-flow) walks through it. ## What your automations see ![What automation sees: a render returns 403 in Draft or review, 200 in Automation approved, and the approved design keeps rendering while it is edited](https://orshot.com/docs/approval-flows/explainer-automation.webp) While a flow needs approval for automation, every render through the API, n8n, Make, Zapier, workflows and agents checks the template first. Until it's approved, the render returns `403 template_not_approved`. Nothing renders, no credits are used and nothing is queued. An approval covers the design people looked at. Editing a template that's ready for automation starts with a choice: keep it live and approve your changes when you're done, send it back to review, or send it to Draft. While you edit, automation keeps rendering the approved design, so a half-finished change never reaches production. Previews and downloads in the studio are never blocked. More in [how to require approval for automation](https://orshot.com/help/require-approval-for-automation). ## Stages have types and rules ![The six stage types: Open, In review, Approved, Done, Rejected and Archived](https://orshot.com/docs/approval-flows/explainer-stage-types.webp) Every stage has a type, and its own rules: whether the design can be edited there, what automation can render, how many approvals it needs and where the template goes next. ![Stage rules grouped by editing and automation, moving templates in, reviews, and what happens next](https://orshot.com/docs/approval-flows/explainer-stage-rules.webp) Every rule is explained in [Approval flow key terms](https://orshot.com/docs/approval-flows/key-terms). ## Approve from the board or the studio ![The Approve dialog, saying the template moves from 'Brand review' to 'Legal review' once approved](https://orshot.com/help/approval-flows/approve-1-approve-dialog.webp) Approve from a card, or open the template in the studio. Its Approvals menu shows the stage, what it's waiting on and what you can do. ![The Approvals menu in the studio for a template in 'Brand review', with the design locked](https://orshot.com/help/approval-flows/approve-3-studio-approvals-menu.webp) Comments with @mentions sit next to the design, and the Activity tab keeps every move and decision. Step by step: [how to approve or request changes](https://orshot.com/help/approve-or-request-changes). ## Who can approve ![Owner, Admin, Member and Reviewer compared across what each can do in approval flows](https://orshot.com/docs/approval-flows/explainer-roles.webp) Owners and admins set flows up. Members add templates and submit them. Reviewer is a new role for people outside your team, like a client or your legal team. They see only the flows you give them, and they can comment, approve and download PNG or PDF. ![The five access levels next to an example flow that gives access to a person, a group, a role and a client](https://orshot.com/docs/approval-flows/explainer-access.webp) Approving always needs Approve access in the flow. Give it to a person, a group or a whole role, in every stage or just one. See [roles and access](https://orshot.com/docs/approval-flows/roles-and-access), or [invite a client to approve](https://orshot.com/help/invite-a-client-to-approve). ## For agents and the API Agents connected through [Orshot for Agents](https://orshot.com/agents) get the same answer as the API: a render of a template that's waiting for approval is refused, with the stage and who can approve it. The Approvals API, for adding, moving and approving templates from your own systems, is available on Enterprise. Details in [how to use approvals from the API or an agent](https://orshot.com/help/use-approvals-from-the-api). ## Try it Approval flows are in every Scale and Enterprise workspace today, under **Approvals** in the sidebar. The [approval flows overview](https://orshot.com/features/approval-flows) shows what they do for your team, and the full guide starts at [What are approval flows?](https://orshot.com/docs/approval-flows/introduction) The [pricing page](https://orshot.com/pricing) lists how many flows and stages each plan includes. Tell me what your review process looks like and I'll help you map it. --- ### [Introducing Async Renders for Videos, PDFs, Image Generation](https://orshot.com/blog/async-video-rendering-api) > Generate any render with "async" field, get a job back instantly, and collect the result by polling or webhook. Built for Zapier, Make and AI agents. Every render, whether video, PDF or image, can now run in the background. Add one field to your render request and the API replies in under a second with a **job**; the render runs on our servers and you collect the result whenever it's ready, by polling or webhook. This matters most for **video**. A 60-second 1080p render can take a couple of minutes, and that's longer than most HTTP clients will wait: Zapier gives you about 30 seconds, Make about a minute, most AI agents cut off at two. The render finished fine on our side, but your integration never saw the result. It's just as useful for **big multi-page PDFs** and for **firing off many image renders at once** and collecting them as they land. ![Sync holds the connection for the whole render. Async returns a job instantly and the render runs server-side.](https://orshot.com/blog/async-render-jobs/sync-vs-async.webp) ### One field, same request Everything about your render request stays the same: modifications, video options, Smart Resize, publishing. You only add `mode: "async"` to the `response` object. ```js const res = await fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer ", }, body: JSON.stringify({ templateId: 1485, modifications: { title: "Launch day!" }, response: { mode: "async", format: "mp4" }, // or "pdf", "png", … videoOptions: { duration: 60, fps: 30 }, }), }); const job = await res.json(); // HTTP 202, in under a second // { id: 1204, status: "queued", finished: false, self: "https://api.orshot.com/v1/studio/render-jobs/1204" } ``` ### Collect the result your way **Poll** the job until `finished` is true. Polling doesn't count against your render rate limit, so check as often as you like. ```js const job = await fetch(`https://api.orshot.com/v1/studio/render-jobs/${id}`, { headers: { Authorization: "Bearer " }, }).then((r) => r.json()); if (job.finished && job.status === "succeeded") { // job.result.data.content → your video URL } ``` Or pass a **webhook_url** with the render request and we POST the finished job to you: no polling at all. Delivery retries three times, and the job stays pollable either way. The job's `result` is the exact same response body a synchronous render returns, so the code that handles your renders today doesn't change. And when something goes wrong, the job carries an error that tells you what to fix, plus a stable `error_code` you can branch on. ![The job lifecycle: queued, processing, then succeeded with your render or failed with an actionable error](https://orshot.com/blog/async-render-jobs/job-lifecycle.webp) ### Built for automations and agents This is what async mode unlocks: - **Zapier and Make**: fire the render in one step, pick the result up in a later step or via webhook. No more timeouts on long videos. - **AI agents**: [Orshot for agents](https://orshot.com/agents) already uses async under the hood. Agents render long videos in the background and keep working while they wait. - **Batch pipelines**: start fifty renders in fifty fast requests, then collect them all as they finish. Images and PDFs render in seconds, so sync mode stays the default and nothing changes for existing integrations. Async is there the moment a render outgrows an HTTP timeout. [Read the Docs](https://orshot.com/docs/api-reference/async-render-start) Async renders are live on all plans today. Start one with `mode: "async"` and never lose a long render again. --- ### [Introducing Automated Creative Translation for Templates in Studio & API](https://orshot.com/blog/automated-creative-translation) > Selling in more than one market? Automated translation now runs inside every render so you generate localized images and PDFs for 1 AI credit per 100 words Automated Creative Translation is live in Orshot. Add `"translate": "el"` to a render request and every text layer in your template is translated before the image, PDF or video renders. Until now, marketing translation and content localization meant a copy of each template per language, or a translation step bolted onto your n8n or Make workflow. Now it's one field, and it costs 1 AI credit per 100 source words. ![An English real-estate listing, the render request with translate set to el, and the same listing rendered in Greek with the price kept as it is](https://orshot.com/blog/automated-creative-translation/translate-render-flow.webp) ## Translate a Listing from English to Greek My main test was a 95-word real-estate listing, rendered from English into Greek. This is the request: ```json {3,8} { "templateId": , "translate": { "to": "el", "from": "en", "context": "real estate listing" }, "modifications": { "headline": "Bright apartment with sea views", "price": "€245.000", "agent_name": "Maria Papadopoulou", "agent_name.translate": false }, "response": { "type": "url", "format": "png" } } ``` The listing came back in Greek with its formatting intact, the price untouched and the agent's name as written. 95 words cost 1 AI credit. I ran the same listing into Spanish, German, Japanese, Hindi and Thai, and all six kept their formatting. ## Translate in the Studio in Three Steps The [Orshot Studio](https://orshot.com/features/orshot-studio) editor has the same translation, for when you want a translated copy to edit by hand. 1. **A few layers:** select text layers, right-click and choose **Translate to** and a language. 2. **The whole design:** open the template menu and choose **Translate Template**. It covers every page, the confirm step shows the word count and AI credits before anything is spent, and your last saved version stays in Version history. 3. **Undo if needed:** ⌘Z undoes the whole translation in one step. ![The Translate to menu on a selected text layer in Orshot Studio](https://orshot.com/blog/automated-creative-translation/studio-translate-to.webp) ![The Translate Template confirm step showing the word count and AI credits](https://orshot.com/blog/automated-creative-translation/studio-translate-template.webp) ![A fashion sale template in English and the same template after Translate Template to French](https://orshot.com/blog/automated-creative-translation/template-before-after.webp) Embedded editors get **Translate to** too. It spends the workspace's AI credits, so you can switch it off per user or session. The [step-by-step guide](https://orshot.com/help/translate-a-template) has screenshots of each step. ## Control Translation per Layer in the API The `translate` field on `POST /v1/studio/render` translates every text layer. Per-layer keys in `modifications` change that for single layers: | Key | What it does | | --- | --- | | `"price.translate": false` | Keeps that layer as written | | `"subtitle.translate": "de"` | Sends one layer to a different language | | `"page2@title.translate": "hi"` | Targets a layer on page 2 | The object form adds `to`, `from`, a `context` line for industry terms, a `glossary` and `strict`. Regional variants work too, so `"to": "es-MX"` with `"glossary": { "walk-in shower": "regadera tipo walk-in" }` gets Mexican Spanish with your wording. Every field is in the [translation docs](https://orshot.com/docs/orshot-studio/translate). Each response adds what the translation used: ```json "ai": { "type": "text:translate", "words": 142, "wordsCached": 30, "credits": 2 } ``` Layer keys already work as extra modifications in n8n and Make, and agents can pass them in modifications through [Orshot for agents](https://orshot.com/agents). The top-level `translate` and `lang` fields arrive with the next integration release. ## Set the Text Language Without Translating `lang` tells Orshot what language the text is already in, so it renders the way that language writes. Greek capitals drop their accents, Turkish `i` becomes `İ`, and Chinese and Japanese use their own character shapes. Use `"lang": "tr"` for the whole template or `"headline.lang": "tr"` for one layer. In the Studio, it's **Template Language** in the template menu, or the **Language** setting in a layer's API tab. `lang` never translates and costs nothing. ## What Automated Translation Costs Orshot charges 1 AI credit per 100 source words, counted across every layer and page of a render, with a minimum of 1. | What | AI credits | | --- | --- | | Up to 100 words | 1 | | Each further 100 words | 1 more | | Same text into the same language again | Free (cached) | | A translation that fails | Free | The $39 plan includes 300 AI credits a month, which covers 300 renders of a 100-word ad. ## Orshot Studio Now Speaks Greek Greek is now the seventh Studio interface language, next to English, German, Spanish, French, Portuguese and Russian. Pick **Ελληνικά** under **Language** in the template menu, or open an embedded editor with `?lang=greek` ([embed language options](https://orshot.com/docs/orshot-embed/integration#lang)). We used the feature on ourselves first. Translating all 1,579 editor strings into Greek cost $0.58. ![Orshot Studio in Greek, with a product ad translated to Greek by Translate Template](https://orshot.com/blog/automated-creative-translation/studio-greek.webp) ## Where to Be Careful - **Dynamic URLs don't translate.** They're public links, so `translate` keys are ignored there. Render through the API or translate in the Studio. - **Translations run longer.** German is often about 30% longer than English. Set long layers to [Fit text mode](https://orshot.com/docs/orshot-studio/text-modes) so the text shrinks to its box, and watch for the render warning when a layer may not fit. - **AI-written layers stay as they are.** Layers that use `.prompt` aren't translated, so write the prompt in the target language. - **Read the first render.** The model keeps HTML formatting, inline params, numbers, prices, URLs and brand names, but a native speaker should still check a new campaign once. Add any term they fix to the glossary. ## Translate Your First Template Ecommerce teams running ads in several markets, real-estate listings in local languages and agencies with multi-market clients are who I built this for. If your renders already run on a schedule, [Automated Creative Translation](https://orshot.com/features/automated-creative-translation) is one field away. [Sign up](https://orshot.com/pricing?via=blog-creative-translation-footer), open any template and right-click a text layer, or add `translate` to your next API call. --- ### [Introducing Carousel Templates](https://orshot.com/blog/introducing-carousel-templates) > Now create multi-page carousel templates in Orshot and generate visual images and PDFs from them using Rest API and Integrations Starting today, you can create multi-page carousel templates in Orshot Studio. These templates open up new possibilities for generating dynamic presentations, social media carousels, and multi-page documents programmatically When you open [Studio](https://orshot.com/studio), you'll see a new tab and a toolbar to organize pages in your template. Each page can have its own design, size, elements etc. ### Features - You can create multi-page templates - Each page can have own designs, size, elements etc. - You can [parameterize layers](https://orshot.com/docs/orshot-studio/setting-parameters) in each template to make it dynamic - Generate images or PDFs from the template in a single API call - Auto-generate from automation tools like n8n, Make, Zapier etc. - Post carousels directly to Instagram, LinkedIn, TikTok, and 10+ other platforms with [Social Publish](https://orshot.com/docs/publish/introduction) — see our [social media automation tools guide](https://orshot.com/blog/social-media-automation-tools) for the full publishing workflow - [Animate layers](https://orshot.com/blog/introducing-animations-in-studio) across pages with enter/exit effects, visibility timing, and staggered sequences — when rendered as video, all animations play frame-perfectly across pages Here's a video to demo how you can design carousel templates in Orshot Studio [Watch the video](https://www.youtube.com/watch?v=EXJoMeGyEhM) --- ### [Introducing Dark Mode in Orshot](https://orshot.com/blog/introducing-dark-mode) > Dark mode is now available across Orshot, including Studio, with Light, Dark, and System theme options to match your workflow. Orshot now supports dark mode across the entire platform — Studio, Embed, dashboard, docs, and marketing pages. ![Orshot Studio in dark mode](https://orshot.com/blog/dark-mode-2.webp) ## Three Theme Options Pick the theme that works for you: - **Light** — classic bright interface - **Dark** — easier on the eyes, especially at night - **System** — automatically matches your device setting You can switch anytime from the theme selector in your account. ![Switching themes from the Orshot account theme selector](https://orshot.com/blog/dark-mode-1.webp) ## Works Everywhere Dark mode applies across Orshot Studio, Embed, your workspace dashboard, docs, and the blog. Everything stays consistent no matter where you are in the product. ## Give It a Try Head to [Orshot](https://orshot.com/) and switch to dark mode. If something looks off, use the feedback button in the app to let us know. New to Orshot? [Get started for free](https://orshot.com/pricing). --- ### [Introducing Dynamic Parameters: .prompt and .href](https://orshot.com/blog/dynamic-parameters-prompt-href) > Generate AI-powered content and add clickable links to your templates with two new parameter modifiers We're introducing [Dynamic Parameters](https://orshot.com/docs/dynamic-parameters) - two new modifiers that let you generate AI content and add interactive links to your [Orshot Studio](https://orshot.com/features/orshot-studio) templates. ## AI Generation with .prompt Generate dynamic text and images using AI instead of providing static content: ```javascript fetch("https://api.orshot.com/v1/studio/render", { method: "POST", headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json", }, body: JSON.stringify({ templateId: "your-template-id", modifications: { "headline.prompt": "Write a catchy headline about sustainable fashion", "background.prompt": "Modern office workspace with plants, minimalist design", "headline.fontSize": "48px", }, response: { format: "png", type: "url", }, }), }); ``` - **Text generation** uses `openai/gpt-5-nano` - **Image generation** uses `google/nano-banana` - Works seamlessly with regular style parameters Perfect for creating unique, contextual content at scale. ## Interactive Links with .href Add clickable links to elements in your PDFs: ```json { "modifications": { "verify_button.href": "https://verify.example.com/cert/12345", "recipient_name": "John Doe" } } ``` Great for certificates, reports, marketing materials, and any document that needs navigation. Links are automatically validated for security. ## Multi-Page Support Both parameters work with multi-page templates: ```json { "modifications": { "page1@title.prompt": "Write a title about morning routines", "page2@title.prompt": "Write a title about evening habits", "page2@footer_link.href": "https://example.com" } } ``` ## Getting Started Dynamic parameters work with all Orshot Studio templates via the [REST API](https://orshot.com/docs/api-reference) and [integrations](https://orshot.com/integrations). For complete documentation and examples: - [Dynamic Parameters Overview](https://orshot.com/docs/dynamic-parameters) - [AI Generation Guide](https://orshot.com/docs/dynamic-parameters/prompt) - [Interactive Links Guide](https://orshot.com/docs/dynamic-parameters/link) --- ### [Introducing Elements Library in Orshot Studio](https://orshot.com/blog/introducing-elements-library) > Quickly add icons, illustrations, and social media logos to your templates from a built-in elements library — no uploads needed We've added a built-in **Elements Library** to [Orshot Studio](https://orshot.com/features/orshot-studio) — a searchable collection of icons, illustrations, and logos you can drop into your templates instantly No more hunting for SVGs or uploading assets manually. Press **E** or click the Elements button in the toolbar to open the library and start adding elements to your designs ![The Elements library in Orshot Studio](https://orshot.com/blog/elements-library.webp) ### What's Included - **Icons** — A large collection of commonly used icons in SVG format - **Social Media Logos** — YouTube, X, WhatsApp, Instagram, GitHub, LinkedIn, Discord, and many more — all in their original brand colors - **Illustrations** — Decorative elements to enhance your templates ### How It Works 1. Open the Elements Library from the toolbar or press **E** 2. Browse categories (All, Icons, Illustrations) or search by name 3. Click any element to add it to your canvas 4. Resize, reposition, and style it like any other element ### SVG Color Override Elements with a single color (like monochrome icons) can be recolored using the **Fill Color** option in the style panel. Multi-color elements like brand logos retain their original colors by default — the color override only applies when you explicitly set one ### Dynamic with Parameters Just like images, elements support **parameter IDs** — so you can swap icons or logos [dynamically via the API](https://orshot.com/docs/dynamic-parameters) at render time. Set a parameter ID on an element and pass a different image URL when generating --- ### [Introducing Embed for Orshot Studio](https://orshot.com/blog/orshot-studio-embed) > With Orshot Studio Embed, you can integrate a Canva like design editor in your own app with just single line of code. Allowing your users to create, design and manage your workspace templates I'm excited to launch Orshot Studio Embed - a powerful feature that lets you integrate Orshot Studio directly into your applications. It removes the need to build a complex [image editor SDK](https://orshot.com/blog/image-editor-sdk), letting your users create and manage your Orshot workspace templates without ever leaving your platform ![The Orshot Studio Embed settings](https://orshot.com/blog/embed-settings.webp) ### Key Features - **Custom Branding** - Match the embed to your brand with custom accent colors, titles, and icons - **Domain Protection** - Secure your embed by specifying allowed domains, including localhost for testing - **Template Controls** - Choose how users interact with templates: - Show/hide workspace templates - Enable/disable template deletion and renaming - Allow [Carousels/multi-page templates](https://orshot.com/blog/introducing-carousel-templates) ### Easy Implementation Adding Orshot Studio to your application couldn't be simpler: ```html ``` ### Webhook Integration You can add a Webhook URL in your Embed settings. Once added, you'll get template creation and change updates on your webhook ### Try It Today The embed starts on Launch ($39/mo), and white-label, webhooks and per-user data start on Grow ($160/mo). Enable it from your workspace settings to get started. Evaluating editor SDKs? See how it compares with [Polotno](https://orshot.com/blog/polotno-studio-alternative) and [img.ly](https://orshot.com/blog/imgly-sdk-alternative) --- ### [Introducing Flowing Content for Dynamic Page Generation](https://orshot.com/blog/introducing-flowing-content) > Text that doesn't fit on one page now flows automatically across as many pages as needed. Perfect for reports, articles, invoices, and any document where content length varies. Until now, if your text didn't fit on a page, you had three options: shrink it (Fit), clip it (Truncate), or let it overflow outside the container. None of these helped when you actually needed that text to continue on the next page. Today we're launching **Flowing Content** — a new text mode in [Orshot Studio](https://orshot.com/features/orshot-studio) that automatically splits long text across multiple pages. Design one page, and the engine generates as many overflow pages as the content needs. ## What It Does Set any text element to **Flow** mode, and it just works: - Write an article, paste an invoice body, or pass a long string via API - Orshot figures out where the page breaks fall and creates overflow pages - Headers, footers, logos — anything marked as **repeating** — shows up on every page - Page numbers (`{{_page_number}}` / `{{_total_pages}}`) update automatically You design a single template page. The engine does the rest. ## How It Works [Watch the video](https://www.youtube.com/watch?v=5mBxdJK3XLo) ## Why It Matters If you generate reports, certificates, invoices, or any document where the amount of text changes per render, you've probably hit this wall: a 3-paragraph summary fits on one page, but a 10-paragraph one needs three. Before flowing content, you'd either truncate the text or build multiple fixed-length templates. Now you don't have to think about it. One template handles 1-page and 20-page documents equally. **Common use cases:** - **Reports and articles** — quarterly summaries, blog-to-PDF pipelines, whitepapers - **Invoices and receipts** — line item lists that vary from 5 to 500 - **Certificates** — course descriptions that change per program - **Legal and compliance docs** — terms, contracts, policy documents ## How to Set It Up ![Text mode settings in Orshot Studio](https://orshot.com/docs/orshot-studio/text-modes.webp) 1. Open your template in [Orshot Studio](https://orshot.com/studio) 2. Select the text element that should flow 3. In the Styles panel, set **Text Autofit** to **Flow** 4. Mark any headers, footers, or logos as **Repeat on overflow pages** 5. Optionally add `{{_page_number}}` / `{{_total_pages}}` to a repeating text element for page numbers That's it. Preview the template and you'll see overflow pages appear as you add more text. ## How It Works via API The API request is the same as any other render — just pass your text in `modifications`: ```json { "templateId": "", "modifications": { "body": "Your long-form content goes here..." }, "response": { "format": "pdf", "type": "url" } } ``` The response tells you how many pages were generated: ```json { "data": [ { "page": 1, "content": "https://..." }, { "page": 2, "content": "https://...", "flowPage": 1 }, { "page": 3, "content": "https://...", "flowPage": 2 } ], "totalPages": 3, "flowTotalPages": 2 } ``` Works with all output formats — PNG, JPEG, WebP, PDF, and even video. ## Fine-Tuning For most templates the defaults work great. But if you need more control: - **Flow Zones** let you define exactly where text should appear on overflow pages (custom Y position and height per page) - **Page break controls** let you choose break granularity (line, word, or character) and set minimum lines before/after a break to prevent orphans and widows - **Rich text** is fully supported — bold, italic, colored text, inline styles all carry over correctly across page breaks ## Credit Costs Each page in the output costs 1 credit, same as carousel pages. A flow template that produces 5 pages costs 5 credits. Use `includePages` to render only the pages you need. --- Flowing content is available now in Orshot Studio on all plans. Read the [full documentation](https://orshot.com/docs/orshot-studio/flowing-content) for detailed setup instructions, or jump into [Studio](https://orshot.com/studio) and try it. --- ### [Introducing Orshot for ChatGPT and Codex](https://orshot.com/blog/introducing-chatgpt-plugin) > Orshot is now a plugin in ChatGPT and Codex. Install it once and ask it to render on-brand images, PDFs and video from your templates, right in chat. You can already design templates in Orshot, render them via API, and connect them to [agents over MCP](https://orshot.com/agents). Today it gets one step simpler: the **[Orshot plugin is live in ChatGPT](https://orshot.com/agents/chatgpt)**. Because ChatGPT and Codex share one plugin directory, the same plugin installs in Codex too. Add it once, then just ask, and it renders on-brand visuals straight from your workspace. [Install in ChatGPT](https://chatgpt.com/plugins/plugin_asdk_app_6a79affedd808191b69f2e62014b8235?q=orshot) ![Orshot in the ChatGPT app directory](https://orshot.com/blog/introducing-chatgpt-plugin/chatgpt-listing.webp) ### What you can do - Generate on-brand templates and render carousels, images, PDFs and video from your data - Manage your brand assets, colors and fonts - Plug into your API and automation workflows - Post, draft and schedule social content, and see what gets engagement - Check your best time to post and pull the numbers you need to grow It's the same hosted Orshot workspace behind the chat, so every render uses your templates, brand kit and credits. ### Add it to ChatGPT or Codex It's live in the shared ChatGPT and Codex app directory, so you can install it in one click: [Install in ChatGPT](https://chatgpt.com/plugins/plugin_asdk_app_6a79affedd808191b69f2e62014b8235?q=orshot) **Using Codex?** [Install it in Codex](https://chatgpt.com/plugins/plugin_asdk_app_6a79affedd808191b69f2e62014b8235?open_in_app) in one click, or run `/plugins` in Codex, search for Orshot, and select Install plugin. Prefer to add it by hand in ChatGPT? Go to Settings → Connectors → Add custom connector and paste `https://mcp.orshot.com/mcp`, then authorize. Custom connectors need a plan with connectors / developer mode enabled. ### Then just ask ![Ask your agent in plain language, Orshot renders and publishes everywhere](https://orshot.com/blog/introducing-chatgpt-plugin/ask-your-agent.webp) Once it's connected, describe the visual you want and ChatGPT calls Orshot to render it: - *"Design a 5-page carousel for The State of Web Design after AI for LinkedIn, use big and bold fonts and vibrant colors."* - *"Generate a PDF from my carousel template using this Excel data and post it to my connected LinkedIn."* - *"Create a workflow that renders my social post template from a Google Sheet and posts it to Slack every Monday."* Want the full setup, including Claude, Cursor, Codex and VS Code? See the [Orshot for agents](https://orshot.com/agents) guides. --- ### [Introducing Orshot for Claude](https://orshot.com/blog/introducing-orshot-for-claude) > Orshot is now in the Claude connectors directory. Connect it once and ask Claude to generate on-brand images and PDFs and videos from your templates. Until today, using Orshot in Claude meant pasting a server URL into a settings screen. That step is gone: **Orshot is live in the Claude connectors directory**. Open the listing, click Connect, sign in with your Orshot account. Claude can then design templates and render them with your data, straight from your workspace. [Add to Claude](https://claude.ai/directory/orshot) ### What you can do - Design studio templates from a brief, with previews right in the chat - Render images, PDFs and video from your templates with new data - Resize one design to every social format with Smart Resize - Batch render personalized variations, like certificates for a list of names - Draft, schedule and publish social posts, then read back the numbers - Build automation workflows that keep rendering on a schedule ![Render any template with your data from a Claude chat](https://orshot.com/blog/introducing-orshot-for-claude/claude-render.webp) It's the same hosted Orshot workspace behind the chat, so every render uses your templates, brand kit and credits. Rendering is deterministic: your template plus your data gives the same output every time. ### Add it to Claude It works on every Claude plan, including free. The directory is shared by claude.ai and Claude Desktop, so one connect covers both: [Add to Claude](https://claude.ai/directory/orshot) **Using Claude Code?** Run this in a terminal: ```bash claude mcp add orshot --transport http https://mcp.orshot.com/mcp ``` Prefer to add it by hand? In Claude, go to Settings → Connectors → Add custom connector and paste `https://mcp.orshot.com/mcp`, then authorize. ### Then just ask Once it's connected, describe what you want and Claude calls Orshot to make it: - *"Create an Instagram post template with a headline, subtitle and product image."* - *"Render this week's LinkedIn carousel from the client's template with fresh stats."* - *"Resize the client's design for Instagram story, square post and LinkedIn banner in one call."* - *"Turn every new row in my Sheet into a certificate PDF, delivered to Drive."* ![Schedule and publish social posts from Claude](https://orshot.com/blog/introducing-orshot-for-claude/claude-social.webp) Results come back as interactive cards in the chat. Flip through pages and variants, or open the result in Orshot with one click. The free plan includes 100 credits every month with no credit card, so you can connect and try it today. Using another agent? ChatGPT, Cursor, Codex and VS Code each have a setup guide under [Orshot for agents](https://orshot.com/agents). --- ### [Introducing Orshot for Developers](https://orshot.com/blog/orshot-for-developers) > Build apps and integrations on top of Orshot with OAuth 2.0. Register your app, test in development mode, publish to all users — with built-in sandbox safety. We're opening up Orshot to third-party developers. You can now build apps that connect to Orshot on behalf of users — workflow tools, IDE extensions, AI agents, and more — all powered by **OAuth 2.0**. ## What You Can Build - **Workflow tools** that generate images, PDFs, or videos from Orshot templates - **Integrations** that sync Orshot with other platforms - **IDE extensions** for VS Code, Cursor, and other editors - **AI agents** that use Orshot via [MCP (Model Context Protocol)](https://orshot.com/blog/ai-tools-for-graphic-design-with-mcp) - **Automation tools** that trigger renders from external events ## How It Works ### 1. Register Your App ![Registering an app in Orshot](https://orshot.com/docs/apps/register-app.webp) Head to the [Developer Program](https://orshot.com/register-an-app) and submit your app details — name, description, redirect URIs, and the scopes you need. You'll get a `client_id` and `client_secret` immediately. ### 2. Build in Development Mode All new apps start in **development mode**. While in this mode, only you and your [test users](https://orshot.com/docs/developers/register-app#development-mode) can authorize and use the app. This lets you build and iterate safely without affecting real users. The consent screen shows an "unverified app" warning so testers know the app hasn't been reviewed yet. If someone outside your test users list tries to authorize, they'll be blocked. ### 3. Implement OAuth We support two OAuth 2.0 flows: - **[Authorization Code + PKCE](https://orshot.com/docs/developers/authorization-code)** — for web apps, desktop apps, and IDE extensions - **[Device Flow](https://orshot.com/docs/developers/device-flow)** — for CLI tools and devices without a browser Both result in access and refresh tokens scoped to the user's chosen workspaces. ### 4. Call the API Use access tokens to make API requests — list templates, generate renders, manage assets, and more. See the full list of [available endpoints](https://orshot.com/docs/developers/oauth-endpoints) and [code examples](https://orshot.com/docs/developers/examples). ### 5. Publish When your app is ready, [submit it for review](https://orshot.com/docs/developers/publishing). Once approved, it'll be listed in Orshot's integrations directory and available to all users. Sandbox restrictions are removed automatically. ## Sandbox Safety We've built sandbox enforcement at every level to keep things safe during development: - **Authorization time** — Only the app owner and test users can go through the consent flow - **API level** — Every API call checks if the app is published. If not, only owner and test user tokens work. Others get a `sandbox_restricted` error - **Retroactive** — If you switch a published app back to private, existing tokens from non-authorized users stop working immediately This is modeled after how Google and Shopify handle app development — you get a safe environment to build in without affecting real users. ## Get Started [Register Your App →](https://orshot.com/register-an-app) Or dive into the [Developer Documentation](https://orshot.com/docs/developers) to learn more about OAuth flows, scopes, token management, and publishing. --- ### [Introducing Orshot HubSpot Integration](https://orshot.com/blog/orshot-hubspot-integration) > Connect HubSpot to Orshot and auto-generate on-brand images, PDFs, and videos from CRM data inside any workflow — no code. Orshot now connects to HubSpot. [Connect it once](https://orshot.com/integrations), and any HubSpot **workflow** can generate an on-brand **image, PDF, or video** from one of your templates — personalized with that record's CRM data, and written straight back to the contact. No code, no exporting data into a separate design tool. ![The Generate Image, PDF or Video with Orshot action inside a HubSpot workflow](https://orshot.com/blog/orshot-hubspot-integration/action.webp) ## What you can automate - **Welcome and onboarding images** with the contact's first name - **Deal-won certificates** and renewal reminders - **Per-record social and OG images** for outreach - **PDFs** (proposals, certificates) and **videos** for animated templates If you can design it once in Orshot, every field in it becomes something you can fill from HubSpot. ## How it works 1. **Connect** HubSpot from Orshot → Integrations (secure OAuth — no keys to copy). 2. In HubSpot, add the **Generate Image, PDF or Video with Orshot** action to any workflow. 3. **Map** your template's parameters to CRM values, dropping in HubSpot **personalization tokens** (First name, Company, any property). 4. Pick the output: return just the file URL, or **save it to your File Manager and write the URL onto the record**. Drop a HubSpot personalization token into any field value, and every record renders its own version: ![Inserting a HubSpot First name personalization token into a field value](https://orshot.com/blog/orshot-hubspot-integration/personalize.webp) Every enrolled record renders its own visual at runtime, so a thousand contacts get a thousand personalized files — automatically. Each one is saved to your File Manager: ![Renders saved to your HubSpot File Manager in the Orshot Renders folder](https://orshot.com/blog/orshot-hubspot-integration/result.webp) > **No workflow needed for emails:** you can also drop a personalized Orshot image straight into a HubSpot **marketing email** with a dynamic image URL that carries HubSpot tokens — each recipient's email renders their own image. ## Who it's for [Marketing and RevOps teams](https://orshot.com/solutions/ai-marketing-automation-for-agencies) who want personalized creative at scale — without exporting CRM data, hiring a designer for every variant, or writing a line of code. ## Get started It takes about a minute to connect. Renders run through your Orshot workspace and use its credits; serving an already-generated URL again is free. - **[Set it up — the HubSpot guide](https://orshot.com/help/generate-visuals-with-hubspot)** — connect, add the action, personalize, and ship. - **[HubSpot integration docs](https://orshot.com/docs/integrations/hubspot)** — full reference for the Orshot HubSpot app. --- ### [Introducing Orshot Publish](https://orshot.com/blog/introducing-orshot-publish) > Post directly to your social media accounts from Orshot. Connect your accounts, publish from the dashboard or automate via the API — all without leaving your workflow. We built Orshot to make generating images and PDFs at scale dead simple. But once you've generated the perfect visual, posting it somewhere meant stitching together [another service](https://orshot.com/blog/social-media-automation-tools) — [Buffer](https://orshot.com/blog/buffer-alternative), SocialBee, or some other third-party API — just to get the image out. That's extra cost, extra setup, and one more thing to maintain. So we built **Orshot Publish** — a way to post directly to your social media accounts from your Orshot dashboard or via the API. Generate and publish in the same place. No more juggling between tools. [Watch the video](https://www.youtube.com/watch?v=ec05xj2sXp8) ### How It Works ![Connecting social accounts in Orshot Publish](https://orshot.com/blog/orshot-publish-social-accounts.webp) 1. Head to the **Publish > Social Accounts** section in your workspace. 2. Connect any of your social accounts — Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Pinterest, Reddit, Bluesky, Threads, Telegram, Snapchat, or Google Business. 3. Generate renders and publish to your socials — right from the template playground. That's it. Your generated images go straight to your audience. ### Publish, Draft, or Schedule You don't have to post everything immediately. Orshot Publish gives you three options: - **Publish now** — send it out immediately. - **Save as draft** — come back to it later. - **Schedule** — pick a date and time, and Orshot handles the rest. ### Post from Template Playground ![Publishing a post from the Orshot template playground](https://orshot.com/blog/publish-from-playground.png) Here's where it gets really useful. When you're generaring a render, the renders be it Images, PDF or Videos are directly pulled from the template and attached to your post automatically. You can customize the caption and specific platform settings too. ### Automate with the API If you're already using Orshot's API to generate renders programmatically, you can now publish them too. The Orshot API now lets you send a `publish` object in your request, where you can configure which socials to post, the caption(we support per platform captions), and other settings. Orshot API will automatically process the render, and publish it on all the selected socials. You can also draft or schedule these posts on your socials This means you can build end-to-end pipelines: generate a product banner, a certificate, or an OG image, and post it directly to your social channels without any manual steps. ### Supported Platforms Orshot Publish supports 15 platforms out of the box: - Twitter/X - Instagram - Facebook - LinkedIn - TikTok - YouTube - Pinterest - Reddit - Bluesky - Threads - Telegram - Snapchat - Discord - WhatsApp - Google Business You can connect multiple accounts from the same platform in one workspace and target each account by its unique account ID. ### Pricing Orshot Publish is available as an add-on to any paid plan. Each connected social account costs **$12/month**, and you get unlimited posts. No per-post fees, no hidden limits. ### Get Started If you're on a paid plan, head to **Publish > Social Accounts** in your workspace and connect your first account. Check out the [Publish documentation](https://orshot.com/docs/publish/introduction) for a full walkthrough of the dashboard and the API. --- ### [Introducing Orshot's AI Design Agent](https://orshot.com/blog/introducing-design-agent) > Tell the AI what you want to create, and it will generate customizable templates and designs in seconds. Build social posts, ads, and certificates with simple text prompts Orshot has always been about making bulk image and PDF generation efficient and fast. But creating the perfect baseline template from scratch can still take time. Enter the **Orshot Design Agent**. Our new AI-powered agent lives right inside your Orshot Studio and builds templates for you. Just describe what you need, and it handles the layout, typography, colors, and element positioning automatically. [Orshot Design Agent](https://www.youtube.com/watch?v=t-Xt1W5XzEY) ### What is the Orshot Design Agent? The Design Agent is an interactive AI assistant integrated directly into the canvas. Instead of manually dragging and dropping shapes, text, and images, you can simply chat with the AI. Ask it to scaffold a layout, insert dynamic placeholders for the API, or re-theme an entire design instantly. Once the agent generates your template, you can still manually tweak any detail or immediately connect the template to our REST API, Zapier, or Make. ![The Orshot AI Design Agent generating a template](https://orshot.com/blog/orshot-design-agent.png) ### How to Use It 1. Open a new or existing template in the **Orshot Studio**. 2. Click on the **Design Agent / Chat** panel. 3. Type your request into the chat box. (e.g., _"Create a modern real estate Instagram post..."_) 4. Watch the agent drop elements and build the template right on your canvas. 5. Ask for revisions (e.g., _"Make the background darker"_) or manually fine-tune the finalized canvas. ### Actionable Workflows You Can Try Today The Design Agent isn't just a party trick—it's built to accelerate your content automation pipelines. Instead of starting from a blank canvas, let the AI scaffold your layout, then immediately connect it to your favorite automation tools for bulk generation. Here is how you can use it: - **Automate E-commerce Product Banners:** Ask the agent to _"Create a minimal product sale banner with a large image placeholder and a price tag."_ Once generated, you can use our [REST API to automate e-commerce product images](https://orshot.com/blog/automate-ecommerce-product-images) matching your catalog. - **Bulk Generate Certificates:** Prompt the agent with _"Design a modern course completion certificate with placeholders for student name and date."_ From there, scale it up and [bulk generate PDF certificates](https://orshot.com/tools/certificate-generator) via API or Make. - **No-Code Social Media Pipelines:** Generate a base template for Twitter or Instagram quotes. Then, connect your new template via our [Make integration](https://orshot.com/blog/orshot-make-integration) or Zapier to [automatically generate and post](https://orshot.com/blog/social-media-automation-tools) new images every time you add a row in Google Sheets or Airtable. - **Programmatic SEO Graphics:** Need thousands of unique OG images for your content? Ask the agent to _"Create an Open Graph image with a dynamic title and background."_ Once complete, use it as part of your [programmatic SEO](https://orshot.com/blog/programmatic-seo-tools) workflow rather than doing it by hand. - **Scale Any Visual Content:** Combine the Design Agent with [automated content creation tools](https://orshot.com/blog/automated-content-creation-tools) to go from idea to hundreds of branded variations without manual design work. The Orshot Design Agent is available now on all plans. Head over to your workspace, spin up a new template, and let the AI do the heavy lifting! --- ### [Introducing Smart Resize: One Template, Render Any Size](https://orshot.com/blog/introducing-smart-resize) > Smart Resize adapts one Orshot studio template to any size — Story, Square, OG image, thumbnail — right in the editor and on demand via the API. No per-channel redesign. Every asset needs to exist in five sizes. You design a beautiful Instagram post, then rebuild it as a Story, a landscape ad, an OG image, a YouTube thumbnail — same content, same brand, redone by hand for every channel. **Smart Resize** ends that. Design once in Orshot Studio and render the same template at any size — the layout re-flows to fit automatically. Use it right in the editor, or request any size on demand from the [API](https://orshot.com/docs/api-reference/render-from-studio-template#smart-resize). Here's a quick demo: [Watch the video](https://www.youtube.com/watch?v=86dkIZybbdw) ## What it does ![Smart Resize adapts one design to every size](https://orshot.com/blog/smart-resize/panel.webp) Add the sizes you need and Orshot adapts the layout to each one — **deterministically** (the same design and size always look the same): - Everything scales together, so proportions and spacing are preserved. - Elements re-anchor to the edge they were designed against — a top-left logo stays top-left, a footer stays pinned to the bottom. - Backgrounds and full-bleed images stretch to cover the new canvas. - A safety guard keeps elements from overlapping. Each size gets an instant, true-to-render preview with a status badge — **Auto**, **AI** (recomposed), or **Edited**. ## How to use it in Studio 1. Open your template and click **Smart Resize** in the top toolbar. 2. **+ Add Size** — pick a preset (Story, Square, OG image…) or enter a custom width × height. 3. Reuse each size two ways: **Add as new page** / **Replace current page**, or fine-tune it with **Adjust Variant**. 4. **Save** — a saved size renders exactly as you approved it. [How to resize a design →](https://orshot.com/help/resize-elements-and-canvas) ## Render any size from the API Designed it once? Pull any size on demand. Add `size` to your render's `response` to replace the output size: ```bash curl -X POST "https://api.orshot.com/v1/studio/render" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "templateId": "YOUR_TEMPLATE_ID", "response": { "type": "url", "format": "png", "size": "instagram-story" } }' ``` `size` takes a preset slug (`instagram-story`, `og-image`, `youtube-thumbnail`…) or a plain `"WIDTHxHEIGHT"` like `"1080x1920"`. ![The API Usage tab gives you a ready-to-run request for any size](https://orshot.com/blog/smart-resize/api-usage.webp) ### Multiple sizes in one call Need a whole set at once? `extraSizes` returns the same design at several sizes from a single request: ```bash "response": { "type": "url", "format": "png", "extraSizes": ["1080x1920", "1080x1080", "1200x630"] } ``` Each extra size comes back nested beside your render. [Full API reference →](https://orshot.com/docs/api-reference/render-from-studio-template#smart-resize) ## Where it shines - **Social campaigns** — one design becomes a Story, a Feed post, and a landscape ad, all on brand. - **Programmatic OG images** — render per-page OG and Twitter cards from a single template. - **Ad variants** — generate every ad size from one source through the API. - **Embed customers** — on Scale plans, your embedded-studio users can resize designs and add pages too ([embed guide](https://orshot.com/docs/orshot-embed/smart-resize)). ## Start resizing Smart Resize is live in Orshot Studio. Open any template, hit **Smart Resize**, and ship every size from one design. [Resize a design](https://orshot.com/help/resize-elements-and-canvas) · [Smart Resize in Studio](https://orshot.com/docs/orshot-studio/smart-resize) · [API reference](https://orshot.com/docs/api-reference/render-from-studio-template#smart-resize) --- ### [Introducing Smart Stacking for Relative Positioning of Elements](https://orshot.com/blog/smart-stacking) > Stack elements relative to each other for truly dynamic layouts that adapt automatically when content changes We're excited to introduce **Smart Stacking** - a powerful new feature in [Orshot Studio](https://orshot.com/features/orshot-studio) that lets you position elements relative to each other, creating dynamic layouts that automatically adapt when content changes ## What is Smart Stacking? [Smart Stacking](https://orshot.com/docs/orshot-studio/smart-stacking) allows elements to maintain their position relative to other elements. When the target element moves, resizes, or changes content, stacked elements automatically adjust their position No more manual repositioning when text length changes or images are swapped out. With this, you can generate position aware images/pdfs at scale from your [Orshot templates](https://orshot.com/templates) Specially with text layers, previously there was no way to position text relatively and so it caused issues like overlapping, or uneven spacing. Smart Stacking fixes that and much more letting you create adaptive designs that look stunning and professional ### Demo [Smart Stacking in Orshot Studio](https://www.youtube.com/watch?v=1nae0-zEjDc) ### Key Features - **Dynamic Positioning**: Elements automatically follow their target element - **Real-time Updates**: Changes happen instantly as you edit content - **Multipage Support**: Works seamlessly across all pages in your templates - **Chain Stacking**: Create complex relationships by stacking elements to other stacked elements - **Content-Aware**: Calculates positions based on actual content size, not just container dimensions - Get stacked designs [generated as images](https://orshot.com/solutions/image-generation-api)/[pdfs](https://orshot.com/solutions/pdf-generation-api) from API or [integrations](https://orshot.com/integrations) ### How It Works 1. **Enable Smart Stacking** on any element in the element editor 2. **Select a target element** to stack relative to 3. **Choose your position** from 9 options (top-left, center, bottom-right, etc.) 4. **Fine-tune with offsets** using X and Y pixel adjustments 5. **Generate images** with dynamic content without thinking about text length etc. Implementation-wise, it was a complicated feature to design as it has to work correctly both in Orshot Studio as well as in Orshot API to make sure the stacking works exactly the same based on set offset and positions. Even popular [automated image generation services like BannerBear or Placid](https://orshot.com/blog/bannerbear-api-alternative) do not have this smart stacking feature Smart Stacking is available now in Orshot Studio. Simply select any element and look for the "Smart Stacking" toggle in the element editor to start creating dynamic, adaptive layouts [Try Smart Stacking in Studio →](https://orshot.com/studio) --- ### [Introducing Social Analytics with API & Agent support](https://orshot.com/blog/introducing-social-analytics) > A social analytics platform for every account: impressions, engagement, follower growth and best time to post, via dashboard, API or agents. On Orshot. You can already design templates in Orshot, render them via API, and publish straight to your social accounts. Today we're closing the loop: **[Social Analytics](https://orshot.com/features/social-analytics)** is live for every workspace with connected accounts. Publishing without measuring is guesswork. Now the same dashboard that schedules your posts tells you what they earned: impressions, engagement, clicks, and follower growth, across every platform, side by side. ![Orshot Social Analytics dashboard showing cross-platform impressions, engagement, posts and follower growth](https://orshot.com/blog/introducing-social-analytics/analytics.webp) ### What you get - **One view across platforms.** Impressions, engagement, posts, followers, and clicks for all connected accounts, compared against the previous period. Filter by channel, account, or how the post was published. - **Per-post breakdowns.** Click any post to see its impressions, reach, likes, comments, shares, saves, clicks, and engagement rate, with day-by-day charts. Right in the Posts Log, no page hopping. - **Best time to post.** A day-by-hour heatmap built from your own engagement history, not generic advice. It surfaces your peak window once you have posting history. - **Top posts, ranked.** Your best performers sorted by engagement (or impressions, likes, clicks), so "make more of what works" is a list, not a hunch. - **Accounts side by side.** Posts, impressions, engagement rate, and follower change per account, to show where your effort actually pays off. - **A daily digest email.** Yesterday's numbers, follower changes per account, platform breakdown, and your top posts, in your inbox every morning. Toggle it per workspace in settings. ![Follower growth, per-account comparison and ranked top posts in Orshot Social Analytics](https://orshot.com/blog/introducing-social-analytics/insights.webp) There's data from day one: analytics also covers posts synced from your connected platforms, not just the ones published through Orshot. ### How we run our own LinkedIn and X with it This isn't a feature we built and hoped someone would use. It's how we run [@Orshot on LinkedIn](https://www.linkedin.com/company/orshot) and [@orshotapp on X](https://x.com/orshotapp) right now, with exactly two tools: Orshot and Claude. Here's the whole pipeline: 1. **Claude fills the calendar.** We ask Claude to plan the week from our published blog posts and solution pages. Through [Orshot for agents](https://orshot.com/agents), it writes the captions and schedules everything itself. This week that was 28 posts across 7 days, two per day per platform. 2. **Orshot renders every cover.** Each post's image comes from one Orshot template, filled with that post's title and stat via the [API](https://orshot.com/docs/api-reference/social-publish). No design tool was opened. 3. **Orshot publishes on schedule.** Same social publishing every customer uses. 4. **Analytics closes the loop.** The dashboard shows which topics and time slots earn engagement, and the daily digest lands in the inbox each morning. Next week's calendar gets planned off this week's numbers. ![Per-post analytics inside the Post Details panel in Orshot](https://orshot.com/blog/introducing-social-analytics/post-sheet.webp) No social media tool subscriptions, no manual posting, no screenshot-your-stats rituals. A template, an agent, and this dashboard. ### The API underneath Everything the dashboard shows is available over the API with your existing API key. Five endpoints, all documented in the [API reference](https://orshot.com/docs/api-reference/social-analytics-list): | Endpoint | Returns | Docs | | :-------------------------------- | :----------------------------------------------------- | :--------------------------------------------------------- | | `GET /v1/social/analytics` | Every post with metrics, plus follower counts | [See API](https://orshot.com/docs/api-reference/social-analytics-list) | | `GET /v1/social/analytics/daily` | Day-by-day series with a per-platform breakdown | [See API](https://orshot.com/docs/api-reference/social-analytics-daily) | | `GET /v1/social/analytics/insights` | Best time to post, posting frequency, engagement decay | [See API](https://orshot.com/docs/api-reference/social-analytics-insights) | | `GET /v1/social/analytics/accounts` | Follower history and growth per account | [See API](https://orshot.com/docs/api-reference/social-analytics-accounts) | | `GET /v1/social/analytics/posts/:id` | One post's full metrics and daily timeline | [See API](https://orshot.com/docs/api-reference/social-analytics-post) | Filter by platform, account, source, and date range. Responses are cached and refreshed in the background, with a `refresh=1` switch when you need live numbers. ### Agents can use it too Because the analytics sit on the same API, any agent connected through [Orshot for agents](https://orshot.com/agents) can read them and act. Some things you can ask Claude with Orshot connected: - _"What earned the most engagement this week? Post two more variations of the winner next week."_ - _"When does our LinkedIn audience actually engage? Move next week's schedule to those slots."_ - _"How did followers change per account this month? Draft a plan for the account that's lagging."_ The agent pulls real numbers, plans from them, renders the covers from your templates, and schedules the posts. That's the whole loop in one conversation, and it's how this week's calendar got filled. ### Works with your whole stack Analytics is part of [Social Posting](https://orshot.com/solutions/ai-marketing-automation-for-agencies): $12/month per connected account on any paid plan, with analytics included at no extra cost. Connect accounts across 15+ platforms, publish from the dashboard, the [API](https://orshot.com/docs/api-reference/social-publish), or any agent via [Orshot for agents](https://orshot.com/agents), and measure everything in one place. ![Connected social accounts with follower counts and growth in Orshot](https://orshot.com/blog/introducing-social-analytics/accounts.webp) Head to **Social Posting → Analytics** in your workspace to see yours. --- ### [Introducing the Agency Partner Program](https://orshot.com/blog/agency-partner-program) > A free program for automation agencies and consultants to scale client work with unlimited sandbox workspaces, pooled credits, and dedicated support. We're launching the **Agency Partner Program** — a free program designed for [automation agencies and consultants](https://orshot.com/agencies) who build visual content solutions for multiple clients. ## Who Is It For? - **Zapier Solution Partners** building automation workflows for clients - **Make (Integromat) Partners** implementing visual automation in scenarios - **No-code automation consultants** specializing in workflow automation - **Marketing automation agencies** creating dynamic social images, PDFs, and videos at scale If you're managing image, PDF, or video generation for multiple clients, this program is for you. It simplifies the process compared to building custom solutions with an [image editor SDK](https://orshot.com/blog/image-editor-sdk). ## Key Benefits - **Free to join** — No cost, no hidden fees - **Unlimited sandbox workspaces** — Build and test templates without affecting client quotas - **Unlimited team seats** — Add as many team members as you need - **Pooled credit quota** — Up to 100,000 credits/month shared across all sandboxes - **Priority support** — Faster responses from our team - **Client handoff tools** — Seamlessly transfer workspaces when clients are ready ![The Orshot agency partner dashboard](https://orshot.com/blog/partner-dashboard.webp) ## How It Works 1. **Apply** — [Fill out a quick application](https://orshot.com/partner-program) 2. **Get approved** — You'll recieve an email from us within 24 hours 3. **Onboard** — Set up your agency profile and first sandbox 4. **Build** — Design unlimited templates in sandbox workspaces 5. **Integrate** — Integrate templates for your client via Rest API or 10+ integrations for Image/PDF/Video Generation 6. **Test and Review** — Generate renders, iterate with your client and test workflows 7. **Handoff** — Transfer workspaces to clients when ready When clients subscribe, they count toward your active client count, unlocking higher tiers and more renders. ## Apply Now Ready to scale your agency's visual automation? [Apply for the Partner Program →](https://orshot.com/partner-program) Questions? Reach out at [partners@orshot.com](mailto:partners@orshot.com). You can [learn more about the Partner Program](https://orshot.com/docs/partner-program) in Orshot Docs --- ### [Introducing Version History for Templates](https://orshot.com/blog/template-version-history) > Every editing session, save and API change on a template is now kept. See what changed, name the versions that matter, and put any earlier design back in one click. Last week Albert, a trial user building a 20-page report template, wrote to me that a day of parameter naming had disappeared. I went through his session recordings and our backups. Everything he typed was still in the template. But two batches of edits from a second tab had been dropped before they were saved, and he had retyped them without knowing. I fixed the save bug the same day. What bothered me was the other half: even with the bug gone, Albert had no way to open his template as it was the evening before and say "give me that one back". Now he does. So do you. ## What it does Open any template in Studio and choose **File → Version history**. ![Version history in Orshot Studio: a timeline of every state a template went through](https://orshot.com/blog/template-version-history/sheet.webp) You get a timeline of the template's states, newest first: - **Editing sessions.** Close the tab or open another template and the design as you left it is kept. Saving as you go adds nothing to the list, so a morning of work reads as one version, not forty. - **API and agent changes.** When an API call, Claude, Cursor or ChatGPT changes a template, the design before that change is kept and labelled with who did it. - **Named versions.** Type a name and press Save version. Named versions are never removed. Each row says what changed ("2 texts edited", "1 image replaced", "+1 page"), shows the pages that changed, and who made the change and when. While you edit, a safety copy is refreshed every ten minutes. A crash never costs more than that. ## Restoring never loses anything ![Restoring adds "Before restoring" and "Restored from" steps to the timeline](https://orshot.com/blog/template-version-history/restore.webp) Click **Restore** on any version and the design is back on the canvas. The state you were on is kept as "Before restoring v6". The result is added as "Restored from v6". The timeline only grows. Restored the wrong one? Press **Undo**, or restore again. Unsaved edits are saved first, so a restore cannot lose work. Name, description, tags, folder and sharing settings stay as they are. Want the old design as a separate template? **Make a copy** does that. ## Nothing to switch on Versions are kept for every template on every plan, from the first edit, including Free. Your plan decides how far back you can restore and how many named versions a template holds. The details are on the [pricing page](https://orshot.com/pricing). Upgrade and the history you already have is restorable straight away. ## For teams that automate Enterprise workspaces and first party agents get the same timeline through the API, under `/v1/studio/templates/:templateId`: | Endpoint | What it does | | ----------------------------------------- | ----------------------------------------------------------------------------------- | | `GET /versions` | [List versions](https://orshot.com/docs/api-reference/template-versions-list) with what each changed | | `GET /versions/:versionId` | [Get one version](https://orshot.com/docs/api-reference/template-version-get), optionally with its design | | `POST /versions` | [Name the current design](https://orshot.com/docs/api-reference/template-version-create) | | `PATCH /versions/:versionId` | [Name or rename a version](https://orshot.com/docs/api-reference/template-version-update) | | `DELETE /versions/:versionId` | [Delete a version](https://orshot.com/docs/api-reference/template-version-delete) | | `POST /versions/:versionId/restore` | [Restore it](https://orshot.com/docs/api-reference/template-version-restore), as a new timeline step | | `POST /versions/:versionId/duplicate` | [Copy it into a new template](https://orshot.com/docs/api-reference/template-version-duplicate) | Every call uses your API key and the same plan rules as the studio. The [error reference](https://orshot.com/docs/error-reference#version-history-errors) lists the codes. The same tools are coming to [Orshot for Agents](https://orshot.com/agents) next, so Claude, Cursor and ChatGPT can list a template's versions and put one back for you. ## Under the hood Every design write stores the state it replaced, compressed and keyed on the template's own version token. Two tabs racing to save can never store the same state twice or overwrite each other's history. Repeated states are stored once. Restores extend the timeline instead of rewriting it. Older versions thin out over time, named versions stay forever. The full guide is in the docs: [Version history](https://orshot.com/docs/orshot-studio/version-history). Tell me what you would like next. --- ### [Introducing Video Generation API in Orshot](https://orshot.com/blog/introducing-video-generation) > Create dynamic videos from your Orshot templates using the REST API. Add video elements, control playback, trim clips, and generate MP4, WebM, or GIF outputs programmatically You can now generate videos from your Orshot Studio templates. Add video elements to your designs, make them dynamic with parameters, and render MP4, WebM, or GIF outputs via the REST API ### Key Features - **Video Elements** - Add video layers to your templates just like images or text - **Dynamic Video URLs** - Pass custom video URLs at render time using parameters - **Trim Controls** - Set start and end times to use specific portions of videos - **Playback Options** - Control loop, mute, and autoplay settings per video - **Multiple Formats** - Generate MP4, WebM, or GIF outputs - **Audio Support** - Include or exclude audio from your video renders - **[Layer Animations](https://orshot.com/blog/introducing-animations-in-studio)** - Add enter/exit animations (fade, slide, scale), visibility timing, and staggered choreography to any layer. Every animation renders frame-perfectly into your video output ### How It Works 1. Create a template in [Orshot Studio](https://orshot.com/studio) 2. Add a video element and configure its settings 3. Set a parameter ID to make the video URL dynamic 4. Call the render API with `response.format: "mp4"` and pass your video URL ### API Example ```bash curl -X POST https://api.orshot.com/v1/render \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{ "template_id": "your-template-id", response : { "type": "url", "format": "mp4", }, "modifications": { "videoElement": "https://example.com/your-video.mp4", "videoElement.trimStart": 0, "videoElement.trimEnd": 10, "videoElement.muted": false, "title.enterType": "fadeIn", "title.enterDuration": 0.8, "title.showAt": 0.5 } }' ``` ### Video Tutorial [Watch the video](https://www.youtube.com/watch?v=RQPHJY3bkZk) ### Pricing Video generation is billed at **1 credit per second of video** (per second or part thereof). A 10-second video uses 10 credits. You can generate video lengths from 3 minutes upto 10 minutes based on plan Videos are also supported in [multi-page/carousel templates](https://orshot.com/blog/introducing-carousel-templates), so you can basically have multiple pages, each having multiple videos in a single template. This helps in generating a series of videos from a single API call (Pricing and limits can be revised later based on cost and performance improvements) ### Get Started Video generation is [available today](https://orshot.com/pricing) on all paid plans. Open Studio, add a video element to your template, and start generating dynamic videos programmatically. You can check the [Rest API documentation here](https://orshot.com/docs/api-reference/render-from-studio-template) Once generated, you can also publish videos directly to TikTok, Instagram Reels, YouTube, LinkedIn, and more using [Social Publish](https://orshot.com/docs/publish/introduction) — no extra tools needed. With this addition, Orshot now generates Images + PDFs + Videos. Since launch, we've added a [full video timeline with page-level audio tracks and auto-generated subtitles](https://orshot.com/blog/video-timeline-audio-subtitles), plus [per-layer animations](https://orshot.com/blog/introducing-animations-in-studio) — all configurable visually in Studio and controllable via API --- ### [Introducing Video Timeline, Audio and Subtitle Controls](https://orshot.com/blog/video-timeline-audio-subtitles) > Orshot Studio now includes a visual video timeline with drag-and-drop layer management, page-level audio tracks, and built-in subtitle support — in Studio and via API. Creating videos in Orshot used to mean setting durations and timings in side panels, then previewing to see if the choreography felt right. That loop was slow, especially for templates with many layers. Today we're shipping three features that make video creation in [Orshot Studio](https://orshot.com/features/orshot-studio) significantly faster and more expressive: a **visual timeline**, **page-level audio**, and **subtitle controls**. ## Video Demo [Watch the video](https://www.youtube.com/watch?v=xecbCvew_uM) ## Video Timeline ![The video timeline bar in Orshot Studio](https://orshot.com/blog/video-timelines-bar.webp) The timeline sits at the bottom of Studio and gives you a full picture of your video composition at a glance. - **Drag layers** to reposition them in time — no more typing start/end values manually - **Resize handles** to trim layer duration by dragging edges - **Layer stacking** shows the visual order and overlap of every element - **Scrub the playhead** to jump to any point in the video Every layer — text, image, video, shape — appears on the timeline. You see exactly when each element enters, how long it stays, and when it exits. Adjustments that used to take multiple clicks now take a single drag. ## Multi-Track Page Audio ![Multi-track page audio in the Orshot video timeline](https://orshot.com/blog/video-timeline-audio.webp) Each page now supports multiple audio tracks — layer background music with a voiceover, or combine ambient sound with narration. This is useful for: - **Background music + voiceover** on the same page - **Sound effects** layered with narration - **Per-page audio** in multi-page videos (intro music, chapter themes) Each track has independent controls: volume, trim, offset, fade, loop, and mute. Tracks appear as collapsible sections in the audio panel and as separate draggable bars in the timeline. ## Subtitle Support ![Subtitle support in the Orshot video editor](https://orshot.com/blog/video-timeline-subtitle.webp) Add subtitles to your videos directly in Studio. You can: - **Write subtitles manually** or paste an existing script - **Auto-generate subtitles** from audio using AI transcription - **Style subtitle text** — font, size, color, background, position - **Time each subtitle** to appear and disappear precisely on the timeline Subtitles render into the final video output, so they work everywhere your video plays — no separate subtitle files needed. ## API Support Audio tracks and subtitles configured in Studio are automatically included when you render a video. For more control, the API lets you override audio, provide custom subtitle sources, and style subtitles per request. ### Custom Audio via API Use `videoOptions.audioSource` to provide a custom audio URL at render time: ```json { "templateId": "", "modifications": { "headline": "Welcome to Our Product" }, "response": { "format": "mp4", "type": "url" }, "videoOptions": { "audioSource": "https://example.com/background-music.mp3" } } ``` ### Custom Subtitles via API Use `videoOptions.subtitleSource` to provide a subtitle file: ```json { "templateId": "", "modifications": { "headline": "Welcome to Our Product" }, "response": { "format": "mp4", "type": "url" }, "videoOptions": { "audioSource": "https://example.com/voiceover.mp3", "subtitleSource": "https://example.com/captions.srt", "subtitleFontSize": "30px", "subtitleColor": "#ffffff", "subtitleBackground": "rgba(0,0,0,0.5)", "subtitlePosition": "bottom" } } ``` ### Multi-Page Video with Per-Page Audio and Subtitles For multi-page videos, pass per-page audio and subtitle sources as arrays. Each entry can use `page` (number) or `pageId` (UUID) — `pageId` is stable when pages are reordered: ```json { "templateId": "", "modifications": { "intro_text": "Chapter 1", "body_text": "The full story" }, "response": { "format": "mp4", "type": "url", "includePages": [1, 2, 3] }, "videoOptions": { "combinePages": true, "pageTransition": "fade", "pageTransitionDuration": 0.5, "audioSource": [ { "page": 1, "url": "https://example.com/intro-music.mp3" }, { "page": 2, "url": "https://example.com/chapter-1-music.mp3" }, { "page": 3, "url": "https://example.com/outro-music.mp3" } ], "subtitleSource": [ { "page": 1, "url": "https://example.com/intro.srt" }, { "page": 2, "url": "https://example.com/chapter-1.srt" }, { "page": 3, "url": "https://example.com/chapter-2.srt" } ], "subtitleFontSize": "28px", "subtitleColor": "#ffffff", "subtitleBackground": "rgba(0,0,0,0.6)" } } ``` ### Muting Audio To render a video without any audio (page audio tracks and video element audio), set `videoOptions.muted`: ```json { "templateId": "", "response": { "format": "mp4", "type": "url" }, "videoOptions": { "muted": true } } ``` ### Audio Controls in Studio Each audio track supports fine-grained controls applied automatically during rendering: | Control | Description | | ---------- | --------------------------------------------------- | | **Volume** | Mix level from 0% to 100% | | **Trim** | Start and end points to use a specific portion | | **Offset** | Delay when the audio starts playing within the page | | **Fade** | Fade in and fade out duration in seconds | | **Loop** | Repeat the audio to fill the full page duration | These settings are configured visually in the timeline and respected during API renders. ## What This Changes Before today, precise video choreography required switching between panels and previewing repeatedly. Now you design video timing the way editors expect: visually, on a timeline. Multi-track audio, custom audio sources via API, and subtitles round out what was missing for production-ready video output. --- The video timeline and subtitles are available now in Orshot Studio on all plans. Multi-track audio is available on paid plans. Read the [video generation docs](https://orshot.com/docs/video-generation) for API details, or open [Studio](https://orshot.com/studio) and try it. --- ### [Introducing Workflow Automations](https://orshot.com/blog/introducing-workflow-automations) > Turn a data source into finished visuals on autopilot: connect Google Sheets or Airtable, render a template for every row, and deliver the results anywhere. No Zapier chain required. Orshot can now run your whole visual pipeline, not just the rendering step. **[Workflow Automations](https://orshot.com/workflows)** live right inside your workspace: pick a trigger, connect a data source, choose a template, and tell Orshot where to send the results. From then on it runs by itself, on a schedule, on a webhook, or the moment new data shows up. ![The workflow builder](https://orshot.com/solutions/workflow-builder.png) ## What a workflow looks like Every workflow is the same simple shape: **trigger → data → render → deliver.** 1. **Trigger**: on a schedule, from an incoming webhook, manually, or when new rows appear in your source 2. **Data**: rows from Google Sheets or Airtable, files from Google Drive, or the webhook payload itself 3. **Render**: any Orshot template, one image, PDF, or video per row, with columns mapped to template fields 4. **Deliver**: write links back to your sheet or base, save files to Drive or Dropbox, post to Slack or your social accounts, push to S3 or WordPress, or just keep a URL One run can process a whole batch of rows, so a single workflow covers anything from a daily quote graphic to a few thousand certificates. ## What you can plug together | Building block | What you can use | | --- | --- | | Triggers | `Schedule` `Incoming webhook` `Manual run` `New Sheets row` `New Airtable record` `New Drive file` `New HubSpot contact` `New deal` `New company` | | Data sources | `Google Sheets` `Airtable` `CSV from a URL` `JSON from any API` `Webhook payload` | | Transforms | `Filter` `Sort` `Limit` `Dedupe` `Merge` `Delay` | | Destinations | `Sheets write-back` `Airtable write-back` `Google Drive` `Dropbox` `Slack` `S3 / R2` `WordPress` `HubSpot` `Outgoing webhook` `Hosted Orshot URL` | | Social publishing | `Instagram` `LinkedIn` `X` `TikTok` `YouTube` `Pinterest` `and more` | ## First-class Google Sheets and Airtable Both integrations now connect with one click through OAuth. No API keys to create, no tokens to paste. Once connected, the builder shows your actual spreadsheets, bases, and tables in live pickers, previews your columns, and can write render links back to the same row when a run finishes. ## Steal a working setup Every template below is a public workflow you can copy into your workspace and turn on: - [Post daily quote graphics automatically](https://orshot.com/workflows/daily-quote-graphics) - [Turn spreadsheet rows into Instagram carousels](https://orshot.com/workflows/instagram-carousels-from-sheet) - [Create product marketing images from your catalog](https://orshot.com/workflows/product-marketing-images) - [Issue certificates for everyone on your list](https://orshot.com/workflows/certificate-generator) - [Give every blog post an on-brand share image](https://orshot.com/workflows/blog-og-images) Here's what one looks like. This is the live Sheets-to-carousels workflow; hit **Use this workflow** and it lands in your workspace with every step in place. [Turn spreadsheet rows into Instagram carousels workflow on Orshot](https://orshot.com/workflows/instagram-carousels-from-sheet/embed) Browse the full gallery at [orshot.com/workflows](https://orshot.com/workflows). ## Included in every plan Workflow runs use automation credits, and every plan includes a monthly allowance. The free plan comes with 15 runs to try it out, and one credit is only spent when a run actually produces something. Idle checks are free. ## Get started ![The workflows dashboard: every automation with its flow, status, and one-click Run and Logs](https://orshot.com/blog/introducing-workflow-automations/workflows-dashboard.webp) Open **Workflows** in your workspace sidebar and hit **New Workflow**, or start from a [ready-made template](https://orshot.com/workflows). Workflows are also fully supported in the [Orshot MCP server](https://orshot.com/agents): agents like Claude can discover the building blocks, create and validate workflows, run them, and check their logs for you. If you can design it in Orshot, you can now ship it on autopilot. --- ### [Konva vs Fabric.js for building a design editor](https://orshot.com/blog/konva-vs-fabric-js) > Konva vs Fabric.js for a Canva clone in 2026: real npm numbers and side-by-side code for text, images, pages, export and server rendering. I build a design editor for a living, and developers building a Canva clone inside their product keep asking me the same question before they start: Konva or Fabric.js? The pages that rank for it are either from 2022, vendor pages, or quote fps benchmarks nobody ran. So this post does two things. It gives you the real numbers, then walks through the editor features you'll actually build (text, images, pages, export, locking, server rendering) with the code for Konva, Fabric.js and [Orshot Embed](https://orshot.com/features/orshot-embed) side by side. ![Three ways to ship a design editor: Konva (React components, 55 KB, scene graph, 9.96M downloads a month), Fabric.js (inline text editing, SVG export, selection controls, 31.5K GitHub stars) and Orshot Embed (full editor UI, 2,000+ templates, render by API, multi-tenant, PDF and MP4 export)](https://orshot.com/blog/konva-vs-fabric-js/hero.webp) **The short answer:** use Konva if you're building in React and drawing lots of shapes, and Fabric.js if your users edit text on the canvas or you need SVG export. Neither gives you undo/redo, pages, PDF export, per-user storage or server rendering, so budget for those either way. **TL;DR** — Pick by what you ship: - **Diagrams, whiteboards, games in React**: [Konva](#how-to-add-an-editable-text-layer) — React components and a layered scene graph. Text editing is yours to build. - **A text-heavy editor with SVG export**: [Fabric.js](#how-to-export-png-and-pdf) — Inline text editing and SVG export built in. Two breaking majors since 2024. - **A Canva-like editor inside your SaaS**: [Orshot Embed](#or-skip-the-canvas-orshot-embed) — A finished white-label editor with 2,000+ templates, rendered by API. ## Konva vs Fabric.js by the numbers | | | :-- | | npm downloads / month | | React bindings / month | | GitHub stars | | First released | | Latest version | | Size, min + gzip | | Dependencies | | Open / closed issues | | Contributors | | Official framework bindings | | Inline text editing | | SVG export | | License | Stars say Fabric. Downloads say Konva, almost three to one, with react-konva alone at 7.58M a month. Konva is smaller, has zero dependencies and [official React, Vue, Svelte and Angular bindings](https://konvajs.org/docs/faq.html "nofollow target=_blank"). Fabric is older and ships more editor behavior out of the box, mainly text editing and SVG export. Konva's single open issue doesn't mean zero bugs: its maintainer closes issues fast. Numbers are from [npm](https://www.npmjs.com/package/konva "nofollow target=_blank"), [bundlephobia](https://bundlephobia.com/package/konva "nofollow target=_blank") and GitHub ([Konva](https://github.com/konvajs/konva "nofollow target=_blank"), [Fabric.js](https://github.com/fabricjs/fabric.js "nofollow target=_blank")), checked September 27, 2026. ## Or skip the canvas: Orshot Embed Both libraries draw shapes. Neither is an editor. Konva's own maintainer [called them low-level](https://news.ycombinator.com/item?id=25431142 "nofollow target=_blank") when launching Polotno, the editor SDK built on top of Konva. Orshot Embed is the editor itself, already built and hosted. You drop it into your app as an iframe or a React/Vue component, and your users design in it under your brand. When I built it, I skipped the canvas library entirely: every layer is a real HTML element, text is edited with a rich-text editor, and the server renders the same HTML and CSS in headless Chrome. So there's no textarea overlay, no blurry text on zoom, and PNG, PDF and MP4 come out of the same design. | | | :-- | | Inline text editing | | Image replace, crop and masks | | Multi-page designs | | Undo / redo, snap guides | | PNG, PDF and MP4 export | | Per-user templates and permissions | | Render the same design by API | | Starter templates | | SVG export | | Your own engine, plugins, self-hosting | > — Michael Ossendrijver, CEO, Incubeta Your users start from any of our [2,000+ templates](https://orshot.com/templates), forked into your workspace, or from yours. ### Try it: a live Orshot Embed "Acme Studio" is a made-up brand running a real embed. Switch templates, edit text, swap images; nothing is saved. Embed from $39/mo. Multi-tenancy, webhooks and no Orshot branding from $160/mo. [Get this editor in your app](https://orshot.com/pricing?via=blog-konva-fabric-demo) Driving the editor from your own page (the `orshot:embed:control` messages below) needs the $349/mo plan. Already on Polotno? The [Polotno migration guide](https://orshot.com/migrate/from-polotno) maps each SDK call to its Orshot equivalent. The rest of this post is the same editor feature built three ways. ## How to add an editable text layer ![Orshot Studio with a headline text layer selected: typography, fit-to-box and fill controls on the right, and the headline toggled as an API field](https://orshot.com/blog/konva-vs-fabric-js/studio-editor.webp) Fabric ships `IText` and `Textbox`: double-click, a caret appears, selection and wrapping work on the canvas. Konva has no text editing. Its [docs](https://konvajs.org/docs/sandbox/Editable_Text.html "nofollow target=_blank") tell you to lay a `