{"id":53744,"date":"2025-08-31T16:40:05","date_gmt":"2025-08-31T06:40:05","guid":{"rendered":"https:\/\/www.cloudproinc.com.au\/?p=53744"},"modified":"2025-08-31T16:43:47","modified_gmt":"2025-08-31T06:43:47","slug":"extracting-structured-data-with-openai","status":"publish","type":"post","link":"https:\/\/cloudproinc.com.au\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/","title":{"rendered":"Extracting Structured Data with OpenAI"},"content":{"rendered":"\n<p>In this blog post Extracting Structured Data with OpenAI for Real-World Pipelines we will turn unstructured content into trustworthy, structured JSON you can store, query, and automate against.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Whether you process invoices, support emails, resumes, or contracts, the goal is the same: capture key fields accurately and repeatably. We\u2019ll start with a high-level view of how it works, then move into practical steps, robust prompting, and production-ready code patterns in JavaScript and <a href=\"https:\/\/www.cloudproinc.com.au\/index.php\/category\/python\/\">Python<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-structured-extraction-means-and-why-it-matters\">What structured extraction means and why it matters<\/h2>\n\n\n\n<p>Structured extraction converts messy text (PDFs, emails, chat logs) into a predictable shape (think JSON). For example, from an invoice you might extract vendor name, invoice number, dates, totals, and line items. From a support ticket, you might extract customer, product, category, and severity.<\/p>\n\n\n\n<p>Why it matters:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Search and analytics: Query fields directly instead of scraping text every time.<\/li>\n\n\n\n<li>Automation: Trigger workflows when a field changes (e.g., auto-create a payment).<\/li>\n\n\n\n<li>Data quality: Validate fields, enforce types, and catch anomalies early.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-technology-behind-it\">The technology behind it<\/h2>\n\n\n\n<p>OpenAI\u2019s models are strong at reading context and following instructions. Two capabilities make structured extraction reliable:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Tool (function) calling:<\/strong> You define a function with a JSON Schema-like set of parameters. The model chooses to \u201ccall\u201d that function by returning a JSON payload that conforms to your schema. This gives you typed, structured outputs.<\/li>\n\n\n\n<li><strong>JSON-only responses:<\/strong> You can instruct the model to return only JSON, making parsing straightforward. Pair this with validation and you get both flexibility and control.<\/li>\n<\/ul>\n\n\n\n<p>In short, the model interprets the text, fills in your schema, and you validate the result. Deterministic structure, non-deterministic content\u2014safely harnessed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-design-your-schema-first\">Design your schema first<\/h2>\n\n\n\n<p>Start by deciding exactly what you want to capture. Keep it minimal, typed, and explicit about unknowns.<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-4cea2fdced4099a813f895b6c0ae94b1\"><code>{\n  \"type\": \"object\",\n  \"properties\": {\n    \"vendor_name\": {\"type\": \"string\"},\n    \"invoice_number\": {\"type\": \"string\"},\n    \"invoice_date\": {\"type\": \"string\", \"format\": \"date\"},\n    \"due_date\": {\"type\": \"string\", \"format\": \"date\"},\n    \"currency\": {\"type\": \"string\", \"enum\": &#91;\"AUD\", \"USD\", \"EUR\", \"GBP\"]},\n    \"total\": {\"type\": \"number\"},\n    \"line_items\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"description\": {\"type\": \"string\"},\n          \"quantity\": {\"type\": \"number\"},\n          \"unit_price\": {\"type\": \"number\"}\n        },\n        \"required\": &#91;\"description\", \"quantity\", \"unit_price\"]\n      }\n    }\n  },\n  \"required\": &#91;\"vendor_name\", \"invoice_number\", \"invoice_date\", \"currency\", \"total\"]\n}\n<\/code><\/pre>\n\n\n\n<p>Guidelines:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use nullable fields when values may be missing.<\/li>\n\n\n\n<li>Keep numbers as numbers, dates as dates (ISO 8601), and enums tight.<\/li>\n\n\n\n<li>Avoid optional fields that you don\u2019t need\u2014the more focused, the better.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-prompting-patterns-that-work\">Prompting patterns that work<\/h2>\n\n\n\n<p>Great extraction is 50% schema, 50% instruction. A reliable pattern:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tell the model what the document is and what you need.<\/li>\n\n\n\n<li>State handling for unknown or conflicting information (return null, not guesses).<\/li>\n\n\n\n<li>Insist on valid JSON only\u2014no extra text.<\/li>\n\n\n\n<li>Provide 1\u20132 short examples if your data is quirky.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-b188636ab8c0ef9e8bf701481d83593b\"><code>System: You extract structured data from business documents.\n- Output must be valid JSON matching the provided schema.\n- Use null if a field is unknown or not present.\n- Do not add extra keys.\n- Do not include any explanation outside JSON.\n\nUser: Extract fields from this invoice text:\n\"\"\"\nInvoice No: INV-2087\nVendor: Acme Parts Pty Ltd\nInvoice Date: 2025-04-11\nDue: 2025-05-11\nCurrency: AUD\nItems: Widget A x 5 @ 19.95; Widget B x 2 @ 99.00\nTotal: 278.75\n\"\"\"\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-code-example-with-tool-calling-javascript\">Code example with tool calling (JavaScript)<\/h2>\n\n\n\n<p>This pattern uses Chat Completions with a function tool so the model returns typed arguments.<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-a2dd9dbf32b73ccf963e043adb4eac89\"><code>import OpenAI from \"openai\";\n\nconst client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });\n\nconst schema = {\n  type: \"object\",\n  properties: {\n    vendor_name: { type: \"string\" },\n    invoice_number: { type: \"string\" },\n    invoice_date: { type: \"string\" },\n    due_date: { type: \"string\" },\n    currency: { type: \"string\" },\n    total: { type: \"number\" },\n    line_items: {\n      type: \"array\",\n      items: {\n        type: \"object\",\n        properties: {\n          description: { type: \"string\" },\n          quantity: { type: \"number\" },\n          unit_price: { type: \"number\" }\n        },\n        required: &#91;\"description\", \"quantity\", \"unit_price\"]\n      }\n    }\n  },\n  required: &#91;\"vendor_name\", \"invoice_number\", \"invoice_date\", \"currency\", \"total\"]\n};\n\nasync function extractInvoice(text) {\n  const completion = await client.chat.completions.create({\n    model: \"gpt-4o-mini\",\n    messages: &#91;\n      {\n        role: \"system\",\n        content: \"You extract structured data. Use null for unknown fields.\"\n      },\n      { role: \"user\", content: text }\n    ],\n    tools: &#91;\n      {\n        type: \"function\",\n        function: {\n          name: \"record_invoice\",\n          description: \"Return structured invoice fields\",\n          parameters: schema\n        }\n      }\n    ],\n    tool_choice: \"auto\"\n  });\n\n  const message = completion.choices&#91;0].message;\n  const call = message.tool_calls &amp;&amp; message.tool_calls&#91;0];\n  if (!call) throw new Error(\"Model did not return a tool call\");\n  return JSON.parse(call.function.arguments);\n}\n\n\/\/ Example usage\nconst text = `Invoice No: INV-2087\\nVendor: Acme Parts Pty Ltd\\nInvoice Date: 2025-04-11\\nDue: 2025-05-11\\nCurrency: AUD\\nItems: Widget A x 5 @ 19.95; Widget B x 2 @ 99.00\\nTotal: 278.75`;\nextractInvoice(text).then(console.log);\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-code-example-with-tool-calling-python\">Code example with tool calling (Python)<\/h2>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-8904ce04882db3232e983f0b7219ae46\"><code>from openai import OpenAI\nimport json\n\nclient = OpenAI()\n\nschema = {\n    \"type\": \"object\",\n    \"properties\": {\n        \"vendor_name\": {\"type\": \"string\"},\n        \"invoice_number\": {\"type\": \"string\"},\n        \"invoice_date\": {\"type\": \"string\"},\n        \"due_date\": {\"type\": \"string\"},\n        \"currency\": {\"type\": \"string\"},\n        \"total\": {\"type\": \"number\"},\n        \"line_items\": {\n            \"type\": \"array\",\n            \"items\": {\n                \"type\": \"object\",\n                \"properties\": {\n                    \"description\": {\"type\": \"string\"},\n                    \"quantity\": {\"type\": \"number\"},\n                    \"unit_price\": {\"type\": \"number\"}\n                },\n                \"required\": &#91;\"description\", \"quantity\", \"unit_price\"]\n            }\n        }\n    },\n    \"required\": &#91;\"vendor_name\", \"invoice_number\", \"invoice_date\", \"currency\", \"total\"]\n}\n\nmessages = &#91;\n    {\"role\": \"system\", \"content\": \"You extract structured data. Use null for unknown fields.\"},\n    {\"role\": \"user\", \"content\": \"Invoice No: INV-2087\\nVendor: Acme Parts Pty Ltd\\nInvoice Date: 2025-04-11\\nDue: 2025-05-11\\nCurrency: AUD\\nItems: Widget A x 5 @ 19.95; Widget B x 2 @ 99.00\\nTotal: 278.75\"}\n]\n\nresp = client.chat.completions.create(\n    model=\"gpt-4o-mini\",\n    messages=messages,\n    tools=&#91;{\n        \"type\": \"function\",\n        \"function\": {\n            \"name\": \"record_invoice\",\n            \"description\": \"Return structured invoice fields\",\n            \"parameters\": schema\n        }\n    }],\n    tool_choice=\"auto\"\n)\n\ncall = resp.choices&#91;0].message.tool_calls&#91;0]\nrecord = json.loads(call.function.arguments)\nprint(record)\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-validate-and-post-process\">Validate and post-process<\/h2>\n\n\n\n<p>Always validate model output before using it. A schema validator helps you catch mistakes early.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-javascript-validation-with-ajv\">JavaScript validation with Ajv<\/h3>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-c37fd9447e9dadf7f7a8fdd6441177f6\"><code>\/\/ npm i ajv\nimport Ajv from \"ajv\";\nconst ajv = new Ajv({ allErrors: true, strict: false });\nconst validate = ajv.compile(schema);\n\nconst data = await extractInvoice(text);\nif (!validate(data)) {\n  console.error(validate.errors);\n  \/\/ handle fallback, retry with stricter prompt, or alert for review\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-python-validation-with-jsonschema\">Python validation with jsonschema<\/h3>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-855138db1d74c5d5eee3499539b85ff1\"><code># pip install jsonschema\nfrom jsonschema import validate, ValidationError\n\ntry:\n    validate(instance=record, schema=schema)\nexcept ValidationError as e:\n    print(\"Validation failed:\", e.message)\n    # fallback, retry, or route to human review\n<\/code><\/pre>\n\n\n\n<p>Post-processing tips:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Normalize dates to YYYY-MM-DD.<\/li>\n\n\n\n<li>Round currency to two decimals; verify totals equal sum(line_items).<\/li>\n\n\n\n<li>Use regexes to cross-check fields like invoice numbers or ABNs.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-handling-long-or-messy-documents\">Handling long or messy documents<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Chunking:<\/strong> Split large docs by sections (headings, pages). Extract per chunk, then reconcile.<\/li>\n\n\n\n<li><strong>Priority zones:<\/strong> Use heuristics (e.g., sections near \u201cInvoice\u201d, \u201cTotal\u201d) to bias extraction.<\/li>\n\n\n\n<li><strong>Vision\/OCR:<\/strong> If you have images or scanned PDFs, run OCR first, or use a multimodal model that can read images and text.<\/li>\n\n\n\n<li><strong>Conflict resolution:<\/strong> If chunks disagree, prefer the most recent date or the chunk with higher confidence (e.g., presence of currency and totals together).<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-b5aa7eb9ab9a542d0071728edb918fef\"><code>\/\/ Pseudo-chunking\nconst chunks = splitByPageOrHeading(docText);\nconst partials = await Promise.all(chunks.map(extractInvoice));\nconst merged = reconcile(partials); \/\/ e.g., pick non-null fields, verify totals\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-reliability-patterns\">Reliability patterns<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Few-shot grounding:<\/strong> Include a minimal example of input \u2192 output to reduce ambiguity.<\/li>\n\n\n\n<li><strong>Null over guess:<\/strong> Encourage nulls when uncertain; better for data quality.<\/li>\n\n\n\n<li><strong>Retries with variation:<\/strong> On validation failure, retry with a nudge (e.g., \u201cTotal must equal sum of items\u201d).<\/li>\n\n\n\n<li><strong>Human-in-the-loop:<\/strong> Route edge cases to review; log diffs between model and human corrections to improve prompts.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cost-and-model-choices\">Cost and model choices<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Start small:<\/strong> For extraction, lighter models like gpt-4o-mini are often sufficient and cost-effective.<\/li>\n\n\n\n<li><strong>Upgrade when needed:<\/strong> If you see frequent nulls or errors on complex docs, try a stronger model (e.g., gpt-4o).<\/li>\n\n\n\n<li><strong>Batching and streaming:<\/strong> Process documents in parallel within rate limits; use backoff with jitter.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-security-and-governance\">Security and governance<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Redact PII you don\u2019t need before sending to the model.<\/li>\n\n\n\n<li>Log only what\u2019s required; mask secrets in observability tools.<\/li>\n\n\n\n<li>If data residency matters, consider a regional deployment option that meets your compliance needs (for Australian workloads, ensure your provider supports AU regions).<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-putting-it-all-together\">Putting it all together<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Define a tight JSON schema.<\/li>\n\n\n\n<li>Write a clear, firm prompt (nulls over guesses, JSON only).<\/li>\n\n\n\n<li>Use tool calling to enforce structure.<\/li>\n\n\n\n<li>Validate outputs; add post-processing rules.<\/li>\n\n\n\n<li>Handle long docs with chunking and reconciliation.<\/li>\n\n\n\n<li>Monitor quality, add retries, and include human review for edge cases.<\/li>\n\n\n\n<li>Optimize cost and ensure security\/compliance.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2>\n\n\n\n<p>Structured extraction doesn\u2019t have to be fragile. With a focused schema, crisp instructions, and OpenAI\u2019s tool calling, you can turn unstructured text into reliable JSON and wire it into your operational systems. Start small, validate everything, and iterate toward the accuracy your business needs.<\/p>\n\n\n\n<ul class=\"wp-block-yoast-seo-related-links yoast-seo-related-links\">\n<li><a href=\"https:\/\/cloudproinc.com.au\/index.php\/2025\/04\/28\/creating-an-mcp-server-in-c-to-call-openai-and-list-files\/\">Creating an MCP Server in C# to Call OpenAI and List Files<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.cloudproinc.com.au\/index.php\/2025\/08\/26\/graphrag-explained\/\">GraphRAG Explained<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.cloudproinc.com.au\/index.php\/2024\/07\/22\/extract-text-from-images-using-azure-ai-vision\/\">Extract Text from Images Using Azure AI Vision<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.cloudproinc.com.au\/index.php\/2024\/10\/14\/auto-generate-azure-bearer-token-with-postman\/\">Auto-Generate Azure Bearer Token with Postman<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.cloudproinc.com.au\/index.php\/2024\/10\/15\/set-timezone-on-computers-with-microsoft-intune-and-graph-api\/\">Set TimeZone on Computers with Microsoft Intune and Graph API<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Turn messy text into clean JSON using OpenAI. Learn schema design, prompting, validation, and code patterns for reliable extraction at scale.<\/p>\n","protected":false},"author":1,"featured_media":53748,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_focuskw":"Extracting Structured Data with OpenAI","_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"Learn about Extracting Structured Data with OpenAI to convert unstructured content into reliable JSON for various applications.","_yoast_wpseo_opengraph-title":"","_yoast_wpseo_opengraph-description":"","_yoast_wpseo_twitter-title":"","_yoast_wpseo_twitter-description":"","_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[24,13,53],"tags":[],"class_list":["post-53744","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-blog","category-openai"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Extracting Structured Data with OpenAI - CPI Consulting<\/title>\n<meta name=\"description\" content=\"Learn about Extracting Structured Data with OpenAI to convert unstructured content into reliable JSON for various applications.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Extracting Structured Data with OpenAI\" \/>\n<meta property=\"og:description\" content=\"Learn about Extracting Structured Data with OpenAI to convert unstructured content into reliable JSON for various applications.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/\" \/>\n<meta property=\"og:site_name\" content=\"CPI Consulting\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-31T06:40:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-31T06:43:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cloudproinc.com.au\/wp-content\/uploads\/2025\/08\/extracting-structured-data-with-openai-1024x683.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"683\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"CPI Staff\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"CPI Staff\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/index.php\\\/2025\\\/08\\\/31\\\/extracting-structured-data-with-openai\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/index.php\\\/2025\\\/08\\\/31\\\/extracting-structured-data-with-openai\\\/\"},\"author\":{\"name\":\"CPI Staff\",\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/#\\\/schema\\\/person\\\/192eeeb0ce91062126ce3822ae88fe6e\"},\"headline\":\"Extracting Structured Data with OpenAI\",\"datePublished\":\"2025-08-31T06:40:05+00:00\",\"dateModified\":\"2025-08-31T06:43:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/index.php\\\/2025\\\/08\\\/31\\\/extracting-structured-data-with-openai\\\/\"},\"wordCount\":833,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/index.php\\\/2025\\\/08\\\/31\\\/extracting-structured-data-with-openai\\\/#primaryimage\"},\"thumbnailUrl\":\"\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/extracting-structured-data-with-openai.png\",\"articleSection\":[\"AI\",\"Blog\",\"OpenAI\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/index.php\\\/2025\\\/08\\\/31\\\/extracting-structured-data-with-openai\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/index.php\\\/2025\\\/08\\\/31\\\/extracting-structured-data-with-openai\\\/\",\"url\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/index.php\\\/2025\\\/08\\\/31\\\/extracting-structured-data-with-openai\\\/\",\"name\":\"Extracting Structured Data with OpenAI - CPI Consulting\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/index.php\\\/2025\\\/08\\\/31\\\/extracting-structured-data-with-openai\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/index.php\\\/2025\\\/08\\\/31\\\/extracting-structured-data-with-openai\\\/#primaryimage\"},\"thumbnailUrl\":\"\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/extracting-structured-data-with-openai.png\",\"datePublished\":\"2025-08-31T06:40:05+00:00\",\"dateModified\":\"2025-08-31T06:43:47+00:00\",\"description\":\"Learn about Extracting Structured Data with OpenAI to convert unstructured content into reliable JSON for various applications.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/index.php\\\/2025\\\/08\\\/31\\\/extracting-structured-data-with-openai\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/index.php\\\/2025\\\/08\\\/31\\\/extracting-structured-data-with-openai\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/index.php\\\/2025\\\/08\\\/31\\\/extracting-structured-data-with-openai\\\/#primaryimage\",\"url\":\"\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/extracting-structured-data-with-openai.png\",\"contentUrl\":\"\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/extracting-structured-data-with-openai.png\",\"width\":1536,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/index.php\\\/2025\\\/08\\\/31\\\/extracting-structured-data-with-openai\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/cloudproinc.com.au\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extracting Structured Data with OpenAI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/#website\",\"url\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/\",\"name\":\"Cloud Pro Inc - CPI Consulting Pty Ltd\",\"description\":\"Cloud, AI &amp; Cybersecurity Consulting | Melbourne\",\"publisher\":{\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/#organization\",\"name\":\"Cloud Pro Inc - Cloud Pro Inc - CPI Consulting Pty Ltd\",\"url\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/favfinalfile.png\",\"contentUrl\":\"\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/favfinalfile.png\",\"width\":500,\"height\":500,\"caption\":\"Cloud Pro Inc - Cloud Pro Inc - CPI Consulting Pty Ltd\"},\"image\":{\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/cloudproinc.azurewebsites.net\\\/#\\\/schema\\\/person\\\/192eeeb0ce91062126ce3822ae88fe6e\",\"name\":\"CPI Staff\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2d96eeb53b791d92c8c50dd667e3beec92c93253bb6ff21c02cfa8ca73665c70?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2d96eeb53b791d92c8c50dd667e3beec92c93253bb6ff21c02cfa8ca73665c70?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2d96eeb53b791d92c8c50dd667e3beec92c93253bb6ff21c02cfa8ca73665c70?s=96&d=mm&r=g\",\"caption\":\"CPI Staff\"},\"sameAs\":[\"http:\\\/\\\/www.cloudproinc.com.au\"],\"url\":\"https:\\\/\\\/cloudproinc.com.au\\\/index.php\\\/author\\\/cpiadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Extracting Structured Data with OpenAI - CPI Consulting","description":"Learn about Extracting Structured Data with OpenAI to convert unstructured content into reliable JSON for various applications.","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:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/","og_locale":"en_US","og_type":"article","og_title":"Extracting Structured Data with OpenAI","og_description":"Learn about Extracting Structured Data with OpenAI to convert unstructured content into reliable JSON for various applications.","og_url":"https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/","og_site_name":"CPI Consulting","article_published_time":"2025-08-31T06:40:05+00:00","article_modified_time":"2025-08-31T06:43:47+00:00","og_image":[{"width":1024,"height":683,"url":"https:\/\/cloudproinc.com.au\/wp-content\/uploads\/2025\/08\/extracting-structured-data-with-openai-1024x683.png","type":"image\/png"}],"author":"CPI Staff","twitter_card":"summary_large_image","twitter_misc":{"Written by":"CPI Staff","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/#article","isPartOf":{"@id":"https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/"},"author":{"name":"CPI Staff","@id":"https:\/\/cloudproinc.azurewebsites.net\/#\/schema\/person\/192eeeb0ce91062126ce3822ae88fe6e"},"headline":"Extracting Structured Data with OpenAI","datePublished":"2025-08-31T06:40:05+00:00","dateModified":"2025-08-31T06:43:47+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/"},"wordCount":833,"commentCount":0,"publisher":{"@id":"https:\/\/cloudproinc.azurewebsites.net\/#organization"},"image":{"@id":"https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2025\/08\/extracting-structured-data-with-openai.png","articleSection":["AI","Blog","OpenAI"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/","url":"https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/","name":"Extracting Structured Data with OpenAI - CPI Consulting","isPartOf":{"@id":"https:\/\/cloudproinc.azurewebsites.net\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/#primaryimage"},"image":{"@id":"https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2025\/08\/extracting-structured-data-with-openai.png","datePublished":"2025-08-31T06:40:05+00:00","dateModified":"2025-08-31T06:43:47+00:00","description":"Learn about Extracting Structured Data with OpenAI to convert unstructured content into reliable JSON for various applications.","breadcrumb":{"@id":"https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/#primaryimage","url":"\/wp-content\/uploads\/2025\/08\/extracting-structured-data-with-openai.png","contentUrl":"\/wp-content\/uploads\/2025\/08\/extracting-structured-data-with-openai.png","width":1536,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/cloudproinc.azurewebsites.net\/index.php\/2025\/08\/31\/extracting-structured-data-with-openai\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudproinc.com.au\/"},{"@type":"ListItem","position":2,"name":"Extracting Structured Data with OpenAI"}]},{"@type":"WebSite","@id":"https:\/\/cloudproinc.azurewebsites.net\/#website","url":"https:\/\/cloudproinc.azurewebsites.net\/","name":"Cloud Pro Inc - CPI Consulting Pty Ltd","description":"Cloud, AI &amp; Cybersecurity Consulting | Melbourne","publisher":{"@id":"https:\/\/cloudproinc.azurewebsites.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudproinc.azurewebsites.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudproinc.azurewebsites.net\/#organization","name":"Cloud Pro Inc - Cloud Pro Inc - CPI Consulting Pty Ltd","url":"https:\/\/cloudproinc.azurewebsites.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudproinc.azurewebsites.net\/#\/schema\/logo\/image\/","url":"\/wp-content\/uploads\/2022\/01\/favfinalfile.png","contentUrl":"\/wp-content\/uploads\/2022\/01\/favfinalfile.png","width":500,"height":500,"caption":"Cloud Pro Inc - Cloud Pro Inc - CPI Consulting Pty Ltd"},"image":{"@id":"https:\/\/cloudproinc.azurewebsites.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/cloudproinc.azurewebsites.net\/#\/schema\/person\/192eeeb0ce91062126ce3822ae88fe6e","name":"CPI Staff","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/2d96eeb53b791d92c8c50dd667e3beec92c93253bb6ff21c02cfa8ca73665c70?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2d96eeb53b791d92c8c50dd667e3beec92c93253bb6ff21c02cfa8ca73665c70?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2d96eeb53b791d92c8c50dd667e3beec92c93253bb6ff21c02cfa8ca73665c70?s=96&d=mm&r=g","caption":"CPI Staff"},"sameAs":["http:\/\/www.cloudproinc.com.au"],"url":"https:\/\/cloudproinc.com.au\/index.php\/author\/cpiadmin\/"}]}},"jetpack_featured_media_url":"\/wp-content\/uploads\/2025\/08\/extracting-structured-data-with-openai.png","jetpack-related-posts":[{"id":53956,"url":"https:\/\/cloudproinc.com.au\/index.php\/2025\/09\/25\/running-prompts-with-langchain\/","url_meta":{"origin":53744,"position":0},"title":"Running Prompts with LangChain","author":"CPI Staff","date":"September 25, 2025","format":false,"excerpt":"Learn how to design, run, and evaluate prompts with LangChain using modern patterns, from simple templates to retrieval and production-ready chains.","rel":"","context":"In &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/cloudproinc.com.au\/index.php\/category\/ai\/"},"img":{"alt_text":"","src":"\/wp-content\/uploads\/2025\/09\/running-prompts-with-langchain-a-practical-guide-for-teams-and-leaders.png","width":350,"height":200,"srcset":"\/wp-content\/uploads\/2025\/09\/running-prompts-with-langchain-a-practical-guide-for-teams-and-leaders.png 1x, \/wp-content\/uploads\/2025\/09\/running-prompts-with-langchain-a-practical-guide-for-teams-and-leaders.png 1.5x, \/wp-content\/uploads\/2025\/09\/running-prompts-with-langchain-a-practical-guide-for-teams-and-leaders.png 2x, \/wp-content\/uploads\/2025\/09\/running-prompts-with-langchain-a-practical-guide-for-teams-and-leaders.png 3x, \/wp-content\/uploads\/2025\/09\/running-prompts-with-langchain-a-practical-guide-for-teams-and-leaders.png 4x"},"classes":[]},{"id":53614,"url":"https:\/\/cloudproinc.com.au\/index.php\/2025\/08\/14\/turn-wordpress-posts-into-voice-blogs-with-python-openai-tts\/","url_meta":{"origin":53744,"position":1},"title":"Turn WordPress Posts into \u201cVoice Blogs\u201d with Python + OpenAI TTS","author":"CPI Staff","date":"August 14, 2025","format":false,"excerpt":"This blog post, \"Turn WordPress Posts into \u201cVoice Blogs\u201d with Python + OpenAI TTS\" will show you how to pull posts from a WordPress site via the REST API, converts the article content to speech using OpenAI\u2019s Text-to-Speech (TTS), saves an MP3, and (optionally) uploads the file back to your\u2026","rel":"","context":"In &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/cloudproinc.com.au\/index.php\/category\/ai\/"},"img":{"alt_text":"","src":"\/wp-content\/uploads\/2025\/08\/turn-wordpress-posts-into-voice-blogs-with-python-openai-tts-1.png","width":350,"height":200,"srcset":"\/wp-content\/uploads\/2025\/08\/turn-wordpress-posts-into-voice-blogs-with-python-openai-tts-1.png 1x, \/wp-content\/uploads\/2025\/08\/turn-wordpress-posts-into-voice-blogs-with-python-openai-tts-1.png 1.5x, \/wp-content\/uploads\/2025\/08\/turn-wordpress-posts-into-voice-blogs-with-python-openai-tts-1.png 2x, \/wp-content\/uploads\/2025\/08\/turn-wordpress-posts-into-voice-blogs-with-python-openai-tts-1.png 3x, \/wp-content\/uploads\/2025\/08\/turn-wordpress-posts-into-voice-blogs-with-python-openai-tts-1.png 4x"},"classes":[]},{"id":53709,"url":"https:\/\/cloudproinc.com.au\/index.php\/2025\/08\/26\/graphrag-explained\/","url_meta":{"origin":53744,"position":2},"title":"GraphRAG Explained","author":"CPI Staff","date":"August 26, 2025","format":false,"excerpt":"GraphRAG combines knowledge graphs with RAG to retrieve structured, multi-hop context for LLMs. Learn how it works and how to build one.","rel":"","context":"In &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/cloudproinc.com.au\/index.php\/category\/ai\/"},"img":{"alt_text":"","src":"\/wp-content\/uploads\/2025\/08\/graphrag-explained.png","width":350,"height":200,"srcset":"\/wp-content\/uploads\/2025\/08\/graphrag-explained.png 1x, \/wp-content\/uploads\/2025\/08\/graphrag-explained.png 1.5x, \/wp-content\/uploads\/2025\/08\/graphrag-explained.png 2x, \/wp-content\/uploads\/2025\/08\/graphrag-explained.png 3x, \/wp-content\/uploads\/2025\/08\/graphrag-explained.png 4x"},"classes":[]},{"id":57149,"url":"https:\/\/cloudproinc.com.au\/index.php\/2026\/02\/24\/deepseek-moonshot-and-minimax-caught-copying-claude-what-anthropic-used\/","url_meta":{"origin":53744,"position":3},"title":"DeepSeek, Moonshot and MiniMax Caught Copying Claude What Anthropic Used","author":"CPI Staff","date":"February 24, 2026","format":false,"excerpt":"Anthropic says it caught large-scale \u201cdistillation\u201d campaigns targeting Claude. Here\u2019s the plain-English tech behind the detection, and what it means for teams building or buying AI.","rel":"","context":"In &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/cloudproinc.com.au\/index.php\/category\/ai\/"},"img":{"alt_text":"","src":"\/wp-content\/uploads\/2026\/02\/post-36.png","width":350,"height":200,"srcset":"\/wp-content\/uploads\/2026\/02\/post-36.png 1x, \/wp-content\/uploads\/2026\/02\/post-36.png 1.5x, \/wp-content\/uploads\/2026\/02\/post-36.png 2x, \/wp-content\/uploads\/2026\/02\/post-36.png 3x, \/wp-content\/uploads\/2026\/02\/post-36.png 4x"},"classes":[]},{"id":57005,"url":"https:\/\/cloudproinc.com.au\/index.php\/2026\/02\/09\/openai-docs-mcp-server\/","url_meta":{"origin":53744,"position":4},"title":"OpenAI Docs MCP Server","author":"CPI Staff","date":"February 9, 2026","format":false,"excerpt":"Learn how the OpenAI Docs MCP Server brings official documentation into your editor or agent context, so teams ship faster with fewer interruptions and more reliable answers.","rel":"","context":"In &quot;Blog&quot;","block_context":{"text":"Blog","link":"https:\/\/cloudproinc.com.au\/index.php\/category\/blog\/"},"img":{"alt_text":"","src":"\/wp-content\/uploads\/2026\/02\/post-17.png","width":350,"height":200,"srcset":"\/wp-content\/uploads\/2026\/02\/post-17.png 1x, \/wp-content\/uploads\/2026\/02\/post-17.png 1.5x, \/wp-content\/uploads\/2026\/02\/post-17.png 2x, \/wp-content\/uploads\/2026\/02\/post-17.png 3x, \/wp-content\/uploads\/2026\/02\/post-17.png 4x"},"classes":[]},{"id":53960,"url":"https:\/\/cloudproinc.com.au\/index.php\/2025\/09\/25\/langchain-architecture-explained\/","url_meta":{"origin":53744,"position":5},"title":"LangChain Architecture Explained","author":"CPI Staff","date":"September 25, 2025","format":false,"excerpt":"A practical tour of LangChain\u2019s building blocks\u2014models, prompts, chains, memory, tools, and RAG\u2014plus LCEL, tracing, and deployment tips for production AI apps.","rel":"","context":"In &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/cloudproinc.com.au\/index.php\/category\/ai\/"},"img":{"alt_text":"","src":"\/wp-content\/uploads\/2025\/09\/langchain-architecture-explained-for-agents-rag-and-production-apps.png","width":350,"height":200,"srcset":"\/wp-content\/uploads\/2025\/09\/langchain-architecture-explained-for-agents-rag-and-production-apps.png 1x, \/wp-content\/uploads\/2025\/09\/langchain-architecture-explained-for-agents-rag-and-production-apps.png 1.5x, \/wp-content\/uploads\/2025\/09\/langchain-architecture-explained-for-agents-rag-and-production-apps.png 2x, \/wp-content\/uploads\/2025\/09\/langchain-architecture-explained-for-agents-rag-and-production-apps.png 3x, \/wp-content\/uploads\/2025\/09\/langchain-architecture-explained-for-agents-rag-and-production-apps.png 4x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/posts\/53744","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/comments?post=53744"}],"version-history":[{"count":2,"href":"https:\/\/cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/posts\/53744\/revisions"}],"predecessor-version":[{"id":53747,"href":"https:\/\/cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/posts\/53744\/revisions\/53747"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/media\/53748"}],"wp:attachment":[{"href":"https:\/\/cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/media?parent=53744"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/categories?post=53744"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudproinc.com.au\/index.php\/wp-json\/wp\/v2\/tags?post=53744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}