{"id":106533,"date":"2026-04-10T18:09:32","date_gmt":"2026-04-10T12:39:32","guid":{"rendered":"https:\/\/www.guvi.in\/blog\/?p=106533"},"modified":"2026-04-10T18:09:35","modified_gmt":"2026-04-10T12:39:35","slug":"what-is-dspy","status":"publish","type":"post","link":"https:\/\/www.guvi.in\/blog\/what-is-dspy\/","title":{"rendered":"What is DSPy? Build a Text-to-SQL App with Python (Complete Guide)"},"content":{"rendered":"\n<p><strong>Quick Answer: <\/strong>DSPy (Declarative Self-improving Python) is a framework that helps developers build reliable LLM applications by structuring prompts as programs instead of raw text. It enables automatic optimization, modular design, and evaluation-driven improvements. Using DSPy, you can build a Text-to-SQL app in Python that converts natural language queries into accurate SQL by defining modules, signatures, and optimization pipelines.<\/p>\n\n\n\n<p>How do you convert a simple question like \u201cShow total revenue last month\u201d into a precise SQL query without manually crafting fragile prompts every time? Traditional prompt engineering often breaks in production due to inconsistencies and lack of evaluation.<\/p>\n\n\n\n<p>This is where DSPy changes the game. Instead of treating prompts as static text, it treats them as structured programs that can be optimized, tested, and improved over time.<\/p>\n\n\n\n<p>In this guide, you will learn how to build a <strong>Text-to-SQL app using DSPy in Python<\/strong>, step by step. By the end, you will understand how to create modular LLM pipelines that generate accurate SQL queries from natural language inputs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What is DSPy?<\/strong><\/h2>\n\n\n\n<p>DSPy (Declarative Self-improving Python) is a framework for building reliable LLM applications by treating prompts as structured programs instead of raw text. It uses signatures (input-output definitions), modules (reusable components), and optimizers (automatic improvements) to separate logic from prompt design.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What is a Text-to-SQL Application?<\/strong><\/h2>\n\n\n\n<p>A Text-to-SQL application converts <a href=\"https:\/\/www.guvi.in\/blog\/what-is-nlp-in-artificial-intelligence\/\" target=\"_blank\" rel=\"noreferrer noopener\">natural language<\/a> queries into SQL statements.<\/p>\n\n\n\n<p><strong>Example:<\/strong><\/p>\n\n\n\n<ul>\n<li>Input: \u201cShow top 5 products by sales\u201d<\/li>\n\n\n\n<li>Output:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT product_name, SUM(sales)\n\nFROM products\n\nGROUP BY product_name\n\nORDER BY SUM(sales) DESC\n\nLIMIT 5;<\/code><\/pre>\n\n\n\n<p>These applications are widely used in:<\/p>\n\n\n\n<ul>\n<li>Business intelligence dashboards<\/li>\n\n\n\n<li>Data analytics platforms<\/li>\n\n\n\n<li>Chat-based database querying tools<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Step-by-Step Guide: Build a Text-to-SQL App with DSPy<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 1: Install Dependencies<\/strong><\/h3>\n\n\n\n<p>The first step is to install the required Python packages. At minimum, you need the DSPy library. The official DSPy getting-started docs show installation with pip install -U dspy. If you want typed output validation, adding pedantic is also useful in many DSPy workflows.&nbsp;&nbsp;<\/p>\n\n\n\n<p>You also need to prepare your <a href=\"https:\/\/www.guvi.in\/blog\/guide-to-large-language-models\/\">LLM setup<\/a>. DSPy works by connecting your program to a language model backend, so you must have access to a supported provider and an API key. In practice, this means selecting a model, exporting the provider key in your environment, and ensuring your Python environment can call that model successfully. DSPy\u2019s tutorials show model setup through dspy.LM(&#8230;) and global configuration with dspy.configure(lm=lm).&nbsp;&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install -U dspy<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 2: Define the Signature<\/strong><\/h3>\n\n\n\n<p>In DSPy, a signature defines the contract between the input and output of a task. For a Text-to-SQL app, the input is a natural language query, and the output is a SQL statement. This step is important because DSPy encourages you to declare what the system should do before worrying about the exact wording of prompts. That is a core part of its programming model.&nbsp;&nbsp;<\/p>\n\n\n\n<p>A clean signature makes the Text-to-SQL pipeline easier to test, optimize, and reuse. You can keep it simple at first with just a user question and <a href=\"https:\/\/www.guvi.in\/blog\/guide-on-sql-for-data-science\/\">SQL<\/a> output, then later extend it with database schema, business rules, or SQL dialect hints.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import dspy\n\nclass TextToSQL(dspy.Signature):\n\n&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"Convert a natural language question into a valid SQL query.\"\"\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;question: str = dspy.InputField(desc=\"User's natural language database question\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;sql: str = dspy.OutputField(desc=\"Executable SQL query\")<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 3: Create a DSPy Module<\/strong><\/h3>\n\n\n\n<p>Once the signature is defined, wrap the logic in a reusable DSPy module, the core building block of the application. Instead of relying on a single prompt, modules enable reusable, inspectable, and independently improvable components, making the system more robust than brittle prompt strings.&nbsp;<\/p>\n\n\n\n<p>For a Text-to-SQL app, use dspy.Predict inside a custom module to take a user query and schema context as input and generate SQL. This modular design supports scalability, allowing easy addition of validation, query explanation, and execution checks later.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class TextToSQLModule(dspy.Module):\n\n&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self):\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super().__init__()\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.generator = dspy.Predict(TextToSQL)\n\n&nbsp;&nbsp;&nbsp;&nbsp;def forward(self, question: str):\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return self.generator(question=question)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 4: Configure the Language Model<\/strong><\/h3>\n\n\n\n<p>After creating the module, configure the language model DSPy will use. DSPy tutorials show this pattern clearly: initialize the LM, then register it using dspy.configure. This central configuration allows the rest of the DSPy program to call the model consistently.&nbsp;&nbsp;<\/p>\n\n\n\n<p>You must set your <a href=\"https:\/\/www.guvi.in\/blog\/api-response-structure-best-practices\/\">API key<\/a> before creating the model object. In a real application, keep credentials in environment variables rather than hardcoding them. You should also choose a model that is good at structured generation, because SQL tasks depend on syntax precision and schema alignment.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\n\nimport dspy\n\nos.environ&#91;\"OPENAI_API_KEY\"] = \"your_api_key_here\"\n\nlm = dspy.LM(\"openai\/gpt-4o-mini\")\n\ndspy.configure(lm=lm)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 5: Add Training Examples<\/strong><\/h3>\n\n\n\n<p>DSPy becomes much more powerful when you give it examples. Instead of manually rewriting prompts, you provide a small training set of natural-language questions and their expected <a href=\"https:\/\/www.guvi.in\/blog\/sql-queries-with-examples\/\">SQL outputs<\/a>. DSPy can then use those examples to improve how the program behaves. Its FAQ and documentation emphasize that DSPy programs can be compiled into optimized prompts or weights based on your pipeline and your data.&nbsp;&nbsp;<\/p>\n\n\n\n<p>For a Text-to-SQL app, your examples should cover different query types such as filtering, aggregation, sorting, grouping, and date-based conditions. Better example coverage generally leads to better SQL generation quality.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>trainset = &#91;\n\n&nbsp;&nbsp;&nbsp;&nbsp;dspy.Example(\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;question=\"Show all customers from Mumbai\",\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sql=\"SELECT * FROM customers WHERE city = 'Mumbai';\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;).with_inputs(\"question\"),\n\n&nbsp;&nbsp;&nbsp;&nbsp;dspy.Example(\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;question=\"Count total orders placed in 2025\",\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sql=\"SELECT COUNT(*) FROM orders WHERE YEAR(order_date) = 2025;\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;).with_inputs(\"question\"),\n\n&nbsp;&nbsp;&nbsp;&nbsp;dspy.Example(\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;question=\"Get the top 5 products by sales\",\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sql=\"SELECT product_name, SUM(sales) AS total_sales FROM products GROUP BY product_name ORDER BY total_sales DESC LIMIT 5;\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;).with_inputs(\"question\"),\n\n]<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 6: Apply Optimizer<\/strong><\/h3>\n\n\n\n<p>This is the step where DSPy stands out. The framework is designed to automatically <a href=\"https:\/\/www.guvi.in\/blog\/what-is-prompt-engineering\/\" target=\"_blank\" rel=\"noreferrer noopener\">optimize prompts<\/a> and program behavior using your examples and evaluation signals, instead of relying only on hand-tuned prompt engineering. DSPy explicitly positions this capability as a key difference from prompt-only workflows.&nbsp;&nbsp;<\/p>\n\n\n\n<p>In practical terms, you define your module, prepare examples, and then compile or optimize the program so DSPy can learn a better prompting strategy for the task. This is especially useful in Text-to-SQL, where small changes in wording can greatly affect SQL correctness.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from dspy.teleprompt import BootstrapFewShot\n\noptimizer = BootstrapFewShot()\n\ncompiled_text_to_sql = optimizer.compile(\n\n&nbsp;&nbsp;&nbsp;&nbsp;student=TextToSQLModule(),\n\n&nbsp;&nbsp;&nbsp;&nbsp;trainset=trainset\n\n)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 7: Run the Application<\/strong><\/h3>\n\n\n\n<p>Once optimized, test the app with real queries. The DSPy Text-to-SQL system converts plain English into SQL, which can be displayed, validated, or executed after safety checks. Since SQL is executable, validation is essential in production. DSPy also emphasizes debugging and transparency as systems scale.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>question = \"List the names of customers who placed more than 3 orders\"\n\nresult = compiled_text_to_sql(question=question)\n\nprint(\"Generated SQL:\")\n\nprint(result.sql)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Full Code Example<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\n\nimport dspy\n\nfrom dspy.teleprompt import BootstrapFewShot\n\n# Step 1: Set API key\n\nos.environ&#91;\"OPENAI_API_KEY\"] = \"your_api_key_here\"\n\n# Step 2: Configure LM\n\nlm = dspy.LM(\"openai\/gpt-4o-mini\")\n\ndspy.configure(lm=lm)\n\n# Step 3: Define signature\n\nclass TextToSQL(dspy.Signature):\n\n&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"Convert a natural language question into a valid SQL query.\"\"\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;question: str = dspy.InputField(desc=\"User's natural language database question\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;sql: str = dspy.OutputField(desc=\"Executable SQL query\")\n\n# Step 4: Create module\n\nclass TextToSQLModule(dspy.Module):\n\n&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self):\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super().__init__()\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.generator = dspy.Predict(TextToSQL)\n\n&nbsp;&nbsp;&nbsp;&nbsp;def forward(self, question: str):\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return self.generator(question=question)\n\n# Step 5: Add training examples\n\ntrainset = &#91;\n\n&nbsp;&nbsp;&nbsp;&nbsp;dspy.Example(\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;question=\"Show all customers from Mumbai\",\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sql=\"SELECT * FROM customers WHERE city = 'Mumbai';\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;).with_inputs(\"question\"),\n\n&nbsp;&nbsp;&nbsp;&nbsp;dspy.Example(\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;question=\"Count total orders placed in 2025\",\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sql=\"SELECT COUNT(*) FROM orders WHERE YEAR(order_date) = 2025;\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;).with_inputs(\"question\"),\n\n&nbsp;&nbsp;&nbsp;&nbsp;dspy.Example(\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;question=\"Get the top 5 products by sales\",\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sql=\"SELECT product_name, SUM(sales) AS total_sales FROM products GROUP BY product_name ORDER BY total_sales DESC LIMIT 5;\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;).with_inputs(\"question\"),\n\n]\n\n# Step 6: Apply optimizer\n\noptimizer = BootstrapFewShot()\n\ncompiled_text_to_sql = optimizer.compile(\n\n&nbsp;&nbsp;&nbsp;&nbsp;student=TextToSQLModule(),\n\n&nbsp;&nbsp;&nbsp;&nbsp;trainset=trainset\n\n)\n\n# Step 7: Run the application\n\nquestion = \"List the names of customers who placed more than 3 orders\"\n\nresult = compiled_text_to_sql(question=question)\n\nprint(\"Generated SQL:\")\n\nprint(result.sql)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>DSPy vs Traditional Prompt Engineering<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Feature<\/strong><\/td><td><strong>DSPy<\/strong><\/td><td><strong>Prompt Engineering<\/strong><\/td><\/tr><tr><td>Structure<\/td><td>Programmatic (signatures, modules)<\/td><td>Manual prompt writing<\/td><\/tr><tr><td>Optimization<\/td><td>Automated via optimizers<\/td><td>Manual iteration<\/td><\/tr><tr><td>Scalability<\/td><td>High, modular and reusable<\/td><td>Limited and hard to scale<\/td><\/tr><tr><td>Reliability<\/td><td>Strong, evaluation-driven<\/td><td>Inconsistent and fragile<\/td><\/tr><tr><td>Maintainability<\/td><td>Easy to update components independently<\/td><td>Difficult to manage large prompts<\/td><\/tr><tr><td>Debugging<\/td><td>Structured and traceable<\/td><td>Hard to debug prompt behavior<\/td><\/tr><tr><td>Reusability<\/td><td>High, supports modular pipelines<\/td><td>Low, prompts are often task-specific<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Build production-ready AI applications like Text-to-SQL systems with structured learning and expert guidance. Join HCL GUVI\u2019s <a href=\"https:\/\/www.guvi.in\/mlp\/artificial-intelligence-and-machine-learning\/?utm_source=blog&amp;utm_medium=hyperlink&amp;utm_campaign=what-is-dspy-build-a-text-to-sql-app-with-python-complete-guide\">Artificial Intelligence and Machine Learning Program<\/a> to learn from industry experts and Intel engineers through live online classes, master Python, SQL, ML, MLOps, Generative AI, and Agentic AI, and gain hands-on experience with 20+ industry-grade projects, 1:1 doubt sessions, and placement support with 1000+ hiring partners.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Best Practices for Building a Text-to-SQL App with DSPy<\/strong><\/h2>\n\n\n\n<ul>\n<li><strong>Use Clear and Structured Schema Context: <\/strong>Always provide the <a href=\"https:\/\/www.guvi.in\/blog\/database-management-guide-with-examples\/\">database<\/a> schema (tables, columns, relationships) in a clean and structured format so the model generates accurate SQL without hallucinating fields.<\/li>\n\n\n\n<li><strong>Design Strong Signatures: <\/strong>Define precise input-output contracts in your DSPy signatures to ensure consistent and predictable SQL generation across different queries.<\/li>\n\n\n\n<li><strong>Evaluate Outputs Regularly: <\/strong>Use test datasets and evaluation metrics to continuously monitor accuracy and identify failure patterns.<\/li>\n\n\n\n<li><strong>Keep Modules Modular and Reusable: <\/strong>Break your pipeline into smaller DSPy modules so you can <a href=\"https:\/\/www.guvi.in\/blog\/debugging-in-software-development\/\">debug<\/a> and scale components independently.<\/li>\n\n\n\n<li><strong>Handle Edge Cases and Ambiguity: <\/strong>Add fallback logic or clarification steps when user queries are vague or incomplete.<\/li>\n\n\n\n<li><strong>Optimize for SQL Dialect Compatibility: <\/strong>Ensure generated queries match your database system (MySQL, <a href=\"https:\/\/ftp.guvi.in\/hub\/linux-guide-tutorial\/install-postgresql-on-debian-9\/\" target=\"_blank\" rel=\"noopener\">PostgreSQL<\/a>, etc.) to avoid syntax errors in production.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p>Building a Text-to-SQL app with DSPy demonstrates how structured LLM programming outperforms traditional <a href=\"https:\/\/www.guvi.in\/blog\/chatgpt-prompt-engineering-for-developers\/\">prompt engineering<\/a>. By using signatures, modules, and optimizers, you can create scalable and reliable AI systems. As AI adoption grows, frameworks like DSPy will become essential for production-ready applications.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>FAQs<\/strong><\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1775776417028\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>What is DSPy used for?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>DSPy is used to build structured, reliable LLM applications such as chatbots, RAG systems, and Text-to-SQL tools.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1775776431319\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>Is DSPy better than prompt engineering?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes, for production use cases because it enables automation and scalability.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1775776446768\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>Do I need SQL knowledge for Text-to-SQL apps?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Basic SQL understanding is recommended to validate outputs.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1775776463368\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>Can DSPy be used with any LLM?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes, DSPy supports multiple LLM providers through configurable interfaces.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Quick Answer: DSPy (Declarative Self-improving Python) is a framework that helps developers build reliable LLM applications by structuring prompts as programs instead of raw text. It enables automatic optimization, modular design, and evaluation-driven improvements. Using DSPy, you can build a Text-to-SQL app in Python that converts natural language queries into accurate SQL by defining modules, [&hellip;]<\/p>\n","protected":false},"author":60,"featured_media":106605,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[933],"tags":[],"views":"30","authorinfo":{"name":"Vaishali","url":"https:\/\/www.guvi.in\/blog\/author\/vaishali\/"},"thumbnailURL":"https:\/\/www.guvi.in\/blog\/wp-content\/uploads\/2026\/04\/DSPy-300x112.webp","jetpack_featured_media_url":"https:\/\/www.guvi.in\/blog\/wp-content\/uploads\/2026\/04\/DSPy.webp","_links":{"self":[{"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/posts\/106533"}],"collection":[{"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/users\/60"}],"replies":[{"embeddable":true,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/comments?post=106533"}],"version-history":[{"count":4,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/posts\/106533\/revisions"}],"predecessor-version":[{"id":106621,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/posts\/106533\/revisions\/106621"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/media\/106605"}],"wp:attachment":[{"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/media?parent=106533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/categories?post=106533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/tags?post=106533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}