{"id":71,"date":"2026-03-11T12:04:02","date_gmt":"2026-03-11T12:04:02","guid":{"rendered":"https:\/\/docmiral.com\/blog\/?p=71"},"modified":"2026-03-12T10:16:27","modified_gmt":"2026-03-12T10:16:27","slug":"build-your-first-dynamic-document-template-using-html-tailwind","status":"publish","type":"post","link":"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/","title":{"rendered":"Build Your First Dynamic Document Template Using HTML + Tailwind"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">A step-by-step tutorial for creating your first DocMiral template.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Developers often generate documents using a mix of:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>HTML-to-PDF libraries<\/li>\n\n\n\n<li>static PDF templates<\/li>\n\n\n\n<li>server-side string replacements<\/li>\n\n\n\n<li>fragile table layouts<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This works at first, but quickly becomes difficult when documents become <strong>dynamic<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, imagine generating:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>invoices<\/li>\n\n\n\n<li>reports<\/li>\n\n\n\n<li>resumes<\/li>\n\n\n\n<li>contracts<\/li>\n\n\n\n<li>meeting minutes<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">These documents usually contain:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>repeating sections (tables, lists)<\/li>\n\n\n\n<li>optional blocks<\/li>\n\n\n\n<li>dynamic values<\/li>\n\n\n\n<li>different layouts depending on data<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Modern document platforms solve this problem by turning documents into <strong>dynamic templates<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Instead of generating PDFs manually, you create <strong>HTML templates with placeholders<\/strong>, then inject data using APIs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this tutorial you&#8217;ll learn how to create your <strong>first dynamic document template using HTML + TailwindCSS in DocMiral<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We&#8217;ll build a <strong>Git Contributions Report template<\/strong> step-by-step and connect it to the API.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">What Is DocMiral?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">DocMiral is a document automation platform that allows developers to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>design document templates with <strong>HTML + TailwindCSS<\/strong><\/li>\n\n\n\n<li>add dynamic variables<\/li>\n\n\n\n<li>generate documents using APIs<\/li>\n\n\n\n<li>automate document workflows<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Templates can include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Typed Inputs<\/strong> \u2014 structured fields (text, numbers, images, charts)<\/li>\n\n\n\n<li><strong>Generic Variables<\/strong> \u2014 flexible data structures<\/li>\n\n\n\n<li><strong>MiniApps<\/strong> \u2014 structured UI components for complex sections<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">These variables automatically generate a schema used when building documents through the API. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docmiral.com\/blog\/how-to-add-variables-to-your-docmiral-templates-complete-guide-for-creators\/\" data-type=\"link\" data-id=\"https:\/\/docmiral.com\/blog\/how-to-add-variables-to-your-docmiral-templates-complete-guide-for-creators\/\">Read More About DocMiral Supported Variables<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1 \u2014 Create a New Template<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">First open the <strong>Template Creator<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here you can choose between two creation modes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Code Studio<\/strong> \u2014 build templates manually using HTML and TailwindCSS<\/li>\n\n\n\n<li><strong>AI Builder<\/strong> \u2014 describe the template and let AI generate it<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">For developers, <a href=\"https:\/\/docmiral.com\/features\/templates\/create-pdf\/using-html-and-tailwindcss-smart-ai-based-code-studio\" data-type=\"link\" data-id=\"https:\/\/docmiral.com\/features\/templates\/create-pdf\/using-html-and-tailwindcss-smart-ai-based-code-studio\">Code Studio<\/a> gives full control.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"759\" src=\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-choose-type-1024x759.png\" alt=\"docmiral-create-template-using-code-or-ai-assistant\" class=\"wp-image-73\" srcset=\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-choose-type-1024x759.png 1024w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-choose-type-300x222.png 300w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-choose-type-768x569.png 768w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-choose-type.png 1417w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Choose Creating Template Type<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This screen appears when creating a new template.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Click <strong>Open Code Studio<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 2 \u2014 Define Template Settings<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Before opening the editor you define basic template settings:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>category<\/li>\n\n\n\n<li>template name<\/li>\n\n\n\n<li>page size<\/li>\n\n\n\n<li>page orientation<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">For this tutorial we create:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Template name<\/strong>: Git Contributions Report<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Category<\/strong>: Reports<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Page size<\/strong>: A4<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Orientation<\/strong>: Portrait<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"755\" src=\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-code-start-1024x755.png\" alt=\"docmiral-create-template-using-code\" class=\"wp-image-75\" srcset=\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-code-start-1024x755.png 1024w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-code-start-300x221.png 300w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-code-start-768x566.png 768w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-code-start.png 1258w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">After clicking <strong>Create Template &amp; Open Studio<\/strong>, the template editor opens.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 3 \u2014 Understanding the Template Studio<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">The Template Studio contains several important panels.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-code-studio-raw-1024x512.png\" alt=\"docmiral-create-template-code-studio\" class=\"wp-image-72\" srcset=\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-code-studio-raw-1024x512.png 1024w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-code-studio-raw-300x150.png 300w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-code-studio-raw-768x384.png 768w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-code-studio-raw-1536x769.png 1536w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-code-studio-raw-2048x1025.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">DocMiral &#8211; Code Studio<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Key areas:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Code Editor<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Write your template using:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">HTML<br>TailwindCSS<br>Jinja2 templating<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Live Preview<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Displays the rendered document in real time.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Variables Panel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Shows detected variables from your template.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. API Tab<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Displays the API endpoint and schema for generating documents.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. AI Chat<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Allows AI to help modify templates.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 4 \u2014 Start With a Flexible Page<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">DocMiral supports two page types:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fixed Page<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"page\"&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Used for precise layouts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Flexible Page<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"flexpage\"&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Used for documents with dynamic length.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our report uses a <strong>flexible page<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Start the template with:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"flexpage\"&gt;<br>  &lt;div class=\"content\"&gt;<br>    &lt;!-- Your template content goes here --&gt;<br>  &lt;\/div&gt;<br>&lt;\/div&gt;<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 5 \u2014 Add Typed Inputs<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Typed inputs are structured variables declared directly inside the template.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{{ input(name='report_title', title='Report Title', type='string') }}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This automatically creates:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>a field in the editor UI<\/li>\n\n\n\n<li>a schema entry<\/li>\n\n\n\n<li>a variable accessible in the template<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Supported types include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>string (Normal input text)<\/li>\n\n\n\n<li>number<\/li>\n\n\n\n<li>Date<\/li>\n\n\n\n<li>price (formatted like price)<\/li>\n\n\n\n<li>textarea (Multi-line text like a personal summary box)<\/li>\n\n\n\n<li>editor (A text area with editor-formatting capabilities)<\/li>\n\n\n\n<li>smarteditor (An editor with text-template features)<\/li>\n\n\n\n<li>image<\/li>\n\n\n\n<li>qrcode<\/li>\n\n\n\n<li>barcode<\/li>\n\n\n\n<li>chart<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\"><br><br>Example inside the header:<\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;h1 class=\"text-3xl font-semibold border-b-4 border-blue-700 pb-2 mb-4\"&gt;<br>  {{ input(name='report_title', title='Report Title', type='string') }}<br>&lt;\/h1&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This creates a field called <strong>Report Title<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"756\" src=\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-studio-variables-typedinput-1024x756.png\" alt=\"docmiral-code-studio-typed-input-variables\" class=\"wp-image-79\" srcset=\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-studio-variables-typedinput-1024x756.png 1024w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-studio-variables-typedinput-300x222.png 300w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-studio-variables-typedinput-768x567.png 768w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-studio-variables-typedinput.png 1526w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Defined (used in template code) Typed Inputs<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The variables panel automatically lists these inputs.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 6 \u2014 Use Generic Data Variables<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Not all document data should be predefined fields.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sometimes you want flexible data structures like:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>lists<\/li>\n\n\n\n<li>objects<\/li>\n\n\n\n<li>arrays<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">These are handled using <strong>Jinja2 variables<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{{ data.repository_name }}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lists can be rendered using loops:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{% for contributor in data.top_contributors %}<br>  &lt;div&gt;{{ contributor.name }}&lt;\/div&gt;<br>{% endfor %}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">DocMiral automatically detects these variables and includes them in the template schema.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"355\" height=\"1024\" src=\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-studio-variables-generic-355x1024.png\" alt=\"docmiral-code-studio-generic-variables\" class=\"wp-image-78\" srcset=\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-studio-variables-generic-355x1024.png 355w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-studio-variables-generic-104x300.png 104w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-studio-variables-generic.png 387w\" sizes=\"auto, (max-width: 355px) 100vw, 355px\" \/><figcaption class=\"wp-element-caption\">Code Studio &#8211; Generic Inputs Hints &#8211; (HowTo Use)<\/figcaption><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 7 \u2014 Create Dynamic Lists<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">The Git report includes dynamic sections such as:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Top Contributors<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>{% for contributor in data.top_contributors %}<br>&lt;div class=\"flex items-center gap-3\"&gt;<br>  &lt;div class=\"w-48 font-medium text-gray-900 truncate\"&gt;<br>    {{ contributor.name }}<br>  &lt;\/div&gt;  &lt;div class=\"font-semibold text-blue-700\"&gt;<br>    {{ contributor.commits }}<br>  &lt;\/div&gt;<br>&lt;\/div&gt;<br>{% endfor %}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This loop generates one row per contributor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example input data:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>top_contributors<br>  - Alice (45 commits)<br>  - Bob (32 commits)<br>  - Daniel (27 commits)<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 8 \u2014 Build Dynamic Tables<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Dynamic tables are common in documents.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example for <strong>commit history<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{% for commit in data.commit_history %}<br>&lt;tr&gt;<br>  &lt;td&gt;{{ commit.hash }}&lt;\/td&gt;<br>  &lt;td&gt;{{ commit.author }}&lt;\/td&gt;<br>  &lt;td&gt;{{ commit.date }}&lt;\/td&gt;<br>  &lt;td&gt;{{ commit.message }}&lt;\/td&gt;<br>&lt;\/tr&gt;<br>{% endfor %}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Each item becomes a row.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This makes templates flexible for any dataset size.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 9 \u2014 Preview the Template<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">While editing, the <strong>Preview panel<\/strong> renders the template.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"959\" src=\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-code-previewsection-1024x959.png\" alt=\"docmiral-code-studio-preview-section\" class=\"wp-image-74\" srcset=\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-code-previewsection-1024x959.png 1024w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-code-previewsection-300x281.png 300w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-code-previewsection-768x719.png 768w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-code-previewsection.png 1197w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This helps you verify:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>spacing<\/li>\n\n\n\n<li>typography<\/li>\n\n\n\n<li>layout<\/li>\n\n\n\n<li>dynamic sections<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Since DocMiral uses <strong>TailwindCSS<\/strong>, styling is applied directly through utility classes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 10 \u2014 View the Generated Schema<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">After creating variables, DocMiral generates a schema used by the API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example schema snippet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"report_title\": \"\",\n  \"repository_name\": \"\",\n  \"report_period\": \"\",\n  \"generated_date\": \"\",\n  \"total_commits\": 0,\n  \"contributor_count\": 0,\n  \"data\": {\n    \"top_contributors\": &#91;\n      {\n        \"name\": \"\",\n        \"commits\": \"\"\n      }\n    ],\n    \n    ...\n\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This schema defines the expected input when generating documents.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 11 \u2014 Generate Documents Using the API<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">DocMiral automatically exposes an API endpoint for each template.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example endpoint:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>POST<br>https:\/\/api.docmiral.com\/templates\/{template_id}\/build\/pdf<br><br><\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"479\" src=\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-studio-apibox-1024x479.png\" alt=\"docmiral-code-studio-apibox\" class=\"wp-image-76\" srcset=\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-studio-apibox-1024x479.png 1024w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-studio-apibox-300x140.png 300w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-studio-apibox-768x359.png 768w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-studio-apibox-1536x719.png 1536w, https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-studio-apibox-2048x959.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Create document (PDF\/Image\/Powepoint) using API <\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Example request:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X POST \\<br>https:\/\/api.docmiral.com\/templates\/{template_id}\/build\/pdf \\<br>-H \"Authorization: Bearer YOUR_API_TOKEN\" \\<br>-H \"Content-Type: application\/json\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Payload example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{<br>  \"report_title\": \"Git Contributions Report\",<br>  \"repository_name\": \"docmiral\/api\",<br>  \"report_period\": \"Jan \u2013 Mar 2026\",<br>  \"generated_date\": \"2026-03-10\",<br>  \"total_commits\": 143,<br>  \"contributor_count\": 7<br>}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The API generates a <strong>fully rendered PDF document<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Best Practices for Template Design<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">When creating templates:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Use Flex Layouts<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Avoid rigid layouts that break with dynamic data.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prefer Flexible Pages<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">flexpage<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">is best for most documents that have no pre-defined length.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Keep Sections Modular<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Break documents into sections like:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>header<\/li>\n\n\n\n<li>summary<\/li>\n\n\n\n<li>tables<\/li>\n\n\n\n<li>charts<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Avoid Hardcoded Values<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Always use variables for data that might change.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Building document templates doesn&#8217;t need to be complicated.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With DocMiral you can:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>design documents using <strong>HTML + TailwindCSS<\/strong><\/li>\n\n\n\n<li>add dynamic variables<\/li>\n\n\n\n<li>support complex data structures<\/li>\n\n\n\n<li>generate documents through APIs<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The workflow becomes:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Design template \u2192 define variables \u2192 call API \u2192 generate documents<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Once you understand this pattern, you can build templates for almost anything:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>invoices<\/li>\n\n\n\n<li>resumes<\/li>\n\n\n\n<li>contracts<\/li>\n\n\n\n<li>reports<\/li>\n\n\n\n<li>certificates<\/li>\n\n\n\n<li>proposals<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">And because templates are just HTML, developers can work with them using familiar tools.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A step-by-step tutorial for creating your first DocMiral template. Introduction Developers often generate documents using a mix of: This works at first, but quickly becomes difficult when documents become dynamic. For example, imagine generating: These documents usually contain: Modern document platforms solve this problem by turning documents into dynamic templates. Instead of generating PDFs manually, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,9,10,12],"tags":[],"class_list":["post-71","post","type-post","status-publish","format-standard","hentry","category-features","category-guide","category-template-code-studio","category-template-design"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Build Your First Dynamic Document Template Using HTML + Tailwind - DocMiral - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Build Your First Dynamic Document Template Using HTML + Tailwind - DocMiral - Blog\" \/>\n<meta property=\"og:description\" content=\"A step-by-step tutorial for creating your first DocMiral template. Introduction Developers often generate documents using a mix of: This works at first, but quickly becomes difficult when documents become dynamic. For example, imagine generating: These documents usually contain: Modern document platforms solve this problem by turning documents into dynamic templates. Instead of generating PDFs manually, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/\" \/>\n<meta property=\"og:site_name\" content=\"DocMiral - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-11T12:04:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-12T10:16:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-choose-type.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1417\" \/>\n\t<meta property=\"og:image:height\" content=\"1050\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"docmiral\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DocMiralCo\" \/>\n<meta name=\"twitter:site\" content=\"@DocMiralCo\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"docmiral\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/\"},\"author\":{\"name\":\"docmiral\",\"@id\":\"https:\/\/docmiral.com\/blog\/#\/schema\/person\/df5267616c5991e7a42d1acf5e406abe\"},\"headline\":\"Build Your First Dynamic Document Template Using HTML + Tailwind\",\"datePublished\":\"2026-03-11T12:04:02+00:00\",\"dateModified\":\"2026-03-12T10:16:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/\"},\"wordCount\":829,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/docmiral.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-choose-type-1024x759.png\",\"articleSection\":[\"Features\",\"Guide\",\"Template - Code Studio\",\"Template Design\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/\",\"url\":\"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/\",\"name\":\"Build Your First Dynamic Document Template Using HTML + Tailwind - DocMiral - Blog\",\"isPartOf\":{\"@id\":\"https:\/\/docmiral.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-choose-type-1024x759.png\",\"datePublished\":\"2026-03-11T12:04:02+00:00\",\"dateModified\":\"2026-03-12T10:16:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#primaryimage\",\"url\":\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-choose-type.png\",\"contentUrl\":\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-choose-type.png\",\"width\":1417,\"height\":1050,\"caption\":\"Choose Creating Template Type\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/docmiral.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Build Your First Dynamic Document Template Using HTML + Tailwind\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/docmiral.com\/blog\/#website\",\"url\":\"https:\/\/docmiral.com\/blog\/\",\"name\":\"DocMiral - Blog\",\"description\":\"Document Builder For Modern Era!\",\"publisher\":{\"@id\":\"https:\/\/docmiral.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/docmiral.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/docmiral.com\/blog\/#organization\",\"name\":\"DocMiral - Blog\",\"url\":\"https:\/\/docmiral.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/docmiral.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2025\/11\/large.png\",\"contentUrl\":\"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2025\/11\/large.png\",\"width\":561,\"height\":499,\"caption\":\"DocMiral - Blog\"},\"image\":{\"@id\":\"https:\/\/docmiral.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/DocMiralCo\",\"https:\/\/www.linkedin.com\/company\/docmiral\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/docmiral.com\/blog\/#\/schema\/person\/df5267616c5991e7a42d1acf5e406abe\",\"name\":\"docmiral\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/0282d863f2ea88fe6a4ee6f6618934e209eccc4a3ab88466fac7628875effd29?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0282d863f2ea88fe6a4ee6f6618934e209eccc4a3ab88466fac7628875effd29?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0282d863f2ea88fe6a4ee6f6618934e209eccc4a3ab88466fac7628875effd29?s=96&d=mm&r=g\",\"caption\":\"docmiral\"},\"sameAs\":[\"https:\/\/docmiral.com\/blog\"],\"url\":\"https:\/\/docmiral.com\/blog\/author\/docmiral\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Build Your First Dynamic Document Template Using HTML + Tailwind - DocMiral - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/","og_locale":"en_GB","og_type":"article","og_title":"Build Your First Dynamic Document Template Using HTML + Tailwind - DocMiral - Blog","og_description":"A step-by-step tutorial for creating your first DocMiral template. Introduction Developers often generate documents using a mix of: This works at first, but quickly becomes difficult when documents become dynamic. For example, imagine generating: These documents usually contain: Modern document platforms solve this problem by turning documents into dynamic templates. Instead of generating PDFs manually, [&hellip;]","og_url":"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/","og_site_name":"DocMiral - Blog","article_published_time":"2026-03-11T12:04:02+00:00","article_modified_time":"2026-03-12T10:16:27+00:00","og_image":[{"width":1417,"height":1050,"url":"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-choose-type.png","type":"image\/png"}],"author":"docmiral","twitter_card":"summary_large_image","twitter_creator":"@DocMiralCo","twitter_site":"@DocMiralCo","twitter_misc":{"Written by":"docmiral","Estimated reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#article","isPartOf":{"@id":"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/"},"author":{"name":"docmiral","@id":"https:\/\/docmiral.com\/blog\/#\/schema\/person\/df5267616c5991e7a42d1acf5e406abe"},"headline":"Build Your First Dynamic Document Template Using HTML + Tailwind","datePublished":"2026-03-11T12:04:02+00:00","dateModified":"2026-03-12T10:16:27+00:00","mainEntityOfPage":{"@id":"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/"},"wordCount":829,"commentCount":1,"publisher":{"@id":"https:\/\/docmiral.com\/blog\/#organization"},"image":{"@id":"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#primaryimage"},"thumbnailUrl":"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-choose-type-1024x759.png","articleSection":["Features","Guide","Template - Code Studio","Template Design"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/","url":"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/","name":"Build Your First Dynamic Document Template Using HTML + Tailwind - DocMiral - Blog","isPartOf":{"@id":"https:\/\/docmiral.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#primaryimage"},"image":{"@id":"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#primaryimage"},"thumbnailUrl":"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-choose-type-1024x759.png","datePublished":"2026-03-11T12:04:02+00:00","dateModified":"2026-03-12T10:16:27+00:00","breadcrumb":{"@id":"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#primaryimage","url":"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-choose-type.png","contentUrl":"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2026\/03\/template-create-choose-type.png","width":1417,"height":1050,"caption":"Choose Creating Template Type"},{"@type":"BreadcrumbList","@id":"https:\/\/docmiral.com\/blog\/build-your-first-dynamic-document-template-using-html-tailwind\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/docmiral.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Build Your First Dynamic Document Template Using HTML + Tailwind"}]},{"@type":"WebSite","@id":"https:\/\/docmiral.com\/blog\/#website","url":"https:\/\/docmiral.com\/blog\/","name":"DocMiral - Blog","description":"Document Builder For Modern Era!","publisher":{"@id":"https:\/\/docmiral.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/docmiral.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/docmiral.com\/blog\/#organization","name":"DocMiral - Blog","url":"https:\/\/docmiral.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/docmiral.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2025\/11\/large.png","contentUrl":"https:\/\/docmiral.com\/blog\/wp-content\/uploads\/2025\/11\/large.png","width":561,"height":499,"caption":"DocMiral - Blog"},"image":{"@id":"https:\/\/docmiral.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/DocMiralCo","https:\/\/www.linkedin.com\/company\/docmiral"]},{"@type":"Person","@id":"https:\/\/docmiral.com\/blog\/#\/schema\/person\/df5267616c5991e7a42d1acf5e406abe","name":"docmiral","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/0282d863f2ea88fe6a4ee6f6618934e209eccc4a3ab88466fac7628875effd29?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0282d863f2ea88fe6a4ee6f6618934e209eccc4a3ab88466fac7628875effd29?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0282d863f2ea88fe6a4ee6f6618934e209eccc4a3ab88466fac7628875effd29?s=96&d=mm&r=g","caption":"docmiral"},"sameAs":["https:\/\/docmiral.com\/blog"],"url":"https:\/\/docmiral.com\/blog\/author\/docmiral\/"}]}},"_links":{"self":[{"href":"https:\/\/docmiral.com\/blog\/wp-json\/wp\/v2\/posts\/71","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/docmiral.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/docmiral.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/docmiral.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/docmiral.com\/blog\/wp-json\/wp\/v2\/comments?post=71"}],"version-history":[{"count":1,"href":"https:\/\/docmiral.com\/blog\/wp-json\/wp\/v2\/posts\/71\/revisions"}],"predecessor-version":[{"id":80,"href":"https:\/\/docmiral.com\/blog\/wp-json\/wp\/v2\/posts\/71\/revisions\/80"}],"wp:attachment":[{"href":"https:\/\/docmiral.com\/blog\/wp-json\/wp\/v2\/media?parent=71"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/docmiral.com\/blog\/wp-json\/wp\/v2\/categories?post=71"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/docmiral.com\/blog\/wp-json\/wp\/v2\/tags?post=71"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}