{"id":110299,"date":"2026-05-27T12:00:00","date_gmt":"2026-05-27T12:00:00","guid":{"rendered":"https:\/\/www.red-gate.com\/simple-talk\/?p=110299"},"modified":"2026-05-13T16:01:53","modified_gmt":"2026-05-13T16:01:53","slug":"the-llm-layer-youre-probably-missing-llm-gateway-pattern-explained","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/ai\/the-llm-layer-youre-probably-missing-llm-gateway-pattern-explained\/","title":{"rendered":"The LLM layer you&#8217;re probably missing (LLM gateway pattern explained)"},"content":{"rendered":"\n<p><strong>The LLM gateway pattern is a thin service layer that sits between your app and large language model (LLM) providers, centralizing every AI call through a single entry point. It gives you immediate control over routing, logging, retries, fallbacks, and cost tracking &#8211; preventing the chaos of scattered integrations, unclear billing, and provider lock-in as your system scales.<\/strong> <strong>Learn all you need to know about the LLM gateway pattern in this article.<\/strong><\/p>\n\n\n\n<p>Every development team reaches a critical juncture. You\u2019re able to make your first call to a <a href=\"https:\/\/www.red-gate.com\/simple-talk\/ai\/when-and-when-not-to-use-llms-in-your-data-pipeline\/\" target=\"_blank\" rel=\"noreferrer noopener\">large language model (LLM)<\/a> directly in your application code. Everything&#8217;s going to plan and everyone is happy. Three months later, though, you&#8217;ve found yourselves in a situation where five distinct services are independently communicating with the <a href=\"https:\/\/www.red-gate.com\/simple-talk\/sysadmin\/general\/api-monitoring-key-metrics-and-best-practices\/\" target=\"_blank\" rel=\"noreferrer noopener\">application programming interface (API)<\/a>. <\/p>\n\n\n\n<p>There are four disparate retry implementations, no shared logging mechanisms, and you have an unexpected billing issue to solve at the end of the month. Worst of all, the billing issue arose independently, with no clear attribution to any specific feature.<\/p>\n\n\n\n<p>That&#8217;s where the gateway pattern comes along and saves the day. It\u2019s an architectural decision that may seem unnecessary &#8211; and therefore is often left out until it\u2019s too late &#8211; but its value cannot be understated.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-is-the-llm-gateway-pattern\">What is the LLM gateway pattern?<\/h2>\n\n\n\n<p><strong>A gateway is a thin service layer that sits between your application and any LLM provider. There\u2019s nothing talking directly to the A.P.I &#8211; <em>all<\/em> model calls go through the gateway. The gateway pattern has just a single (one) entry point &#8211; and its value comes from what centralizing that single entry point lets you do. It\u2019s an architectural choice that might seem like overkill at first, so often gets ignored until it\u2019s too late.<\/strong> <\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-four-things-your-application-code-should-never-own\">Four things your application code should <em>never<\/em> own<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-1-routing\">1. Routing<\/h3>\n\n\n\n<p>Calling the LLM directly from your application means you&#8217;re limited to only those where the model creator has a point of presence. That means you&#8217;re hitting up <a href=\"https:\/\/openai.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">OpenAI<\/a>, <a href=\"https:\/\/www.anthropic.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Anthropic<\/a>, or whoever the provider is \u2014 and if you <em>want<\/em> to switch, you have to fight with every service that makes model calls.<\/p>\n\n\n\n<p><strong>A gateway breaks the connection between your application and the specific model provider. Instead, you route to a model alias like \u201cchat-standard,\u201d \u201cchat-fast\u201d or \u201cembeddings,\u201d and the gateway determines which real provider and model to use.<\/strong> <\/p>\n\n\n\n<p>For example, replacing Claude with <a href=\"https:\/\/www.red-gate.com\/simple-talk\/ai\/how-to-get-80-of-gpt-4s-value-for-20-of-the-cost-5-tips-for-reducing-ai-spend\/\" target=\"_blank\" rel=\"noreferrer noopener\">GPT-4<\/a> in a summarization feature requires changing only one line in the gateway\u2019s configuration file &#8211; and the application does <em>not<\/em> need to know.<\/p>\n\n\n\n<p>This may seem trivial but, in my experience, most teams end up underestimating the importance of it all. Models releases happen frequently. The optimal model for your use case might not be the most cost-effective today. You\u2019ll likely also need this flexibility as provider pricing changes. If every service is hardcoded, you\u2019re now stuck.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-2-logging\">2. Logging<\/h3>\n\n\n\n<p>In the past several months, I&#8217;ve seen teams run production LLM systems without knowing what their model is being asked. Then, when something goes wrong \u2014 a strange LLM response, a <a href=\"https:\/\/www.ibm.com\/think\/topics\/ai-hallucinations\" target=\"_blank\" rel=\"noreferrer noopener\">hallucinated<\/a> fact, or a <a href=\"https:\/\/www.red-gate.com\/solutions\/use-cases\/security-and-compliance\/\" target=\"_blank\" rel=\"noreferrer noopener\">compliance<\/a> issue &#8211; they have no way to dig into what happened.<\/p>\n\n\n\n<p><strong>The gateway is the perfect spot to log everything about every request: what prompt went in, what came back, how long it took, which model handled it, how many tokens it cost. It&#8217;s an audit trail, a debugging surface, and cost tracking &#8211; all in one.<\/strong><\/p>\n\n\n\n<p>Another approach is to try and enforce consistent logging at the application layer \u2014 but that never works. Some services may be logging correctly, some may be logging incorrectly, and others may not be logging at all. A misunderstanding of the guidelines by new programmers. Bottom line: you&#8217;ve got to centralize it!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-3-rate-limiting-and-retry-logic\">3. Rate limiting and retry logic<\/h3>\n\n\n\n<p><strong>Rates are set by each provider, but what actually matters is how your system handles them.<\/strong> <\/p>\n\n\n\n<p>Without a gateway, each service would have to implement its own <a href=\"https:\/\/boldsign.com\/blogs\/api-retry-mechanism-how-it-works-best-practices\/#:~:text=An%20API%20retry%20mechanism%20is%20retry%20logic%20wrapped%20in%20a,fixed%2Flinear%2Fexponential).\" target=\"_blank\" rel=\"noreferrer noopener\">API retry logic<\/a>. And in the absence of coordination, the different services would employ different backoff strategies, have inconsistent 429 error handling, and would <em>not <\/em>work as a team when multiple services are hammering the API at once. Basically, one service\u2019s overzealous retry loop could starve another service\u2019s critical path.<\/p>\n\n\n\n<p>On the client side, the gateway can buffer requests near the limit, and implement per-feature rate limits and exponential backoff and jitter &#8211; so every call is treated the same.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-4-fallback-logic\">4. Fallback logic<\/h3>\n\n\n\n<p>Provider outages happen. So do context-length failures, content policy rejections, and timeout spikes.<\/p>\n\n\n\n<p><strong>The gateway provides you with a contingency plan. If a primary model fails, you can resort to a backup; if a more costly model is saturated, you can fall back to a cheaper model for less-critical requests.<\/strong> And, if the latency is slower than what was promised, you can return a graceful degradation response, as opposed to making the user wait.<\/p>\n\n\n\n<p>It doesn\u2019t have to be complicated. But it does have to be in one dependable place \u2014 and that\u2019s the portal.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"632\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2026\/05\/image.gif\" alt=\"An image showing a graph of the LLM gateway pattern\" class=\"wp-image-110300\"\/><figcaption class=\"wp-element-caption\"><em>The LLM gateway pattern, visualized<\/em><\/figcaption><\/figure>\n\n\n\n<section id=\"my-first-block-block_8d66b47b642a2b82506900b068496476\" class=\"my-first-block alignwide\">\n    <div class=\"bg-brand-600 text-base-white py-5xl px-4xl rounded-sm bg-gradient-to-r from-brand-600 to-brand-500 red\">\n        <div class=\"gap-4xl items-start md:items-center flex flex-col md:flex-row justify-between\">\n            <div class=\"flex-1 col-span-10 lg:col-span-7\">\n                <h3 class=\"mt-0 font-display mb-2 text-display-sm\">Accelerate and simplify database development with Redgate<\/h3>\n                <div class=\"child:last-of-type:mb-0\">\n                                            Automate time-consuming tasks and support consistent workflows.                                    <\/div>\n            <\/div>\n                                            <a href=\"https:\/\/www.red-gate.com\/solutions\/use-cases\/productivity-and-workflow-automation\/\" class=\"btn btn--secondary btn--lg\" aria-label=\"Learn more: Accelerate and simplify database development with Redgate\">Learn more<\/a>\n                    <\/div>\n    <\/div>\n<\/section>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-cost-visibility-problem\">The cost visibility problem<\/h2>\n\n\n\n<p>This one is in a category all its own, because it surprises teams more than anything. <\/p>\n\n\n\n<p><strong>Most AI companies charge <em>not<\/em> by the API call, but by the token \u2014 that is, the <a href=\"https:\/\/blogs.nvidia.com\/blog\/ai-tokens-explained\/\" target=\"_blank\" rel=\"noreferrer noopener\">tiny chunks of words and letters<\/a> your requests burn through as they make their way through a large language model\u2019s neural net. So while you might assume that it costs a fraction of a cent to complete a few short tasks, it\u2019s incredibly easy to spend a significant chunk of change if you\u2019re routing lots of queries through AI. Additionally, there\u2019s no centralized way to keep track of the tokens you&#8217;re using.<\/strong><\/p>\n\n\n\n<p>It becomes nearly impossible, therefore, to identify whether too many tokens are being used due to a prompt template, an incredibly useful but extraneous feature, or even your toxic ex that comes traipsing back into your life without warning. Which prompt template is <em>way too heavy<\/em>? Which user group is using 10 times the average token amount?<\/p>\n\n\n\n<p>The gateway is also where you can tag your requests with whatever matters to you \u2014 feature name, user group, experiment version, etc. Tagging lets you see how much each feature costs, which is the information you <em>actually need<\/em> to make smart choices about model selection, prompt tweaks, caching plans and more. In <a href=\"https:\/\/www.red-gate.com\/blog\/redgate-software-awarded-a-2026-regional-aws-partner-award\/\" target=\"_blank\" rel=\"noreferrer noopener\">AWS<\/a>, tagging is the key to making your cost data actually make sense.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-direct-calls-vs-gateway-what-changes\">Direct calls vs. gateway: what changes?<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Concern<\/strong><\/td><td><strong>Without a Gateway<\/strong><\/td><td><strong>With a Gateway<\/strong><\/td><\/tr><tr><td>Cost visibility<\/td><td>Token usage scattered across services, no unified view<\/td><td>Per-feature, per-user tracking in one place<\/td><\/tr><tr><td>Provider lock-in<\/td><td>Model calls hardcoded into application logic<\/td><td>Swap providers by changing one config value<\/td><\/tr><tr><td>Rate limit handling<\/td><td>Each service reinvents retry logic independently<\/td><td>Centralized backoff, queuing, and fallback<\/td><\/tr><tr><td>Audit trail<\/td><td>No consistent record of what the model was asked<\/td><td>Every request and response logged uniformly<\/td><\/tr><tr><td>Reliability<\/td><td>One provider outage takes down everything<\/td><td>Automatic failover to backup model or provider<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-lives-in-the-gateway-and-what-stays-in-the-app\">What lives in the gateway &#8211; and what stays in the app?<\/h2>\n\n\n\n<p>There\u2019s a natural tendency to over-engineer what lives in the gateway and what lives in the application. <strong>The gateway should be thin. It\u2019s an infrastructure component, not a business logic layer.<\/strong><\/p>\n\n\n\n<p><strong>In the gateway: <\/strong>routing resolution, authentication, logging, rate limiting, retry logic, fallback routing, response caching for identical requests, cost tagging.<\/p>\n\n\n\n<p><strong>In the application: <\/strong>prompt construction, result parsing, business logic, user-facing formatting. Everything domain-specific stays out of the gateway.<\/p>\n\n\n\n<p>The gateway shouldn\u2019t know anything about what your application is doing with the response. It\u2019s a pipe with observability and resilience built in \u2014 not a second application.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-when-don-t-you-need-a-gateway\">When <em>don&#8217;t<\/em> you need a gateway?<\/h2>\n\n\n\n<p><strong>A gateway pattern doesn&#8217;t make sense if you have just one app making model calls, or you&#8217;re using a single provider. <\/strong>In this case, it\u2019s highly likely that your team is small, you don\u2019t have many complex use cases, and you aren\u2019t operating at a high volume.<\/p>\n\n\n\n<p>Things can break quickly when several services all call the API, or when you\u2019re <a href=\"https:\/\/en.wikipedia.org\/wiki\/A\/B_testing\" target=\"_blank\" rel=\"noreferrer noopener\">A\/B testing<\/a> models, or when you need a serious audit trail for compliance, or when you get a shocker of a bill. A solid shared module that handles logging and retries consistently does the trick just fine.<\/p>\n\n\n\n<p>However, most teams build this <em>reactively<\/em> after they\u2019ve already felt the pain. Perhaps, for example, they&#8217;ve spent <em>weeks<\/em> arguing over whose logging format is the right one as they try to untangle five different integration patterns. A more proactive approach here is wise; proactive teams just take a few days upfront to set it up, then forget about it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-llm-gateways-what-to-build-and-what-to-buy\">LLM gateways: what to build and what to buy<\/h2>\n\n\n\n<p><strong><a href=\"https:\/\/www.litellm.ai\/\" target=\"_blank\" rel=\"noreferrer noopener\">LiteLLM<\/a> is currently (as of May 2026) the top open-source LLM gateway that handles routing, fallbacks, and cost tracking with sane defaults. Also consider <a href=\"https:\/\/portkey.ai\/\" target=\"_blank\" rel=\"noreferrer noopener\">Portkey<\/a> and <a href=\"https:\/\/www.helicone.ai\/\" target=\"_blank\" rel=\"noreferrer noopener\">Helicone<\/a>. They&#8217;re all ready to go.<\/strong><\/p>\n\n\n\n<p>For most production systems, writing a &#8216;homemade&#8217; gateway (essentially a <a href=\"https:\/\/www.cloudflare.com\/learning\/cdn\/glossary\/reverse-proxy\/\" target=\"_blank\" rel=\"noreferrer noopener\">reverse proxy<\/a> with some retry and logging logic), is only a few hundred lines of code, and most companies have their own versions. Of course, the decision to use one of these versus building your own depends on the number of third-party dependencies your organization is comfortable with in critical systems, and the amount of custom routing that you actually need. Plus, making a homegrown gateway is a manageable engineering task.<\/p>\n\n\n\n<p>Application services should be able to call (and get a response from) something that feels like a model API. It shouldn\u2019t &#8211; and doesn&#8217;t &#8211; matter how you get there.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-in-summary-the-benefits-of-the-gateway\">In summary: the benefits of the gateway<\/h2>\n\n\n\n<p>What, exactly, does the gateway do? Setting up the functions that the gateway performs is not all that difficult. Logging is part of the <a href=\"https:\/\/support.sugarai.com\/knowledge_base\/troubleshooting\/introduction_to_sugar_logging\/\" target=\"_blank\" rel=\"noreferrer noopener\">Sugar activity set<\/a>, so you need not worry about including it in your code. Routing is easy to set up. <\/p>\n\n\n\n<p>Without the gateway, however, these things get done, by different people, at different times, in different services, over and over and over again. We always want a consistent world &#8211; and that means there should be some central place in the system of distributed nodes to keep things consistent. <\/p>\n\n\n\n<p>That&#8217;s exactly where the gateway enters the scene &#8211; especially when LLM adoption really starts to ramp up.<\/p>\n\n\n\n<section id=\"my-first-block-block_1e95fb326f0e6008f68dfe2999034bb1\" class=\"my-first-block alignwide\">\n    <div class=\"bg-brand-600 text-base-white py-5xl px-4xl rounded-sm bg-gradient-to-r from-brand-600 to-brand-500 red\">\n        <div class=\"gap-4xl items-start md:items-center flex flex-col md:flex-row justify-between\">\n            <div class=\"flex-1 col-span-10 lg:col-span-7\">\n                <h3 class=\"mt-0 font-display mb-2 text-display-sm\">\u201cEveryone wants to move faster with AI, but few are truly ready for it.&#8221;<\/h3>\n                <div class=\"child:last-of-type:mb-0\">\n                                            What does the AI landscape look like in 2026? Get the full overview in Redgate&#8217;s 2026 State of the Database Landscape report >>                                    <\/div>\n            <\/div>\n                                            <a href=\"https:\/\/www.red-gate.com\/solutions\/state-of-database-landscape\/2026\/\" class=\"btn btn--secondary btn--lg\" aria-label=\"Download the report: \u201cEveryone wants to move faster with AI, but few are truly ready for it.&quot;\">Download the report<\/a>\n                    <\/div>\n    <\/div>\n<\/section>\n\n\n<section id=\"faq\" class=\"faq-block my-5xl\">\n    <h2>FAQs: LLM gateway patterns<\/h2>\n\n                        <h3 class=\"mt-4xl\">1. What is an LLM gateway?<\/h3>\n            <div class=\"faq-answer\">\n                <p data-start=\"31\" data-end=\"181\">An LLM (large language model) gateway is a thin service layer that sits between your app and LLM providers, routing all model calls through a single entry point.<\/p>\n            <\/div>\n                    <h3 class=\"mt-4xl\">2. Why use an LLM gateway?<\/h3>\n            <div class=\"faq-answer\">\n                <p data-start=\"183\" data-end=\"334\">To centralize routing, logging, retries, fallbacks, and cost tracking. All of this improves reliability, visibility, and flexibility.<\/p>\n            <\/div>\n                    <h3 class=\"mt-4xl\">3. Do I need an LLM gateway?<\/h3>\n            <div class=\"faq-answer\">\n                <p data-start=\"336\" data-end=\"489\">Not always. Small apps using one provider may not need it, but multi-service or production systems benefit significantly.<\/p>\n            <\/div>\n                    <h3 class=\"mt-4xl\">4. How does an LLM gateway reduce costs?<\/h3>\n            <div class=\"faq-answer\">\n                <p data-start=\"491\" data-end=\"641\">By tracking token usage per feature\/user and enabling smarter routing to cheaper or more efficient models.<\/p>\n            <\/div>\n                    <h3 class=\"mt-4xl\">5. Does an LLM gateway prevent vendor lock-in?<\/h3>\n            <div class=\"faq-answer\">\n                <p data-start=\"643\" data-end=\"802\">Yes. It abstracts providers behind model aliases, so you can switch models without changing application code.<\/p>\n            <\/div>\n                    <h3 class=\"mt-4xl\">6. What should live in the gateway vs the app?<\/h3>\n            <div class=\"faq-answer\">\n                <p><strong>What should live in the gateway:<\/strong> routing, logging, retries, rate limits, fallbacks.<br data-start=\"913\" data-end=\"916\" \/><br \/>\n<strong>What should live in the app:<\/strong> prompts, business logic, and response handling.<\/p>\n            <\/div>\n                    <h3 class=\"mt-4xl\">7. Should I build or buy an LLM gateway?<\/h3>\n            <div class=\"faq-answer\">\n                <section class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto [content-visibility:auto] supports-[content-visibility:auto]:[contain-intrinsic-size:auto_100lvh] R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:9903b5bd-550f-4d90-94ef-afa03d796e9f-2\" data-testid=\"conversation-turn-6\" data-scroll-anchor=\"false\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"fc8b38a8-f30b-4b90-b60c-3712b104da10\" data-message-model-slug=\"gpt-5-3\" data-turn-start-message=\"true\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert w-full wrap-break-word light markdown-new-styling\">\n<p data-start=\"970\" data-end=\"1107\" data-is-last-node=\"\" data-is-only-node=\"\">You can do either. Open-source tools offer quick setup, while custom builds give more control.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n            <\/div>\n            <\/section>\n","protected":false},"excerpt":{"rendered":"<p>Learn what the LLM gateway pattern is, why it matters, and how it makes AI applications more reliable and scalable. Complete guide with expert advice.&hellip;<\/p>\n","protected":false},"author":346673,"featured_media":110302,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[159169,53],"tags":[159075],"coauthors":[159377],"class_list":["post-110299","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-featured","tag-ai"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/110299","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/346673"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=110299"}],"version-history":[{"count":3,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/110299\/revisions"}],"predecessor-version":[{"id":110589,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/110299\/revisions\/110589"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media\/110302"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=110299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=110299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=110299"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=110299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}