<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Docs - Agenta Blog</title>
        <link>https://agenta.ai/docs/changelog</link>
        <description>Docs - Agenta Blog</description>
        <lastBuildDate>Tue, 09 Jun 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Evaluate While You Iterate in the Playground]]></title>
            <link>https://agenta.ai/docs/changelog/playground-evaluation-workbench</link>
            <guid>https://agenta.ai/docs/changelog/playground-evaluation-workbench</guid>
            <pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Attach evaluators to Playground sessions, see scores inline, and use connected test sets to keep prompt iteration and data curation in one loop.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<div style="display:flex;justify-content:center;margin-top:20px;margin-bottom:20px;flex-direction:column;align-items:center"><iframe width="100%" height="500" src="https://www.youtube.com/embed/VGYOH1k15rE" title="Evaluate While You Iterate in the Playground" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe></div>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="the-workflow-this-is-for">The workflow this is for<a href="https://agenta.ai/docs/changelog/playground-evaluation-workbench#the-workflow-this-is-for" class="hash-link" aria-label="Direct link to The workflow this is for" title="Direct link to The workflow this is for" translate="no">​</a></h2>
<p>Improving an LLM app is an evaluation loop. You run the prompt, see where it fails, adjust the prompt or evaluator, and run it again against the examples that matter.</p>
<p>That loop used to be split across surfaces. The Playground is where you iterated on prompts, while evaluations and test set curation happened elsewhere.</p>
<p>The Playground is now an evaluation workbench. You can attach evaluators to a Playground session, see evaluator results next to each output, and keep test data connected while you debug.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="what-changed">What changed<a href="https://agenta.ai/docs/changelog/playground-evaluation-workbench#what-changed" class="hash-link" aria-label="Direct link to What changed" title="Direct link to What changed" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="inline-evaluators">Inline evaluators<a href="https://agenta.ai/docs/changelog/playground-evaluation-workbench#inline-evaluators" class="hash-link" aria-label="Direct link to Inline evaluators" title="Direct link to Inline evaluators" translate="no">​</a></h3>
<p>You can now attach evaluators directly in the Playground. When you run a prompt, evaluator results appear inline next to the generated output, so you can see whether a change improved the answer while the prompt is still in front of you.</p>
<p>This is different from starting a full evaluation run. The evaluation button creates a persisted evaluation run over a test set. Inline evaluators are playground-scoped. They are for fast feedback while you are editing.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="connected-test-sets">Connected test sets<a href="https://agenta.ai/docs/changelog/playground-evaluation-workbench#connected-test-sets" class="hash-link" aria-label="Direct link to Connected test sets" title="Direct link to Connected test sets" translate="no">​</a></h3>
<p>You can load a test set into the Playground in connected mode. Rows stay tied to the source test set, so edits you make while debugging can be synced back instead of copied by hand.</p>
<p>Local mode is still available when you want scratch examples. Connected mode is for the cases where your iteration should improve the dataset you already use for evaluation.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="the-loop">The loop<a href="https://agenta.ai/docs/changelog/playground-evaluation-workbench#the-loop" class="hash-link" aria-label="Direct link to The loop" title="Direct link to The loop" translate="no">​</a></h2>
<ol>
<li class="">Open a prompt in the Playground.</li>
<li class="">Load a connected test set or add local examples.</li>
<li class="">Attach one or more evaluators.</li>
<li class="">Run the prompt and inspect the inline scores.</li>
<li class="">Edit the prompt, evaluator, or examples.</li>
<li class="">Run again until the output and the score line up.</li>
</ol>
<p>This keeps prompt changes, evaluator feedback, and test data curation in one place.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="why-it-matters">Why it matters<a href="https://agenta.ai/docs/changelog/playground-evaluation-workbench#why-it-matters" class="hash-link" aria-label="Direct link to Why it matters" title="Direct link to Why it matters" translate="no">​</a></h2>
<p>Teams usually lose time moving between prompt editing, evaluation setup, and data cleanup. That makes it harder to understand whether a failure came from the prompt, the evaluator, or the examples.</p>
<p>Inline evaluators and connected test sets make that feedback loop shorter. Subject matter experts can stay in the Playground, inspect failures, adjust the data, and rerun the same cases without switching context.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="getting-started">Getting started<a href="https://agenta.ai/docs/changelog/playground-evaluation-workbench#getting-started" class="hash-link" aria-label="Direct link to Getting started" title="Direct link to Getting started" translate="no">​</a></h2>
<p>Open the Playground, load a test set, and attach an evaluator from the evaluator control. Run the prompt to see evaluator results next to each output.</p>]]></content:encoded>
            <category>v0.103.0</category>
        </item>
        <item>
            <title><![CDATA[Dark Mode]]></title>
            <link>https://agenta.ai/docs/changelog/dark-mode</link>
            <guid>https://agenta.ai/docs/changelog/dark-mode</guid>
            <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Agenta now ships a full dark theme. Switch between light, dark, and system from the top bar.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<div style="background-size:cover;background-repeat:no-repeat;position:relative;background-image:url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAHCAIAAAC+zks0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAhUlEQVR4nFXMUQ7CMAwD0F6gpdESp10h6dSOz93/eIghJnh/VuyE2totpTHG48vM7qfjmAEQIppzuruZuXupVVUBmNUgAspk3nvfADDzGGPfn+c/D2PezVDKu87MIuK9e99aa+u6hqJClPlHKUVVRWRZlhBjijFdN2HG6RNDrTXnv/UFwAsZOBPuvs+LOAAAAABJRU5ErkJggg==&quot;);display:block;margin:20px auto;text-align:center"><svg style="width:100%;height:auto;max-width:100%;margin-bottom:-4px" width="600" height="411"></svg><noscript><img style="width:100%;height:auto;max-width:100%;margin-bottom:-4px;position:absolute;top:0;left:0" src="/docs/assets/ideal-img/dark-mode.aedc399.600.png" srcset="/docs/assets/ideal-img/dark-mode.aedc399.600.png 600w,/docs/assets/ideal-img/dark-mode.bf8a424.1100.png 1100w,/docs/assets/ideal-img/dark-mode.2272bbb.1600.png 1600w" alt="The Agenta playground in dark mode" width="600" height="411"></noscript></div>
<p>Agenta now has a dark theme. Every page is covered: the playground, registry, evaluations, observability, and the settings screens.</p>
<p>You switch themes from the top bar, next to the version label. There are three options: light, dark, and system. Pick <strong>system</strong> and Agenta follows your operating system, so it turns dark when your machine does and back to light in the morning.</p>
<p>Your choice is saved and stays the same the next time you open Agenta.</p>]]></content:encoded>
            <category>v0.102.0</category>
        </item>
        <item>
            <title><![CDATA[Annotation Queues]]></title>
            <link>https://agenta.ai/docs/changelog/annotation-queues</link>
            <guid>https://agenta.ai/docs/changelog/annotation-queues</guid>
            <pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Run error analysis, collect SME feedback, bootstrap test sets from traces, and label test sets with rubrics or ground truth.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<div style="display:flex;justify-content:center;margin-top:20px;margin-bottom:20px;flex-direction:column;align-items:center"><iframe width="100%" height="500" src="https://www.youtube.com/embed/8beqiSWI0iE" title="Annotation Queues in Agenta" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe></div>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="the-workflow-this-is-for">The workflow this is for<a href="https://agenta.ai/docs/changelog/annotation-queues#the-workflow-this-is-for" class="hash-link" aria-label="Direct link to The workflow this is for" title="Direct link to The workflow this is for" translate="no">​</a></h2>
<p>The most useful thing you can do when building an LLM app is read your traces. You find the failures, label what went wrong, and turn the worst ones into test cases. Then you run those test cases against your evaluators.</p>
<p>Until now, that loop happened outside Agenta. Annotation queues bring it inside.</p>
<p>A queue holds a batch of traces or a batch of test cases. You attach a scoring schema (defined in the Evaluator Playground), assign reviewers, and watch progress as they work through it. The annotations live on the trace or test case they belong to, and a reviewed trace queue can be exported as a labeled test set in one step.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="a-walkthrough-error-analysis-on-production-traces">A walkthrough: error analysis on production traces<a href="https://agenta.ai/docs/changelog/annotation-queues#a-walkthrough-error-analysis-on-production-traces" class="hash-link" aria-label="Direct link to A walkthrough: error analysis on production traces" title="Direct link to A walkthrough: error analysis on production traces" translate="no">​</a></h2>
<p>You ship a new prompt. Over the next day, support tickets come in about hallucinated answers. You open observability, filter for the affected traces, and pick out fifty that look suspect.</p>
<p>Click <strong>Add to queue</strong>. Create a new queue and attach a human evaluator with two questions: "Is the answer correct?" (yes / no) and "If not, what went wrong?" (free text).</p>
<p>Your QA engineer opens the queue. Each scenario appears in a focused review view: the trace details on one side, your instructions on the other, the form below. They score one and move to the next.</p>
<p>When the queue is done, you have fifty labeled examples of how the prompt fails in production. Export the queue as a test set, and the annotations come along as columns. The next version of the prompt can be evaluated against ground truth your team produced, not against assumptions.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="three-other-things-the-same-workflow-does">Three other things the same workflow does<a href="https://agenta.ai/docs/changelog/annotation-queues#three-other-things-the-same-workflow-does" class="hash-link" aria-label="Direct link to Three other things the same workflow does" title="Direct link to Three other things the same workflow does" translate="no">​</a></h2>
<p><strong>SME feedback.</strong> Hand a queue to a domain expert who doesn't need to learn the rest of Agenta. They see the trace, the instructions, and the form. Nothing else to figure out.</p>
<p><strong>Bootstrapping a test set from real traffic.</strong> Sample production traces, review them, export the queue as a test set. You start with examples that look like your real users instead of examples you imagined.</p>
<p><strong>Adding ground truth or rubrics to test sets.</strong> Put an existing test set into a queue, attach an evaluator that captures the reference answer or scoring rubric, and label them. The annotations become available to your evaluators on the next run.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="setting-one-up">Setting one up<a href="https://agenta.ai/docs/changelog/annotation-queues#setting-one-up" class="hash-link" aria-label="Direct link to Setting one up" title="Direct link to Setting one up" translate="no">​</a></h2>
<ol>
<li class="">Open the Evaluator Playground and define a human evaluator with the questions you want answered.</li>
<li class="">Go to <strong>Annotations → Queues</strong> and create a new queue. Pick the kind (traces or test cases) and attach the evaluator.</li>
<li class="">Add items to the queue. From observability, select traces and click <strong>Add to queue</strong>. From a test set, add rows the same way. Or POST to the queue API from your own code.</li>
<li class="">Reviewers open the queue and work through scenarios.</li>
<li class="">(For trace queues) When you're done, export the queue as a test set.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="getting-started">Getting started<a href="https://agenta.ai/docs/changelog/annotation-queues#getting-started" class="hash-link" aria-label="Direct link to Getting started" title="Direct link to Getting started" translate="no">​</a></h2>
<p>A walkthrough video is above. For more context and to leave feedback, see the <a href="https://github.com/Agenta-AI/agenta/discussions/4009" target="_blank" rel="noopener noreferrer" class="">roadmap discussion</a>.</p>]]></content:encoded>
            <category>v0.97.0</category>
        </item>
        <item>
            <title><![CDATA[Unified Invoke API]]></title>
            <link>https://agenta.ai/docs/changelog/unified-invoke-api</link>
            <guid>https://agenta.ai/docs/changelog/unified-invoke-api</guid>
            <pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Migration guide from the v0.95 REST API to v0.96. Covers the unified /v0/invoke endpoint, the new prompt configuration fetch endpoint, and a complete list of removed REST endpoints with their replacements.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<div class="theme-admonition theme-admonition-warning admonition_LLTp alert alert--warning"><div class="admonitionHeading_l9Kb"><span class="admonitionIcon_SqQ2"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>Guide updated 2026-04-28</div><div class="admonitionContent_wK1t"><p>The original version of this guide did not mention the prompt configuration fetch endpoint and lacked several minor endpoints. This update covers them all.</p></div></div>
