1 2<!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 68 bytes, lines 5-6
5 6 <script async src="https://www.googletagmanager.com/gtag/js?id=
6G-Z0YPW0QY8X
vendor: 16 bytes, lines 6-7
6"></script> 7
7<script> 8 window.__userCountry = "US"; 9 10 // Seed the `userCountry` cookie that the login app reads, using the 11 // reliable CloudFront-Viewer-Country value (~99% coverage). Without 12 // this, the login app falls back to the flaky third-party 13 // api.country.is call (adblockable, rate-limited, racy), which is the 14 // main reason a large share of accounts end up with no country. Cookie 15 // is scoped to .json2video.com so login (and other subdomains) can read 16 // it; login only calls api.country.is when this cookie is absent. 17 (function () { 18 var cc = window.__userCountry; 19 if (cc && /^[A-Z]{2}$/.test(cc)) { 20 var d = new Date(); 21 d.setTime(d.getTime() + 365 * 24 * 60 * 60 * 1000); 22 document.cookie = 'userCountry=' + cc + ';expires=' + d.toUTCString() + 23 ';path=/;domain=.json2video.com;SameSite=Lax'; 24 } 25 })(); 26 27 window.dataLayer = window.dataLayer || []; 28 function gtag(){dataLayer.push(arguments);} 29 30 // Consent Mode v2 â default denied (EU compliant). Cookie-consent banner 31 // updates these via gtag('consent', 'update', ...) once the visitor chooses. 32 // For non-EU visitors, cookieconsent-config.js grants analytics consent 33 // immediately and skips the banner. See /external/cookieconsent-config.js. 34 gtag('consent', 'default', { 35 'ad_storage': 'denied', 36 'analytics_storage': 'denied', 37 'ad_user_data': 'denied', 38 'ad_personalization': 'denied', 39 'functionality_storage': 'granted', 40 'security_storage': 'granted', 41 'wait_for_update': 500 42 }); 43 44 gtag('js', new Date()); 45 // `app_area` tags every event with the surface it came from, so each 46 // app can be split back out of the shared GA4 property. It must ride 47 // on `config` â a `gtag('set', â¦)` never reaches the payload. 48 gtag('config', 'G-Z0YPW0QY8X', { 'anonymize_ip': true, 'app_area': 'website' }); 49 </script>
49 50 <!-- Cookie consent banner (self-hosted Orestbida vanilla-cookieconsent v3.1.0) --> 51 <link rel="stylesheet" href="/external/cookieconsent.css"> 52
52<script defer src="/external/cookieconsent.umd.js"></script>
52 53
53<script defer src="/external/cookieconsent-config.js"></script>
53 54 <!-- Product analytics (PostHog) through the shared journey loader. It loads PostHog only once 55 the banner grants analytics. On the website it is anonymous: pageviews, internal CTA clicks 56 and checkout start; no identify, no replay, no autocapture. Kill switch: ENABLED in 57 /external/j2v-journey.js. See architecture/analytics/posthog.md. --> 58
58<script defer src="https://json2video.com/external/j2v-journey.js" data-surface="website"></script>
58 59 <!-- First/last-touch attribution tracker (consent-gated analytics cookies) --> 60
60<script defer src="/external/attribution.js"></script>
60 61 <meta charset="UTF-8"> 62 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 63 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 64 65 <meta property="og:title" content="Pricing - Video Editing API - JSON2Video" /> 66 <meta property="og:description" content="JSON2Video API offers free entry plans for getting started with video automation. Paid plans include pre-paid and subscription plans, starting at $19.95/month." /> 67 <meta property="og:type" content="website" /> 68 <meta property="og:image" content="https://json2video.com/pricing/images/og-index.jpg" /> 69 70 <meta name="twitter:card" content="summary_large_image" /> 71 <meta name="twitter:site" content="@json2video" /> 72 <meta name="twitter:title" content="Pricing - Video Editing API - JSON2Video" /> 73 <meta name="twitter:description" content="JSON2Video API offers free entry plans for getting started with video automation. Paid plans include pre-paid and subscription plans, starting at $19.95/month." /> 74 <meta name="twitter:image" content="https://json2video.com/pricing/images/og-index.jpg" /> 75 76 <link rel="canonical" href="https://json2video.com/pricing/"/> 77 <link rel="icon" type="image/svg+xml" href="/images/json2video-logo.svg"> 78 <link rel="alternate icon" href="/favicon.ico"> 79 <!--script src="https://cdn.tailwindcss.com"></script-->
80 <!-- Tailwind Play CDN replaced by a static, purged build (see website/tailwind.config.js). 81 Rebuild with `npm run build:css` from the website/ directory after touching markup. 82 When a page sets `$inline_tailwind_css = true;` before including common.php (e.g. the 83 new home, which is the most latency-sensitive page), we inline the whole purged CSS 84 in a <style> block â 15 KB over the wire after gzip â to kill the render-blocking 85 round-trip to /external/tailwind.css. Other pages keep the cacheable external link. --> 86 <link rel="stylesheet" href="/external/tailwind.css"> 87 <!-- Preload Lato-300-latin (body default weight) so the browser starts fetching it during HTML 88 parse, before discovering the @font-face declarations inside style.css. --> 89 <link rel="preload" href="/fonts/lato/lato-v25-latin-300.woff2" as="font" type="font/woff2" crossorigin> 90 <link rel="stylesheet" href="/style.css"> 91 92 <link rel="stylesheet" href="/highlight/styles/a11y-light.min.css"> <!-- stackoverflow-dark --> 93 <!-- link rel="stylesheet" href="/highlight/styles/a11y-light.min.css" --><!-- stackoverflow-dark --> 94 <!-- highlight.js bundles use `defer`: they all execute in order after HTML parse but before 95 DOMContentLoaded, which is when we now call hljs.highlightAll() (see inline script below). 96 Before this change they were render-blocking at the top of <head>. --> 97
97<script defer src="/highlight/highlight.min.js"></script>
97 98
98<script defer src="/highlight/languages/php.min.js"></script>
98 99
99<script defer src="/highlight/languages/javascript.min.js"></script>
99 100
100<script defer src="/highlight/languages/json.min.js"></script>
100 101
101<script defer src="/highlight/languages/php.min.js"></script>
101 102
102<script defer src="/highlight/languages/javascript.min.js"></script>
102 103 104 105
105<script> 106 // highlight.js scripts are `defer`red, so they finish loading right before DOMContentLoaded. 107 // Calling highlightAll() on that event guarantees `hljs` is defined and the DOM is parsed. 108 document.addEventListener('DOMContentLoaded', function () { 109 if (window.hljs) hljs.highlightAll(); 110 }); 111 112 function player_setup(player_id) { 113 return; 114 115 let player = document.getElementById(player_id); 116 117 player.addEventListener("click", function() { 118 this.style.backgroundImage = "url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgogIHdpZHRoPSI3MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAwIDEwMCUgMTAwJSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgPGNpcmNsZSBmaWxsPSIjRjAwIiBzdHJva2U9Im5vbmUiIGN4PSI2IiBjeT0iMjAiIHI9IjYiPgogICAgPGFuaW1hdGVUcmFuc2Zvcm0gCiAgICAgICBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIAogICAgICAgZHVyPSIwLjVzIiAKICAgICAgI
118HR5cGU9InRyYW5zbGF0ZSIgCiAgICAgICB2YWx1ZXM9IjAgMTUgOyAwIC0xNTsgMCAxNSIgCiAgICAgICByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgCiAgICAgICBiZWdpbj0iMC4xIi8+CiAgPC9jaXJjbGU+CiAgPGNpcmNsZSBmaWxsPSIjMEYwIiBzdHJva2U9Im5vbmUiIGN4PSIzMCIgY3k9IjIwIiByPSI2Ij4KICAgIDxhbmltYXRlVHJhbnNmb3JtIAogICAgICAgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiAKICAgICAgIGR1cj0iMC41cyIgCiAgICAgICB0eXBlPSJ0cmFuc2xhdGUiIAogICAgICAgdmFsdWVzPSIwIDEwIDsgMCAtMTA7IDAgMTAiIAogICAgICAgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIAogICAgICAgYmVnaW49IjAuMiIvPgogIDwvY2lyY2xlPgogIDxjaXJjbGUgZmlsbD0iIzAwRiIgc3Ryb2tlPSJub25lIiBjeD0iNTQiIGN5PSIyMCIgcj0iNiI+CiAgICA8YW5pbWF0ZVRyYW5zZm9ybSAKICAgICAgIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgCiAgICAgICBkdXI9IjAuNXMiIAogICAgICAgdHlwZT0idHJhbnNsYXRlIiAKICAgICAgIHZhbHVlcz0iMCA1IDsgMCAtNTsgMCA1IiAKICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAKICAgICAgIGJlZ2luPSIwLjMiLz4KICA8L2NpcmNsZT4KPC9zdmc+)"; 119 if (this.paused) this.play(); 120 else this.pause(); 121 gtag('event', 'play', { 122 'event_category' : 'player', 123 'event_label' : 'show_next_example' 124 }); 125 }); 126 127 player.addEventListener("ended", function() { 128 this.style.backgroundImage = "url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgogIHdpZHRoPSIzMCIgaGVpZ2h0PSIzMCIgdmlld0JveD0iMCAwIDMwIDMwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICA8ZGVmcz4KICAgIDxzdHlsZT4KICAgICAgLmNscy0xIHsKICAgICAgICBmaWxsOiAjZmZmOwogICAgICAgIHN0cm9rZTogI2ZmZjsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgICBmaWxsLXJ1bGU6IGV2ZW5vZGQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxwYXRoIGlkPSJUcmlhbmdsZV8xIiBkYXRhLW5hbWU9IlRyaWFuZ2xlIDEiIGNsYXNzPSJjbHMtMSIgZD0iTTI4LjYyNSwxNS4xMjVMMy44NzUsMjkuNDA2VjAuODQ0WiIvPgo8L3N2Zz4K)"; 129 let src = this.currentSrc; 130 this.src = null; 131 this.src = src; 132 }); 133 134 } 135 </script>
135 136
136<script src="/app.js"></script>
136 137 <style> 138 #menu-check:checked~div { 139 display: block; 140 } 141 </style> 142 <title>Pricing - Video Editing API - JSON2Video</title> 143 <meta name="description" content="JSON2Video API offers free entry plans for getting started with video automation. Paid plans include pre-paid and subscription plans, starting at $19.95/month."> 144 <!-- clearbit --> 145 <!--
145<script async src="https://tag.clearbitscripts.com/v1/pk_0b072acc3127eb041c3801f3b1f313e3/tags.js" referrerpolicy="strict-origin-when-cross-origin"></script>
145 --> 146 </head> 147 <body class=""> 148 <div class="bg-gray-900 sticky top-0 z-50"> 149 <!--div class="bg-yellow-400 text-black text-center text-sm font-bold p-1"> 150 ð¨ We are rolling out the version 2 of the API. 151 <span class="whitespace-nowrap">Please <a class="underline" href="/contact-us/">report us</a> any issue</span> 152 </div--> 153 <div class="bg-yellow-400 text-black text-center text-sm font-bold p-1"> 154 <a href="/video-automation/" class="mx-3"><span>Video automation</span></a> 155 <a href="/video-api/" class="mx-3"><span>Video API</span></a> 156 <a href="/video-automation/json-to-video/" class="mx-3"><span>Convert JSON to video</span></a> 157 <a href="/ai-voices/" class="mx-3"><span>Text-to-speech voices</span></a> 158 </div> 159 <nav id="top-header" class="mx-auto h-14 flex text-white justify-between items-center max-w-screen-lg"> 160 <a href="/"><div class="ml-2 flex items-center"><img src="/images/json2video-logo.svg" style="height:30px;"><span class="mx-3 text-2xl">JSON2Video</span></div></a> 161 <ul class="hidden lg:flex list-none text-xl font-bold"> 162 <!-- <li class="pr-4 "><a href="/video-api/">Video API</a></li> --> 163 <li class="px-4 "><a href="/docs/v2/">Docs</a></li> 164 <li class="px-4 "><a href="/how-to/">Learn</a></li> 165 <li class="px-4 "><a href="/templates/">Templates</a></li> 166 <li class="px-4 "><a href="/editor/">Editor</a> <!--<sup class="text-yellow-400">new</sup>--></li> 167 <li class="pl-4 "><a href="/pricing/">Pricing</a></li> 168 <li class="px-4 "><a href="/partners/">Affiliates</a></li> 169 </ul> 170 <div class="hidden lg:flex items-center"> 171 <a id="getAPIKeyButton" href="/login/?utm_source=website&utm_medium=internal_cta&utm_campaign=header&utm_content=login_button"><button class="m-2 py-2 px-4 bg-custom2 rounded-lg hover:bg-red-500 hover:text-white focus:bg-red-700 focus:text-white">Login / Sign up</button></a> 172 </div> 173 174 <div class="lg:hidden m-5"> 175 <label for="menu-check" id="menu-label"> 176 <svg class="w-5 text-white" viewBox="0 0 24 24"> 177 <path fill="currentColor" d="M23,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h22c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path> 178 <path fill="currentColor" d="M23,6H1C0.4,6,0,5.6,0,5s0.4-1,1-1h22c0.6,0,1,0.4,1,1S23.6,6,23,6z"></path> 179 <path fill="currentColor" d="M23,20H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h22c0.6,0,1,0.4,1,1S23.6,20,23,20z"></path> 180 </svg> 181 </label> 182 183 <input type="checkbox" id="menu-check" class="hidden"> 184 185 <div class="hidden absolute top-0 left-0 w-full z-50"> 186 <div class="p-5 bg-gray-200 shadow-lg"> 187 <div class="flex items-center justify-between mb-4"> 188 <div> 189 <a href="/" title="JSON2Video" class="inline-flex items-center"> 190 <span class="text-3xl text-black">JSON2Video</span> 191 </a> 192 </div> 193 <label for="menu-check"> 194 <svg class="w-5 text-gray-600" viewBox="0 0 24 24"> 195 <path fill="currentColor" d="M19.7,4.3c-0.4-0.4-1-0.4-1.4,0L12,10.6L5.7,4.3c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l6.3,6.3l-6.3,6.3 c-0.4,0.4-0.4,1,0,1.4C4.5,19.9,4.7,20,5,20s0.5-0.1,0.7-0.3l6.3-6.3l6.3,6.3c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3 c0.4-0.4,0.4-1,0-1.4L13.4,12l6.3-6.3C20.1,5.3,20.1,4.7,19.7,4.3z"></path> 196 </svg> 197 </label> 198 </div> 199 <nav class="ml-5 mt-10"> 200 <ul class="space-y-4 text-gray-700 text-2xl font-medium tracking-wide"> 201 <li><a href="/video-api/">Video API</a></li> 202 <li><a href="/docs/v2/">Docs</a></li> 203 <li><a href="/how-to/">Learn</a></li> 204 <li><a href="/templates/">Templates</a></li> 205 <li><a href="/docs/resources/basic/">Components</a></li> 206 <li><a href="/pricing/">Pricing</a></li> 207 <li><a href="/partners/">Affiliates</a></li> 208 </ul> 209 </nav> 210 <div class="my-10 text-center"> 211 <a id="getAPIKeyButtonMobile" href="/login/?utm_source=website&utm_medium=internal_cta&utm_campaign=header_mobile&utm_c
211ontent=login_button"><button class="m-2 py-2 px-4 bg-custom2 rounded-lg">Login / Sign up</button></a> 212 </div> 213 </div> 214 </div> 215 </div> 216 </nav> 217 </div> 218
218<script> 219 (function() { 220 var s = localStorage.getItem("userSession") || ""; 221 var k = localStorage.getItem("userAPIKey") || ""; 222 if (s.length === 40 || k.length === 40) { 223 var btn = document.getElementById("getAPIKeyButton"); 224 if (btn) { btn.href = "/dashboard/"; btn.querySelector("button").textContent = "Go to dashboard"; } 225 var btnM = document.getElementById("getAPIKeyButtonMobile"); 226 if (btnM) { btnM.href = "/dashboard/"; btnM.querySelector("button").textContent = "Go to dashboard"; } 227 } 228 })(); 229 </script>
229 230 <!-- <div class="w-full bg-gray-700"> 231 <nav id="sub-header" class="mx-auto h-8 flex text-white justify-start items-center max-w-screen-lg"> 232 <div class="w-64"></div> 233 <div class="w-5"></div> 234 <ul class="flex font-bold"> 235 <li class="pr-3">Video Automation</li> 236 <li class="px-3">Video SaaS</li> 237 </ul> 238 </nav> 239 </div> --> 240 241 <div class="color-gradient"> 242 <div class="mx-auto text-white flex items-center max-w-screen-lg"> 243 <div class="m-10 md:m-20"> 244 <div class="text-sm uppercase">Get started for free</div> <h1 class="text-5xl font-bold">API Pricing</h1> <p class="mt-5 text-lg">JSON2Video API offers free entry plans for getting started with video automation and paid plans that include pre-paid and subscription offers</p> </div> 245 </div> 246 </div> 247 <div id="body-header" class="py-10 mx-auto max-w-screen-lg md:flex bg-white"> 248 <div class="pricing-page md:w-full shrink-0 grow px-3 md:px-16 overflow-hidden">
248<script> 249 let userData, userEmailAddress = null; 250 userData = localStorage.getItem("userCredentials") || localStorage.getItem("userProfile") || localStorage.getItem("userSignUp"); 251 if (userData) { 252 userEmailAddress = JSON.parse(userData).email; 253 } 254</script>
254 255<style> 256 #pricing a { 257 color: #397bc4; 258 text-decoration: none; 259 background: linear-gradient(0deg, rgb(237 244 251) 0%, rgb(237 244 251) 35%, transparent 35%); 260 } 261</style> 262<div class="bg-white mx-auto max-w-screen-lg"> 263 <div class="container px-3 mx-auto"> 264 265 <!-- FREE --> 266 <a name="free"></a> 267 <div class="bg-gray-50 border border-gray-400 rounded-lg px-8 py-6 flex items-center justify-between gap-4"> 268 <div> 269 <h2 class="text-2xl font-bold">Start for free</h2> 270 <p class="text-gray-500 mt-1">Get 600 credits â no credit card needed</p> 271 </div> 272 <a href="https://json2video.com/login/?utm_source=website&utm_medium=internal_cta&utm_campaign=pricing_free_account&utm_content=free_account_button" class="inline-block bg-custom2 text-white font-bold px-6 py-3 rounded-lg hover:opacity-90 whitespace-nowrap flex-shrink-0"> 273 Create free account → 274 </a> 275 </div> 276 277 <!-- PAID PLANS --> 278 <a name="paid_plans"></a> 279 <div class="my-20"> 280 <div class="text-center"> 281 <h2 class="text-3xl font-bold">Paid plans</h2> 282 <p class="mt-2 text-lg"> 283 Plans are sized in minutes of produced videos, and 284 consumed with a granularity of a second. 285 </p> 286 </div> 287 288 <div class="mt-10 md:flex md:flex-row md:justify-center"> 289 <a href="#pre-paid"> 290 <div class="md:w-72 p-5 border border-gray-200 rounded-lg pr-2 bg-gray-50 hover:bg-gray-100"> 291 <h3 class="font-semibold">Pre-paid</h3> 292 <p class="text-gray-600">Top up your account with minutes and use the API at your own pace</p> 293 </div> 294 </a> 295 296 <a href="#subscriptions"> 297 <div class="mt-8 md:mt-0 md:ml-10 md:w-72 p-5 border border-gray-200 rounded-lg pr-2 bg-gray-50 hover:bg-gray-100"> 298 <h3 class="font-semibold">Subscriptions</h3> 299 <p class="text-gray-600">For projects that want to optimize costs and get premium support</p> 300 </div> 301 </a> 302 </div> 303 </div> 304 305 <!-- PRE-PAID PLANS --> 306 <a name="pre-paid"></a> 307 <div class="my-20"> 308 <h2 class="text-3xl font-bold text-center">Pre-paid plans</h2> 309 <p class="mt-3 text-lg text-center"> 310 One-time payments to top up your account. No ties. 311 </p> 312 <div class="mt-5"> 313 <div class="flex border border-gray-200 rounded-lg overflow-hidden"> 314 <div class="text-lg bg-gray-50 p-5 border-r border-gray-200"> 315 <div class="text-center text-3xl font-bold"><span class="text-sm relative -top-2">$</span>49.95</div> 316 <div class="text-center text-sm">one payment</div> 317 </div> 318 <div class="grow flex flex-col md:flex-row md:items-center px-5 justify-between"> 319 <div> 320 <p class="text-xl font-semibold"> 321 <span>7,200 credits</span> 322 </p> 323 <p class="text-sm"> 324 Up to 120 minutes of rendered videos<br> 325 With access to all API features, <u>watermark removal</u> and priority support<br> 326 <span class="text-xs"><a href="/pricing/credit-consumption.html" target="_blank" class="link">Read more</a></span> 327 </p> 328 </div> 329 <div class="p-5 flex flex-col items-center"> 330 <button class="py-2 text-sm rounded-lg bg-custom2 text-white font-bold w-28 hover:bg-white hover:text-black hover:border hover:border-black" onclick="buyPlan('108040', 'paypro')">Buy</button> 331 </div> 332 </div> 333 </div> 334 </div> 335 <div class="mt-5"> 336 <div class="flex border border-gray-200 rounded-lg overflow-hidden"> 337 <div class="text-lg bg-gray-50 p-5 border-r border-gray-200"> 338 <div class="text-center text-3xl font-bold"><span class="text-sm relative -top-2">$</span>99.95</div> 339 <div class="text-center text-sm">one payment</div> 340 </div> 341 <div class="grow flex flex-col md:flex-row md:items-center px-5 justify-between"> 342 <div> 343 <p class="text-xl font-semibold">
344 <span>15,600 credits</span> 345 </p> 346 <p class="text-sm"> 347 Up to 260 minutes of rendered videos<br> 348 With access to all API features, <u>watermark removal</u> and priority support<br> 349 <span class="text-xs"><a href="/pricing/credit-consumption.html" target="_blank" class="link">Read more</a></span> 350 </p> 351 </div> 352 <div class="p-5 flex flex-col items-center"> 353 <button class="py-2 text-sm rounded-lg bg-custom2 text-white font-bold w-28 hover:bg-white hover:text-black hover:border hover:border-black" onclick="buyPlan('108041', 'paypro')">Buy</button> 354 </div> 355 </div> 356 </div> 357 </div> 358 </div> 359 360 <!-- SUBSCRIPTION PLANS --> 361 <a name="subscriptions"></a> 362 <div class="my-20"> 363 <h2 class="text-3xl font-bold text-center">Subscription plans</h2> 364 <p class="mt-3 text-lg text-center"> 365 Choose from the list of subscription plans. 366 </p> 367 <div class="mt-8 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"> 368 <div class="border border-gray-200 rounded-lg p-6 flex flex-col "> 369 370 <div class="mb-2 mt-2 font-bold uppercase text-sm">Hobby</div> 371 <div class="text-sm text-gray-600 mb-4">3,000 credits per month</div> 372 373 <div class="mb-6"> 374 <span class="text-3xl font-bold"><span class="text-sm relative -top-2">$</span>16.63</span> 375 <span class="text-sm text-gray-500">USD/month</span> 376 <div class="text-xs text-gray-400 mt-1">Billed yearly ($199.50)</div> 377 </div> 378 379 <ul class="space-y-2 mb-6 flex-grow"> 380 <li class="flex items-center text-sm text-gray-700"> 381 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 382 Up to 50 minutes of rendered output videos 383 </li> 384 <li class="flex items-center text-sm text-gray-700"> 385 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 386 Max video length: 1 min </li> 387 <li class="flex items-center text-sm text-gray-700"> 388 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 389 Text-to-speech voices 390 </li> 391 <li class="flex items-center text-sm text-gray-700"> 392 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 393 All component libraries & SDKs 394 </li> 395 <li class="flex items-center text-sm text-gray-700"> 396 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 397 Chatbot support </li> 398 </ul> 399 400 <div class="mt-auto text-center"> 401 <button class="py-2 text-sm rounded-lg bg-custom2 text-white font-bold w-full hover:bg-white hover:text-black hover:border hover:border-black" onclick="buyPlan('133343', 'paypro')">Buy</button> 402 </div> 403 </div> 404 <div class="border border-2 border-gray-900 rounded-lg p-6 flex flex-col bg-gray-50 relative"> 405 <div class="absolute -top-3 left-1/2 transform -translate-x-1/2">
406 <span class="bg-gray-900 text-white text-xs font-medium px-3 py-1 rounded-full">RECOMMENDED</span> 407 </div> 408 409 <div class="mb-2 mt-2 font-bold uppercase text-sm">Professional</div> 410 <div class="text-sm text-gray-600 mb-4">12,000 credits per month</div> 411 412 <div class="mb-6"> 413 <span class="text-3xl font-bold"><span class="text-sm relative -top-2">$</span>49.95</span> 414 <span class="text-sm text-gray-500">USD/month</span> 415 </div> 416 417 <ul class="space-y-2 mb-6 flex-grow"> 418 <li class="flex items-center text-sm text-gray-700"> 419 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 420 Up to 200 minutes of rendered output videos 421 </li> 422 <li class="flex items-center text-sm text-gray-700"> 423 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 424 Max video length: 10 min </li> 425 <li class="flex items-center text-sm text-gray-700"> 426 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 427 Text-to-speech voices 428 </li> 429 <li class="flex items-center text-sm text-gray-700"> 430 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 431 All component libraries & SDKs 432 </li> 433 <li class="flex items-center text-sm text-gray-700"> 434 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 435 Chatbot support </li> 436 <li class="flex items-center text-sm text-gray-700"> 437 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 438 Email support </li> 439 </ul> 440 441 <div class="mt-auto text-center"> 442 <button class="py-2 text-sm rounded-lg bg-custom2 text-white font-bold w-full hover:bg-white hover:text-black hover:border hover:border-black" onclick="buyPlan('104394', 'paypro')">Buy</button> 443 </div> 444 </div> 445 <div class="border border-gray-200 rounded-lg p-6 flex flex-col "> 446 447 <div class="mb-2 mt-2 font-bold uppercase text-sm">Startup</div> 448 <div class="text-sm text-gray-600 mb-4">30,000 credits per month</div> 449 450 <div class="mb-6">
451 <span class="text-3xl font-bold"><span class="text-sm relative -top-2">$</span>99.95</span> 452 <span class="text-sm text-gray-500">USD/month</span> 453 </div> 454 455 <ul class="space-y-2 mb-6 flex-grow"> 456 <li class="flex items-center text-sm text-gray-700"> 457 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 458 Up to 500 minutes of rendered output videos 459 </li> 460 <li class="flex items-center text-sm text-gray-700"> 461 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 462 Max video length: 30 min </li> 463 <li class="flex items-center text-sm text-gray-700"> 464 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 465 Text-to-speech voices 466 </li> 467 <li class="flex items-center text-sm text-gray-700"> 468 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 469 All component libraries & SDKs 470 </li> 471 <li class="flex items-center text-sm text-gray-700"> 472 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 473 Chatbot support </li> 474 <li class="flex items-center text-sm text-gray-700"> 475 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 476 Email support </li> 477 <li class="flex items-center text-sm text-gray-700"> 478 <svg class="w-5 h-5 text-green-500 mr-2 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> 479 Video call support </li> 480 </ul> 481 482 <div class="mt-auto text-center"> 483 <button class="py-2 text-sm rounded-lg bg-custom2 text-white font-bold w-full hover:bg-white hover:text-black hover:border hover:border-black" onclick="buyPlan('108018', 'paypro')">Buy</button> 484 </div> 485 </div> 486 </div> 487 <p class="mt-6 text-sm text-gray-500 text-center"> 488 Looking for higher volumes? Additional Enterprise plans are available in the <a href="/dashboard/credits/subscriptions" class="link">Dashboard → Credits → Subscriptions</a>. 489 </p> 490 <p class="mt-5 text-sm text-gray-600 text-center"> 491 Learn more about how credits are consumed <a href="./credit-consumption.html" target="_blank" class="link">here</a>. 492 </p> 493 </div> 494 </div> 495</div> 496 497<!-- FAQs --> 498 499<div class="bg-white mx-auto max-w-screen-lg mt-20"> 500 <div class="main-content px-3 mx-auto"> 501 <h2>Frequently Asked Questions</h2> 502 503 <h3>Quotas</h3> 504 <h4>How many videos can I create?</h4> 505 <p> 506 This will depend on the length of your videos.<br /> 507 Your free or paid plan includes a quota of credits that you consume every time you create a new video. 508 Learn more about how credits are consumed <a href="./credit-consumption.html" target="_blank">here</a>. 509 </p> 510 511 <h4>What happens if I run out of credits?</h4> 512 <p> 513 If you are on a free plan, a pre-paid plan or a subscription plan, and you run out of credits you can buy a pre-paid plan and top up your account with more credits. 514 </p> 515 516 <h4>Do credits expire?</h4> 517 <p> 518 Pre-paid credits do not expire. 519 </p> 520 <p> 521 Subscription credits expire at the end of the monthly period. 522 </p> 523 524 <h4>Can I have pre-paid and subscription plans at the same time?</h4> 525 <p> 526 Yes, you can buy a subscription plan and a pre-paid plan at the same time. 527 A usual use case is that you run out of credits of your subscription and you buy a pre-paid plan to top up your account with more credits until the new month starts. 528 </p> 529 530 <h4>If I have a subscription plan and I top up my account, how minutes are deducted?</h4> 531 <p> 532 In case you have at the same time a subscription plan and a pre-paid plan, the API will deduct the minutes from the subscription plan first, and if there aren't 533 enough minutes, it will deduct the minutes from the pre-paid plan. 534 </p> 535 536 <h4>How many credits are deducted if I render 30 seconds videos?</h4> 537 <p> 538 If you render a 30 seconds video, the API will deduct 30 credits from your quota. That simple. 539 </p> 540 <p> 541 External text-to-speech or transcription services may incur additional costs. 542 Learn more about how credits are consumed <a href="./credit-consumption.html" target="_blank" class="link">here</a>. 543 </p> 544 545 <h4>Can I create images or videos with AI?</h4> 546 <p> 547 Plans include access to JSON2Videoâs video editing, composition, template, subtitle, voiceover and rendering 548 features. JSON2Video does not support natively AI image generation, AI video generation, avatar generation or face-swap. 549 </p> 550 551 <h4>How many credits are deducted if I render 4K videos?</h4> 552 <p> 553 4K videos have 3840x2160 pixels, that is, 4 times more resolution than full HD video (1920x1080). 554 If you render 4K videos, the API will deduct 4x times the length of your video from your quota. 555 Example: A 4K 30 seconds video will deduct 120 seconds from your quota. 556 </p> 557 558 <h4>Do free plan videos have a watermark?</h4> 559 <p> 560 Unfortunately some users abuse the free trial plans by creating multiple accounts and using the trial accounts for commercial purposes. This has forced us to add a watermark to the videos generated by the free plans. 561 </p> 562 563 <h3>Billing</h3> 564 <h4>Can I cancel at any time?</h4> 565 <p> 566 Yes, just cancel your subscription and you will not be billed again. You will be able to continue using the API until the end of the current period. 567 Go to the <a href="/dashboard/credits/subscriptions">Dashboard > Credits > Subscriptions</a> to cancel your subscription. 568 </p> 569 570 <h4>Can you refund my payment if I'm not happy with the service?</h4> 571 <p> 572 We want you to be confident when trying JSON2Video. That's why we offer a refund under the following conditions: 573 </p> 574 <ul> 575 <li>Refunds are available only for your first payment.</li> 576 <li>You must request the refund within 24 hours of that first payment.</li> 577 <li>Refunds apply only if you have used less than 10% of your credits.</li> 578 <li>We do not provide refunds for subscription renewals or for any payments made after your first one (including additional top-ups).</li> 579 </ul> 580 581 <h4>Can I upgrade at any time?</h4> 582 <p> 583 Yes, you can upgrade at any time by <a href="/dashboard/credits/subscriptions">subscribing to another plan</a> and using the same email address. 584 </p> 585 586 <h4>Are taxes included?</h4> 587 <p> 588 The prices stated above are taxes excluded. 589 </p> 590 591 <h3>About Paddle.com</h3> 592 <h4>What is Paddle?</h4> 593 <p> 594 Invoicing, paying taxes and being compliant with all country laws is <u>complex and expensive</u>. 595 </p> 596 <p> 597 At JSON2Video, we prefer to focus our time in improving the API and the service, not wasting time with the paperwork. 598 That's why we partner with <a href="https://paddle.com">Paddle.com</a> (our payment partner) that takes care of all these details. 599 </p> 600 <p> 601 Our customers pay to Paddle, and Paddle pays to us. 602 </p> 603 604 <h4>Why I received a charge from Paddle</h4> 605 <p> 606 As said above, Paddle charges you the subscription cost and then it pays to us. 607 In your credit card transactions you will see something like <code>Paddle.net* Json2video</code>. 608 </p> 609 610 </div> 611</div> 612 613<div id="popupWait" class="absolute inset-0 items-center justify-center bg-gray-900 bg-opacity-80" style="display: none; z-index: 99999;"> 614 <div class="loader text-white"> 615 <div class="p-3 bg-black">Wait a second...</div> 616 </div> 617</div> 618 619<div id="emailPopup" class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center hidden" style="z-index: 99999;"> 620 <div class="bg-white rounded-lg p-8 max-w-lg mx-4"> 621 <h3 class="text-xl font-bold mb-4">Important!</h3> 622 <p> 623 In the purchase form, <b>enter the same email address</b> you used to sign up to JSON2Video.<br/> 624 </p> 625 <p class="mt-2"> 626 If you use a different email address, a new account will be created with the purchased credits. 627 </p> 628 <div class="mt-6 flex justify-end"> 629 <button onclick="closeEmailPopup()" class="px-4 py-2 bg-custom2 text-white font-bold rounded-lg">Continue</button> 630 </div> 631 </div> 632</div> 633 634<!-- <pre> 635 Country: \n 636 Timestamp: 2026-10-02 05:53:41</pre> --> 637 638<!-- Tips -->
639<script src="https://unpkg.com/@popperjs/core@2"></script>
vendor: 1 bytes, line 639
639
640<script src="https://unpkg.com/tippy.js@6"></script>
vendor: 1 bytes, line 640
640
641<script> 642 tippy('[data-tippy-content]', { 643 trigger: 'click' 644 }); 645</script>
645 646 647<!-- Custom -->
648<script> 649 function buyPlan(productId, account) { 650 window.productId = productId; 651 window.productAccount = account; 652 653 if (!userEmailAddress) { 654 document.getElementById('emailPopup').classList.remove('hidden'); 655 return; 656 } 657 658 processCheckout(productId, account); 659 } 660 661 // Build attribution payload from the cookies set by /external/attribution.js 662 // (j2v_ft / j2v_lt) plus current URL UTMs. Passed through Paddle's 663 // `passthrough` (Classic) and `customData` (Billing) so the webhook can 664 // attach `acquisition` to brand-new users created via direct checkout. 665 function buildAcquisition() { 666 function getCookie(name) { 667 var m = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)')); 668 try { return m ? JSON.parse(decodeURIComponent(m[2])) : null; } catch (e) { return null; } 669 } 670 var params = new URLSearchParams(location.search); 671 var signup_utm = {}; 672 ['utm_source','utm_medium','utm_campaign','utm_content','utm_term'].forEach(function(k){ 673 var v = params.get(k); if (v) signup_utm[k.replace('utm_','')] = v; 674 }); 675 return { 676 first_touch: getCookie('j2v_ft'), 677 last_touch: getCookie('j2v_lt'), 678 signup_utm: signup_utm, 679 signup_referrer: document.referrer || null, 680 signup_landing: location.pathname + location.search, 681 signup_at: new Date().toISOString() 682 }; 683 } 684 685 function processCheckout(productId, account) { 686 gtag('event', 'begin_checkout', { 687 provider: account, 688 items: [{ item_id: productId }] 689 }); 690 691 // PostHog, same moment as GA4 begin_checkout. plan_id is the provider's product id, 692 // like GA4 item_id and the dashboard. The loader sends it at once (a navigation to 693 // PayPro follows) and drops it without consent. Never blocks the checkout. 694 try { 695 if (window.j2vJourney) { 696 window.j2vJourney.capture('checkout_started', { provider: account, plan_id: productId, from: 'website' }); 697 } 698 } catch (e) { /* analytics must never break the checkout */ } 699 700 if (account === 'paypro') { 701 // Best-effort email prefill (orphan-payment fix P2): seed billing-email 702 // with the account email. PayPro's hosted checkout has no "lock email" 703 // URL param, so the buyer can still edit it and processors may override 704 // it. Authoritative account matching relies on client_id (P1), not this. 705 var email = encodeURIComponent(userEmailAddress); 706 var acq = encodeURIComponent(JSON.stringify({ acquisition: buildAcquisition() })); 707 window.location.href = 'https://store.payproglobal.com/checkout?products[1][id]=' + productId + '&billing-email=' + email + '&x-acquisition=' + acq; 708 } else { 709 var acquisition = buildAcquisition(); 710 // Best-effort email defense-in-depth (orphan-payment fix P2): prefill the 711 // checkout email and lock it (Paddle Classic `disableLogout`) so the buyer 712 // cannot switch addresses. Best-effort only â PayPal / some processors may 713 // still override the email, which is why client_id (P1) is the real fix. 714 Paddle.Checkout.open({ 715 product: productId, 716 email: userEmailAddress || undefined, 717 disableLogout: !!userEmailAddress, 718 passthrough: JSON.stringify({ acquisition: acquisition }), 719 customData: { acquisition: acquisition } 720 }); 721 } 722 } 723 724 function closeEmailPopup() { 725 document.getElementById('emailPopup').classList.add('hidden'); 726 processCheckout(window.productId, window.productAccount); 727 } 728</script>
728 729 730<!-- Paddle.com -->
731<script src="https://cdn.paddle.com/paddle/paddle.js"></script>
vendor: 1 bytes, line 731
731
732<script type="text/javascript"> 733 734 function showWaitPopup() { 735 const paddlePopup = document.querySelectorAll("iframe[name='paddle_frame']")[0]; 736 if (paddlePopup) paddlePopup.remove(); 737 738 window.scrollTo(0, 0); 739 document.getElementById("popupWait").style.display = "flex"; 740 document.body.style.overflow = "hidden"; 741 } 742 743 function hideWaitPopup() { 744 document.getElementById("popupWait").style.display = "none"; 745 document.body.style.overflow = "auto"; 746 } 747 748 749 function myEventCallback(data) { 750 751 if (data.event === 'Checkout.PaymentComplete') { 752 showWaitPopup(); 753 // Check to ensure the payment has not been flagged for manual fraud review 754 if (!data.eventData.flagged) { 755 var checkoutId = data.eventData.checkout.id; 756 Paddle.Order.details(checkoutId, function(data) { 757 if (!!data) { 758 // Order data, downloads, receipts etc... available within 'data' variable 759 console.log(data); 760 const eventObject = { 761 value: data.order.total, 762 tax: data.order.total_tax, 763 currency: data.order.currency, 764 transaction_id: data.order.order_id, 765 affiliation: 'JSON2Video', 766 items: [{ 767 id: data.order.product_id ?? data.checkout.title, 768 name: data.checkout.title, 769 brand: 'JSON2Video', 770 category: data.order.is_subscription ? 'Subscription' : 'Product', 771 quantity: data.order.quantity ?? 1 772 }] 773 }; 774 console.log("Event Object", eventObject); 775 gtag('event', 'purchase', eventObject); 776 setTimeout(() => { hideWaitPopup(); window.location.href = "/pricing/thank-you/" }, 1500); 777 } else { 778 // Order processing delay - order details cannot be retrieved at the moment 779 console.log('Order is being processed') 780 setTimeout(hideWaitPopup, 1500); 781 } 782 }); 783 } else { 784 // Payment has not been fully processed at the moment, so order details cannot be retrieved 785 console.log('Transaction pending review'); 786 setTimeout(hideWaitPopup, 1500); 787 } 788 } 789 } 790 791 792 Paddle.Setup({ 793 vendor: 144186, 794 eventCallback: myEventCallback 795 }); // live 796 </script>
796 797 </div> </div> 798 <footer class="bg-gray-900"> 799 <div class="max-w-screen-lg px-6 py-4 mx-auto"> 800 <div class="lg:flex"> 801 <div class="w-full -mx-6 lg:w-2/5"> 802 <div class="px-6"> 803 <div> 804 <a href="#" class="text-xl font-bold text-white hover:text-gray-300">JSON2Video</a> 805 </div> 806 807 <p class="max-w-md mt-2 text-gray-400"> 808 <strong>Your video editing API</strong><br/> 809 Create engaging videos from simple JSON snippets. 810 </p> 811 812 <div class="flex mt-4 -mx-2"> 813 <a href="https://www.linkedin.com/in/david-bosch-rein/" target="_blank" rel="nofollow" class="mx-2 text-gray-200 hover:text-gray-400" aria-label="Linkedin"> 814 <svg class="w-4 h-4 fill-current" viewBox="0 0 512 512"> 815 <path d="M444.17,32H70.28C49.85,32,32,46.7,32,66.89V441.61C32,461.91,49.85,480,70.28,480H444.06C464.6,480,480,461.79,480,441.61V66.89C480.12,46.7,464.6,32,444.17,32ZM170.87,405.43H106.69V205.88h64.18ZM141,175.54h-.46c-20.54,0-33.84-15.29-33.84-34.43,0-19.49,13.65-34.42,34.65-34.42s33.85,14.82,34.31,34.42C175.65,160.25,162.35,175.54,141,175.54ZM405.43,405.43H341.25V296.32c0-26.14-9.34-44-32.56-44-17.74,0-28.24,12-32.91,23.69-1.75,4.2-2.22,9.92-2.22,15.76V405.43H209.38V205.88h64.18v27.77c9.34-13.3,23.93-32.44,57.88-32.44,42.13,0,74,27.77,74,87.64Z"/> 816 </svg> 817 </a> 818 819 <a href="https://twitter.com/json2video" target="_blank" rel="nofollow" class="mx-2 text-gray-200 hover:text-gray-400" aria-label="Twitter"> 820 <svg class="w-4 h-4 fill-current" viewBox="0 0 512 512"> 821 <path d="M496,109.5a201.8,201.8,0,0,1-56.55,15.3,97.51,97.51,0,0,0,43.33-53.6,197.74,197.74,0,0,1-62.56,23.5A99.14,99.14,0,0,0,348.31,64c-54.42,0-98.46,43.4-98.46,96.9a93.21,93.21,0,0,0,2.54,22.1,280.7,280.7,0,0,1-203-101.3A95.69,95.69,0,0,0,36,130.4C36,164,53.53,193.7,80,211.1A97.5,97.5,0,0,1,35.22,199v1.2c0,47,34,86.1,79,95a100.76,100.76,0,0,1-25.94,3.4,94.38,94.38,0,0,1-18.51-1.8c12.51,38.5,48.92,66.5,92.05,67.3A199.59,199.59,0,0,1,39.5,405.6,203,203,0,0,1,16,404.2,278.68,278.68,0,0,0,166.74,448c181.36,0,280.44-147.7,280.44-275.8,0-4.2-.11-8.4-.31-12.5A198.48,198.48,0,0,0,496,109.5Z"/> 822 </svg> 823 </a> 824 </div> 825 </div> 826 </div> 827 828 <div class="mt-6 lg:mt-0 lg:flex-1"> 829 <div class="grid grid-cols-2 gap-6 sm:grid-cols-3 md:grid-cols-4"> 830 831 <div> 832 <h3 class="uppercase text-white">Documentation</h3> 833 <a href="/docs/api/" class="block mt-2 text-sm text-gray-400 hover:underline">Video Editing API specification</a> 834 <a href="/docs/tutorial/" class="block mt-2 text-sm text-gray-400 hover:underline">Tutorial</a> 835 <a href="/templates/" class="block mt-2 text-sm text-gray-400 hover:underline">Templates</a> 836 <a href="/examples/" class="block mt-2 text-sm text-gray-400 hover:underline">Examples</a> 837 </div> 838 839 <div> 840 <h3 class="uppercase text-white">Learn</h3> 841 <a href="/video-automation/" class="block mt-2 text-sm text-gray-400 hover:underline">Video automation</a> 842 <a href="/video-api/" class="block mt-2 text-sm text-gray-400 hover:underline">Video API</a> 843 <a href="/video-automation/json-to-video/" class="block mt-2 text-sm text-gray-400 hover:underline">Convert JSON to video</a> 844 <a href="/how-to/json2video/video-news-summary.html" class="block mt-2 text-sm text-gray-400 hover:underline">News video summary</a> 845 </div> 846 847 <div> 848 <h3 class="uppercase text-white">Contact</h3> 849 <a href="/contact-us/" class="block mt-2 text-sm text-gray-400 hover:underline">Drop us a message</a> 850 <a href="https://endcredits.pro" target="_blank" class="block mt-2 text-sm text-gray-400 hover:underline">EndCredits.pro</a> 851 </div> 852 853 <div> 854 <h3 class="uppercase text-white">Legal</h3> 855 <a href="/legal/" class="block mt-2 text-sm text-gray-400 hover:underline">Legal home page</a> 856 <a href="/legal/terms-of-use.html" class="block mt-2 text-sm text-gray-400 hover:underline">API Terms of use</a> 857 <a href="/legal/privacy-policy.html" class="block mt-2 text-sm text-gray-400 hover:underline">Privacy Policy</a> 858 <a href="/legal/cookies/" class="block mt-2 text-sm text-gray-400 hover:underline">Cookie Policy</a> 859 <a href="#" onclick="event.preventDefault(); if (window.showCookiePreferences) window.showCookiePreferences();" class="block mt-2 text-sm text-gray-400 hover:underline">Cookie preferences</a> 860 </div> 861 </div> 862 </div> 863 </div> 864 865 <hr class="h-px my-6 border-none bg-gray-700"> 866 867 <div> 868 <p class="text-center text-white">© JSON2Video - The video editing API - 2026 - All rights reserved</p> 869 </div> 870 </div> 871 <a href="/contact-us/"> 872 <div class="color-gradient" style="position:fixed;bottom:2vh;right:2vh;width:7vh;height:7vh;background-color:#555;color:white;display:flex;align-items:center;justify-items:center;border-radius:15%;z-index:9999;"> 873 <svg id="Layer_1" style="width:100%;height:60%;" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><defs><style>.cls-1{fill:#DDD;}</style></defs><title>
873speech-bubble-5-outline</title><path stroke="white" class="cls-1" d="M487.67,416C503.1,393.65,512,367.41,512,339.34c0-51.81-30.29-97.38-76.1-123.67C434.76,110.31,337.63,25.22,218,25.22,97.59,25.22,0,111.32,0,217.54c0,36.62,11.61,70.85,31.74,100L4,368.95c-11.63,19.38,3.92,40.91,23,40.91a26.89,26.89,0,0,0,13.93-4l54.4-29.34A235.57,235.57,0,0,0,197.6,409c28.19,46.29,83.57,77.76,147.29,77.76,34.88,0,67.24-9.44,94-25.56l41.71,22.49a20.63,20.63,0,0,0,10.68,3.07c14.61,0,26.53-16.5,17.61-31.36ZM108.53,354.54,96,347l-12.87,6.94-54.4,29.34-.52.28-.5.3a4.79,4.79,0,0,1-.71.35,2.53,2.53,0,0,1-1.36-1.3,2.69,2.69,0,0,1,.35-.77l.3-.5.28-.52,27.74-51.43,7.46-13.83-8.93-12.92C35,277.2,25.64,247.66,25.64,217.54c0-91.91,86.27-166.68,192.32-166.68,100.53,0,183.28,67.2,191.62,152.49a186,186,0,0,0-64.68-11.46c-92.29,0-167.11,66-167.11,147.45a131.45,131.45,0,0,0,7,42.38A207.85,207.85,0,0,1,108.53,354.54Zm358,46.87-8.93,12.92,7.46,13.83,13.72,25.43L451.1,438.65l-12.87-6.94-12.53,7.54c-23.79,14.32-51.74,21.89-80.81,21.89-78,0-141.46-54.64-141.46-121.8s63.46-121.8,141.46-121.8,141.46,54.64,141.46,121.8A108.94,108.94,0,0,1,466.57,401.41ZM397.46,294.46a12.82,12.82,0,0,1-12.82,12.82H307.71a12.82,12.82,0,1,1,0-25.64h76.93A12.82,12.82,0,0,1,397.46,294.46Zm0,38.46a12.82,12.82,0,0,1-12.82,12.82H307.71a12.82,12.82,0,1,1,0-25.64h76.93A12.82,12.82,0,0,1,397.46,332.93Zm0,38.46a12.82,12.82,0,0,1-12.82,12.82H307.71a12.82,12.82,0,1,1,0-25.64h76.93A12.82,12.82,0,0,1,397.46,371.39Z"/></svg> 874 </div> 875 </a> 876</footer> 877 878<div id="modal-window" class="fixed hidden inset-0 bg-gray-600 overflow-y-auto h-full w-full p-5 pb-20" style="top:52px;"> 879 <pre><code id="modal-code" class="language-json rounded-lg bg-black"></code></pre> 880 <div onclick="closeModal();" class="absolute text-white" style="cursor:pointer; width:32px; height:32px; right: 32px; top: 30px; border-radius: 4px; background-color: #CCC; background-image: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjMycHgiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB3aWR0aD0iMzJweCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8ZGVmcz4KICAgICAgICA8c3R5bGU+CiAgICAgICAgLmNscy0xIHsKICAgICAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgICAgICAgc3Ryb2tlOiAjZmZmOwogICAgICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgICAgICAgZmlsbC1ydWxlOiBldmVub2RkOwogICAgICAgIH0KICAgICAgICA8L3N0eWxlPgogICAgPC9kZWZzPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNDQzLjYsMzg3LjFMMzEyLjQsMjU1LjRsMTMxLjUtMTMwYzUuNC01LjQsNS40LTE0LjIsMC0xOS42bC0zNy40LTM3LjZjLTIuNi0yLjYtNi4xLTQtOS44LTRjLTMuNywwLTcuMiwxLjUtOS44LDQgIEwyNTYsMTk3LjhMMTI0LjksNjguM2MtMi42LTIuNi02LjEtNC05LjgtNGMtMy43LDAtNy4yLDEuNS05LjgsNEw2OCwxMDUuOWMtNS40LDUuNC01LjQsMTQuMiwwLDE5LjZsMTMxLjUsMTMwTDY4LjQsMzg3LjEgIGMtMi42LDIuNi00LjEsNi4xLTQuMSw5LjhjMCwzLjcsMS40LDcuMiw0LjEsOS44bDM3LjQsMzcuNmMyLjcsMi43LDYuMiw0LjEsOS44LDQuMWMzLjUsMCw3LjEtMS4zLDkuOC00LjFMMjU2LDMxMy4xbDEzMC43LDEzMS4xICBjMi43LDIuNyw2LjIsNC4xLDkuOCw0LjFjMy41LDAsNy4xLTEuMyw5LjgtNC4xbDM3LjQtMzcuNmMyLjYtMi42LDQuMS02LjEsNC4xLTkuOEM0NDcuNywzOTMuMiw0NDYuMiwzODkuNyw0NDMuNiwzODcuMXoiLz4KPC9zdmc+)"></div> 881 <div onclick="copyCode(this);" class="absolute cursor-pointer text-white" style="top:30px;right:80px;"><svg width="32" height="32" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="transform transition-transform duration-500 ease-in-out"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"></path></svg></path></svg></div> 882</div>
883<script>footer_event();</script>
883 884 </body> 885</html> 886
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.