<div class="theme-admonition theme-admonition-danger admonition_LLTp alert alert--danger"><div class="admonitionHeading_l9Kb"><span class="admonitionIcon_SqQ2"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>Deprecation deadline: May 31, 2026</div><div class="admonitionContent_wK1t"><p>Every legacy REST endpoint covered in this guide will stop responding on <strong>May 31, 2026</strong>. Until then, an adapter layer keeps the old endpoints working. Update your integration before that date.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="overview">Overview<a href="https://agenta.ai/docs/changelog/unified-invoke-api#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h2>
<p>v0.96.0 restructures the REST API. Two changes affect most users who integrate with Agenta for prompt management:</p>
<ol>
<li class=""><strong>Invoking a deployed prompt</strong> moves to a single unified endpoint: <code>POST /services/{service}/v0/invoke</code>, replacing <code>/run</code>, <code>/generate</code>, <code>/generate_deployed</code>, and <code>/test</code>.</li>
<li class=""><strong>Fetching a prompt configuration</strong> moves to <code>POST /applications/revisions/retrieve</code>, replacing <code>POST /variants/configs/fetch</code>.</li>
</ol>
<p>The release also restructures the rest of the REST CRUD surface (apps, variants, environments, traces, annotations, invocations). If you call any of those directly, see the <a href="https://agenta.ai/docs/changelog/unified-invoke-api#all-affected-endpoints" class="">complete list of affected endpoints</a> at the end of this guide.</p>
<div class="theme-admonition theme-admonition-info admonition_LLTp alert alert--info"><div class="admonitionHeading_l9Kb"><span class="admonitionIcon_SqQ2"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>SDK users don't need to migrate</div><div class="admonitionContent_wK1t"><p>If you only call Agenta through the Python SDK (<code>agenta.ConfigManager</code>, <code>agenta.VariantManager</code>, <code>agenta.DeploymentManager</code>), you don't need to change anything. The SDK absorbs every change in this release.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="invoking-a-deployed-prompt">Invoking a deployed prompt<a href="https://agenta.ai/docs/changelog/unified-invoke-api#invoking-a-deployed-prompt" class="hash-link" aria-label="Direct link to Invoking a deployed prompt" title="Direct link to Invoking a deployed prompt" translate="no">​</a></h2>
<p>All invocations now go through one endpoint:</p>
<div class="language-text codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-text codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">POST /services/{service}/v0/invoke</span><br></div></code></pre></div></div>
<p>This replaces four legacy endpoints:</p>
<ul>
<li class=""><code>POST /services/{service}/generate</code> (draft testing)</li>
<li class=""><code>POST /services/{service}/test</code> (draft testing)</li>
<li class=""><code>POST /services/{service}/generate_deployed</code> (deployed config)</li>
<li class=""><code>POST /services/{service}/run</code> (deployed config)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="new-request-format">New request format<a href="https://agenta.ai/docs/changelog/unified-invoke-api#new-request-format" class="hash-link" aria-label="Direct link to New request format" title="Direct link to New request format" translate="no">​</a></h3>
<p>The most common case is calling a prompt deployed to an environment with <code>generate_deployed</code>. Here is how that changes end-to-end.</p>
<p><strong>Before</strong> (<code>POST /services/completion/generate_deployed</code>):</p>
<div class="language-python codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-python codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> requests</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">post</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"https://cloud.agenta.ai/services/completion/generate_deployed"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    headers</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"Content-Type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"application/json"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"Authorization"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"ApiKey </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">api_key</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    json</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"environment"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"production"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"app"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"my-app"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"inputs"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"country"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"France"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">result </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> response</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">result</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"data"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain">     </span><span class="token comment" style="color:#999988;font-style:italic"># "The capital of France is Paris."</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">result</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"tree_id"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># trace ID for observability</span><br></div></code></pre></div></div>
<p><strong>After</strong> (<code>POST /services/completion/v0/invoke</code>):</p>
<div class="language-python codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-python codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> requests</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">post</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"https://cloud.agenta.ai/services/completion/v0/invoke"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    headers</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"Content-Type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"application/json"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"Authorization"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"ApiKey </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">api_key</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    json</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"data"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"inputs"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"country"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"France"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"references"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"application"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"slug"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"my-app"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"environment"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"slug"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"production"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">result </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> response</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">result</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"data"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"outputs"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># "The capital of France is Paris."</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">result</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"trace_id"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain">         </span><span class="token comment" style="color:#999988;font-style:italic"># trace ID for observability</span><br></div></code></pre></div></div>
<p>The new request body has two top-level sections. <code>data</code> carries your inputs and optional configuration parameters. <code>references</code> identifies which application, variant, revision, or environment to target.</p>
<p>The key field-by-field changes are:</p>
<ul>
<li class=""><code>inputs</code> moves under <code>data.inputs</code>.</li>
<li class=""><code>messages</code> moves under <code>data.inputs.messages</code> (for chat applications).</li>
<li class=""><code>ag_config</code> becomes <code>data.parameters</code>.</li>
<li class="">The flat targeting fields (<code>app</code>, <code>variant_slug</code>, <code>variant_version</code>, <code>environment</code>) become structured entries under <code>references</code>.</li>
<li class="">The <code>?application_id=</code> query parameter is removed. Pass the ID in <code>references.application.id</code> instead.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="new-response-format">New response format<a href="https://agenta.ai/docs/changelog/unified-invoke-api#new-response-format" class="hash-link" aria-label="Direct link to New response format" title="Direct link to New response format" translate="no">​</a></h3>
<p><strong>Before:</strong></p>
<div class="language-json codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-json codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"version"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"3.0"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"data"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"The capital of France is Paris."</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"content_type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"text/plain"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"tree_id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"0ef1d6b7-84c3-4b8a-705b-ae5974e51954"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p><strong>After:</strong></p>
<div class="language-json codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-json codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"version"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2025-07-14"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"status"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"code"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token null keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"message"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token null keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"stacktrace"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token null keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"trace_id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"0ef1d6b7-84c3-4b8a-705b-ae5974e51954"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"span_id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"a1b2c3d4e5f6"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"data"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"outputs"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"The capital of France is Paris."</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>The output value moves from <code>data</code> (a direct string) to <code>data.outputs</code> (nested). The <code>tree_id</code> field becomes <code>trace_id</code>, and we now return a <code>span_id</code> alongside it. The <code>content_type</code> field is removed. A new <code>status</code> object reports the operation code, an optional human-readable message, and a stacktrace when the call fails.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="field-reference">Field reference<a href="https://agenta.ai/docs/changelog/unified-invoke-api#field-reference" class="hash-link" aria-label="Direct link to Field reference" title="Direct link to Field reference" translate="no">​</a></h3>
<p>The following table maps every old field, endpoint, and response key to its new equivalent.</p>
<table><thead><tr><th>Old</th><th>New</th></tr></thead><tbody><tr><td><code>POST /services/{svc}/run</code></td><td><code>POST /services/{svc}/v0/invoke</code></td></tr><tr><td><code>POST /services/{svc}/generate_deployed</code></td><td><code>POST /services/{svc}/v0/invoke</code></td></tr><tr><td><code>POST /services/{svc}/generate</code></td><td><code>POST /services/{svc}/v0/invoke</code></td></tr><tr><td><code>POST /services/{svc}/test</code></td><td><code>POST /services/{svc}/v0/invoke</code></td></tr><tr><td><code>"inputs": {...}</code></td><td><code>"data": {"inputs": {...}}</code></td></tr><tr><td><code>"messages": [...]</code></td><td><code>"data": {"inputs": {"messages": [...]}}</code></td></tr><tr><td><code>"ag_config": {...}</code></td><td><code>"data": {"parameters": {...}}</code></td></tr><tr><td><code>"environment": "prod"</code></td><td><code>"references": {"environment": {"slug": "prod"}}</code></td></tr><tr><td><code>"app": "my-app"</code></td><td><code>"references": {"application": {"slug": "my-app"}}</code></td></tr><tr><td><code>"variant_slug": "v1"</code></td><td><code>"references": {"application_variant": {"slug": "v1"}}</code></td></tr><tr><td><code>"variant_version": 1</code></td><td><code>"references": {"application_revision": {"version": "1"}}</code></td></tr><tr><td>Response <code>"data": "text"</code></td><td>Response <code>"data": {"outputs": "text"}</code></td></tr><tr><td>Response <code>"tree_id"</code></td><td>Response <code>"trace_id"</code></td></tr></tbody></table>
<details class="details_ih5X alert alert--info details_nAg2" data-collapsed="true"><summary>More examples: chat applications and draft configurations</summary><div><div class="collapsibleContent_MHKa"><h4 class="anchor anchorTargetStickyNavbar_Cy9N" id="invoking-a-chat-application">Invoking a chat application<a href="https://agenta.ai/docs/changelog/unified-invoke-api#invoking-a-chat-application" class="hash-link" aria-label="Direct link to Invoking a chat application" title="Direct link to Invoking a chat application" translate="no">​</a></h4><p>Chat applications follow the same pattern. Messages move under <code>data.inputs.messages</code>.</p><p><strong>Before:</strong></p><div class="language-python codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-python codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> requests</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">post</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"https://cloud.agenta.ai/services/chat/run"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    headers</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"Content-Type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"application/json"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"Authorization"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"ApiKey </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">api_key</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    json</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"environment"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"production"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"app"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"my-chat"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"inputs"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"context"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Be helpful."</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"messages"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Hello!"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div><p><strong>After:</strong></p><div class="language-python codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-python codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> requests</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">post</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"https://cloud.agenta.ai/services/chat/v0/invoke"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    headers</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"Content-Type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"application/json"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"Authorization"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"ApiKey </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">api_key</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    json</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"data"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"inputs"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token string" style="color:#e3116c">"context"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Be helpful."</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token string" style="color:#e3116c">"messages"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Hello!"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"references"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"application"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"slug"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"my-chat"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"environment"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"slug"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"production"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div><h4 class="anchor anchorTargetStickyNavbar_Cy9N" id="testing-with-a-draft-configuration">Testing with a draft configuration<a href="https://agenta.ai/docs/changelog/unified-invoke-api#testing-with-a-draft-configuration" class="hash-link" aria-label="Direct link to Testing with a draft configuration" title="Direct link to Testing with a draft configuration" translate="no">​</a></h4><p>If you previously sent an inline <code>ag_config</code> to test a draft, that block now lives under <code>data.parameters</code>.</p><p><strong>Before:</strong></p><div class="language-python codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-python codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> requests</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">post</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"https://cloud.agenta.ai/services/completion/generate?application_id=xxx"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    headers</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"Content-Type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"application/json"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"Authorization"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"ApiKey </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">api_key</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    json</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"inputs"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"country"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"France"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"ag_config"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"prompt"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token string" style="color:#e3116c">"messages"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Capital of {{country}}?"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token string" style="color:#e3116c">"llm_config"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"model"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"gpt-4o-mini"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token string" style="color:#e3116c">"template_format"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"curly"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div><p><strong>After:</strong></p><div class="language-python codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-python codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> requests</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">post</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"https://cloud.agenta.ai/services/completion/v0/invoke"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    headers</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"Content-Type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"application/json"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"Authorization"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"ApiKey </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">api_key</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    json</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"data"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"inputs"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"country"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"France"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"parameters"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token string" style="color:#e3116c">"prompt"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token string" style="color:#e3116c">"messages"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Capital of {{country}}?"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token string" style="color:#e3116c">"llm_config"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"model"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"gpt-4o-mini"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token string" style="color:#e3116c">"template_format"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"curly"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"references"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"application"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"id"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"xxx"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div></div></div></details>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="fetching-a-prompt-configuration">Fetching a prompt configuration<a href="https://agenta.ai/docs/changelog/unified-invoke-api#fetching-a-prompt-configuration" class="hash-link" aria-label="Direct link to Fetching a prompt configuration" title="Direct link to Fetching a prompt configuration" translate="no">​</a></h2>
<p><code>POST /variants/configs/fetch</code> is deprecated and superseded by <code>POST /applications/revisions/retrieve</code>. The new endpoint mirrors the shape of the invocation endpoint: you pass structured references to identify the variant or environment you want to fetch, and the response carries the configuration parameters together with metadata about the revision.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="fetching-by-variant-and-version">Fetching by variant and version<a href="https://agenta.ai/docs/changelog/unified-invoke-api#fetching-by-variant-and-version" class="hash-link" aria-label="Direct link to Fetching by variant and version" title="Direct link to Fetching by variant and version" translate="no">​</a></h3>
<p><strong>Before:</strong></p>
<div class="language-bash codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-bash codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">curl -X POST "https://cloud.agenta.ai/api/variants/configs/fetch" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Content-Type: application/json" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: ApiKey $AGENTA_API_KEY" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -d '{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "variant_ref": {"slug": "default", "version": 1},</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "application_ref": {"slug": "my-app"}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  }'</span><br></div></code></pre></div></div>
<p><strong>After:</strong></p>
<div class="language-bash codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-bash codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">curl -X POST "https://cloud.agenta.ai/api/applications/revisions/retrieve" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Content-Type: application/json" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: ApiKey $AGENTA_API_KEY" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -d '{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "application_ref": {"slug": "my-app"},</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "application_variant_ref": {"slug": "default"},</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "application_revision_ref": {"version": "1"}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  }'</span><br></div></code></pre></div></div>
<div class="theme-admonition theme-admonition-info admonition_LLTp alert alert--info"><div class="admonitionHeading_l9Kb"><span class="admonitionIcon_SqQ2"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_wK1t"><p>The <code>version</code> field is now a string, not an integer.</p></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="fetching-by-environment">Fetching by environment<a href="https://agenta.ai/docs/changelog/unified-invoke-api#fetching-by-environment" class="hash-link" aria-label="Direct link to Fetching by environment" title="Direct link to Fetching by environment" translate="no">​</a></h3>
<p>To fetch the configuration deployed to an environment, pass the <code>application_ref</code> and the <code>environment_ref</code> together:</p>
<p><strong>Before:</strong></p>
<div class="language-bash codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-bash codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">curl -X POST "https://cloud.agenta.ai/api/variants/configs/fetch" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Content-Type: application/json" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: ApiKey $AGENTA_API_KEY" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -d '{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "environment_ref": {"slug": "production"},</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "application_ref": {"slug": "my-app"}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  }'</span><br></div></code></pre></div></div>
<p><strong>After:</strong></p>
<div class="language-bash codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-bash codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">curl -X POST "https://cloud.agenta.ai/api/applications/revisions/retrieve" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Content-Type: application/json" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: ApiKey $AGENTA_API_KEY" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -d '{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "application_ref": {"slug": "my-app"},</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "environment_ref": {"slug": "production"}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  }'</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="response-shape">Response shape<a href="https://agenta.ai/docs/changelog/unified-invoke-api#response-shape" class="hash-link" aria-label="Direct link to Response shape" title="Direct link to Response shape" translate="no">​</a></h3>
<p>The response shape changed too. The legacy endpoint returned a flat envelope with the configuration under <code>params</code> and reference IDs as siblings. The new endpoint wraps the revision in a query envelope, with the configuration nested under <code>application_revision.data.parameters</code>.</p>
<p><strong>Before:</strong></p>
<div class="language-json codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-json codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"params"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"prompt"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"..."</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"..."</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"url"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://cloud.agenta.ai/services/completion/v0"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"application_ref"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"slug"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"my-app"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"019ce1cd-ccec-76f1-a803-eb1dc9187d57"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"variant_ref"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"slug"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"default"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"version"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"019ce1cd-cd98-7270-b51b-550c58e51e41"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"environment_ref"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"slug"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"production"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"version"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"..."</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p><strong>After:</strong></p>
<div class="language-json codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-json codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"count"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"application_revision"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"019ce1d0-7920-76a0-84b3-bb5a29750634"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"slug"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"default"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"default"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"version"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"application_id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"019ce1cd-ccec-76f1-a803-eb1dc9187d57"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"application_variant_id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"019ce1cd-cd98-7270-b51b-550c58e51e41"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"data"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"parameters"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property" style="color:#36acaa">"prompt"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"..."</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"..."</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"url"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://cloud.agenta.ai/services/completion/v0"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"uri"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"agenta:builtin:completion:v0"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"schemas"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"..."</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"..."</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"flags"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">"is_application"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"is_chat"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"..."</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"..."</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"created_at"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2026-03-12T11:31:02.045131Z"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>If you read fields from the response, here is where each one moved.</p>
<table><thead><tr><th>Old</th><th>New</th></tr></thead><tbody><tr><td><code>response["params"]</code></td><td><code>response["application_revision"]["data"]["parameters"]</code></td></tr><tr><td><code>response["params"]["prompt"]</code></td><td><code>response["application_revision"]["data"]["parameters"]["prompt"]</code></td></tr><tr><td><code>response["url"]</code></td><td><code>response["application_revision"]["data"]["url"]</code></td></tr><tr><td><code>response["application_ref"]["id"]</code></td><td><code>response["application_revision"]["application_id"]</code></td></tr><tr><td><code>response["variant_ref"]["id"]</code></td><td><code>response["application_revision"]["application_variant_id"]</code></td></tr><tr><td><code>response["variant_ref"]["version"]</code></td><td><code>response["application_revision"]["version"]</code></td></tr></tbody></table>
<p>The new response also exposes the input/output <code>schemas</code> under <code>data.schemas</code> and a richer set of <code>flags</code> (including <code>is_chat</code>, <code>has_url</code>, etc.), which were not available in the legacy response.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="python-sdk-unchanged">Python SDK unchanged<a href="https://agenta.ai/docs/changelog/unified-invoke-api#python-sdk-unchanged" class="hash-link" aria-label="Direct link to Python SDK unchanged" title="Direct link to Python SDK unchanged" translate="no">​</a></h3>
<p>If you fetch configurations through the SDK, you don't need to change anything:</p>
<div class="language-python codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-python codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">config </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> ag</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ConfigManager</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">get_from_registry</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    app_slug</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"my-app"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    environment_slug</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"production"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<p>The SDK calls the new endpoint internally and returns the same shape it always has.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="all-affected-endpoints">All affected endpoints<a href="https://agenta.ai/docs/changelog/unified-invoke-api#all-affected-endpoints" class="hash-link" aria-label="Direct link to All affected endpoints" title="Direct link to All affected endpoints" translate="no">​</a></h2>
<p>Below is the complete list of REST endpoints moved in v0.96.0, grouped by domain.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="application-invocation">Application invocation<a href="https://agenta.ai/docs/changelog/unified-invoke-api#application-invocation" class="hash-link" aria-label="Direct link to Application invocation" title="Direct link to Application invocation" translate="no">​</a></h3>
<table><thead><tr><th>Operation</th><th>Old</th><th>New</th></tr></thead><tbody><tr><td>Invoke deployed prompt</td><td><code>POST /services/{svc}/run</code></td><td><a href="https://agenta.ai/docs/changelog/unified-invoke-api#invoking-a-deployed-prompt" class=""><code>POST /services/{svc}/v0/invoke</code></a></td></tr><tr><td>Invoke deployed prompt (alias)</td><td><code>POST /services/{svc}/generate_deployed</code></td><td><a href="https://agenta.ai/docs/changelog/unified-invoke-api#invoking-a-deployed-prompt" class=""><code>POST /services/{svc}/v0/invoke</code></a></td></tr><tr><td>Test with draft config</td><td><code>POST /services/{svc}/generate</code></td><td><a href="https://agenta.ai/docs/changelog/unified-invoke-api#invoking-a-deployed-prompt" class=""><code>POST /services/{svc}/v0/invoke</code></a></td></tr><tr><td>Test with draft config (alias)</td><td><code>POST /services/{svc}/test</code></td><td><a href="https://agenta.ai/docs/changelog/unified-invoke-api#invoking-a-deployed-prompt" class=""><code>POST /services/{svc}/v0/invoke</code></a></td></tr><tr><td>Invoke a workflow</td><td><code>POST /workflows/invoke</code></td><td><a href="https://agenta.ai/docs/changelog/unified-invoke-api#invoking-a-deployed-prompt" class=""><code>POST /services/{svc}/v0/invoke</code></a></td></tr><tr><td>Inspect a workflow revision</td><td><code>POST /workflows/inspect</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/resolve-application-revision"><code>POST /applications/revisions/resolve</code></a></td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="apps-crud">Apps CRUD<a href="https://agenta.ai/docs/changelog/unified-invoke-api#apps-crud" class="hash-link" aria-label="Direct link to Apps CRUD" title="Direct link to Apps CRUD" translate="no">​</a></h3>
<table><thead><tr><th>Operation</th><th>Old</th><th>New</th></tr></thead><tbody><tr><td>List apps</td><td><code>GET /apps</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/query-simple-applications"><code>POST /simple/applications/query</code></a></td></tr><tr><td>Create app</td><td><code>POST /apps</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/create-simple-application"><code>POST /simple/applications/</code></a></td></tr><tr><td>Fetch app</td><td><code>GET /apps/{id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/fetch-application"><code>GET /applications/{id}</code></a></td></tr><tr><td>Update app</td><td><code>PATCH /apps/{id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/edit-application"><code>PUT /applications/{id}</code></a></td></tr><tr><td>Delete app</td><td><code>DELETE /apps/{id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/archive-application"><code>POST /applications/{id}/archive</code></a></td></tr><tr><td>List variants of an app</td><td><code>GET /apps/{id}/variants</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/query-application-variants"><code>POST /applications/variants/query</code></a></td></tr><tr><td>List environments of an app</td><td><code>GET /apps/{id}/environments</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/query-environments"><code>POST /preview/environments/query</code></a></td></tr><tr><td>Get deployed revision for an environment</td><td><code>GET /apps/{id}/revisions/{environment_name}</code></td><td><a href="https://agenta.ai/docs/changelog/unified-invoke-api#fetching-a-prompt-configuration" class=""><code>POST /applications/revisions/retrieve</code></a></td></tr><tr><td>Get variant deployed to an environment</td><td><code>GET /apps/get_variant_by_env</code></td><td><a href="https://agenta.ai/docs/changelog/unified-invoke-api#fetching-a-prompt-configuration" class=""><code>POST /applications/revisions/retrieve</code></a></td></tr><tr><td>Create variant from template</td><td><code>POST /apps/{id}/variant/from-template</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/list-application-catalog-templates"><code>GET /applications/catalog/templates/</code></a> then <a class="" href="https://agenta.ai/docs/reference/api/create-application-variant"><code>POST /applications/variants/</code></a></td></tr><tr><td>Create variant from service URL</td><td><code>POST /apps/{id}/variant/from-service</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/create-application-variant"><code>POST /applications/variants/</code></a></td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="variants-crud">Variants CRUD<a href="https://agenta.ai/docs/changelog/unified-invoke-api#variants-crud" class="hash-link" aria-label="Direct link to Variants CRUD" title="Direct link to Variants CRUD" translate="no">​</a></h3>
<table><thead><tr><th>Operation</th><th>Old</th><th>New</th></tr></thead><tbody><tr><td>Fetch a variant</td><td><code>GET /variants/{id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/fetch-application-variant"><code>GET /applications/variants/{id}</code></a></td></tr><tr><td>Delete a variant</td><td><code>DELETE /variants/{id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/archive-application-variant"><code>POST /applications/variants/{id}/archive</code></a></td></tr><tr><td>List variant revisions</td><td><code>GET /variants/{id}/revisions</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/log-application-revisions"><code>POST /applications/revisions/log</code></a></td></tr><tr><td>Fetch a variant revision</td><td><code>GET /variants/{id}/revisions/{revision_number}</code></td><td><a href="https://agenta.ai/docs/changelog/unified-invoke-api#fetching-a-prompt-configuration" class=""><code>POST /applications/revisions/retrieve</code></a></td></tr><tr><td>Delete a variant revision</td><td><code>DELETE /variants/{id}/revisions/{revision_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/archive-application-revision"><code>POST /applications/revisions/{id}/archive</code></a></td></tr><tr><td>Update variant parameters</td><td><code>PUT /variants/{id}/parameters</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/commit-application-revision"><code>POST /applications/revisions/commit</code></a></td></tr><tr><td>Update variant service URL</td><td><code>PUT /variants/{id}/service</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/edit-application-variant"><code>PUT /applications/variants/{id}</code></a></td></tr><tr><td>Fork a variant from a base</td><td><code>POST /variants/from-base</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/fork-application-variant"><code>POST /applications/variants/fork</code></a></td></tr><tr><td>Query variant revisions</td><td><code>POST /variants/revisions/query</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/query-application-revisions"><code>POST /applications/revisions/query</code></a></td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="variant-configurations">Variant configurations<a href="https://agenta.ai/docs/changelog/unified-invoke-api#variant-configurations" class="hash-link" aria-label="Direct link to Variant configurations" title="Direct link to Variant configurations" translate="no">​</a></h3>
<p>The git-style operations on variant configurations (commit, fork, history) are now exposed under the <code>/applications/revisions/*</code> namespace.</p>
<table><thead><tr><th>Operation</th><th>Old</th><th>New</th></tr></thead><tbody><tr><td>Fetch a configuration</td><td><code>POST /variants/configs/fetch</code></td><td><a href="https://agenta.ai/docs/changelog/unified-invoke-api#fetching-a-prompt-configuration" class=""><code>POST /applications/revisions/retrieve</code></a></td></tr><tr><td>Create a variant with initial config</td><td><code>POST /variants/configs/add</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/create-application-variant"><code>POST /applications/variants/</code></a></td></tr><tr><td>Commit a new configuration revision</td><td><code>POST /variants/configs/commit</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/commit-application-revision"><code>POST /applications/revisions/commit</code></a></td></tr><tr><td>Delete a variant</td><td><code>POST /variants/configs/delete</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/archive-application-variant"><code>POST /applications/variants/{id}/archive</code></a></td></tr><tr><td>Deploy a configuration to an environment</td><td><code>POST /variants/configs/deploy</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/deploy-application-revision"><code>POST /applications/revisions/deploy</code></a></td></tr><tr><td>Fork a variant</td><td><code>POST /variants/configs/fork</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/fork-application-variant"><code>POST /applications/variants/fork</code></a></td></tr><tr><td>Get the revision history of a variant</td><td><code>POST /variants/configs/history</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/log-application-revisions"><code>POST /applications/revisions/log</code></a></td></tr><tr><td>List variants of an app</td><td><code>POST /variants/configs/list</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/query-application-variants"><code>POST /applications/variants/query</code></a></td></tr><tr><td>Query variants with filters</td><td><code>POST /variants/configs/query</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/query-application-variants"><code>POST /applications/variants/query</code></a></td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="environments-and-deployments">Environments and deployments<a href="https://agenta.ai/docs/changelog/unified-invoke-api#environments-and-deployments" class="hash-link" aria-label="Direct link to Environments and deployments" title="Direct link to Environments and deployments" translate="no">​</a></h3>
<div class="theme-admonition theme-admonition-info admonition_LLTp alert alert--info"><div class="admonitionHeading_l9Kb"><span class="admonitionIcon_SqQ2"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Deployment is now an action on a revision</div><div class="admonitionContent_wK1t"><p>In v0.95 you deployed by calling <code>POST /environments/deploy</code> with a variant ID and an environment name. The environment was the actor; the deployment was a side-effect on the environment.</p><p>In v0.96 you deploy by calling <code>POST /applications/revisions/deploy</code> with a revision reference and a target environment reference. The revision is the actor; the environment is just where you point it.</p><p>The legacy <code>/configs/*</code> endpoints exposed environment-side configuration directly. They split into two new namespaces: <code>/applications/revisions/*</code> for the revision lookup itself, and <code>/preview/environments/revisions/*</code> for the environment's deployment history (when, who, and which revision was deployed at each point).</p></div></div>
<table><thead><tr><th>Operation</th><th>Old</th><th>New</th></tr></thead><tbody><tr><td>Deploy to environment</td><td><code>POST /environments/deploy</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/deploy-application-revision"><code>POST /applications/revisions/deploy</code></a></td></tr><tr><td>List configurations</td><td><code>GET /configs</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/query-application-revisions"><code>POST /applications/revisions/query</code></a></td></tr><tr><td>Fetch a deployed configuration</td><td><code>GET /configs/deployment/{revision_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/retrieve-environment-revision"><code>POST /preview/environments/revisions/retrieve</code></a></td></tr><tr><td>Revert a deployment</td><td><code>POST /configs/deployment/{revision_id}/revert</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/commit-environment-revision"><code>POST /preview/environments/revisions/commit</code></a></td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="containers">Containers<a href="https://agenta.ai/docs/changelog/unified-invoke-api#containers" class="hash-link" aria-label="Direct link to Containers" title="Direct link to Containers" translate="no">​</a></h3>
<table><thead><tr><th>Operation</th><th>Old</th><th>New</th></tr></thead><tbody><tr><td>List built-in templates</td><td><code>GET /containers/templates</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/list-application-catalog-templates"><code>GET /applications/catalog/templates/</code></a></td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="annotations">Annotations<a href="https://agenta.ai/docs/changelog/unified-invoke-api#annotations" class="hash-link" aria-label="Direct link to Annotations" title="Direct link to Annotations" translate="no">​</a></h3>
<p>Annotations are observability records you attach to a trace or span to capture things like a human rating, an evaluator score, or a correction. They previously lived under <code>/annotations/*</code> and <code>/preview/annotations/*</code>. Both namespaces were removed. Annotations now share the unified <code>/simple/traces/*</code> API with other observability records.</p>
<table><thead><tr><th>Operation</th><th>Old</th><th>New</th></tr></thead><tbody><tr><td>Create an annotation</td><td><code>POST /annotations/</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/create-simple-trace"><code>POST /simple/traces/</code></a></td></tr><tr><td>Query annotations</td><td><code>POST /annotations/query</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/query-simple-traces"><code>POST /simple/traces/query</code></a></td></tr><tr><td>Fetch an annotation by trace</td><td><code>GET /annotations/{trace_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/fetch-simple-trace"><code>GET /simple/traces/{trace_id}</code></a></td></tr><tr><td>Fetch an annotation by trace and span</td><td><code>GET /annotations/{trace_id}/{span_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/fetch-simple-trace"><code>GET /simple/traces/{trace_id}</code></a></td></tr><tr><td>Update an annotation by trace</td><td><code>PATCH /annotations/{trace_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/edit-simple-trace"><code>PATCH /simple/traces/{trace_id}</code></a></td></tr><tr><td>Update an annotation by trace and span</td><td><code>PATCH /annotations/{trace_id}/{span_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/edit-simple-trace"><code>PATCH /simple/traces/{trace_id}</code></a></td></tr><tr><td>Delete an annotation by trace</td><td><code>DELETE /annotations/{trace_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/delete-simple-trace"><code>DELETE /simple/traces/{trace_id}</code></a></td></tr><tr><td>Delete an annotation by trace and span</td><td><code>DELETE /annotations/{trace_id}/{span_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/delete-simple-trace"><code>DELETE /simple/traces/{trace_id}</code></a></td></tr><tr><td>Create an annotation (preview)</td><td><code>POST /preview/annotations/</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/create-simple-trace"><code>POST /simple/traces/</code></a></td></tr><tr><td>Query annotations (preview)</td><td><code>POST /preview/annotations/query</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/query-simple-traces"><code>POST /simple/traces/query</code></a></td></tr><tr><td>Fetch an annotation (preview)</td><td><code>GET /preview/annotations/{trace_id}/{span_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/fetch-simple-trace"><code>GET /simple/traces/{trace_id}</code></a></td></tr><tr><td>Update an annotation (preview)</td><td><code>PATCH /preview/annotations/{trace_id}/{span_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/edit-simple-trace"><code>PATCH /simple/traces/{trace_id}</code></a></td></tr><tr><td>Delete an annotation (preview)</td><td><code>DELETE /preview/annotations/{trace_id}/{span_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/delete-simple-trace"><code>DELETE /simple/traces/{trace_id}</code></a></td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="invocations">Invocations<a href="https://agenta.ai/docs/changelog/unified-invoke-api#invocations" class="hash-link" aria-label="Direct link to Invocations" title="Direct link to Invocations" translate="no">​</a></h3>
<p>Invocations are observability records that capture a single LLM call: the input, the output, latency, cost, and the model used. They previously lived under <code>/invocations/*</code>. They now share the unified <code>/simple/traces/*</code> API with annotations, distinguished by the <code>kind</code> field on each record.</p>
<table><thead><tr><th>Operation</th><th>Old</th><th>New</th></tr></thead><tbody><tr><td>Create an invocation</td><td><code>POST /invocations/</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/create-simple-trace"><code>POST /simple/traces/</code></a></td></tr><tr><td>Query invocations</td><td><code>POST /invocations/query</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/query-simple-traces"><code>POST /simple/traces/query</code></a></td></tr><tr><td>Fetch an invocation by trace</td><td><code>GET /invocations/{trace_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/fetch-simple-trace"><code>GET /simple/traces/{trace_id}</code></a></td></tr><tr><td>Fetch an invocation by trace and span</td><td><code>GET /invocations/{trace_id}/{span_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/fetch-simple-trace"><code>GET /simple/traces/{trace_id}</code></a></td></tr><tr><td>Update an invocation by trace</td><td><code>PATCH /invocations/{trace_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/edit-simple-trace"><code>PATCH /simple/traces/{trace_id}</code></a></td></tr><tr><td>Update an invocation by trace and span</td><td><code>PATCH /invocations/{trace_id}/{span_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/edit-simple-trace"><code>PATCH /simple/traces/{trace_id}</code></a></td></tr><tr><td>Delete an invocation by trace</td><td><code>DELETE /invocations/{trace_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/delete-simple-trace"><code>DELETE /simple/traces/{trace_id}</code></a></td></tr><tr><td>Delete an invocation by trace and span</td><td><code>DELETE /invocations/{trace_id}/{span_id}</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/delete-simple-trace"><code>DELETE /simple/traces/{trace_id}</code></a></td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="spans">Spans<a href="https://agenta.ai/docs/changelog/unified-invoke-api#spans" class="hash-link" aria-label="Direct link to Spans" title="Direct link to Spans" translate="no">​</a></h3>
<table><thead><tr><th>Operation</th><th>Old</th><th>New</th></tr></thead><tbody><tr><td>Create a span</td><td><code>POST /preview/spans/</code></td><td><a class="" href="https://agenta.ai/docs/reference/api/create-simple-trace"><code>POST /simple/traces/</code></a></td></tr><tr><td>Ingest spans in bulk</td><td><code>POST /preview/spans/ingest</code></td><td>OTLP ingestion endpoint (see <a class="" href="https://agenta.ai/docs/observability/overview">Observability docs</a>)</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="need-help">Need help?<a href="https://agenta.ai/docs/changelog/unified-invoke-api#need-help" class="hash-link" aria-label="Direct link to Need help?" title="Direct link to Need help?" translate="no">​</a></h2>
<p>If you have questions about migrating, reach out on <a href="https://join.slack.com/t/agenta-hq/shared_invite/zt-37pnbp5s6-mbBrPL863d_oLB61GSNFjw" target="_blank" rel="noopener noreferrer" class="">Slack</a> or reply to the migration email. We are happy to help.</p>]]></content:encoded>
            <category>v0.96.0</category>
        </item>
        <item>
            <title><![CDATA[Webhooks and GitHub Automations for Prompt Deployments]]></title>
            <link>https://agenta.ai/docs/changelog/deployment-webhooks-and-github-automations</link>
            <guid>https://agenta.ai/docs/changelog/deployment-webhooks-and-github-automations</guid>
            <pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Trigger webhooks and GitHub Actions when you deploy a prompt. Use repository dispatch, workflow dispatch, or a custom HTTPS endpoint.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="the-problem">The Problem<a href="https://agenta.ai/docs/changelog/deployment-webhooks-and-github-automations#the-problem" class="hash-link" aria-label="Direct link to The Problem" title="Direct link to The Problem" translate="no">​</a></h2>
<p>Deploying a prompt often needs follow-up work outside Agenta. You may want to sync prompt files into a repository, trigger CI, open a pull request, or notify an internal platform. Before this change, that required custom glue code.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="the-solution">The Solution<a href="https://agenta.ai/docs/changelog/deployment-webhooks-and-github-automations#the-solution" class="hash-link" aria-label="Direct link to The Solution" title="Direct link to The Solution" translate="no">​</a></h2>
<p>You can now trigger webhooks and GitHub automations directly from Agenta when a deployment event happens. Point Agenta at your own HTTPS endpoint, or send the event straight to GitHub with <code>repository_dispatch</code> or <code>workflow_dispatch</code>.</p>
<p>This gives you a simple way to connect prompt deployments to the rest of your delivery flow. You can keep prompt changes, infrastructure checks, and repository updates in sync without building a separate integration service.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="what-you-can-do">What You Can Do<a href="https://agenta.ai/docs/changelog/deployment-webhooks-and-github-automations#what-you-can-do" class="hash-link" aria-label="Direct link to What You Can Do" title="Direct link to What You Can Do" translate="no">​</a></h2>
<ul>
<li class="">Send deployment events to any HTTPS endpoint</li>
<li class="">Verify deliveries with HMAC signatures or use a bearer token</li>
<li class="">Trigger GitHub <code>repository_dispatch</code> with a structured event payload</li>
<li class="">Trigger GitHub <code>workflow_dispatch</code> for one known workflow on a branch</li>
<li class="">Fetch the latest prompt in GitHub Actions and open a pull request automatically</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="how-it-works">How It Works<a href="https://agenta.ai/docs/changelog/deployment-webhooks-and-github-automations#how-it-works" class="hash-link" aria-label="Direct link to How It Works" title="Direct link to How It Works" translate="no">​</a></h2>
<p>Create an automation in your project settings and subscribe it to deployment events. When a prompt revision is committed to an environment, Agenta sends an HTTP <code>POST</code> to your target.</p>
<p>For generic webhooks, Agenta sends the event payload plus delivery headers such as <code>X-Agenta-Event-Type</code>, <code>X-Agenta-Delivery-Id</code>, and <code>Idempotency-Key</code>. In signature mode, Agenta also signs the raw request body with HMAC-SHA256.</p>
<p>For GitHub automations, Agenta calls the GitHub API directly. <code>repository_dispatch</code> sends a richer JSON payload that includes event metadata and references. <code>workflow_dispatch</code> sends a smaller set of string inputs for a specific workflow file and branch.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="typical-use-cases">Typical Use Cases<a href="https://agenta.ai/docs/changelog/deployment-webhooks-and-github-automations#typical-use-cases" class="hash-link" aria-label="Direct link to Typical Use Cases" title="Direct link to Typical Use Cases" translate="no">​</a></h2>
<ul>
<li class="">Sync the latest deployed prompt into a repository</li>
<li class="">Open a pull request for prompt changes after each deployment</li>
<li class="">Trigger validation or approval workflows in GitHub Actions</li>
<li class="">Notify internal tools when a production prompt changes</li>
<li class="">Mirror deployment metadata into another system for auditing</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="getting-started">Getting Started<a href="https://agenta.ai/docs/changelog/deployment-webhooks-and-github-automations#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
<p>Start with these guides:</p>
<ul>
<li class=""><a class="" href="https://agenta.ai/docs/prompt-engineering/integrating-prompts/webhooks">Webhooks</a></li>
<li class=""><a class="" href="https://agenta.ai/docs/prompt-engineering/integrating-prompts/github">GitHub</a></li>
<li class=""><a class="" href="https://agenta.ai/docs/prompt-engineering/integrating-prompts/fetch-prompt-programatically">Fetch Prompts via SDK/API</a></li>
</ul>]]></content:encoded>
            <category>v0.94.0</category>
        </item>
        <item>
            <title><![CDATA[Tool Integrations in the Playground]]></title>
            <link>https://agenta.ai/docs/changelog/tool-integrations</link>
            <guid>https://agenta.ai/docs/changelog/tool-integrations</guid>
            <pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Connect 150+ tools to your prompts directly from the playground. Gmail, Slack, Notion, Google Sheets, GitHub, and more.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="the-problem">The Problem<a href="https://agenta.ai/docs/changelog/tool-integrations#the-problem" class="hash-link" aria-label="Direct link to The Problem" title="Direct link to The Problem" translate="no">​</a></h2>
<p>Building agentic applications that interact with external services means writing integration code: OAuth flows, API wrappers, error handling. You do all of that before you can even test whether your prompt works with the tool.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="the-solution">The Solution<a href="https://agenta.ai/docs/changelog/tool-integrations#the-solution" class="hash-link" aria-label="Direct link to The Solution" title="Direct link to The Solution" translate="no">​</a></h2>
<div style="display:flex;justify-content:center;margin-top:20px;margin-bottom:20px;flex-direction:column;align-items:center"><iframe width="100%" height="500" src="https://www.youtube.com/embed/nEbwJhdTQds" title="Tool Integrations in the Playground" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe></div>
<p>You can now connect external tools to your prompts and call them from the playground. Browse a catalog of 150+ integrations, authenticate with OAuth or an API key, and attach tool actions to your prompt config. When the LLM generates a tool call, you execute it with one click and send the result back to the chat.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="what-you-can-do">What You Can Do<a href="https://agenta.ai/docs/changelog/tool-integrations#what-you-can-do" class="hash-link" aria-label="Direct link to What You Can Do" title="Direct link to What You Can Do" translate="no">​</a></h2>
<ul>
<li class=""><strong>Use Google Sheets or Notion as data sources.</strong> Connect a spreadsheet or Notion database and let the LLM query it. Build RAG applications directly from the playground without writing any code.</li>
<li class=""><strong>Send emails and messages.</strong> Attach Gmail or Slack and your prompt can draft and send emails, post to channels, or create threads.</li>
<li class=""><strong>Automate developer workflows.</strong> Connect GitHub to create issues, Jira to update tickets, or any of the 150+ available integrations.</li>
<li class=""><strong>Manage connections in Settings.</strong> A dedicated Tools page shows all your connected integrations, their status, and lets you add or revoke connections.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="how-it-works">How It Works<a href="https://agenta.ai/docs/changelog/tool-integrations#how-it-works" class="hash-link" aria-label="Direct link to How It Works" title="Direct link to How It Works" translate="no">​</a></h2>
<ol>
<li class="">Go to <strong>Settings &gt; Tools</strong> and connect an integration (e.g., Gmail). You authenticate via OAuth or paste an API key.</li>
<li class="">In the Playground, open the tools panel in your prompt config. Your connected integrations appear there.</li>
<li class="">Select the actions you want available to the LLM (e.g., "Send Email", "List Emails").</li>
<li class="">Run your prompt. When the LLM generates a tool call, click "Execute" to run it and return the result to the conversation.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="getting-started">Getting Started<a href="https://agenta.ai/docs/changelog/tool-integrations#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
<p>Tool integrations are available on Agenta Cloud. Connect your first integration in <strong>Settings &gt; Tools</strong>.</p>]]></content:encoded>
            <category>v0.87.0</category>
        </item>
        <item>
            <title><![CDATA[AI-Powered Prompt Refinement in the Playground]]></title>
            <link>https://agenta.ai/docs/changelog/refine-ai</link>
            <guid>https://agenta.ai/docs/changelog/refine-ai</guid>
            <pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Refine your prompts with AI directly in the playground. Describe what you want to improve and get a refined version with an explanation of the changes.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="the-problem">The Problem<a href="https://agenta.ai/docs/changelog/refine-ai#the-problem" class="hash-link" aria-label="Direct link to The Problem" title="Direct link to The Problem" translate="no">​</a></h2>
<p>Prompt engineering is iterative. You write a prompt, test it, notice it's too vague or missing constraints, and rewrite it. Each cycle requires you to figure out <em>how</em> to improve it, not just <em>what</em> to improve. That's the hard part.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="the-solution">The Solution<a href="https://agenta.ai/docs/changelog/refine-ai#the-solution" class="hash-link" aria-label="Direct link to The Solution" title="Direct link to The Solution" translate="no">​</a></h2>
<p>You can now refine prompts with AI directly in the playground. Click the wand icon on any prompt section, describe what you want to change in plain English, and get back a refined version with an explanation of what changed and why.</p>
<div style="display:flex;justify-content:center;margin-top:20px;margin-bottom:20px;flex-direction:column;align-items:center"><iframe width="100%" height="500" src="https://www.youtube.com/embed/V2hHC8hZEeE" title="AI-Powered Prompt Refinement" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe></div>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="how-it-works">How It Works<a href="https://agenta.ai/docs/changelog/refine-ai#how-it-works" class="hash-link" aria-label="Direct link to How It Works" title="Direct link to How It Works" translate="no">​</a></h2>
<ol>
<li class="">Open a prompt in the playground and click the <strong>wand icon</strong> in the prompt section header.</li>
<li class="">A two-panel modal opens. On the left, type what you want to improve (e.g., "add output format instructions" or "make it more concise"). On the right, see the refined prompt.</li>
<li class="">Each refinement builds on the previous result, so you can iterate. Ask for one change, review it, then ask for another.</li>
<li class="">Toggle the <strong>Diff view</strong> to see exactly what changed compared to the original.</li>
<li class="">Edit the refined prompt directly if you want to adjust anything before applying.</li>
<li class="">Click <strong>Use refined prompt</strong> to apply the changes to your playground session.</li>
</ol>
<p>You can also use the built-in quick action "Optimize the prompt using best practices" for a one-click improvement.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="what-you-can-do">What You Can Do<a href="https://agenta.ai/docs/changelog/refine-ai#what-you-can-do" class="hash-link" aria-label="Direct link to What You Can Do" title="Direct link to What You Can Do" translate="no">​</a></h2>
<ul>
<li class=""><strong>Describe improvements in plain English</strong>: "Add a constraint that the output must be valid JSON" or "Make the tone more professional."</li>
<li class=""><strong>Iterate</strong>: Each refinement uses the latest version, so you can make incremental changes across multiple rounds.</li>
<li class=""><strong>Review diffs</strong>: Toggle the diff view to see a side-by-side comparison of the original and refined prompts.</li>
<li class=""><strong>Edit before applying</strong>: The refined prompt is fully editable. Adjust anything before committing.</li>
<li class=""><strong>Quick optimize</strong>: Use the built-in "Optimize the prompt using best practices" shortcut for an instant improvement.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="getting-started">Getting Started<a href="https://agenta.ai/docs/changelog/refine-ai#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
<p>Open any prompt in the playground. Look for the wand icon in the prompt section header. If you don't see it, the feature may not be enabled for your organization yet.</p>]]></content:encoded>
            <category>v0.84.0</category>
        </item>
        <item>
            <title><![CDATA[Enterprise Compliance Features]]></title>
            <link>https://agenta.ai/docs/changelog/enterprise-compliance-features</link>
            <guid>https://agenta.ai/docs/changelog/enterprise-compliance-features</guid>
            <pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Multi-organization support, SSO with any OIDC provider, domain verification, and a new US region.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="overview">Overview<a href="https://agenta.ai/docs/changelog/enterprise-compliance-features#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h2>
<p>Agenta has new enterprise features. Multi-organization support, SSO, domain verification, and a US region.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="multi-organization-support">Multi-Organization Support<a href="https://agenta.ai/docs/changelog/enterprise-compliance-features#multi-organization-support" class="hash-link" aria-label="Direct link to Multi-Organization Support" title="Direct link to Multi-Organization Support" translate="no">​</a></h2>
<p>You can now create separate organizations for different teams or clients. Each organization has its own billing, projects, and roles. One account can belong to multiple organizations, and you switch between them without signing out.</p>
<p>Inside each organization, you create workspaces and projects. Workspaces group related projects together. Projects scope your prompts, evaluations, and traces.</p>
<p>Roles are per-organization. You can be an owner in one org and a viewer in another. Available roles include owner, workspace admin, editor, viewer, evaluator, and deployment manager.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="sso">SSO<a href="https://agenta.ai/docs/changelog/enterprise-compliance-features#sso" class="hash-link" aria-label="Direct link to SSO" title="Direct link to SSO" translate="no">​</a></h2>
<p>Connect your identity provider to Agenta. We support any OIDC-compliant provider: Okta, Azure AD, Auth0, OneLogin, Google Workspace, and others.</p>
<p>You configure SSO per-organization through the API. Add your provider's issuer URL, client ID, and client secret. Agenta discovers the rest from the OIDC discovery endpoint. You can test the connection before enabling it.</p>
<p>If your security policy requires it, you can enforce SSO-only for an organization and disable password login entirely.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="domain-verification">Domain Verification<a href="https://agenta.ai/docs/changelog/enterprise-compliance-features#domain-verification" class="hash-link" aria-label="Direct link to Domain Verification" title="Direct link to Domain Verification" translate="no">​</a></h2>
<p>Verify your company domain via a DNS TXT record. Once verified, anyone who signs up with a matching email address joins your organization automatically. No need to send invitations one by one.</p>
<p>Domain verification also works with SSO enforcement. Users with a verified domain email are automatically routed to your SSO provider during login.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="us-region">US Region<a href="https://agenta.ai/docs/changelog/enterprise-compliance-features#us-region" class="hash-link" aria-label="Direct link to US Region" title="Direct link to US Region" translate="no">​</a></h2>
<p>Agenta Cloud now has a US-based region. If your data needs to stay in the United States, you can run your projects there. The US region has the same features as the EU region.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="availability">Availability<a href="https://agenta.ai/docs/changelog/enterprise-compliance-features#availability" class="hash-link" aria-label="Direct link to Availability" title="Direct link to Availability" translate="no">​</a></h2>
<p>SSO, and domain verification are available on Business and Enterprise plans. The US region is available on all plans.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="getting-started">Getting Started<a href="https://agenta.ai/docs/changelog/enterprise-compliance-features#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
<ul>
<li class=""><a class="" href="https://agenta.ai/docs/administration/access-control/organizations">Organizations documentation</a></li>
<li class=""><a class="" href="https://agenta.ai/docs/administration/access-control/sso">SSO documentation</a></li>
</ul>]]></content:encoded>
            <category>v0.83.0</category>
        </item>
        <item>
            <title><![CDATA[Folders for Prompt Organization]]></title>
            <link>https://agenta.ai/docs/changelog/prompt-folders</link>
            <guid>https://agenta.ai/docs/changelog/prompt-folders</guid>
            <pubDate>Wed, 04 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Organize prompts with folders and subfolders. Create, move, and search prompts within a familiar file-system structure.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="the-problem">The Problem<a href="https://agenta.ai/docs/changelog/prompt-folders#the-problem" class="hash-link" aria-label="Direct link to The Problem" title="Direct link to The Problem" translate="no">​</a></h2>
<p>When you're building agents or managing multiple use cases, prompts multiply fast. Finding the right one turns into scrolling through a flat list.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="the-solution">The Solution<a href="https://agenta.ai/docs/changelog/prompt-folders#the-solution" class="hash-link" aria-label="Direct link to The Solution" title="Direct link to The Solution" translate="no">​</a></h2>
<p>You can now create folders and subfolders to organize your prompts. It works like any file system you've used before.</p>
<p>Create a folder. Drag prompts into it. Create subfolders. Move things around as your structure evolves.</p>
<div style="display:flex;justify-content:center;margin-top:20px;margin-bottom:20px;flex-direction:column;align-items:center"><iframe width="100%" height="500" src="https://www.youtube.com/embed/2oy6ymnOq7I" title="Folders for Prompt Organization" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe></div>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="what-you-can-do">What You Can Do<a href="https://agenta.ai/docs/changelog/prompt-folders#what-you-can-do" class="hash-link" aria-label="Direct link to What You Can Do" title="Direct link to What You Can Do" translate="no">​</a></h2>
<ul>
<li class=""><strong>Create folders</strong> and nest them as deep as you need</li>
<li class=""><strong>Move prompts and folders</strong> via drag-and-drop or the actions menu</li>
<li class=""><strong>Search</strong> across all folders from the root level</li>
<li class=""><strong>Share folder URLs</strong> with teammates (folder location persists in the URL)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="getting-started">Getting Started<a href="https://agenta.ai/docs/changelog/prompt-folders#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
<p>Go to the Prompts page. Click "Create new" and select "New folder". Name it, and start organizing.</p>]]></content:encoded>
            <category>v0.82.0</category>
        </item>
        <item>
            <title><![CDATA[Onboarding Widget and Guided Walkthroughs]]></title>
            <link>https://agenta.ai/docs/changelog/onboarding-widget-walkthroughs</link>
            <guid>https://agenta.ai/docs/changelog/onboarding-widget-walkthroughs</guid>
            <pubDate>Thu, 29 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[New onboarding widget with guided walkthroughs to help you get started with Agenta's key features.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="overview">Overview<a href="https://agenta.ai/docs/changelog/onboarding-widget-walkthroughs#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h2>
<p>Getting started with a new platform can be overwhelming. You now have an onboarding widget that guides you through Agenta's key features step by step. The widget appears in the sidebar and tracks your progress as you explore the platform.</p>
<p>Each walkthrough highlights the relevant UI elements and explains what they do. You learn by doing, not by reading documentation.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="key-capabilities">Key Capabilities<a href="https://agenta.ai/docs/changelog/onboarding-widget-walkthroughs#key-capabilities" class="hash-link" aria-label="Direct link to Key Capabilities" title="Direct link to Key Capabilities" translate="no">​</a></h2>
<ul>
<li class=""><strong>Progress Tracking</strong>: The widget shows which features you've explored and what's left to discover</li>
<li class=""><strong>Interactive Walkthroughs</strong>: Step-by-step tours that highlight UI elements as you go</li>
<li class=""><strong>Contextual Guidance</strong>: Each walkthrough focuses on a specific workflow, from creating prompts to running evaluations</li>
<li class=""><strong>Dismissible</strong>: Once you're comfortable, dismiss the widget and it stays out of your way</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="available-walkthroughs">Available Walkthroughs<a href="https://agenta.ai/docs/changelog/onboarding-widget-walkthroughs#available-walkthroughs" class="hash-link" aria-label="Direct link to Available Walkthroughs" title="Direct link to Available Walkthroughs" translate="no">​</a></h2>
<p>The onboarding widget includes guided tours for:</p>
<ul>
<li class=""><strong>Playground Basics</strong>: Create and test prompts, compare variants, and iterate on your configurations</li>
<li class=""><strong>Running Evaluations</strong>: Set up test sets, configure evaluators, and analyze results</li>
<li class=""><strong>Observability</strong>: Trace your LLM calls, add annotations, and debug production issues</li>
<li class=""><strong>Deployment</strong>: Deploy prompts to environments and fetch configurations in your code</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="how-it-works">How It Works<a href="https://agenta.ai/docs/changelog/onboarding-widget-walkthroughs#how-it-works" class="hash-link" aria-label="Direct link to How It Works" title="Direct link to How It Works" translate="no">​</a></h2>
<p>The onboarding widget appears automatically for new users. Each walkthrough takes you through the actual UI, highlighting buttons, menus, and features as you go. Complete a walkthrough to mark it done, or skip ahead if you already know the basics.</p>
<p>You can reopen the widget anytime from the sidebar to revisit walkthroughs or check your progress.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="getting-started">Getting Started<a href="https://agenta.ai/docs/changelog/onboarding-widget-walkthroughs#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
<p>The widget appears automatically when you sign up or create a new project. If you've dismissed it and want it back, look for the help icon in the sidebar.</p>
<p>For detailed documentation on each feature, check out:</p>
<ul>
<li class=""><a class="" href="https://agenta.ai/docs/prompt-engineering/quick-start">Playground Quick Start</a></li>
<li class=""><a class="" href="https://agenta.ai/docs/evaluation/evaluation-from-ui/quick-start">Evaluation Quick Start</a></li>
<li class=""><a class="" href="https://agenta.ai/docs/observability/quickstart-python">Observability Quick Start</a></li>
</ul>]]></content:encoded>
            <category>v0.81.1</category>
        </item>
        <item>
            <title><![CDATA[Navigation Links from Traces to App/Environment/Variant]]></title>
            <link>https://agenta.ai/docs/changelog/trace-navigation-links</link>
            <guid>https://agenta.ai/docs/changelog/trace-navigation-links</guid>
            <pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Clickable links in observability traces to navigate directly to the application, variant, and environment that generated each trace.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="overview">Overview<a href="https://agenta.ai/docs/changelog/trace-navigation-links#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h2>
<p>You can now click directly from any trace to the application, variant, version, or environment that generated it. This makes debugging much faster. Instead of manually searching for which configuration produced a specific output, you can jump there in one click.</p>
<p>This is especially useful when you're investigating production issues. You see a problematic trace, click through to the exact prompt version, and start iterating immediately.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="key-capabilities">Key Capabilities<a href="https://agenta.ai/docs/changelog/trace-navigation-links#key-capabilities" class="hash-link" aria-label="Direct link to Key Capabilities" title="Direct link to Key Capabilities" translate="no">​</a></h2>
<ul>
<li class=""><strong>Clickable Application Links</strong>: Jump from a trace to the application that generated it</li>
<li class=""><strong>Variant Navigation</strong>: Go directly to the specific variant and version used</li>
<li class=""><strong>Environment Context</strong>: See and navigate to the environment (production, staging, development) where the trace originated</li>
<li class=""><strong>Drawer Integration</strong>: Links appear in both the trace table and the detailed drawer view</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="how-to-add-references-to-your-traces">How to Add References to Your Traces<a href="https://agenta.ai/docs/changelog/trace-navigation-links#how-to-add-references-to-your-traces" class="hash-link" aria-label="Direct link to How to Add References to Your Traces" title="Direct link to How to Add References to Your Traces" translate="no">​</a></h2>
<p>For the navigation links to appear, you need to store references in your traces. Here's how to do it with the Python SDK and OpenTelemetry.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="using-the-python-sdk">Using the Python SDK<a href="https://agenta.ai/docs/changelog/trace-navigation-links#using-the-python-sdk" class="hash-link" aria-label="Direct link to Using the Python SDK" title="Direct link to Using the Python SDK" translate="no">​</a></h3>
<div class="language-python codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-python codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> agenta </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> ag</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">ag</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">init</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Store references to link traces to your configuration</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">ag</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">tracing</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">store_refs</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"application.slug"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"my-chatbot"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"variant.slug"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"gpt-4-optimized"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"variant.version"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"3"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"environment.slug"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"production"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Your LLM calls are now linked to this configuration</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">chat</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">completions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"gpt-4"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    messages</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Hello!"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="using-opentelemetry">Using OpenTelemetry<a href="https://agenta.ai/docs/changelog/trace-navigation-links#using-opentelemetry" class="hash-link" aria-label="Direct link to Using OpenTelemetry" title="Direct link to Using OpenTelemetry" translate="no">​</a></h3>
<p>If you're using OpenTelemetry for instrumentation, add references as span attributes:</p>
<div class="language-javascript codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-javascript codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> trace </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'@opentelemetry/api'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> tracer </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> trace</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getTracer</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'my-app'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> span </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> tracer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">startSpan</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'chat-interaction'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Add references to link the trace</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">span</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">setAttribute</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'ag.refs.application.slug'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'my-chatbot'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">span</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">setAttribute</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'ag.refs.variant.slug'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'gpt-4-optimized'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">span</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">setAttribute</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'ag.refs.variant.version'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'3'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">span</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">setAttribute</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'ag.refs.environment.slug'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'production'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Your code here</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">span</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">end</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="available-reference-keys">Available Reference Keys<a href="https://agenta.ai/docs/changelog/trace-navigation-links#available-reference-keys" class="hash-link" aria-label="Direct link to Available Reference Keys" title="Direct link to Available Reference Keys" translate="no">​</a></h2>
<p>You can use any combination of these reference keys:</p>
<table><thead><tr><th>Category</th><th>Keys</th></tr></thead><tbody><tr><td>Application</td><td><code>application.slug</code>, <code>application.id</code></td></tr><tr><td>Variant</td><td><code>variant.slug</code>, <code>variant.id</code>, <code>variant.version</code></td></tr><tr><td>Environment</td><td><code>environment.slug</code>, <code>environment.id</code>, <code>environment.version</code></td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="use-cases">Use Cases<a href="https://agenta.ai/docs/changelog/trace-navigation-links#use-cases" class="hash-link" aria-label="Direct link to Use Cases" title="Direct link to Use Cases" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="debug-production-issues">Debug Production Issues<a href="https://agenta.ai/docs/changelog/trace-navigation-links#debug-production-issues" class="hash-link" aria-label="Direct link to Debug Production Issues" title="Direct link to Debug Production Issues" translate="no">​</a></h3>
<p>When a user reports a problem, find the trace and click through to see exactly which prompt version was used. No more guessing or searching through commit history.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="compare-configurations">Compare Configurations<a href="https://agenta.ai/docs/changelog/trace-navigation-links#compare-configurations" class="hash-link" aria-label="Direct link to Compare Configurations" title="Direct link to Compare Configurations" translate="no">​</a></h3>
<p>Filter traces by variant, then click through to compare how different configurations perform. Jump between variants to understand what changed.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="track-deployments">Track Deployments<a href="https://agenta.ai/docs/changelog/trace-navigation-links#track-deployments" class="hash-link" aria-label="Direct link to Track Deployments" title="Direct link to Track Deployments" translate="no">​</a></h3>
<p>See which environment generated each trace. Verify that production is running the expected version by clicking through from any trace.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="getting-started">Getting Started<a href="https://agenta.ai/docs/changelog/trace-navigation-links#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
<p>Learn more about storing references in our documentation:</p>
<ul>
<li class=""><a class="" href="https://agenta.ai/docs/observability/trace-with-python-sdk/reference-prompt-versions">Reference Prompt Versions (Python SDK)</a></li>
<li class=""><a class="" href="https://agenta.ai/docs/observability/trace-with-opentelemetry/semantic-conventions">Semantic Conventions (OpenTelemetry)</a></li>
<li class=""><a class="" href="https://agenta.ai/docs/observability/overview">Observability Overview</a></li>
</ul>]]></content:encoded>
            <category>v0.81.0</category>
        </item>
        <item>
            <title><![CDATA[Test Set Versioning and New Test Set UI]]></title>
            <link>https://agenta.ai/docs/changelog/testset-versioning</link>
            <guid>https://agenta.ai/docs/changelog/testset-versioning</guid>
            <pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Track test set changes with versioning and link evaluations to specific versions. Plus a completely rebuilt test set UI that scales to hundreds of thousands of rows.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="overview">Overview<a href="https://agenta.ai/docs/changelog/testset-versioning#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h2>
<p>When you compare evaluation results from last week to today, how do you know the test data didn't change? You don't. Until now.</p>
<p>Test set versioning tracks every change to your test sets. Each edit, upload, or programmatic update creates a new version. Evaluations link to specific versions, so you can trust your comparisons.</p>
<p>We also rebuilt the test set UI from scratch. It handles hundreds of thousands of rows without slowing down. Editing is faster, especially for chat messages and complex JSON data.</p>
<div style="display:flex;justify-content:center;margin-top:20px;margin-bottom:20px;flex-direction:column;align-items:center"><iframe width="100%" height="500" src="https://www.youtube.com/embed/hh1OHhzak6Q" title="Test Set Versioning Demo" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe></div>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="test-set-versioning">Test Set Versioning<a href="https://agenta.ai/docs/changelog/testset-versioning#test-set-versioning" class="hash-link" aria-label="Direct link to Test Set Versioning" title="Direct link to Test Set Versioning" translate="no">​</a></h2>
<p>Every change to a test set creates a new version. You can see the version history, compare versions, and revert to previous versions.</p>
<p><strong>What gets versioned:</strong></p>
<ul>
<li class="">Adding, editing, or deleting test cases</li>
<li class="">Uploading new data (CSV, JSON)</li>
<li class="">Programmatic updates via SDK or API</li>
<li class="">Column changes</li>
</ul>
<p><strong>Evaluation linking:</strong>
When you run an evaluation, it links to the specific test set version used. This means:</p>
<ul>
<li class="">You can compare evaluations knowing they used the same test data</li>
<li class="">If someone updates the test set, your historical evaluations still reference the original version</li>
<li class="">You can filter evaluations by test set version</li>
</ul>
<p><strong>Programmatic versioning:</strong>
Upload test sets via the SDK or API. The system detects changes and creates new versions automatically.</p>
<div class="language-python codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-python codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> agenta </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> ag</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Upload a test set - creates a new version if content changed</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">testset </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> ag</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">testsets</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">upload</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    name</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"my-test-set"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    data</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">test_cases</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># Your test case data</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># The testset object includes version information</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"Version: </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">testset</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">version</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="new-test-set-ui">New Test Set UI<a href="https://agenta.ai/docs/changelog/testset-versioning#new-test-set-ui" class="hash-link" aria-label="Direct link to New Test Set UI" title="Direct link to New Test Set UI" translate="no">​</a></h2>
<p>The test set view is completely rebuilt. It uses virtualized rendering, so it stays fast with large datasets.</p>
<p><strong>What's new:</strong></p>
<ul>
<li class=""><strong>Scale</strong>: Handle 100,000+ rows without performance issues</li>
<li class=""><strong>JSON support</strong>: View and edit complex JSON directly. Toggle between raw JSON and formatted views</li>
<li class=""><strong>String or JSON columns</strong>: Choose how each column stores data. Use JSON for structured data like chat messages</li>
</ul>
<p><strong>Chat message editing:</strong>
Test cases with chat messages (like <code>[{"role": "user", "content": "..."}]</code>) now have a dedicated editor. Add, remove, or reorder messages. Edit content with proper formatting.</p>
<p><strong>Upload options:</strong></p>
<ul>
<li class="">Upload CSV or JSON files</li>
<li class="">Create test sets in the UI</li>
<li class="">Create programmatically via SDK</li>
<li class="">Add spans from observability to test sets</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="traceability">Traceability<a href="https://agenta.ai/docs/changelog/testset-versioning#traceability" class="hash-link" aria-label="Direct link to Traceability" title="Direct link to Traceability" translate="no">​</a></h2>
<p>Everything connects. When you view a trace in observability:</p>
<ul>
<li class="">See which test case it came from</li>
<li class="">See which test set version</li>
<li class="">Filter traces by test case or test set</li>
</ul>
<p>When you view an evaluation:</p>
<ul>
<li class="">See the exact test set version used</li>
<li class="">Compare only evaluations that used the same version</li>
<li class="">Navigate to the test set to see the data</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="getting-started">Getting Started<a href="https://agenta.ai/docs/changelog/testset-versioning#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
<p>Test set versioning is automatic. Any change creates a new version.</p>
<p>To use versioned test sets in evaluations:</p>
<ol>
<li class="">Create or upload a test set</li>
<li class="">Make your edits (each save creates a version)</li>
<li class="">Run an evaluation (it links to the current version)</li>
<li class="">Later, compare evaluations knowing they used the same test data</li>
</ol>
<p>For programmatic access, check the <a class="" href="https://agenta.ai/docs/evaluation/evaluation-from-sdk/managing-testsets">test sets documentation</a>.</p>]]></content:encoded>
            <category>v0.74.0</category>
        </item>
        <item>
            <title><![CDATA[Playground UX Improvements]]></title>
            <link>https://agenta.ai/docs/changelog/playground-ux-improvements-jan-2026</link>
            <guid>https://agenta.ai/docs/changelog/playground-ux-improvements-jan-2026</guid>
            <pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[See provider costs upfront, run evaluations directly from the Playground, and collapse test cases for easier navigation.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<div style="display:flex;justify-content:center;margin-top:20px;margin-bottom:20px;flex-direction:column;align-items:center"><iframe width="100%" height="500" src="https://www.youtube.com/embed/JqVj-gsnSgk" title="Playground UX Improvements" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe></div>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="overview">Overview<a href="https://agenta.ai/docs/changelog/playground-ux-improvements-jan-2026#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h2>
<p>This release brings three quality-of-life improvements to the Playground that make testing and iterating on prompts faster and more convenient.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="whats-new">What's New<a href="https://agenta.ai/docs/changelog/playground-ux-improvements-jan-2026#whats-new" class="hash-link" aria-label="Direct link to What's New" title="Direct link to What's New" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="provider-cost-display">Provider Cost Display<a href="https://agenta.ai/docs/changelog/playground-ux-improvements-jan-2026#provider-cost-display" class="hash-link" aria-label="Direct link to Provider Cost Display" title="Direct link to Provider Cost Display" translate="no">​</a></h3>
<p>You can now see the cost per million tokens directly in the provider selection dropdown. This helps you make informed decisions about which model to use based on both capability and cost. No more switching to external pricing pages to compare costs.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="run-evaluations-from-the-playground">Run Evaluations from the Playground<a href="https://agenta.ai/docs/changelog/playground-ux-improvements-jan-2026#run-evaluations-from-the-playground" class="hash-link" aria-label="Direct link to Run Evaluations from the Playground" title="Direct link to Run Evaluations from the Playground" translate="no">​</a></h3>
<p>You can now trigger evaluations directly from the Playground without navigating to the evaluation menu. When you're testing a prompt and want to run a full evaluation, click the evaluate button to start an evaluation run with your current configuration. This keeps you in flow when iterating on prompts.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="collapsible-test-cases">Collapsible Test Cases<a href="https://agenta.ai/docs/changelog/playground-ux-improvements-jan-2026#collapsible-test-cases" class="hash-link" aria-label="Direct link to Collapsible Test Cases" title="Direct link to Collapsible Test Cases" translate="no">​</a></h3>
<p>Test cases in the Playground can now be collapsed. This is especially useful when working with large test sets or test cases with long inputs and outputs. Collapse completed test cases to focus on what you're working on. You can still see a preview of each test case to maintain context while navigating through your data.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="getting-started">Getting Started<a href="https://agenta.ai/docs/changelog/playground-ux-improvements-jan-2026#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
<p>These features are available now in the Playground. Start using them today:</p>
<ul>
<li class="">Open the Playground and check the provider dropdown to see costs</li>
<li class="">Click the evaluate button to run evaluations directly</li>
<li class="">Use the collapse controls on test cases to manage your view</li>
</ul>]]></content:encoded>
            <category>v0.73.0</category>
        </item>
        <item>
            <title><![CDATA[Chat Sessions in Observability]]></title>
            <link>https://agenta.ai/docs/changelog/chat-sessions-observability</link>
            <guid>https://agenta.ai/docs/changelog/chat-sessions-observability</guid>
            <pubDate>Fri, 09 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Track and analyze multi-turn conversations with session grouping, cost analytics, and conversation flow visualization.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<div style="display:flex;justify-content:center;margin-top:20px;margin-bottom:20px;flex-direction:column;align-items:center"><iframe width="100%" height="500" src="https://www.youtube.com/embed/gOcLTuaIwXc" title="Chat Sessions in Observability - Demo" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe></div>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="overview">Overview<a href="https://agenta.ai/docs/changelog/chat-sessions-observability#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h2>
<p>Chat sessions bring conversation-level observability to Agenta. You can now group related traces from multi-turn conversations together, making it easy to analyze complete user interactions rather than individual requests.</p>
<p>This feature is essential for debugging chatbots, AI assistants, and any application with multi-turn conversations. You get visibility into the entire conversation flow, including costs, latency, and intermediate steps.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="key-capabilities">Key Capabilities<a href="https://agenta.ai/docs/changelog/chat-sessions-observability#key-capabilities" class="hash-link" aria-label="Direct link to Key Capabilities" title="Direct link to Key Capabilities" translate="no">​</a></h2>
<ul>
<li class=""><strong>Automatic Grouping</strong>: All traces with the same <code>ag.session.id</code> attribute are automatically grouped together</li>
<li class=""><strong>Session Analytics</strong>: Track total cost, latency, and token usage per conversation</li>
<li class=""><strong>Session Browser</strong>: Dedicated UI showing all sessions with first input, last output, and key metrics</li>
<li class=""><strong>Session Drawer</strong>: Detailed view of all traces within a session with parent-child relationships</li>
<li class=""><strong>Real-time Monitoring</strong>: Auto-refresh mode for monitoring active conversations</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="how-to-use-sessions">How to Use Sessions<a href="https://agenta.ai/docs/changelog/chat-sessions-observability#how-to-use-sessions" class="hash-link" aria-label="Direct link to How to Use Sessions" title="Direct link to How to Use Sessions" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="using-the-python-sdk">Using the Python SDK<a href="https://agenta.ai/docs/changelog/chat-sessions-observability#using-the-python-sdk" class="hash-link" aria-label="Direct link to Using the Python SDK" title="Direct link to Using the Python SDK" translate="no">​</a></h3>
<p>Add session tracking to your application with one line of code:</p>
<div class="language-python codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-python codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> agenta </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> ag</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Initialize Agenta</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">ag</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">init</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Store the session ID for all subsequent traces</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">ag</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">tracing</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">store_session</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">session_id</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"conversation_123"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Your LLM calls are automatically tracked with this session</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">chat</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">completions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"gpt-4"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    messages</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Hello!"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="using-the-chat-run-endpoint">Using the Chat Run Endpoint<a href="https://agenta.ai/docs/changelog/chat-sessions-observability#using-the-chat-run-endpoint" class="hash-link" aria-label="Direct link to Using the Chat Run Endpoint" title="Direct link to Using the Chat Run Endpoint" translate="no">​</a></h3>
<p>You can also instrument sessions when calling Agenta-managed prompts via the <code>/chat/run</code> endpoint:</p>
<div class="language-python codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-python codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> agenta </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> ag</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Initialize the Agenta client</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">agenta </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> ag</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Agenta</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">api_key</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"your_api_key"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Call the chat endpoint with session tracking</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> agenta</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">run</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    base_id</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"your_base_id"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    environment</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"production"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    inputs</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"chat_history"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"What is the weather like?"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># Add session metadata to group related conversations</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    metadata</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"ag.session.id"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user_456_conv_789"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Follow-up in the same session</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">follow_up </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> agenta</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">run</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    base_id</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"your_base_id"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    environment</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"production"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    inputs</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"chat_history"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"What is the weather like?"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"assistant"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> response</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"message"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"What about tomorrow?"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    metadata</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"ag.session.id"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user_456_conv_789"</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># Same session ID</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="using-opentelemetry">Using OpenTelemetry<a href="https://agenta.ai/docs/changelog/chat-sessions-observability#using-opentelemetry" class="hash-link" aria-label="Direct link to Using OpenTelemetry" title="Direct link to Using OpenTelemetry" translate="no">​</a></h3>
<p>If you're using OpenTelemetry for instrumentation:</p>
<div class="language-javascript codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-javascript codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> trace </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'@opentelemetry/api'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> tracer </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> trace</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getTracer</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'my-app'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> span </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> tracer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">startSpan</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'chat-interaction'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Add session ID as a span attribute</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">span</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">setAttribute</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'ag.session.id'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'conversation_123'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Your code here</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">span</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">end</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></div></code></pre></div></div>
<p>The UI automatically detects session IDs and groups traces together. You can use any format for session IDs: UUIDs, composite IDs like <code>user_123_session_456</code>, or custom formats.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="use-cases">Use Cases<a href="https://agenta.ai/docs/changelog/chat-sessions-observability#use-cases" class="hash-link" aria-label="Direct link to Use Cases" title="Direct link to Use Cases" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="debug-chatbots">Debug Chatbots<a href="https://agenta.ai/docs/changelog/chat-sessions-observability#debug-chatbots" class="hash-link" aria-label="Direct link to Debug Chatbots" title="Direct link to Debug Chatbots" translate="no">​</a></h3>
<p>See the complete conversation flow when users report issues. Instead of viewing isolated requests, you can analyze the entire conversation context and understand why a particular response was generated.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="monitor-multi-turn-agents">Monitor Multi-turn Agents<a href="https://agenta.ai/docs/changelog/chat-sessions-observability#monitor-multi-turn-agents" class="hash-link" aria-label="Direct link to Monitor Multi-turn Agents" title="Direct link to Monitor Multi-turn Agents" translate="no">​</a></h3>
<p>Track how your agent handles follow-up questions and maintains context across turns. See which turns are expensive, identify where latency spikes occur, and understand conversation patterns.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="analyze-conversation-costs">Analyze Conversation Costs<a href="https://agenta.ai/docs/changelog/chat-sessions-observability#analyze-conversation-costs" class="hash-link" aria-label="Direct link to Analyze Conversation Costs" title="Direct link to Analyze Conversation Costs" translate="no">​</a></h3>
<p>Understand which conversations are expensive and why. Session-level cost tracking helps you identify optimization opportunities and set appropriate pricing for your application.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="optimize-performance">Optimize Performance<a href="https://agenta.ai/docs/changelog/chat-sessions-observability#optimize-performance" class="hash-link" aria-label="Direct link to Optimize Performance" title="Direct link to Optimize Performance" translate="no">​</a></h3>
<p>Identify latency issues across entire conversations, not just single requests. See which conversational patterns lead to performance problems and optimize accordingly.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="getting-started">Getting Started<a href="https://agenta.ai/docs/changelog/chat-sessions-observability#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
<p>Learn more in our documentation:</p>
<ul>
<li class=""><a class="" href="https://agenta.ai/docs/observability/trace-with-python-sdk/track-chat-sessions">Track Chat Sessions (Python SDK)</a></li>
<li class=""><a class="" href="https://agenta.ai/docs/observability/trace-with-opentelemetry/session-tracking">Session Tracking (OpenTelemetry)</a></li>
<li class=""><a class="" href="https://agenta.ai/docs/observability/overview">Observability Overview</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="whats-next">What's Next<a href="https://agenta.ai/docs/changelog/chat-sessions-observability#whats-next" class="hash-link" aria-label="Direct link to What's Next" title="Direct link to What's Next" translate="no">​</a></h2>
<p>We're continuing to enhance session tracking with upcoming features like session-level annotations, session comparisons, and automated session analysis.</p>]]></content:encoded>
            <category>v0.73.0</category>
        </item>
        <item>
            <title><![CDATA[JSON Multi-Field Match Evaluator]]></title>
            <link>https://agenta.ai/docs/changelog/json-multi-field-match</link>
            <guid>https://agenta.ai/docs/changelog/json-multi-field-match</guid>
            <pubDate>Wed, 31 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Compare multiple fields between JSON objects with the new JSON Multi-Field Match evaluator. Ideal for entity extraction validation with per-field scoring and support for nested paths.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<p>The JSON Multi-Field Match evaluator lets you validate multiple fields in JSON outputs simultaneously. This makes it ideal for entity extraction tasks where you need to check if your model correctly extracted name, email, address, and other structured fields.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="what-is-json-multi-field-match">What is JSON Multi-Field Match?<a href="https://agenta.ai/docs/changelog/json-multi-field-match#what-is-json-multi-field-match" class="hash-link" aria-label="Direct link to What is JSON Multi-Field Match?" title="Direct link to What is JSON Multi-Field Match?" translate="no">​</a></h2>
<p>This evaluator compares specific fields between your model's JSON output and the expected JSON values from your test set. Unlike the old JSON Field Match evaluator (which only checked one field), this evaluator handles any number of fields at once.</p>
<p>For each field you configure, the evaluator produces a separate score (either 1 for a match or 0 for no match). It also calculates an aggregate score showing the percentage of fields that matched correctly.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="key-features">Key Features<a href="https://agenta.ai/docs/changelog/json-multi-field-match#key-features" class="hash-link" aria-label="Direct link to Key Features" title="Direct link to Key Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="multiple-field-comparison">Multiple Field Comparison<a href="https://agenta.ai/docs/changelog/json-multi-field-match#multiple-field-comparison" class="hash-link" aria-label="Direct link to Multiple Field Comparison" title="Direct link to Multiple Field Comparison" translate="no">​</a></h3>
<p>Configure as many fields as you need to validate. The evaluator checks each field independently and reports results for all of them.</p>
<p>If you're extracting user information, you might configure fields like <code>name</code>, <code>email</code>, <code>phone</code>, and <code>address.city</code>. Each field gets its own score, so you can see exactly which extractions succeeded and which failed.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="three-path-format-options">Three Path Format Options<a href="https://agenta.ai/docs/changelog/json-multi-field-match#three-path-format-options" class="hash-link" aria-label="Direct link to Three Path Format Options" title="Direct link to Three Path Format Options" translate="no">​</a></h3>
<p>The evaluator supports three different ways to specify field paths:</p>
<p><strong>Dot notation</strong> (recommended for most cases):</p>
<ul>
<li class="">Simple fields: <code>name</code>, <code>email</code></li>
<li class="">Nested fields: <code>user.address.city</code></li>
<li class="">Array indices: <code>items.0.name</code></li>
</ul>
<p><strong>JSON Path</strong> (standard JSON Path syntax):</p>
<ul>
<li class="">Simple fields: <code>$.name</code>, <code>$.email</code></li>
<li class="">Nested fields: <code>$.user.address.city</code></li>
<li class="">Array indices: <code>$.items[0].name</code></li>
</ul>
<p><strong>JSON Pointer</strong> (RFC 6901):</p>
<ul>
<li class="">Simple fields: <code>/name</code>, <code>/email</code></li>
<li class="">Nested fields: <code>/user/address/city</code></li>
<li class="">Array indices: <code>/items/0/name</code></li>
</ul>
<p>All three formats work the same way. Use whichever matches your existing tooling or personal preference.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="nested-field-and-array-support">Nested Field and Array Support<a href="https://agenta.ai/docs/changelog/json-multi-field-match#nested-field-and-array-support" class="hash-link" aria-label="Direct link to Nested Field and Array Support" title="Direct link to Nested Field and Array Support" translate="no">​</a></h3>
<p>Access deeply nested fields and array elements without restrictions. The evaluator handles any level of nesting.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="per-field-scoring">Per-Field Scoring<a href="https://agenta.ai/docs/changelog/json-multi-field-match#per-field-scoring" class="hash-link" aria-label="Direct link to Per-Field Scoring" title="Direct link to Per-Field Scoring" translate="no">​</a></h3>
<p>See individual scores for each configured field in the evaluation results. This granular view helps you identify which specific extractions are working well and which need improvement.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="aggregate-score">Aggregate Score<a href="https://agenta.ai/docs/changelog/json-multi-field-match#aggregate-score" class="hash-link" aria-label="Direct link to Aggregate Score" title="Direct link to Aggregate Score" translate="no">​</a></h3>
<p>The aggregate score shows the percentage of matching fields. If you configure five fields and three match, the aggregate score is 0.6 (or 60%).</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="example">Example<a href="https://agenta.ai/docs/changelog/json-multi-field-match#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h2>
<p>Suppose you're building an entity extraction model that pulls contact information from text. Your ground truth looks like this:</p>
<div class="language-json codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-json codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"John Doe"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"email"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"john@example.com"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"phone"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"555-1234"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"address"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"city"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"New York"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"zip"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"10001"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>Your model produces this output:</p>
<div class="language-json codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-json codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"John Doe"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"email"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"jane@example.com"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"phone"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"555-1234"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"address"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"city"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"New York"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"zip"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"10002"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p>You configure these fields: <code>["name", "email", "phone", "address.city", "address.zip"]</code></p>
<p>The evaluator returns:</p>
<table><thead><tr><th>Field</th><th>Score</th></tr></thead><tbody><tr><td><code>name</code></td><td>1.0</td></tr><tr><td><code>email</code></td><td>0.0</td></tr><tr><td><code>phone</code></td><td>1.0</td></tr><tr><td><code>address.city</code></td><td>1.0</td></tr><tr><td><code>address.zip</code></td><td>0.0</td></tr><tr><td><code>aggregate_score</code></td><td>0.6</td></tr></tbody></table>
<p>You can see immediately that the model got the email and zip code wrong but correctly extracted the name, phone, and city.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="auto-detection-in-the-ui">Auto-Detection in the UI<a href="https://agenta.ai/docs/changelog/json-multi-field-match#auto-detection-in-the-ui" class="hash-link" aria-label="Direct link to Auto-Detection in the UI" title="Direct link to Auto-Detection in the UI" translate="no">​</a></h2>
<p>When you configure the evaluator in the web interface, Agenta automatically detects available fields from your test set data. Click to add or remove fields using a tag-based interface. This makes setup fast and reduces configuration errors.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="migration-from-json-field-match">Migration from JSON Field Match<a href="https://agenta.ai/docs/changelog/json-multi-field-match#migration-from-json-field-match" class="hash-link" aria-label="Direct link to Migration from JSON Field Match" title="Direct link to Migration from JSON Field Match" translate="no">​</a></h2>
<p>The old JSON Field Match evaluator only supported checking a single field. If you're using it, consider migrating to JSON Multi-Field Match to gain:</p>
<ul>
<li class="">Support for multiple fields in one evaluator</li>
<li class="">Per-field scoring for detailed analysis</li>
<li class="">Aggregate scoring for overall performance tracking</li>
<li class="">Nested field and array support</li>
</ul>
<p>Existing JSON Field Match configurations continue to work. We recommend migrating to JSON Multi-Field Match for new evaluations.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="next-steps">Next Steps<a href="https://agenta.ai/docs/changelog/json-multi-field-match#next-steps" class="hash-link" aria-label="Direct link to Next Steps" title="Direct link to Next Steps" translate="no">​</a></h2>
<p>Learn more about configuring and using the JSON Multi-Field Match evaluator in the <a class="" href="https://agenta.ai/docs/evaluation/configure-evaluators/classification-entity-extraction#json-multi-field-match">Classification and Entity Extraction Evaluators</a> documentation.</p>]]></content:encoded>
            <category>v0.73.0</category>
        </item>
        <item>
            <title><![CDATA[PDF Support in the Playground]]></title>
            <link>https://agenta.ai/docs/changelog/pdf-support-in-playground</link>
            <guid>https://agenta.ai/docs/changelog/pdf-support-in-playground</guid>
            <pubDate>Wed, 17 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Attach PDFs to chat messages in the Playground. Upload files, provide URLs, or use file IDs from provider APIs. Works across evaluations and observability.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<p>The Playground now supports PDF attachments for chat applications. You can include PDF documents in your prompts to build applications that analyze documents, answer questions about content, or extract information from files.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="what-is-pdf-support">What is PDF Support?<a href="https://agenta.ai/docs/changelog/pdf-support-in-playground#what-is-pdf-support" class="hash-link" aria-label="Direct link to What is PDF Support?" title="Direct link to What is PDF Support?" translate="no">​</a></h2>
<p>PDF support lets you attach PDF documents to chat messages when testing prompts in the Playground. The feature works with vision-capable models from OpenAI, Gemini, and Claude. These models can read and understand PDF content to answer questions or perform analysis.</p>
<p>This is useful when you're building applications that need to work with documents. Examples include invoice processing, contract analysis, document Q&amp;A, or content extraction.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="supported-providers">Supported Providers<a href="https://agenta.ai/docs/changelog/pdf-support-in-playground#supported-providers" class="hash-link" aria-label="Direct link to Supported Providers" title="Direct link to Supported Providers" translate="no">​</a></h2>
<p>PDF support works with vision-capable models that handle document inputs.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="how-to-attach-pdfs">How to Attach PDFs<a href="https://agenta.ai/docs/changelog/pdf-support-in-playground#how-to-attach-pdfs" class="hash-link" aria-label="Direct link to How to Attach PDFs" title="Direct link to How to Attach PDFs" translate="no">​</a></h2>
<p>To attach a PDF to a chat message, click "Add attachment" in the message input. You'll see three options:</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="upload-a-file">Upload a File<a href="https://agenta.ai/docs/changelog/pdf-support-in-playground#upload-a-file" class="hash-link" aria-label="Direct link to Upload a File" title="Direct link to Upload a File" translate="no">​</a></h3>
<p>Select a PDF from your computer. The file is converted to base64 and sent with your prompt.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="provide-a-url">Provide a URL<a href="https://agenta.ai/docs/changelog/pdf-support-in-playground#provide-a-url" class="hash-link" aria-label="Direct link to Provide a URL" title="Direct link to Provide a URL" translate="no">​</a></h3>
<p>Paste the URL to a publicly accessible PDF. The model fetches the PDF from the URL.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="use-a-file-id">Use a File ID<a href="https://agenta.ai/docs/changelog/pdf-support-in-playground#use-a-file-id" class="hash-link" aria-label="Direct link to Use a File ID" title="Direct link to Use a File ID" translate="no">​</a></h3>
<p>If you've uploaded a file through a provider's API (like the Gemini Files API), you can use the file ID instead. The model retrieves the file from the provider's storage.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="using-pdfs-in-evaluations">Using PDFs in Evaluations<a href="https://agenta.ai/docs/changelog/pdf-support-in-playground#using-pdfs-in-evaluations" class="hash-link" aria-label="Direct link to Using PDFs in Evaluations" title="Direct link to Using PDFs in Evaluations" translate="no">​</a></h2>
<p>PDF attachments work in both automatic and human evaluations. You can include PDFs in your test sets and run evaluations across multiple documents.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="pdfs-in-observability-and-tracing">PDFs in Observability and Tracing<a href="https://agenta.ai/docs/changelog/pdf-support-in-playground#pdfs-in-observability-and-tracing" class="hash-link" aria-label="Direct link to PDFs in Observability and Tracing" title="Direct link to PDFs in Observability and Tracing" translate="no">​</a></h2>
<p>When you trace requests that include PDFs, you can see the PDF attachment information in the trace data.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="example-use-cases">Example Use Cases<a href="https://agenta.ai/docs/changelog/pdf-support-in-playground#example-use-cases" class="hash-link" aria-label="Direct link to Example Use Cases" title="Direct link to Example Use Cases" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="invoice-processing">Invoice Processing<a href="https://agenta.ai/docs/changelog/pdf-support-in-playground#invoice-processing" class="hash-link" aria-label="Direct link to Invoice Processing" title="Direct link to Invoice Processing" translate="no">​</a></h3>
<p>Create a prompt that extracts key information from invoices:</p>
<div class="language-text codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-text codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">Extract the following information from this invoice:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- Invoice number</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- Date</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- Total amount</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- Vendor name</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- Line items</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Return the information as structured JSON.</span><br></div></code></pre></div></div>
<p>Attach sample invoices as PDFs. Test the prompt with different invoice formats to ensure reliable extraction across vendors.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="contract-analysis">Contract Analysis<a href="https://agenta.ai/docs/changelog/pdf-support-in-playground#contract-analysis" class="hash-link" aria-label="Direct link to Contract Analysis" title="Direct link to Contract Analysis" translate="no">​</a></h3>
<p>Build a prompt that analyzes legal contracts:</p>
<div class="language-text codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-text codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">Review the attached contract and identify:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- Key obligations for each party</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- Important dates and deadlines</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- Termination clauses</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">- Liability limitations</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Provide a summary in plain language.</span><br></div></code></pre></div></div>
<p>Attach contract PDFs and verify that the model identifies critical terms consistently.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="document-qa">Document Q&amp;A<a href="https://agenta.ai/docs/changelog/pdf-support-in-playground#document-qa" class="hash-link" aria-label="Direct link to Document Q&amp;A" title="Direct link to Document Q&amp;A" translate="no">​</a></h3>
<p>Create an assistant that answers questions about documents:</p>
<div class="language-text codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-text codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">You are a document assistant. Answer the user's question based on the</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">attached PDF. Be specific and cite page numbers when possible.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Question: {{question}}</span><br></div></code></pre></div></div>
<p>Attach various document types (reports, manuals, research papers) and test question-answering accuracy across different content.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="next-steps">Next Steps<a href="https://agenta.ai/docs/changelog/pdf-support-in-playground#next-steps" class="hash-link" aria-label="Direct link to Next Steps" title="Direct link to Next Steps" translate="no">​</a></h2>
<p>Learn more about <a class="" href="https://agenta.ai/docs/prompt-engineering/playground/using-playground">using the Playground</a> to develop and test prompts with PDF attachments.</p>]]></content:encoded>
            <category>v0.69.0</category>
        </item>
        <item>
            <title><![CDATA[Agenta Documentation MCP Server]]></title>
            <link>https://agenta.ai/docs/changelog/mcp-server</link>
            <guid>https://agenta.ai/docs/changelog/mcp-server</guid>
            <pubDate>Sun, 14 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Connect AI coding agents to Agenta documentation using the Agenta MCP server.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<p>AI coding agents like Cursor, Claude Code, VS Code Copilot, and Windsurf can now access Agenta documentation directly through the Agenta MCP server.</p>
<p>The MCP server implements the Model Context Protocol, allowing AI assistants to search and retrieve Agenta documentation on demand. Instead of manually searching docs, your AI agent can answer questions about Agenta features, APIs, and code examples.</p>
<p><strong><a class="" href="https://agenta.ai/docs/misc/mcp-server">Read the full setup guide →</a></strong></p>]]></content:encoded>
            <category>v0.68.3</category>
        </item>
        <item>
            <title><![CDATA[Projects within Organizations]]></title>
            <link>https://agenta.ai/docs/changelog/projects-within-organizations</link>
            <guid>https://agenta.ai/docs/changelog/projects-within-organizations</guid>
            <pubDate>Thu, 04 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Create projects within organizations to divide your work between different AI products. Each project scopes its prompts, traces, and evaluations independently.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<p>You can now create projects within an organization. This feature helps you organize your work when you're building multiple AI products or managing different teams working on separate initiatives.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="what-are-projects">What Are Projects?<a href="https://agenta.ai/docs/changelog/projects-within-organizations#what-are-projects" class="hash-link" aria-label="Direct link to What Are Projects?" title="Direct link to What Are Projects?" translate="no">​</a></h2>
<p>Projects provide a way to isolate and organize your AI work within an organization. Each project maintains its own scope for:</p>
<ul>
<li class=""><strong>Prompts</strong>: All prompt templates and variants stay within the project</li>
<li class=""><strong>Traces</strong>: Observability data is scoped to the project that generated it</li>
<li class=""><strong>Evaluations</strong>: Test sets, evaluators, and evaluation results belong to specific projects</li>
</ul>
<p>This scoping prevents clutter and makes it easy to focus on one product at a time.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="creating-and-managing-projects">Creating and Managing Projects<a href="https://agenta.ai/docs/changelog/projects-within-organizations#creating-and-managing-projects" class="hash-link" aria-label="Direct link to Creating and Managing Projects" title="Direct link to Creating and Managing Projects" translate="no">​</a></h2>
<p>You can create a new project directly from the sidebar in the Agenta interface. Once created, you can switch between projects using the sidebar navigation.</p>
<p>Each team member can work in different projects simultaneously. The interface remembers your last active project, making it easy to pick up where you left off.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="when-to-use-projects">When to Use Projects<a href="https://agenta.ai/docs/changelog/projects-within-organizations#when-to-use-projects" class="hash-link" aria-label="Direct link to When to Use Projects" title="Direct link to When to Use Projects" translate="no">​</a></h2>
<p>Projects work well when you need to:</p>
<ul>
<li class="">Build multiple AI products for different use cases</li>
<li class="">Separate development work for different teams or departments</li>
<li class="">Keep client work isolated from internal tools</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="next-steps">Next Steps<a href="https://agenta.ai/docs/changelog/projects-within-organizations#next-steps" class="hash-link" aria-label="Direct link to Next Steps" title="Direct link to Next Steps" translate="no">​</a></h2>
<p>If you're managing complex AI initiatives across multiple products, projects give you the structure to keep everything organized. You can create your first project from the sidebar and start organizing your prompts and evaluations.</p>
<p>For questions about projects or organizational structure, check the <a class="" href="https://agenta.ai/docs/faq">FAQ</a> or reach out through our <a class="" href="https://agenta.ai/docs/misc/getting_support">support channels</a>.</p>]]></content:encoded>
            <category>v0.65.0</category>
        </item>
        <item>
            <title><![CDATA[Provider Built-in Tools in the Playground]]></title>
            <link>https://agenta.ai/docs/changelog/provider-built-in-tools</link>
            <guid>https://agenta.ai/docs/changelog/provider-built-in-tools</guid>
            <pubDate>Thu, 20 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Use provider built-in tools like web search, code execution, and file search directly in the Playground. Configure tools with your prompts and automatically invoke them through the LLM gateway.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<p>The Playground now supports provider built-in tools. You can use web search, code execution, file search, and other native provider tools directly when developing prompts.</p>
<div style="text-align:center;margin:20px auto;max-width:50%;width:50%"><div style="background-size:cover;background-repeat:no-repeat;position:relative;background-image:url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAALCAYAAABGbhwYAAAACXBIWXMAAAsTAAALEwEAmpwYAAABCUlEQVR4nH2Pz0rDQBDG993aR/DgTQSPPXiKuQjtwbthL+JJxIsUL176LtU0hFyWLmGSbcz+md2MbKxSKHXgm2HgN9/wMa31RFu7MM4l3vuUiNJGqfRidpOeXc6S86vrxe3d/YQhIqefwv2kXht6fF7Sw9MrvrytaPm+4gwAMh8Gsg71Hj6UjodCiIzJuuYOA9U14DAMv6bkvY8av2w2G86UUjw6RpCOC2Mry5KzGoCHgaj76jGEcBoEgDGM2u3QGHsa3G4ld+hJCPk/2Kk+i0vX99qhR+/DUeqiKDJmjB1fa2PRWEcHwf8cpZSc5Xk+/cjz+Xr9mVRVlSql0qZpRgFA0rbtXAgx/QYcbY8I+vOtKQAAAABJRU5ErkJggg==&quot;)"><svg style="width:100%;height:auto;max-width:100%;margin-bottom:-4px" width="600" height="646"></svg><noscript><img style="width:100%;height:auto;max-width:100%;margin-bottom:-4px;position:absolute;top:0;left:0" src="/docs/assets/ideal-img/tools-dropdown-playground.4df4bcb.600.png" srcset="/docs/assets/ideal-img/tools-dropdown-playground.4df4bcb.600.png 600w" alt="Tools dropdown" width="600" height="646"></noscript></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="what-are-provider-built-in-tools">What Are Provider Built-in Tools?<a href="https://agenta.ai/docs/changelog/provider-built-in-tools#what-are-provider-built-in-tools" class="hash-link" aria-label="Direct link to What Are Provider Built-in Tools?" title="Direct link to What Are Provider Built-in Tools?" translate="no">​</a></h2>
<p>Provider built-in tools are capabilities that LLM providers offer natively. Unlike custom tools that you define with JSON schemas, these tools are managed by the provider. When the model needs them, the provider handles execution and returns results automatically.</p>
<p>Common built-in tools include:</p>
<ul>
<li class="">Web search: Fetch current information from the internet</li>
<li class="">Code execution: Run Python or JavaScript code</li>
<li class="">File search: Search through uploaded documents</li>
<li class="">Bash scripting: Execute shell commands (Anthropic)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="supported-providers-and-tools">Supported Providers and Tools<a href="https://agenta.ai/docs/changelog/provider-built-in-tools#supported-providers-and-tools" class="hash-link" aria-label="Direct link to Supported Providers and Tools" title="Direct link to Supported Providers and Tools" translate="no">​</a></h2>
<p>Different providers offer different built-in tools:</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="openai">OpenAI<a href="https://agenta.ai/docs/changelog/provider-built-in-tools#openai" class="hash-link" aria-label="Direct link to OpenAI" title="Direct link to OpenAI" translate="no">​</a></h3>
<ul>
<li class=""><strong>Web Search</strong>: Access current information from the web</li>
<li class=""><strong>File Search</strong>: Search through files you upload to OpenAI</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="anthropic">Anthropic<a href="https://agenta.ai/docs/changelog/provider-built-in-tools#anthropic" class="hash-link" aria-label="Direct link to Anthropic" title="Direct link to Anthropic" translate="no">​</a></h3>
<ul>
<li class=""><strong>Web Search</strong>: Retrieve information from the internet</li>
<li class=""><strong>Bash Scripting</strong>: Execute bash commands in a sandboxed environment</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="gemini">Gemini<a href="https://agenta.ai/docs/changelog/provider-built-in-tools#gemini" class="hash-link" aria-label="Direct link to Gemini" title="Direct link to Gemini" translate="no">​</a></h3>
<ul>
<li class=""><strong>Web Search</strong>: Search the web for current information</li>
<li class=""><strong>Code Execution</strong>: Run Python code to perform calculations and data analysis</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="how-to-use-built-in-tools">How to Use Built-in Tools<a href="https://agenta.ai/docs/changelog/provider-built-in-tools#how-to-use-built-in-tools" class="hash-link" aria-label="Direct link to How to Use Built-in Tools" title="Direct link to How to Use Built-in Tools" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="adding-tools-in-the-playground">Adding Tools in the Playground<a href="https://agenta.ai/docs/changelog/provider-built-in-tools#adding-tools-in-the-playground" class="hash-link" aria-label="Direct link to Adding Tools in the Playground" title="Direct link to Adding Tools in the Playground" translate="no">​</a></h3>
<ol>
<li class="">Open your prompt in the Playground</li>
<li class="">Click the "Add Tool" button in the configuration panel</li>
<li class="">Choose the tools you want to enable for your prompt</li>
<li class="">Test your prompt; the model will automatically use tools when needed</li>
</ol>
<p>The tools are saved with your prompt configuration. When you commit changes, the tool configuration is stored with the variant.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="invoking-with-tools-via-llm-gateway">Invoking with Tools via LLM Gateway<a href="https://agenta.ai/docs/changelog/provider-built-in-tools#invoking-with-tools-via-llm-gateway" class="hash-link" aria-label="Direct link to Invoking with Tools via LLM Gateway" title="Direct link to Invoking with Tools via LLM Gateway" translate="no">​</a></h3>
<p>When you invoke prompts through Agenta as an LLM gateway, the tools are automatically included in the request. The provider handles tool execution during the call.</p>
<p>Your application receives the final response after all tool calls complete. You don't need to handle tool execution yourself.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="tool-definitions-in-the-registry">Tool Definitions in the Registry<a href="https://agenta.ai/docs/changelog/provider-built-in-tools#tool-definitions-in-the-registry" class="hash-link" aria-label="Direct link to Tool Definitions in the Registry" title="Direct link to Tool Definitions in the Registry" translate="no">​</a></h3>
<p>Tool definitions follow the LiteLLM format. You can view the exact tool schemas in the Prompt Registry. This helps you understand what parameters each tool accepts and how the provider will use it.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="example-use-cases">Example Use Cases<a href="https://agenta.ai/docs/changelog/provider-built-in-tools#example-use-cases" class="hash-link" aria-label="Direct link to Example Use Cases" title="Direct link to Example Use Cases" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="research-assistant-with-web-search">Research Assistant with Web Search<a href="https://agenta.ai/docs/changelog/provider-built-in-tools#research-assistant-with-web-search" class="hash-link" aria-label="Direct link to Research Assistant with Web Search" title="Direct link to Research Assistant with Web Search" translate="no">​</a></h3>
<p>Create a prompt that answers questions using current information:</p>
<div class="language-text codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-text codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">You are a research assistant. Answer the user's question with accurate,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">current information. Use web search when you need recent data.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Question: {{question}}</span><br></div></code></pre></div></div>
<p>Enable web search in the tool configuration. When users ask about current events or recent data, the model automatically searches the web for information.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="data-analysis-with-code-execution">Data Analysis with Code Execution<a href="https://agenta.ai/docs/changelog/provider-built-in-tools#data-analysis-with-code-execution" class="hash-link" aria-label="Direct link to Data Analysis with Code Execution" title="Direct link to Data Analysis with Code Execution" translate="no">​</a></h3>
<p>Build a data analysis prompt that performs calculations:</p>
<div class="language-text codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-text codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">Analyze the following data and provide insights:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">{{data}}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Calculate statistics and create visualizations as needed.</span><br></div></code></pre></div></div>
<p>Enable code execution for Gemini. The model can run Python code to calculate statistics, process data, and generate visualizations.</p>
<h3 class="anchor anchorTargetStickyNavbar_Cy9N" id="document-qa-with-file-search">Document Q&amp;A with File Search<a href="https://agenta.ai/docs/changelog/provider-built-in-tools#document-qa-with-file-search" class="hash-link" aria-label="Direct link to Document Q&amp;A with File Search" title="Direct link to Document Q&amp;A with File Search" translate="no">​</a></h3>
<p>Create a prompt that answers questions about uploaded documents:</p>
<div class="language-text codeBlockContainer_cJvD theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_jHN8"><pre tabindex="0" class="prism-code language-text codeBlock_l0G7 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_NW5r"><div class="token-line" style="color:#393A34"><span class="token plain">Answer the user's question based on the uploaded documentation.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Be specific and cite relevant sections.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Question: {{question}}</span><br></div></code></pre></div></div>
<p>Enable file search for OpenAI. The model searches through your uploaded files to find relevant information.</p>
<h2 class="anchor anchorTargetStickyNavbar_Cy9N" id="next-steps">Next Steps<a href="https://agenta.ai/docs/changelog/provider-built-in-tools#next-steps" class="hash-link" aria-label="Direct link to Next Steps" title="Direct link to Next Steps" translate="no">​</a></h2>
<p>Learn more about <a class="" href="https://agenta.ai/docs/prompt-engineering/playground/using-playground">using the Playground</a> to develop and test prompts with provider built-in tools.</p>]]></content:encoded>
            <category>v0.66.0</category>
        </item>
        <item>
            <title><![CDATA[Reasoning Effort Support in the Playground]]></title>
            <link>https://agenta.ai/docs/changelog/reasoning-effort-support</link>
            <guid>https://agenta.ai/docs/changelog/reasoning-effort-support</guid>
            <pubDate>Tue, 18 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[You can now configure reasoning effort for models that support this parameter, such as OpenAI's o1 series and Google's Gemini 2.5 Pro. The reasoning effort setting is part of your prompt template, making it available when you fetch prompts via the SDK or invoke them through Agenta as an LLM gateway.]]></description>
            <content:encoded><![CDATA[
<!-- -->
<p>You can now configure reasoning effort for models that support this parameter, such as OpenAI's o1 series and Google's Gemini 2.5 Pro.</p>
<p>Reasoning effort controls how much computational thinking the model applies before generating a response. This is particularly useful for complex reasoning tasks where you want to balance response quality with latency and cost.</p>
<p>The reasoning effort parameter is part of your prompt template configuration. When you fetch prompts via the SDK or invoke them through Agenta as an LLM gateway, the reasoning effort setting is included in the configuration and applied to your requests automatically.</p>
<p>This gives you fine-grained control over model behavior directly from the playground, making it easier to optimize for your specific use case.</p>]]></content:encoded>
            <category>v0.62.5</category>
        </item>
    </channel>
</rss>