<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Wanda</title>
    <description>The latest articles on DEV Community by Wanda (@apilover).</description>
    <link>https://dev.to/apilover</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1823324%2Fa1099364-7e04-4aec-990e-c38b9182db4f.jpg</url>
      <title>DEV Community: Wanda</title>
      <link>https://dev.to/apilover</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/apilover"/>
    <language>en</language>
    <item>
      <title>API Testing Tools That Support OpenAPI 3.1</title>
      <dc:creator>Wanda</dc:creator>
      <pubDate>Fri, 17 Apr 2026 10:28:37 +0000</pubDate>
      <link>https://dev.to/apilover/api-testing-tools-that-support-openapi-31-2c16</link>
      <guid>https://dev.to/apilover/api-testing-tools-that-support-openapi-31-2c16</guid>
      <description>&lt;p&gt;&lt;a href="https://spec.openapis.org/oas/v3.1.0.html" rel="noopener noreferrer"&gt;OpenAPI 3.1&lt;/a&gt; is becoming the go-to standard for API specs, thanks to its alignment with JSON Schema, better interoperability, and enhanced tooling. However, not all API testing tools offer full support yet. If you’re migrating to OpenAPI 3.1—or starting there—you need tools that can validate, automate, and integrate with your development workflows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;This guide delivers actionable comparisons of &lt;a href="https://apidog.com/api-testing-tools/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API testing tools&lt;/a&gt; that support OpenAPI 3.1. You’ll find practical breakdowns of each tool’s OpenAPI 3.1 features, setup walkthroughs, and a head-to-head feature matrix. Whether you need open-source, CI/CD integration, or advanced automation, this guide is focused on real-world implementation.&lt;/p&gt;

&lt;h2 id="why-openapi-31-support-matters-in-api-testing"&gt;Why OpenAPI 3.1 Support Matters in API Testing&lt;/h2&gt;

&lt;p&gt;Key OpenAPI 3.1 improvements:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
&lt;strong&gt;Full JSON Schema 2020-12 support&lt;/strong&gt;—better validation, compatibility, and tooling.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;New specification keywords&lt;/strong&gt; and expanded data types.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;Simplified $ref resolution&lt;/strong&gt; for modular API specs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For testers, this means:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
&lt;strong&gt;Accurate schema validation&lt;/strong&gt;—support for advanced property constraints and edge cases.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;Automated test generation&lt;/strong&gt;—covering more scenarios.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;Smoother integration&lt;/strong&gt; between &lt;a href="https://apidog.com/api-design/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API design&lt;/a&gt;, &lt;a href="https://apidog.com/api-doc/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;documentation&lt;/a&gt;, and validation workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But these benefits are only available if your tool actually supports OpenAPI 3.1. Here’s how the most popular platforms compare.&lt;/p&gt;

&lt;h2 id="at-a-glance-openapi-31-support-matrix"&gt;At-a-Glance: OpenAPI 3.1 Support Matrix&lt;/h2&gt;

&lt;p&gt;Use this compatibility matrix to quickly compare leading tools and their OpenAPI 3.1 support:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;OpenAPI 3.1 Import&lt;/th&gt;
&lt;th&gt;Schema Validation&lt;/th&gt;
&lt;th&gt;Automated Test Generation&lt;/th&gt;
&lt;th&gt;CI/CD Integration&lt;/th&gt;
&lt;th&gt;Mock Server&lt;/th&gt;
&lt;th&gt;Open Source&lt;/th&gt;
&lt;th&gt;Notable Limitations&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Apidog&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;No specific limits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Schemathesis&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;CLI only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hoppscotch&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️ (basic)&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;Lacks advanced tests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Insomnia&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;Lacks advanced tests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stoplight&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Paid for full suite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Postman&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;3.1 support limited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prism&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;Mocking only&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Note: "Partial" means limited features, "CLI only" means no GUI.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id="1-apidog"&gt;1. Apidog&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Teams needing all-in-one &lt;a href="https://apidog.com/api-design/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API design&lt;/a&gt;, &lt;a href="https://apidog.com/api-testing/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;testing&lt;/a&gt;, and &lt;a href="https://apidog.com/api-doc/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;documentation&lt;/a&gt; with comprehensive OpenAPI 3.1 support.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-143.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-143.png" alt="Apidog: API testing platform that supports OpenAPI 3.1" width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; is a spec-driven API platform that unifies design, documentation, and testing. Its testing suite is built for OpenAPI 3.1, supporting direct spec import/export, deep schema validation, and automated test generation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Direct import/export of OpenAPI 3.1 specs.&lt;/li&gt;
  &lt;li&gt;Automated test case generation from your schema.&lt;/li&gt;
  &lt;li&gt;Comprehensive validation with all OpenAPI 3.1 JSON Schema features.&lt;/li&gt;
  &lt;li&gt;Mock server for isolated test environments.&lt;/li&gt;
  &lt;li&gt;CI/CD integration for pipeline automation.&lt;/li&gt;
  &lt;li&gt;Scenario-based test suites and performance testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="hands-on-test-apis-of-openapi-31-in-apidog"&gt;Hands-On: Test APIs of OpenAPI 3.1 in Apidog&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;strong&gt;Import your OpenAPI 3.1 spec:&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;Go to "Settings" → "Import Data" → "OpenAPI/Swagger".&lt;/li&gt;
      &lt;li&gt;Upload your YAML/JSON file.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-144.png" alt="" width="800" height="420"&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;strong&gt;Generate test cases:&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;Open the "Tests" tab.&lt;/li&gt;
      &lt;li&gt;Select an endpoint and click "Generate with AI". Apidog auto-creates scenarios for each endpoint, path, and data type.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-145.png" alt="" width="800" height="473"&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;strong&gt;Run &amp;amp; validate:&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;Execute the test suite or &lt;a href="https://docs.apidog.com/overview-609698m0?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;schedule it as part of your CI pipeline&lt;/a&gt;.&lt;/li&gt;
      &lt;li&gt;Review schema validations, error reports, and coverage metrics.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="2-schemathesis"&gt;2. Schemathesis&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-147.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-147.png" alt="Schemathesis: API testing tool" width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Automated, property-based API testing from OpenAPI 3.1 specs (especially for automation engineers).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://schemathesis.readthedocs.io/" rel="noopener noreferrer"&gt;Schemathesis&lt;/a&gt; is an open-source CLI tool that reads OpenAPI 3.1 docs and auto-generates hundreds of test cases—including negative, edge, and fuzzing scenarios. It’s ideal for automation and CI/CD workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;OpenAPI 3.1 parsing with full JSON Schema 2020-12 support.&lt;/li&gt;
  &lt;li&gt;Auto-generates test cases for all endpoints, methods, and parameter combos.&lt;/li&gt;
  &lt;li&gt;Integrates with pytest for advanced reporting.&lt;/li&gt;
  &lt;li&gt;CI/CD friendly—run tests in any pipeline.&lt;/li&gt;
  &lt;li&gt;Fully open source.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="walkthrough-testing-your-openapi-31-spec-with-schemathesis"&gt;Walkthrough: Testing Your OpenAPI 3.1 Spec with Schemathesis&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;schemathesis
schemathesis run openapi.yaml &lt;span class="nt"&gt;--base-url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://api.example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Limitations:&lt;/strong&gt; CLI-based (no GUI), but integrates well with automation stacks.&lt;/p&gt;

&lt;h2 id="3-hoppscotch"&gt;3. Hoppscotch&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-148.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-148.png" alt="Hoppscotch: API testing tool" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Lightweight, browser-based manual testing with basic OpenAPI 3.1 support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hoppscotch.io/" rel="noopener noreferrer"&gt;Hoppscotch&lt;/a&gt; is a free, open-source API client with a minimal UI. It supports OpenAPI 3.1 import and basic request validation, but lacks automated test generation and advanced schema validation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Import OpenAPI 3.1 documents to auto-populate requests.&lt;/li&gt;
  &lt;li&gt;Run and validate requests with schema-aware forms.&lt;/li&gt;
  &lt;li&gt;Mock server capabilities for simulating responses.&lt;/li&gt;
  &lt;li&gt;Web-based—zero install.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="quickstart-openapi-31-in-hoppscotch"&gt;Quickstart: OpenAPI 3.1 in Hoppscotch&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Go to the Hoppscotch web app.&lt;/li&gt;
  &lt;li&gt;Click "Import" → "OpenAPI 3.1".&lt;/li&gt;
  &lt;li&gt;Use generated requests for manual testing and response validation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; No automated or scenario-based test generation—best for quick, manual checks.&lt;/p&gt;

&lt;h2 id="4-insomnia"&gt;4. Insomnia&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-149.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-149.png" alt="Insomnia: API testing tool" width="800" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Developers wanting an open-source, extensible API client with OpenAPI 3.1 import and schema validation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://insomnia.rest/" rel="noopener noreferrer"&gt;Insomnia&lt;/a&gt; supports OpenAPI 3.1 import, organizing endpoints into collections and environments. It validates request/response schemas but doesn’t auto-generate test flows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;OpenAPI 3.1 spec import/export.&lt;/li&gt;
  &lt;li&gt;Schema-aware requests and validation.&lt;/li&gt;
  &lt;li&gt;Environment variables for flexible testing.&lt;/li&gt;
  &lt;li&gt;Plugin ecosystem for extensibility.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="getting-started-openapi-31-in-insomnia"&gt;Getting Started: OpenAPI 3.1 in Insomnia&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Import your OpenAPI 3.1 file via "Create → New Request Collection → Import".&lt;/li&gt;
  &lt;li&gt;Run requests and check schema-based validation in the response pane.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; Manual testing only; automated test case generation not supported.&lt;/p&gt;

&lt;h2 id="5-stoplight"&gt;5. Stoplight&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-150.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-150.png" alt="Stoplight: API documentation and testing tool" width="800" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Teams needing advanced API design, mocking, and testing with OpenAPI 3.1.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://stoplight.io/" rel="noopener noreferrer"&gt;Stoplight&lt;/a&gt; is a visual platform for API design and testing, with full OpenAPI 3.1 support (spec validation, mock servers, automated test scenarios).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Visual API designer with OpenAPI 3.1 import/export.&lt;/li&gt;
  &lt;li&gt;Scenario-based automated testing from your spec.&lt;/li&gt;
  &lt;li&gt;Mock server and example response generation.&lt;/li&gt;
  &lt;li&gt;CI pipeline integration via Stoplight CLI.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="example-validating-an-openapi-31-spec-in-stoplight"&gt;Example: Validating an OpenAPI 3.1 Spec in Stoplight&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Import your OpenAPI 3.1 file into Stoplight Studio.&lt;/li&gt;
  &lt;li&gt;Use the "Testing" tab to auto-generate and run test scenarios.&lt;/li&gt;
  &lt;li&gt;Review validation errors, coverage, and suggested fixes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; Some features require a paid plan; open-source version is limited.&lt;/p&gt;

&lt;h2 id="6-postman"&gt;6. Postman&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-151.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-151.png" alt="Postman: API testing platform" width="800" height="229"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Teams already using Postman—note that 3.1 support is partial.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://postman.com/" rel="noopener noreferrer"&gt;Postman&lt;/a&gt; is a popular API client, but OpenAPI 3.1 support is still limited. You can import 3.1 specs, but schema validation and automated flows may not fully support all 3.1/JSON Schema features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;OpenAPI 3.1 import (with restrictions).&lt;/li&gt;
  &lt;li&gt;Manual testing, scripting, and monitoring.&lt;/li&gt;
  &lt;li&gt;Mock servers and CI integrations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="caveat-known-limitations"&gt;Caveat: Known Limitations&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Many 3.1 JSON Schema features are not validated.&lt;/li&gt;
  &lt;li&gt;Test automation is mostly manual.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; For full 3.1 support, supplement Postman with tools like Schemathesis or Apidog.&lt;/p&gt;

&lt;h2 id="7-prism"&gt;7. Prism&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-152.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-152.png" alt="Prism: API testing tool" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Mocking APIs defined by OpenAPI 3.1 specs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/stoplightio/prism" rel="noopener noreferrer"&gt;Prism&lt;/a&gt; is an open-source tool for mocking and validating HTTP servers based on OpenAPI (including 3.1). Not a full test runner, but great for simulating endpoints and validating requests/responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;OpenAPI 3.1 spec parsing and validation.&lt;/li&gt;
  &lt;li&gt;Mocks endpoints and example responses.&lt;/li&gt;
  &lt;li&gt;CLI and Docker support for automation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="quickstart-example"&gt;Quickstart Example&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @stoplight/prism-cli
prism mock openapi.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2 id="real-world-scenario-migrating-to-openapi-31-in-a-cicd-workflow"&gt;Real-World Scenario: Migrating to OpenAPI 3.1 in a CI/CD Workflow&lt;/h2&gt;

&lt;p&gt;Suppose your team is updating API specs from OpenAPI 3.0 to 3.1. You want to:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Validate schema changes&lt;/li&gt;
  &lt;li&gt;Generate regression tests for new endpoints&lt;/li&gt;
  &lt;li&gt;Automate tests in your CI/CD pipeline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Recommended approach:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
&lt;strong&gt;Design &amp;amp; update your OpenAPI 3.1 spec&lt;/strong&gt; in Apidog or Stoplight with visual editing and validation.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;Import into Apidog&lt;/strong&gt; to auto-generate test cases and run UI/CLI validation.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;Use Schemathesis&lt;/strong&gt; to run automated, property-based tests in your CI pipeline:&lt;/li&gt;
&lt;/ol&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# .github/workflows/api-tests.yml&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run Schemathesis OpenAPI 3.1 Tests&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;schemathesis run openapi.yaml --base-url=https://staging.example.com&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol start="4"&gt;
  &lt;li&gt;
&lt;strong&gt;Mock endpoints&lt;/strong&gt; during frontend development using Apidog or Prism for consistent test environments.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; Faster feedback on schema changes, less manual effort, and confidence that new 3.1 features work as expected.&lt;/p&gt;

&lt;h2 id="troubleshooting-pitfalls-adopting-openapi-31-in-testing"&gt;Troubleshooting &amp;amp; Pitfalls: Adopting OpenAPI 3.1 in Testing&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
&lt;strong&gt;Spec Import Failures:&lt;/strong&gt; Some tools downgrade or ignore unsupported 3.1 features. Check for warnings after import.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;Incomplete Validation:&lt;/strong&gt; Tools without full JSON Schema 2020-12 support may skip critical errors (e.g., "if/then/else" constraints).&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;CI/CD Integration:&lt;/strong&gt; CLI tools (Schemathesis, Prism) are easiest to automate. GUI tools may need plugins or scripts.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;Fuzzing Limitations:&lt;/strong&gt; Only a few tools (like Schemathesis) generate negative and edge-case tests directly from OpenAPI 3.1.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; For robust coverage, combine a visual platform like Apidog (for design &amp;amp; validation) with CLI tools (for automation and edge-case testing).&lt;/p&gt;

&lt;h2 id="conclusion-choosing-the-right-openapi-31-api-testing-tool"&gt;Conclusion: Choosing the Right OpenAPI 3.1 API Testing Tool&lt;/h2&gt;

&lt;p&gt;API testing tools with OpenAPI 3.1 support are evolving fast, but features and automation levels vary:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
&lt;strong&gt;All-in-one workflows:&lt;/strong&gt; Apidog and Stoplight—great for unified design, testing, and docs.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;Automated, high-coverage testing:&lt;/strong&gt; Schemathesis—ideal for CI/CD and property-based approaches.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;Lightweight, open-source:&lt;/strong&gt; Hoppscotch, Insomnia, and Prism—for manual or mock testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before adopting any tool, validate its 3.1 support using your actual specs—especially if you use advanced JSON Schema features. For most teams, combining visual tools (like Apidog) with automation (like Schemathesis) gives the best usability and coverage.&lt;/p&gt;

&lt;h2 id="frequently-asked-questions"&gt;Frequently Asked Questions&lt;/h2&gt;

&lt;h3 id="q-can-i-use-openapi-31-features-in-all-api-testing-tools"&gt;Q: Can I use OpenAPI 3.1 features in all API testing tools?&lt;/h3&gt;

&lt;p&gt;No. Many legacy tools only support OpenAPI 3.0.x, and some with "3.1 support" lack full JSON Schema 2020-12 validation. Always verify before committing.&lt;/p&gt;

&lt;h3 id="q-are-there-fully-open-source-api-testing-tools-for-openapi-31"&gt;Q: Are there fully open-source API testing tools for OpenAPI 3.1?&lt;/h3&gt;

&lt;p&gt;Yes—Schemathesis, Hoppscotch, Insomnia, and Prism are excellent open-source options, each with different strengths.&lt;/p&gt;

&lt;h3 id="q-how-do-i-automate-openapi-31-based-tests-in-cicd"&gt;Q: How do I automate OpenAPI 3.1-based tests in CI/CD?&lt;/h3&gt;

&lt;p&gt;Use CLI tools like Schemathesis, or integrate Apidog’s test runner via their API or CLI. Most tools export test results in CI-friendly formats.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Google Agent Smith Writes 25% of Google's Code: What API Teams Should Know</title>
      <dc:creator>Wanda</dc:creator>
      <pubDate>Fri, 17 Apr 2026 09:52:45 +0000</pubDate>
      <link>https://dev.to/apilover/google-agent-smith-writes-25-of-googles-code-what-api-teams-should-know-1i1c</link>
      <guid>https://dev.to/apilover/google-agent-smith-writes-25-of-googles-code-what-api-teams-should-know-1i1c</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Google’s internal AI coding agent, Agent Smith, now generates over 25% of the company’s new production code. Unlike autocomplete tools like Copilot, Agent Smith works asynchronously in the background, writing, testing, and iterating on code without human interaction. For API teams, this raises questions about contract stability, test coverage, documentation drift, and review workflows when a quarter of your codebase is machine-generated.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;During a March 2026 earnings call, Google CEO Sundar Pichai announced that AI-generated code now accounts for more than 25% of new code produced at Google.&lt;/p&gt;

&lt;p&gt;This isn’t autocomplete. This isn’t Copilot suggestions accepted by developers. This is code that ships to production after AI generation. The tool, Agent Smith, is so popular among Google’s 180,000+ employees that the company had to throttle access to manage infrastructure strain.&lt;/p&gt;

&lt;p&gt;Agent Smith is fundamentally different from today’s AI coding tools. While Copilot and Claude Code assist in real time, Agent Smith works in the background. Engineers assign tasks, step away, and return to review completed work.&lt;/p&gt;

&lt;p&gt;For API development teams, this shift from “AI-assisted” to “AI-generated” code introduces practical challenges. When 25% of your codebase is written by an autonomous agent, how do you keep API contracts stable? How do you ensure tests cover machine-generated endpoints? How do you prevent documentation drift?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Apidog’s integrated API lifecycle platform keeps design, tests, mocks, and documentation in sync regardless of whether a human or an AI agent makes the change. &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Try Apidog free&lt;/a&gt; to build API workflows that are agent-proof.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This article breaks down what Agent Smith does, how it differs from other AI coding tools, and what API teams should do to prepare.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Agent Smith Does
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Asynchronous Autonomous Coding
&lt;/h3&gt;

&lt;p&gt;Agent Smith operates asynchronously. Here’s the workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An engineer describes a task in natural language&lt;/li&gt;
&lt;li&gt;Agent Smith breaks the task into subtasks&lt;/li&gt;
&lt;li&gt;It writes code across multiple files&lt;/li&gt;
&lt;li&gt;It runs tests and iterates on failures&lt;/li&gt;
&lt;li&gt;The engineer reviews the completed work&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This differs from Copilot’s inline suggestions or Claude Code’s interactive sessions. Agent Smith acts like a junior developer who takes a ticket, returns later with a pull request.&lt;/p&gt;

&lt;p&gt;Engineers can delegate tasks and check progress via Google’s internal chat platform, even from mobile. The tool accesses employee profiles and relevant documentation automatically for context.&lt;/p&gt;

&lt;h3&gt;
  
  
  Built on Gemini and Antigravity
&lt;/h3&gt;

&lt;p&gt;Agent Smith is powered by Google’s Gemini model family and enhanced with retrieval systems for internal code and documentation. It’s built on Antigravity, Google’s agentic coding platform, and extends it with autonomous task decomposition and execution.&lt;/p&gt;

&lt;p&gt;The retrieval augmentation ensures Agent Smith generates context-aware, production-quality code by referencing existing implementations and adhering to internal conventions.&lt;/p&gt;

&lt;h3&gt;
  
  
  What “25% of New Code” Means
&lt;/h3&gt;

&lt;p&gt;“25% of new code” means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generated by AI, not autocompleted&lt;/li&gt;
&lt;li&gt;Passes human code review&lt;/li&gt;
&lt;li&gt;Ships in production systems&lt;/li&gt;
&lt;li&gt;Measured across all Google engineering output&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not 25% of the total codebase, but 25% of new code written today. The percentage is growing and is considered a strategic advantage.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Agent Smith Differs from Other AI Coding Tools
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The AI Coding Tool Spectrum
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;Interaction&lt;/th&gt;
&lt;th&gt;Scope&lt;/th&gt;
&lt;th&gt;Production code?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Copilot&lt;/td&gt;
&lt;td&gt;Real-time autocomplete&lt;/td&gt;
&lt;td&gt;Inline in IDE&lt;/td&gt;
&lt;td&gt;Line/function level&lt;/td&gt;
&lt;td&gt;After human acceptance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;Interactive session&lt;/td&gt;
&lt;td&gt;Conversational&lt;/td&gt;
&lt;td&gt;Multi-file changes&lt;/td&gt;
&lt;td&gt;After human review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor Agent&lt;/td&gt;
&lt;td&gt;Background + interactive&lt;/td&gt;
&lt;td&gt;IDE-embedded&lt;/td&gt;
&lt;td&gt;Project-level&lt;/td&gt;
&lt;td&gt;After human review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent Smith&lt;/td&gt;
&lt;td&gt;Asynchronous autonomous&lt;/td&gt;
&lt;td&gt;Task delegation&lt;/td&gt;
&lt;td&gt;Full feature implementation&lt;/td&gt;
&lt;td&gt;After human review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KAIROS (unreleased)&lt;/td&gt;
&lt;td&gt;Always-on daemon&lt;/td&gt;
&lt;td&gt;Background monitoring&lt;/td&gt;
&lt;td&gt;Repository-wide&lt;/td&gt;
&lt;td&gt;TBD&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Agent Smith is at the autonomous end of this spectrum. The next step would be fully autonomous deployment without human review—no tool does this yet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Asynchronous Matters for API Teams
&lt;/h3&gt;

&lt;p&gt;Real-time AI tools operate within the developer’s flow. Asynchronous agents shift this. When Agent Smith writes an API endpoint, the human reviews it after the fact, separated from creation context. This leads to issues like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unclear rationale for API decisions&lt;/li&gt;
&lt;li&gt;Non-obvious contract changes in code review&lt;/li&gt;
&lt;li&gt;Artifacts (tests, docs, mocks) may not be updated&lt;/li&gt;
&lt;li&gt;Breaking changes may slip through&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Breaks When AI Writes Your API Code
&lt;/h2&gt;

&lt;h3&gt;
  
  
  API Contract Drift
&lt;/h3&gt;

&lt;p&gt;An API contract defines endpoints, schemas, status codes, and error formats. Human developers usually update OpenAPI specs and notify consumers when making changes.&lt;/p&gt;

&lt;p&gt;Autonomous agents like Agent Smith may change code that passes tests, but tests may not cover all contract aspects. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent Smith adds a &lt;code&gt;preferences&lt;/code&gt; field to &lt;code&gt;GET /api/users/{id}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Existing tests pass (they don’t check for extra fields).&lt;/li&gt;
&lt;li&gt;Frontend’s TypeScript types lack &lt;code&gt;preferences&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Mobile app’s strict parser fails on unexpected field.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Result: code is correct, tests pass, contract is broken.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test Coverage Gaps
&lt;/h3&gt;

&lt;p&gt;AI-generated code often comes with matching tests, but those tests focus on new behavior, not regression. For APIs, this can mean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Missing response time benchmarks&lt;/li&gt;
&lt;li&gt;Diverging error response formats&lt;/li&gt;
&lt;li&gt;Unchecked rate limiting&lt;/li&gt;
&lt;li&gt;Missed authentication edge cases&lt;/li&gt;
&lt;li&gt;Inconsistent pagination&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Documentation Drift
&lt;/h3&gt;

&lt;p&gt;If documentation is generated from code or OpenAPI specs, it should stay in sync. But with separate documentation, agent-made changes may not be reflected. Even with auto-generated docs, agents lack human context for usage notes and rationale.&lt;/p&gt;

&lt;h3&gt;
  
  
  Review Fatigue
&lt;/h3&gt;

&lt;p&gt;When 25% of code is AI-generated, reviewers face more code that looks syntactically correct but may diverge from architectural norms and unstated requirements. This increases the risk of superficial (“rubber-stamp”) code reviews.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Build Agent-Proof API Workflows
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Make API Contracts the Source of Truth
&lt;/h3&gt;

&lt;p&gt;Adopt design-first API development. With OpenAPI as the source of truth, all code changes are validated against the contract.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Without design-first&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Code change → Tests pass → Ship → Contract broken
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;With design-first&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spec defines contract → Code must match spec → Contract validation catches drift
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog’s visual API designer&lt;/a&gt; lets you define endpoints and schemas before code is written. Validate all changes against the spec.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Use Contract Testing, Not Just Unit Tests
&lt;/h3&gt;

&lt;p&gt;Unit tests validate behavior. Contract tests enforce the API agreement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example contract test:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// This test fails if the response shape changes,&lt;/span&gt;
&lt;span class="c1"&gt;// even if the new shape is "valid"&lt;/span&gt;
&lt;span class="nf"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;GET /api/users/:id contract&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;returns expected schema&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;request&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/users/123&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toMatchSchema&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;object&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;created_at&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;format&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;created_at&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;format&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;date-time&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;additionalProperties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;  &lt;span class="c1"&gt;// Catches unexpected fields&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;additionalProperties: false&lt;/code&gt; line ensures any schema change is caught. &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog automates contract testing&lt;/a&gt;: define your schema once and validate every response in tests and CI/CD.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Gate Deployments on Spec Validation
&lt;/h3&gt;

&lt;p&gt;Add API spec validation to your CI/CD pipeline. Ensure code matches the declared contract before deployment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# CI/CD pipeline step&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Validate API contract&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
    &lt;span class="s"&gt;# Diff the current spec against the running implementation&lt;/span&gt;
    &lt;span class="s"&gt;apidog run --test-scenario-id CONTRACT_TESTS&lt;/span&gt;

    &lt;span class="s"&gt;# Fail if any contract violations found&lt;/span&gt;
    &lt;span class="s"&gt;if [ $? -ne 0 ]; then&lt;/span&gt;
      &lt;span class="s"&gt;echo "API contract violation detected. Review changes."&lt;/span&gt;
      &lt;span class="s"&gt;exit 1&lt;/span&gt;
    &lt;span class="s"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This blocks contract-breaking changes before production.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Require Spec Updates for API Changes
&lt;/h3&gt;

&lt;p&gt;Enforce a workflow: any PR modifying API behavior must include an OpenAPI spec update. For AI-generated PRs, the agent or a human must update the spec before merging.&lt;/p&gt;

&lt;p&gt;In &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;, spec changes auto-propagate to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API documentation&lt;/li&gt;
&lt;li&gt;Mock server responses&lt;/li&gt;
&lt;li&gt;Test assertions&lt;/li&gt;
&lt;li&gt;Client SDK types&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This keeps all artifacts in sync.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Monitor API Behavior in Production
&lt;/h3&gt;

&lt;p&gt;Even with contract tests, production monitoring catches what pre-prod tests miss. Track:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Schema violations:&lt;/strong&gt; Log mismatches against the spec&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unexpected fields:&lt;/strong&gt; Alert on new, undocumented fields&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error rate changes:&lt;/strong&gt; Watch for shifts across endpoints&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency shifts:&lt;/strong&gt; Detect performance changes from agent-written code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Traffic pattern changes:&lt;/strong&gt; Spot unexpected usage on new endpoints&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. Separate API Review from Code Review
&lt;/h3&gt;

&lt;p&gt;Standard code review checks functionality. API review checks consumer impact.&lt;/p&gt;

&lt;p&gt;For AI-generated API changes, use a checklist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does this break any existing consumer?&lt;/li&gt;
&lt;li&gt;Is the OpenAPI spec updated?&lt;/li&gt;
&lt;li&gt;Are breaking changes versioned?&lt;/li&gt;
&lt;li&gt;Are error responses consistent?&lt;/li&gt;
&lt;li&gt;Are new endpoints documented?&lt;/li&gt;
&lt;li&gt;Have downstream teams been notified?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Trajectory: Where Autonomous Coding Is Heading
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Agent Smith Today vs. Tomorrow
&lt;/h3&gt;

&lt;p&gt;Agent Smith at 25% is just the start. AI agents are a “big focus,” and the percentage will rise as access expands and tools mature.&lt;/p&gt;

&lt;p&gt;Other companies are building similar systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code’s KAIROS:&lt;/strong&gt; Always-on daemon with GitHub webhooks and background workers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Copilot Agent Mode:&lt;/strong&gt; Multi-step autonomous file editing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amazon CodeWhisperer:&lt;/strong&gt; Expanding to agentic workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI coding tools are moving from “assistant” to “autonomous contributor” to “background infrastructure.” Soon, the question is not if, but how much of your API code is written by AI.&lt;/p&gt;

&lt;h3&gt;
  
  
  What API Teams Should Prepare for Now
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Design-first is now required.&lt;/strong&gt; Make your API spec the source of truth before agent adoption makes it urgent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Invest in contract testing.&lt;/strong&gt; Unit tests aren’t enough when code authors lack your team’s context. Contract tests encode conventions explicitly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choose tools that sync artifacts.&lt;/strong&gt; Disconnected toolchains create drift. &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Integrated platforms like Apidog&lt;/a&gt; keep specs, tests, mocks, and docs in sync.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update review processes.&lt;/strong&gt; Standard reviews miss API contract violations. Add checklists and automated validation for API changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try Apidog free to build API workflows that stay consistent whether your next code change comes from a human developer, Agent Smith, or whatever autonomous coding tool comes next.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is Google Agent Smith?
&lt;/h3&gt;

&lt;p&gt;Agent Smith is Google’s internal AI coding agent, built on Gemini and Antigravity. It works asynchronously: engineers assign tasks, and Agent Smith writes, tests, and iterates on code without real-time human interaction. It generated over 25% of Google’s new production code as of March 2026.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Agent Smith available outside Google?
&lt;/h3&gt;

&lt;p&gt;No. Agent Smith is internal to Google employees only. There are no public release plans. The technology is similar to Copilot Agent Mode and Claude Code, but more deeply integrated with Google’s internal systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does AI-generated code break API contracts?
&lt;/h3&gt;

&lt;p&gt;It can. AI agents write code that passes tests, but tests may not cover the full contract. Schema changes, new fields, error formats, and behavioral changes can break downstream consumers. Contract testing and design-first development prevent this.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should API teams worry about Agent Smith?
&lt;/h3&gt;

&lt;p&gt;Not about Agent Smith specifically, since it’s internal to Google. But similar autonomous coding tools (Copilot Agent Mode, KAIROS, etc.) are coming. Preparing your API workflow now—with design-first, contract testing, and integrated tooling—positions you to adopt autonomous agents safely.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I prevent AI agents from breaking my APIs?
&lt;/h3&gt;

&lt;p&gt;Use design-first development with OpenAPI as the source of truth. Add contract tests with &lt;code&gt;additionalProperties: false&lt;/code&gt; to catch schema changes. Gate deployments on spec validation. Use an &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;integrated platform like Apidog&lt;/a&gt; to keep specs, tests, mocks, and docs in sync.&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s the difference between AI-assisted and AI-generated code?
&lt;/h3&gt;

&lt;p&gt;AI-assisted code (Copilot, Claude Code) is written in real time with human oversight. AI-generated code (Agent Smith) is produced asynchronously, with the developer reviewing completed work after the fact. This increases the risk of undetected contract violations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Will AI agents replace API developers?
&lt;/h3&gt;

&lt;p&gt;No. Agent Smith still requires human task definition, code review, and approval. AI augments productivity but does not replace the judgment, context, or architectural thinking of human developers. The role shifts toward defining tasks, reviewing output, and maintaining system coherence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Google’s Agent Smith generates 25% of new production code via asynchronous, autonomous operation&lt;/li&gt;
&lt;li&gt;This shift from AI-assisted to AI-generated code changes API review dynamics&lt;/li&gt;
&lt;li&gt;API contract drift is the primary risk when autonomous agents modify endpoints and schemas&lt;/li&gt;
&lt;li&gt;Design-first development with OpenAPI specs as the source of truth prevents contract breakage&lt;/li&gt;
&lt;li&gt;Contract testing with strict schema validation catches changes unit tests miss&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Integrated platforms like Apidog&lt;/a&gt; synchronize specs, tests, mocks, and docs to prevent drift&lt;/li&gt;
&lt;li&gt;Autonomous coding agents are accelerating—prepare your API workflows now&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agent Smith at 25% is the beginning. Teams that build agent-proof API workflows today will be able to safely adopt autonomous coding tools tomorrow.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Edit Video with an AI Agent Using HyperFrames</title>
      <dc:creator>Wanda</dc:creator>
      <pubDate>Fri, 17 Apr 2026 04:05:02 +0000</pubDate>
      <link>https://dev.to/apilover/how-to-edit-video-with-an-ai-agent-using-hyperframes-4081</link>
      <guid>https://dev.to/apilover/how-to-edit-video-with-an-ai-agent-using-hyperframes-4081</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;AI agents can now write code, call APIs, and run multi-step workflows—but video editing was out of reach. Professional video editors like After Effects and DaVinci Resolve use complex, non-standard formats that LLMs don’t understand. HeyGen’s open-source &lt;a href="https://github.com/heygen-com/hyperframes" rel="noopener noreferrer"&gt;HyperFrames&lt;/a&gt; project closes this gap: it lets AI agents compose videos using HTML, CSS, and JavaScript, then renders output as MP4, MOV, or WebM. Install it as a Claude Code skill and your agent becomes a video editor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Video is the most engaging format online, yet lacked an accessible toolchain for AI agents. While Sora, Veo, and Runway let you create an entire video from a prompt, you can’t iterate on scenes, tweak motion graphics, or refine specific transitions. You’re stuck with a single, uneditable output.&lt;/p&gt;

&lt;p&gt;HeyGen launched HyperFrames on April 17, 2026, to solve this. Instead of teaching agents legacy video tools, HyperFrames lets agents use HTML. This guide explains how HyperFrames works, why it makes sense, and how to let your own agent automate video editing.&lt;/p&gt;

&lt;p&gt;If you’re building API-driven agent workflows that produce video, you’ll also want to test orchestration—see how &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; fits in at the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why AI Agents Couldn’t Edit Video Before
&lt;/h2&gt;

&lt;p&gt;Traditional video editing software is built for humans, not code. Here’s why:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Timeline UIs don’t map to code.&lt;/strong&gt; Tools like After Effects and DaVinci Resolve save projects as proprietary binaries or deeply nested JSON. LLMs have almost zero training data on these formats.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Motion graphics require visual reasoning.&lt;/strong&gt; Animating, layering, and compositing depends on visual intuition—agents need a text-based abstraction to reason about these.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human-centric tooling.&lt;/strong&gt; Render pipelines and plugin systems hide behind GUIs. Automation is limited and fragile.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Result: agents could script &lt;code&gt;ffmpeg&lt;/code&gt; for basic tasks, but anything beyond simple overlays required human input.&lt;/p&gt;

&lt;h2&gt;
  
  
  The HTML-for-Video Approach
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/heygen-com/hyperframes" rel="noopener noreferrer"&gt;HeyGen’s team&lt;/a&gt; realized LLMs are fluent in HTML, CSS, and JavaScript. They’ve seen countless GSAP animations, SVGs, and browser-based motion graphics in their training data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnhmqdwb294mwtrvva0l6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnhmqdwb294mwtrvva0l6.gif" alt="HyperFrames Demo" width="760" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When prompted for complex visuals, LLMs can generate HTML and CSS with animations, layering, and transitions. All the building blocks for motion graphics exist in the browser. The missing piece: converting a sequence of HTML scenes into a rendered video.&lt;/p&gt;

&lt;p&gt;That’s what &lt;a href="https://github.com/heygen-com/hyperframes" rel="noopener noreferrer"&gt;HyperFrames&lt;/a&gt; does: HTML becomes video frames.&lt;/p&gt;

&lt;h2&gt;
  
  
  How HyperFrames Works
&lt;/h2&gt;

&lt;p&gt;HyperFrames extends standard HTML with a handful of &lt;code&gt;data-&lt;/code&gt; attributes to define the video timeline. The rest is just web code.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Attribute&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data-composition-id&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Unique ID for the video composition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;data-width&lt;/code&gt; / &lt;code&gt;data-height&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Output resolution in pixels&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data-start&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Scene start time in seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data-duration&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Scene duration in seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data-track-index&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Layering order for overlapping scenes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You write a normal HTML file. HyperFrames parses these attributes, runs the page in a headless browser, captures frames, and encodes them as video using FFmpeg. No new DSLs, scene graphs, or keyframe editors—just HTML, CSS, and JavaScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minimal Example
&lt;/h2&gt;

&lt;p&gt;Here’s a 5-second video with two scenes: a title fading in, then a blur crossfade to a closing screen.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1920px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1080px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#0D1B2A&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.scene&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="py"&gt;inset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1920px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;1080px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#0D1B2A&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nf"&gt;#scene2&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.s1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex-direction&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;120px&lt;/span&gt; &lt;span class="m"&gt;160px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="py"&gt;gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.s2&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;flex-direction&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;100px&lt;/span&gt; &lt;span class="m"&gt;160px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="py"&gt;gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;32px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"root"&lt;/span&gt; &lt;span class="na"&gt;data-composition-id=&lt;/span&gt;&lt;span class="s"&gt;"hyperframes-intro"&lt;/span&gt;
       &lt;span class="na"&gt;data-width=&lt;/span&gt;&lt;span class="s"&gt;"1920"&lt;/span&gt; &lt;span class="na"&gt;data-height=&lt;/span&gt;&lt;span class="s"&gt;"1080"&lt;/span&gt; &lt;span class="na"&gt;data-start=&lt;/span&gt;&lt;span class="s"&gt;"0"&lt;/span&gt; &lt;span class="na"&gt;data-duration=&lt;/span&gt;&lt;span class="s"&gt;"5"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"scene1"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"scene"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"s1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"s1-title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;HTML is Video&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"s1-sub"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Compose. Animate. Render.&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"scene2"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"scene"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"s2-title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Start composing.&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
    &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;__timelines&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;__timelines&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;gsap&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;timeline&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;paused&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="c1"&gt;// Scene 1: title entrance&lt;/span&gt;
    &lt;span class="nx"&gt;tl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;.s1-title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;ease&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;power3.out&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mf"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;tl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;.s1-sub&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;0.4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;ease&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;power2.out&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Blur crossfade transition&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;2.2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;tl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#scene1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;blur(8px)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;1.03&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;0.35&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;ease&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;power2.inOut&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;tl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fromTo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#scene2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;blur(8px)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;0.97&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;blur(0px)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;0.35&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;ease&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;power2.inOut&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;0.08&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;__timelines&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hyperframes-intro&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;tl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key points:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Animation is pure GSAP.&lt;/strong&gt; Any agent trained on GSAP can build these timelines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HyperFrames overhead is minimal.&lt;/strong&gt; Only a few &lt;code&gt;data-&lt;/code&gt; attributes on the root element.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Render this file and you get a 1920x1080 MP4. Updates are as simple as editing HTML.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Agent Can Use
&lt;/h2&gt;

&lt;p&gt;Because HyperFrames runs a real browser, agents can leverage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CSS animations and transitions&lt;/strong&gt; for simple movement&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GSAP timelines&lt;/strong&gt; for advanced choreography&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SVG&lt;/strong&gt; for vector graphics and path animation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Canvas&lt;/strong&gt; for custom drawing or particles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Three.js&lt;/strong&gt; for 3D scenes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;D3.js&lt;/strong&gt; for data visualizations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lottie&lt;/strong&gt; for After Effects imports&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web fonts&lt;/strong&gt; from Google Fonts or custom sources&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Background images/video&lt;/strong&gt; via &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No wrappers, no new frameworks—agents use what they already know.&lt;/p&gt;

&lt;h2&gt;
  
  
  Add Video Editing to Your Agent in One Command
&lt;/h2&gt;

&lt;p&gt;If you use Claude Code, install HyperFrames with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add heygen-com/hyperframes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This pulls the skill from GitHub, sets up dependencies, and registers video editing for your agent.&lt;/p&gt;

&lt;p&gt;Example prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Build me a 10-second product explainer video for a new API.
Start with a dark gradient background, animate the product name
sliding up from the bottom with a fade, then cut to three
bullet points with icons, end on a call-to-action card.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your agent writes the HTML, previews it locally, and renders to MP4. No API keys or external services required.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Up Without Claude Code
&lt;/h2&gt;

&lt;p&gt;HyperFrames is framework-agnostic. Any agent that can run shell commands and access files can use it.&lt;/p&gt;

&lt;p&gt;Clone and install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/heygen-com/hyperframes
&lt;span class="nb"&gt;cd &lt;/span&gt;hyperframes
npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Render a composition:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx hyperframes render my-video.html &lt;span class="nt"&gt;--output&lt;/span&gt; my-video.mp4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Preview locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx hyperframes preview my-video.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The preview opens a browser window for scrubbing through the timeline and checking frame accuracy before rendering.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Unlocks for Developers
&lt;/h2&gt;

&lt;p&gt;Immediate use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automated product marketing:&lt;/strong&gt; Generate release videos from changelogs, render and upload—no human timeline editing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personalized video responses:&lt;/strong&gt; Trigger agents via webhooks to create custom clips for user events—welcome videos, receipts, milestones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data storytelling:&lt;/strong&gt; Feed metrics to agents, generate D3 visualizations wrapped in HyperFrames scenes, and output narrated dashboards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic B-roll:&lt;/strong&gt; Generate motion graphics for podcasts or long-form content, layered over audio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API documentation videos:&lt;/strong&gt; Parse OpenAPI specs, generate animated endpoint walkthroughs, and export as shareable videos.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Testing Agent Orchestration with Apidog
&lt;/h2&gt;

&lt;p&gt;HyperFrames handles rendering. Upstream, you need reliable orchestration: agent loops, tool calls, LLM API requests, and logic for picking video content.&lt;/p&gt;

&lt;p&gt;Here’s where things often break: malformed payloads, API timeouts, or schema mismatches can halt the video pipeline before rendering starts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; provides a robust testbed for these scenarios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mock LLM endpoints:&lt;/strong&gt; Build dummy Claude or OpenAI endpoints with exact schemas. Test your pipeline’s error handling before incurring real API costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate tool-use payloads:&lt;/strong&gt; If your agent calls external APIs, set up those endpoints in Apidog and chain them into test runs. Verify agent API calls match your requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Track token usage:&lt;/strong&gt; Claude Opus 4.7 uses a new tokenizer and can generate up to 35% more tokens. Apidog’s usage tracking helps you optimize prompts before costs escalate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debug multi-turn flows:&lt;/strong&gt; Video generation usually takes 5–10 LLM turns. Use Apidog’s replay tools to track where your agent gets stuck or off-track.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Philosophical Argument
&lt;/h2&gt;

&lt;p&gt;HeyGen argues that HTML isn’t just convenient for agent-generated video—it’s the right format for the future.&lt;/p&gt;

&lt;p&gt;Traditional video is locked in proprietary formats. HTML is open, versionable, searchable, and works with every text tool.&lt;/p&gt;

&lt;p&gt;HTML-based video means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Diffable in git:&lt;/strong&gt; See exactly what changed between versions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Componentizable:&lt;/strong&gt; Title cards as React components, motion graphics as modules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive:&lt;/strong&gt; Render at any resolution or aspect ratio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessible:&lt;/strong&gt; Screen readers can parse the source; alt text is built-in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Searchable:&lt;/strong&gt; Text remains text, not pixels.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of this works in browsers today. HyperFrames bridges browser-native content and high-quality video outputs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations to Know About
&lt;/h2&gt;

&lt;p&gt;HyperFrames is early-stage. Real-world limitations include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Render speed:&lt;/strong&gt; Complex scenes (Three.js, Canvas shaders) take longer to encode. Plan accordingly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live video input:&lt;/strong&gt; Embedding &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; tags works, but live feeds or streams require additional code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio support:&lt;/strong&gt; Basic audio tracks work; advanced mixing still needs FFmpeg post-processing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent creativity:&lt;/strong&gt; Output quality still depends on the LLM. Opus 4.7 currently gives the best results.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Account for these in production workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started Checklist
&lt;/h2&gt;

&lt;p&gt;Ready to try HyperFrames?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Install Claude Code (or your preferred agent)&lt;/li&gt;
&lt;li&gt;[ ] Run &lt;code&gt;npx skills add heygen-com/hyperframes&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Prompt your agent for a simple 5-second video&lt;/li&gt;
&lt;li&gt;[ ] Render and inspect the MP4 output&lt;/li&gt;
&lt;li&gt;[ ] Iterate: tweak style, timing, or scenes&lt;/li&gt;
&lt;li&gt;[ ] For API-driven workflows, set up LLM and tool endpoints in &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Build one real video (product teaser, data story, release summary)&lt;/li&gt;
&lt;li&gt;[ ] Star the repo: &lt;a href="https://github.com/heygen-com/hyperframes" rel="noopener noreferrer"&gt;github.com/heygen-com/hyperframes&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;AI agents have coded for years, but video editing was the last creative frontier needing humans in the loop. HyperFrames changes that, letting agents compose video with HTML, CSS, and JavaScript.&lt;/p&gt;

&lt;p&gt;The approach is simple, flexible, and powerful enough for broadcast-quality graphics. If you need video output—marketing automation, personalized content, data storytelling, or agent-driven docs—HyperFrames should be in your stack.&lt;/p&gt;

&lt;p&gt;For testing API and orchestration layers, use &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; to catch issues before scaling. Failed API calls mean no MP4.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Use Claude Opus 4.7 for Free</title>
      <dc:creator>Wanda</dc:creator>
      <pubDate>Fri, 17 Apr 2026 03:42:07 +0000</pubDate>
      <link>https://dev.to/apilover/how-to-use-claude-opus-47-for-free-33f6</link>
      <guid>https://dev.to/apilover/how-to-use-claude-opus-47-for-free-33f6</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Claude Opus 4.7 costs $5 per million input tokens and $25 per million output tokens. There’s no unlimited free tier, but you can access it at zero cost via seven legitimate methods: Anthropic API signup credit, Google Cloud Vertex AI credits ($300), AWS Bedrock new-customer credits, Microsoft Foundry trial, Claude.ai limited access, the Anthropic Builder Program for startups, and academic research credits. This guide breaks down each method, how to claim it, and the real Opus 4.7 usage you’ll get.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://apidog.com/blog/claude-opus-4-7/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Anthropic released Claude Opus 4.7&lt;/a&gt; on April 16, 2026. It’s Anthropic’s most capable model, but also one of the priciest at $25 per million output tokens. Heavy usage can rack up costs quickly.&lt;/p&gt;

&lt;p&gt;Can developers use Opus 4.7 for free? Not indefinitely, but there are enough free credits and programs to experiment, test integrations, or complete a side project. The trick is knowing where to find free credits and maximizing their value.&lt;/p&gt;

&lt;p&gt;This guide details every legitimate path—no sketchy key-sharing, no “unlimited Opus” scams—just real programs from Anthropic and its cloud partners, with clear limits.&lt;/p&gt;

&lt;p&gt;You’ll also learn how to test your API calls with Apidog to avoid wasting credits on debugging.&lt;/p&gt;




&lt;h2&gt;
  
  
  What “free” actually means for Claude Opus 4.7
&lt;/h2&gt;

&lt;p&gt;Set clear expectations up front.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://apidog.com/blog/claude-opus-4-7/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Opus 4.7&lt;/a&gt; is Anthropic’s flagship. It features a 1M token context window, a new tokenizer (up to 35% more tokens than Opus 4.6 for the same text), and the &lt;code&gt;xhigh&lt;/code&gt; effort level for coding. Pricing is $5 per million input tokens, $25 per million output tokens.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpg0fdf7tgdo7j43tf544.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpg0fdf7tgdo7j43tf544.png" alt="Opus 4.7 Pricing Table" width="800" height="812"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No provider offers unlimited free Opus 4.7 access. Instead, you can access:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trial credits&lt;/strong&gt; (expire after a set time)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New-account credits&lt;/strong&gt; from cloud platforms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Program-based credits&lt;/strong&gt; for startups, students, and researchers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate-limited free access&lt;/strong&gt; on certain third-party platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Combine two or three of these methods and you can run meaningful workloads for free.&lt;/p&gt;




&lt;h2&gt;
  
  
  Method 1: Anthropic API signup credit
&lt;/h2&gt;

&lt;p&gt;Every new Anthropic account receives a small free credit to &lt;a href="http://apidog.com/blog/claude-opus-4-7-api/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;test the API&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to claim:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://console.anthropic.com" rel="noopener noreferrer"&gt;console.anthropic.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Sign up using email or Google account&lt;/li&gt;
&lt;li&gt;Verify your phone number&lt;/li&gt;
&lt;li&gt;Credits appear automatically in your balance&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What you get:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;~$5 in credits (~1M input tokens, ~200K output tokens, or a mix)&lt;/li&gt;
&lt;li&gt;Ideal for initial tests, prompt verification, benchmarking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Limits:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Credits expire&lt;/li&gt;
&lt;li&gt;New account rate limits: 50 req/min, 20K input tokens/min (Tier 1)&lt;/li&gt;
&lt;li&gt;Not suitable for production loads&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Method 2: Google Cloud Vertex AI free credits
&lt;/h2&gt;

&lt;p&gt;This is typically the largest free credit source for developers.&lt;/p&gt;

&lt;p&gt;Claude Opus 4.7 is available directly in Google Cloud’s Vertex AI. New Google Cloud users get &lt;strong&gt;$300 in free credits&lt;/strong&gt; (valid for 90 days), usable on Opus 4.7.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to claim:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Visit &lt;a href="https://cloud.google.com/free" rel="noopener noreferrer"&gt;cloud.google.com/free&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Sign up with a new Google account&lt;/li&gt;
&lt;li&gt;Enter a payment method (for verification, not charged during trial)&lt;/li&gt;
&lt;li&gt;Enable the Vertex AI API&lt;/li&gt;
&lt;li&gt;Request access to Claude models in Model Garden&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Value of $300:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;~60M input tokens or&lt;/li&gt;
&lt;li&gt;~12M output tokens or&lt;/li&gt;
&lt;li&gt;A typical mix (e.g., 30M input + 5M output tokens)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enough for weeks of agent development and prototyping.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to call Opus 4.7 in Python:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;google.cloud&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;aiplatform&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;anthropic&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AnthropicVertex&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;AnthropicVertex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;region&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;us-east5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;project_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your-gcp-project&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7@20260416&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4096&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Summarize this log file...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Limits:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$300 covers all GCP services, not just Vertex AI&lt;/li&gt;
&lt;li&gt;Regional endpoints add a 10% premium&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Method 3: AWS Bedrock new-customer credits
&lt;/h2&gt;

&lt;p&gt;Claude Opus 4.7 is available on Amazon Bedrock. AWS offers free tier credits for new accounts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to claim:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Register at &lt;a href="https://aws.amazon.com/free" rel="noopener noreferrer"&gt;aws.amazon.com/free&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Add a credit card for verification&lt;/li&gt;
&lt;li&gt;Apply for AWS Activate if you’re a startup (up to $5,000)&lt;/li&gt;
&lt;li&gt;Enable Bedrock, request access to Claude in the Bedrock console&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What you get:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$100–200 in standard new-account credits&lt;/li&gt;
&lt;li&gt;Startups (via AWS Activate): $1,000–5,000 credits&lt;/li&gt;
&lt;li&gt;All credits usable with Opus 4.7&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to call Opus 4.7 in Python:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bedrock-runtime&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;region_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;us-west-2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;invoke_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;modelId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;anthropic.claude-opus-4-7-v1:0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;anthropic_version&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bedrock-2023-05-31&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;max_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4096&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;messages&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Review this pull request...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;loads&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;body&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Limits:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bedrock pricing matches Anthropic rates (sometimes regional premium)&lt;/li&gt;
&lt;li&gt;Credits may be locked to certain services&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Method 4: Microsoft Foundry (Azure) trial
&lt;/h2&gt;

&lt;p&gt;Opus 4.7 is available on Microsoft Foundry (formerly Azure AI Foundry). New Azure accounts receive $200 in trial credits (30 days validity), plus 12 months of free-tier services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to claim:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sign up at &lt;a href="https://azure.microsoft.com/free" rel="noopener noreferrer"&gt;azure.microsoft.com/free&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Verify identity and payment method&lt;/li&gt;
&lt;li&gt;Access Foundry via Azure portal&lt;/li&gt;
&lt;li&gt;Deploy Claude Opus 4.7 from the model catalog&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What $200 gets:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;~40M input tokens or 8M output tokens&lt;/li&gt;
&lt;li&gt;Suitable for multi-week prototyping&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Limits:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Credits expire after 30 days—use them promptly&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Method 5: Anthropic Builder Program and startup credits
&lt;/h2&gt;

&lt;p&gt;If you’re building a product or startup with Claude, Anthropic offers credit programs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anthropic Builder Program:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apply at &lt;a href="https://anthropic.com/build-with-claude" rel="noopener noreferrer"&gt;anthropic.com/build-with-claude&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Submit company info and use case&lt;/li&gt;
&lt;li&gt;Typical grant: $5,000–25,000 in API credits&lt;/li&gt;
&lt;li&gt;Larger grants for VC-backed startups&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AWS Activate + Anthropic:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For startups with investor backing&lt;/li&gt;
&lt;li&gt;Up to $5,000 AWS credits usable with Bedrock + Opus 4.7&lt;/li&gt;
&lt;li&gt;Apply via accelerator or &lt;a href="https://aws.amazon.com/activate" rel="noopener noreferrer"&gt;aws.amazon.com/activate&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Google Cloud for Startups:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Up to $200,000 Google Cloud credits for funded startups&lt;/li&gt;
&lt;li&gt;Works with Vertex AI and Opus 4.7&lt;/li&gt;
&lt;li&gt;Requires VC/accelerator association&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;When to apply:&lt;/strong&gt; When your product needs significant Opus 4.7 volume and you have a working prototype.&lt;/p&gt;




&lt;h2&gt;
  
  
  Method 6: Academic and research credits
&lt;/h2&gt;

&lt;p&gt;Anthropic supports academic researchers in AI safety, alignment, and beneficial applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to apply:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://anthropic.com/research" rel="noopener noreferrer"&gt;anthropic.com/research&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Locate the researcher access form&lt;/li&gt;
&lt;li&gt;Describe your project, institution, and expected API usage&lt;/li&gt;
&lt;li&gt;Approved applicants receive credits&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Eligibility:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faculty, postdocs, grad students at accredited institutions&lt;/li&gt;
&lt;li&gt;Independent researchers with publications&lt;/li&gt;
&lt;li&gt;Projects with clear alignment/safety focus get priority&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Typical grant:&lt;/strong&gt; $500–10,000 in credits, depending on project scope&lt;/p&gt;




&lt;h2&gt;
  
  
  Method 7: OpenRouter and third-party aggregators
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://openrouter.ai" rel="noopener noreferrer"&gt;OpenRouter&lt;/a&gt; provides unified API access to multiple models, including Opus 4.7. Occasional free credit promotions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sign up for OpenRouter&lt;/li&gt;
&lt;li&gt;Receive onboarding credits (usually a few dollars)&lt;/li&gt;
&lt;li&gt;Call Opus 4.7 via their API&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One API key for many models&lt;/li&gt;
&lt;li&gt;Easily switch between Opus 4.7, GPT-5, Gemini, etc.&lt;/li&gt;
&lt;li&gt;Built-in usage tracking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prices similar to Anthropic's, sometimes with a markup&lt;/li&gt;
&lt;li&gt;Free credits are small compared to cloud platforms&lt;/li&gt;
&lt;li&gt;Rate limits apply&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Multi-model comparisons without managing separate accounts.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to stretch your free credits
&lt;/h2&gt;

&lt;p&gt;To maximize your free credits, follow these techniques:&lt;/p&gt;

&lt;h3&gt;
  
  
  Use prompt caching
&lt;/h3&gt;

&lt;p&gt;Opus 4.7 charges $0.50 per million tokens for cache reads—10x cheaper than new input tokens. Cache repetitive prompts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are a senior code reviewer...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cache_control&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ephemeral&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Review this function...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For workflows with repeated context, caching lowers costs by 70-90%.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use the Batch API
&lt;/h3&gt;

&lt;p&gt;Batch API gives 50% off for non-urgent jobs. Opus 4.7 batch pricing: $2.50 per million input, $12.50 per million output. Ideal for bulk summarization, offline dataset generation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Select adaptive thinking only when needed
&lt;/h3&gt;

&lt;p&gt;Adaptive thinking (off by default) increases output tokens for deeper reasoning. Enable for complex tasks, leave off for simple ones.&lt;/p&gt;

&lt;h3&gt;
  
  
  Downsample images
&lt;/h3&gt;

&lt;p&gt;Opus 4.7 supports high-res images (up to 3.75MP), but high-res burns tokens fast. If not needed, resize images to 1024x1024 or less.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pick the right effort level
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;xhigh&lt;/code&gt; effort level uses more tokens than &lt;code&gt;low&lt;/code&gt; or &lt;code&gt;medium&lt;/code&gt;. Use &lt;code&gt;xhigh&lt;/code&gt; only for complex coding; use lower levels for routine Q&amp;amp;A.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set a task budget
&lt;/h3&gt;

&lt;p&gt;Task budgets (beta; needs &lt;code&gt;task-budgets-2026-03-13&lt;/code&gt; header) cap total tokens per run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;128000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;output_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;effort&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;high&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;task_budget&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;total&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;50000&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;betas&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;task-budgets-2026-03-13&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Refactor this module...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Minimum budget: 20,000 tokens. Prevents runaway agent costs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Test before you burn credits with Apidog
&lt;/h2&gt;

&lt;p&gt;Debugging costs credits. Every failed request—whether malformed or with wrong headers—still deducts from your balance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6a0wd1v8urhza59wdjyu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6a0wd1v8urhza59wdjyu.png" alt="Apidog Testing Interface" width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; lets you build and test Claude API requests visually before writing code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Configure the Anthropic endpoint&lt;/strong&gt;: Set up a project, add the Messages API endpoint with required headers (&lt;code&gt;x-api-key&lt;/code&gt;, &lt;code&gt;anthropic-version&lt;/code&gt;, &lt;code&gt;content-type&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual request builder&lt;/strong&gt;: Add model ID (&lt;code&gt;claude-opus-4-7&lt;/code&gt;), messages, tools, and config. Apidog validates JSON before sending.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run test scenarios&lt;/strong&gt;: Emulate multi-turn dialogs, test tool-use, validate &lt;code&gt;tool_use_id&lt;/code&gt; references.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Track token usage&lt;/strong&gt;: Apidog displays request/response metadata, including token consumption.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Switch providers&lt;/strong&gt;: Use different environments for Anthropic API and Vertex AI—point Apidog at whichever has available credits.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Common pitfalls with free credits
&lt;/h2&gt;

&lt;p&gt;Avoid these common mistakes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Credit expiry&lt;/strong&gt;: Most credits expire (GCP: 90 days, Azure: 30 days, Anthropic: varies). Note expiry when you claim credits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service scope&lt;/strong&gt;: Cloud credits often cover all services—usage on other products (compute, DB, etc.) reduces your AI budget.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate limits&lt;/strong&gt;: Free-tier accounts have strict limits. For higher throughput, you’ll need to pay.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regional pricing&lt;/strong&gt;: Regional endpoints (on AWS/Vertex) can cost 10% more. Use global endpoints to save.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New tokenizer effect&lt;/strong&gt;: Opus 4.7’s tokenizer can generate 35% more tokens for the same text vs. 4.6. Your credits may not go as far. Use &lt;code&gt;/v1/messages/count_tokens&lt;/code&gt; to measure real usage.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Quick comparison table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Credit amount&lt;/th&gt;
&lt;th&gt;Time limit&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic API signup&lt;/td&gt;
&lt;td&gt;~$5&lt;/td&gt;
&lt;td&gt;Varies&lt;/td&gt;
&lt;td&gt;First test&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google Cloud Vertex AI&lt;/td&gt;
&lt;td&gt;$300&lt;/td&gt;
&lt;td&gt;90 days&lt;/td&gt;
&lt;td&gt;Multi-week projects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS Bedrock (new account)&lt;/td&gt;
&lt;td&gt;$100-200&lt;/td&gt;
&lt;td&gt;Varies&lt;/td&gt;
&lt;td&gt;AWS-native stacks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS Activate (startups)&lt;/td&gt;
&lt;td&gt;$1,000-5,000&lt;/td&gt;
&lt;td&gt;12-24 mo&lt;/td&gt;
&lt;td&gt;Funded startups&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft Foundry&lt;/td&gt;
&lt;td&gt;$200&lt;/td&gt;
&lt;td&gt;30 days&lt;/td&gt;
&lt;td&gt;Short-term prototypes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic Builder Program&lt;/td&gt;
&lt;td&gt;$5,000-25,000+&lt;/td&gt;
&lt;td&gt;Varies&lt;/td&gt;
&lt;td&gt;Startups on Claude&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Academic research&lt;/td&gt;
&lt;td&gt;$500-10,000&lt;/td&gt;
&lt;td&gt;Varies&lt;/td&gt;
&lt;td&gt;Researchers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenRouter&lt;/td&gt;
&lt;td&gt;~$1-5&lt;/td&gt;
&lt;td&gt;Varies&lt;/td&gt;
&lt;td&gt;Multi-model testing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Claude Opus 4.7 isn’t free forever. But between Anthropic’s signup credit, $300 on Vertex AI, $200 on Foundry, and various startup/academic programs, you can run thousands of dollars’ worth of experiments for free if you plan carefully.&lt;/p&gt;

&lt;p&gt;For most developers: sign up for Google Cloud and use the $300 Vertex AI credit—it’s the largest single grant, lasts 90 days, and gives you direct access to Opus 4.7.&lt;/p&gt;

&lt;p&gt;Combine those credits with prompt caching, batch processing, and selective use of adaptive thinking for months of development at no cost.&lt;/p&gt;

&lt;p&gt;Whenever you build, &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; helps you test requests, debug flows, and validate payloads without burning credits. Test first, ship second, and protect your free tier.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Top 5 Mintilify Alternatives</title>
      <dc:creator>Wanda</dc:creator>
      <pubDate>Fri, 17 Apr 2026 03:37:41 +0000</pubDate>
      <link>https://dev.to/apilover/top-5-mintilify-alternatives-k55</link>
      <guid>https://dev.to/apilover/top-5-mintilify-alternatives-k55</guid>
      <description>&lt;p&gt;&lt;a href="http://apidog.com/blog/api-documentation-guide-tool/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API documentation&lt;/a&gt; is essential for every developer platform. While &lt;a href="http://apidog.com/blog/mintlify-review-pricing-features-alternatives/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Mintilify&lt;/a&gt; offers an AI-native documentation solution, it may not fit all teams—especially if you need more customization, stronger security, or a better balance of features and cost. If those are priorities, it's critical to evaluate Mintilify alternatives.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;In this actionable guide, you'll get a breakdown of the top Mintilify alternatives, a side-by-side feature comparison, and practical steps for engineering leaders and technical writers to make a smooth switch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Look for Mintilify Alternatives?
&lt;/h2&gt;

&lt;p&gt;Mintilify’s AI-powered docs-as-code approach is strong, but teams look for alternatives because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Security Compliance:&lt;/strong&gt; Mintilify’s certifications may not meet strict regulatory requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customization Gaps:&lt;/strong&gt; Limited theming and workflow flexibility.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Budget Constraints:&lt;/strong&gt; Pricing may be restrictive for startups or larger documentation teams.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration Needs:&lt;/strong&gt; Some teams require deeper API, test, or CI/CD integrations than Mintilify provides.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If any of these are dealbreakers, it’s time to evaluate other platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Feature Comparison Table: Mintilify vs Alternatives
&lt;/h2&gt;

&lt;p&gt;Below is a feature matrix comparing Mintilify with its leading competitors:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Mintilify&lt;/th&gt;
&lt;th&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;&lt;/th&gt;
&lt;th&gt;ReadMe&lt;/th&gt;
&lt;th&gt;Stoplight&lt;/th&gt;
&lt;th&gt;Docusaurus&lt;/th&gt;
&lt;th&gt;Redocly&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI-Powered Docs&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docs-as-Code&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom Themes&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;Extensive&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Full&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API Testing&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Full Suite&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mock Server&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security Compliance&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pricing Flexibility&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Free/Low&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Migration Tools&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAPI Support&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integrations&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Extensive&lt;/td&gt;
&lt;td&gt;Extensive&lt;/td&gt;
&lt;td&gt;Extensive&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Top 5 Mintilify Alternatives
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Apidog
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm1nf3ptgcw0onu4mixft.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm1nf3ptgcw0onu4mixft.png" alt="Apidog: all-in-one API development platform with built-in AI-powered documentation feature" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; is an API platform that combines &lt;a href="https://apidog.com/api-doc/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;documentation&lt;/a&gt;, &lt;a href="https://apidog.com/api-design/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;design&lt;/a&gt;, &lt;a href="https://apidog.com/api-testing/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;testing&lt;/a&gt;, and &lt;a href="https://apidog.com/api-mocking/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;mocking&lt;/a&gt; into one collaborative workspace. For teams seeking to replace Mintilify, Apidog delivers robust API testing and comprehensive documentation tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unified API Documentation &amp;amp; Testing:&lt;/strong&gt; Handle docs, testing, mocking, and validation in one platform.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Test Generation:&lt;/strong&gt; Generate test suites automatically from OpenAPI/Swagger specs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mock Server:&lt;/strong&gt; Instantly create mock endpoints for development and testing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Themes &amp;amp; Branding:&lt;/strong&gt; More advanced look-and-feel controls than Mintilify.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Security:&lt;/strong&gt; Enterprise-grade compliance features.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easy Migration:&lt;/strong&gt; Import OpenAPI, Swagger, or Postman collections directly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unified workflow from API design to documentation and testing.&lt;/li&gt;
&lt;li&gt;Built-in team collaboration.&lt;/li&gt;
&lt;li&gt;CI/CD, Git, and other extensive integrations.&lt;/li&gt;
&lt;li&gt;Powerful environment management for multi-stage development.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;May include more features than needed for documentation-only workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free tier available.&lt;/li&gt;
&lt;li&gt;Flexible paid plans based on usage and team size.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Migration Example: Moving from Mintilify to Apidog
&lt;/h3&gt;

&lt;p&gt;To migrate from Mintilify to Apidog:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Export your OpenAPI/Swagger docs&lt;/strong&gt; from Mintilify.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Import into Apidog&lt;/strong&gt; using the import tool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="http://apidog.com/blog/enhance-online-api-debugging-experience/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Enhance your docs&lt;/a&gt;&lt;/strong&gt; with interactive components and auto-generated test cases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set up a mock server&lt;/strong&gt; for pre-production endpoint testing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enable team collaboration&lt;/strong&gt; for faster doc review and publishing.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  2. ReadMe
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjfsl2ddrczues1ojhxhq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjfsl2ddrczues1ojhxhq.png" alt="Readme: API documentation platform" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/compare/apidog-vs-readme/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;ReadMe&lt;/a&gt; focuses on interactive API documentation and dynamic reference portals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interactive API explorer.&lt;/li&gt;
&lt;li&gt;User authentication for personalized documentation.&lt;/li&gt;
&lt;li&gt;Changelog and versioning.&lt;/li&gt;
&lt;li&gt;Integrates with OpenAPI/Swagger.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developer-friendly UI.&lt;/li&gt;
&lt;li&gt;Easy code examples and dynamic responses.&lt;/li&gt;
&lt;li&gt;Suited for public-facing APIs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limited native testing tools.&lt;/li&gt;
&lt;li&gt;Some customization restrictions.&lt;/li&gt;
&lt;li&gt;Pricing can increase with traffic and features.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free tier available.&lt;/li&gt;
&lt;li&gt;Paid plans scale with usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Stoplight
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6qfgfcf4pgy8wb15yujs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6qfgfcf4pgy8wb15yujs.png" alt="Stoplight: API documentation tool" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://apidog.com/blog/how-to-use-stoplight-studio/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Stoplight&lt;/a&gt; provides a visual OpenAPI editor for API design and docs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visual API modeling and design.&lt;/li&gt;
&lt;li&gt;Docs-as-code workflow.&lt;/li&gt;
&lt;li&gt;Mock server support.&lt;/li&gt;
&lt;li&gt;Git-based version control.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ideal for new API design.&lt;/li&gt;
&lt;li&gt;Collaborative editing.&lt;/li&gt;
&lt;li&gt;Strong OpenAPI support.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fewer interactive features than Mintilify or ReadMe.&lt;/li&gt;
&lt;li&gt;May require more technical setup.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free community plan.&lt;/li&gt;
&lt;li&gt;Paid plans for professional use.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Docusaurus
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fehtotjc5j2pzta993hcc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fehtotjc5j2pzta993hcc.png" alt="Docusaurus: API documentation tool" width="800" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://apidog.com/blog/migration-docusaurus-project-to-apidog/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Docusaurus&lt;/a&gt; is a static site generator for technical docs, built by Facebook.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Markdown-based content.&lt;/li&gt;
&lt;li&gt;Full theme and plugin support.&lt;/li&gt;
&lt;li&gt;Versioning and localization.&lt;/li&gt;
&lt;li&gt;Docs-as-code with Git workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Highly customizable and extensible.&lt;/li&gt;
&lt;li&gt;Free and open-source.&lt;/li&gt;
&lt;li&gt;Large plugin ecosystem.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No built-in API testing or mocking.&lt;/li&gt;
&lt;li&gt;Requires manual setup and hosting.&lt;/li&gt;
&lt;li&gt;No AI or dynamic doc generation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free/open-source; hosting costs extra.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Redocly
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fudyhh160fk6k17l8v4l4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fudyhh160fk6k17l8v4l4.png" alt="Redocly: API documentation platform" width="800" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://redocly.com/" rel="noopener noreferrer"&gt;Redocly&lt;/a&gt; specializes in visually appealing, customizable API documentation built directly from OpenAPI specs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom themes and branding.&lt;/li&gt;
&lt;li&gt;Multi-version support.&lt;/li&gt;
&lt;li&gt;Advanced OpenAPI extensions.&lt;/li&gt;
&lt;li&gt;Redocly CLI for CI/CD integration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Elegant, developer-focused docs.&lt;/li&gt;
&lt;li&gt;Strong enterprise features.&lt;/li&gt;
&lt;li&gt;Robust OpenAPI support.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No built-in API testing.&lt;/li&gt;
&lt;li&gt;Focused solely on API docs.&lt;/li&gt;
&lt;li&gt;Advanced customization has a learning curve.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free tier for open-source.&lt;/li&gt;
&lt;li&gt;Paid business plans available.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Case Study: Why a Fintech Startup Switched from Mintilify to Apidog
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Background:&lt;/strong&gt;&lt;br&gt;
A fintech startup began with Mintilify for automated API docs. As compliance needs grew, they needed integrated API testing and stronger security.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenges:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mintilify’s security certifications didn’t meet audit requirements.&lt;/li&gt;
&lt;li&gt;No built-in API testing or mock server.&lt;/li&gt;
&lt;li&gt;Limited branding customization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br&gt;
They &lt;a href="https://docs.apidog.com/migration-guide-overview-633036m0?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;migrated to Apidog&lt;/a&gt; by importing OpenAPI specs and using Apidog’s integrated workflow. The built-in mock server allowed frontend and backend teams to work in parallel, and environment management streamlined deployments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduced documentation/testing overhead by 40%.&lt;/li&gt;
&lt;li&gt;Passed security audits with Apidog compliance features.&lt;/li&gt;
&lt;li&gt;Improved developer onboarding with interactive, testable docs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Migration Guide: How to Switch from Mintilify to an Alternative
&lt;/h2&gt;

&lt;p&gt;Follow these steps for a smooth migration:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Audit Existing Content:&lt;/strong&gt; List all docs, API specs, and custom assets in Mintilify.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Export API Specifications:&lt;/strong&gt; Export OpenAPI/Swagger files if available.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choose Your Platform:&lt;/strong&gt; Match features and security needs to an alternative.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Import Assets:&lt;/strong&gt; Use the import tools in your new platform (Apidog, Redocly, etc.).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhance and Test:&lt;/strong&gt; Add interactive docs, run automated tests, and set up mock servers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaborate &amp;amp; Review:&lt;/strong&gt; Invite team members for doc improvement and review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Go Live:&lt;/strong&gt; Publish to your hosting or cloud environment.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Checklist: Evaluating Mintilify Alternatives
&lt;/h2&gt;

&lt;p&gt;Use this checklist to compare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] OpenAPI/Swagger support&lt;/li&gt;
&lt;li&gt;[ ] Docs-as-code workflow&lt;/li&gt;
&lt;li&gt;[ ] Custom theming/branding&lt;/li&gt;
&lt;li&gt;[ ] Built-in API testing&lt;/li&gt;
&lt;li&gt;[ ] Mock server capabilities&lt;/li&gt;
&lt;li&gt;[ ] Security compliance (SOC2, GDPR, etc.)&lt;/li&gt;
&lt;li&gt;[ ] Collaboration features&lt;/li&gt;
&lt;li&gt;[ ] Flexible pricing&lt;/li&gt;
&lt;li&gt;[ ] Migration/import tools&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion: Choosing the Right Mintilify Alternative
&lt;/h2&gt;

&lt;p&gt;Mintilify is strong for AI-driven documentation, but not always ideal for every use case. If you need better security, customization, or integrated API testing, alternatives like Apidog, Redocly, and others above are worth your attention.&lt;/p&gt;

&lt;p&gt;Apidog is particularly effective for API-centric teams needing everything—docs, testing, collaboration—in one place.&lt;/p&gt;

&lt;p&gt;Before you decide, experiment with free tiers, import a sample project, and get feedback from your team. The right platform will accelerate your workflow, improve developer experience, and set your API program up for long-term success.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is the best Mintilify alternative for API teams?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://apidog.com/api-doc/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; is a strong option for teams needing integrated documentation, testing, and mock server features.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which Mintilify alternatives support OpenAPI?
&lt;/h3&gt;

&lt;p&gt;Alternatives like Apidog, Redocly, ReadMe, and Stoplight all offer robust OpenAPI support for easy migration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I migrate from Mintilify without losing data?
&lt;/h3&gt;

&lt;p&gt;Yes. Most alternatives support OpenAPI import/export, and tools like Apidog automate validation and doc enhancement for a seamless transition.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Use the Claude Opus 4.7 API ?</title>
      <dc:creator>Wanda</dc:creator>
      <pubDate>Thu, 16 Apr 2026 15:26:54 +0000</pubDate>
      <link>https://dev.to/apilover/how-to-use-the-claude-opus-47-api--1n5k</link>
      <guid>https://dev.to/apilover/how-to-use-the-claude-opus-47-api--1n5k</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://apidog.com/blog/claude-opus-4-7/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Opus 4.7&lt;/a&gt; (&lt;code&gt;claude-opus-4-7&lt;/code&gt;) is Anthropic’s most advanced GA model. It features a 1M token context window, 128K max output, adaptive thinking, a new &lt;code&gt;xhigh&lt;/code&gt; effort level, task budgets, high-res vision (3.75 MP), and tool use. This guide gives you actionable steps for API setup, authentication, and working code examples in Python, TypeScript, and cURL for all major features.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://apidog.com/blog/claude-opus-4-7/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Anthropic released Claude Opus 4.7&lt;/a&gt; on April 16, 2026. This is the most powerful Claude model, ideal for tasks needing complex reasoning, autonomous agents, and high-resolution vision.&lt;/p&gt;

&lt;p&gt;If you’ve used the Claude API, much remains familiar. However, Opus 4.7 introduces new capabilities and breaking changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extended thinking budgets are removed.&lt;/li&gt;
&lt;li&gt;Sampling parameters (&lt;code&gt;temperature&lt;/code&gt;, &lt;code&gt;top_p&lt;/code&gt;, &lt;code&gt;top_k&lt;/code&gt;) are gone.&lt;/li&gt;
&lt;li&gt;Only adaptive thinking is supported, and it’s off by default.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This guide covers: getting your API key, making your first request, using adaptive thinking, sending high-res images, tool use, configuring task budgets, streaming, and debugging/testing with Apidog.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Get Your API Key
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Sign up at &lt;a href="https://console.anthropic.com" rel="noopener noreferrer"&gt;console.anthropic.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;API Keys&lt;/strong&gt; in the dashboard&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create Key&lt;/strong&gt; and copy the key&lt;/li&gt;
&lt;li&gt;Store it as an environment variable:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;ANTHROPIC_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"sk-ant-your-key-here"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Install the SDK
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Python:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;anthropic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;TypeScript/Node.js:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @anthropic-ai/sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  API Endpoint
&lt;/h3&gt;

&lt;p&gt;All requests use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST https://api.anthropic.com/v1/messages
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Required headers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;x-api-key: YOUR_API_KEY
anthropic-version: 2023-06-01
content-type: application/json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Basic Text Request
&lt;/h2&gt;

&lt;p&gt;Send a message and receive a response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;anthropic&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;anthropic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Anthropic&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Explain how HTTP/2 server push works in three sentences.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;TypeScript:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Anthropic&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@anthropic-ai/sdk&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Anthropic&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Explain how HTTP/2 server push works in three sentences.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;cURL:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.anthropic.com/v1/messages &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"x-api-key: &lt;/span&gt;&lt;span class="nv"&gt;$ANTHROPIC_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"anthropic-version: 2023-06-01"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"content-type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "claude-opus-4-7",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Explain how HTTP/2 server push works in three sentences."}
    ]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adaptive Thinking
&lt;/h2&gt;

&lt;p&gt;Adaptive thinking is the only supported mode on &lt;a href="https://www.anthropic.com/news/claude-opus-4-7" rel="noopener noreferrer"&gt;Opus 4.7&lt;/a&gt;. It lets Claude allocate reasoning tokens dynamically based on task complexity. It’s &lt;strong&gt;off by default&lt;/strong&gt;—enable it explicitly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16384&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;thinking&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;adaptive&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;display&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;summarized&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;  &lt;span class="c1"&gt;# optional: see thinking output
&lt;/span&gt;    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Analyze this algorithm&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s time complexity and suggest optimizations:&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s"&gt;def find_pairs(arr, target):&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;    result = []&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;    for i in range(len(arr)):&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;        for j in range(i+1, len(arr)):&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;            if arr[i] + arr[j] == target:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;                result.append((arr[i], arr[j]))&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;    return result&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;thinking&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Thinking:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;thinking&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Response:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key points:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;"type": "adaptive"&lt;/code&gt; to enable thinking.&lt;/li&gt;
&lt;li&gt;Do not set &lt;code&gt;budget_tokens&lt;/code&gt;—this now returns a 400 error.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;"display": "summarized"&lt;/code&gt; shows thinking content in the response. Default is &lt;code&gt;"omitted"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Combine with the &lt;code&gt;effort&lt;/code&gt; parameter for depth control.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Using the Effort Parameter
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16384&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;thinking&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;adaptive&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;output_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;effort&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;xhigh&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;  &lt;span class="c1"&gt;# xhigh | high | medium | low
&lt;/span&gt;    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Review this pull request for security vulnerabilities...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Effort levels for Opus 4.7:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Level&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;xhigh&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Coding, agentic tasks, complex reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;high&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Most intelligence-sensitive work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;medium&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Balanced speed vs. quality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;low&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Simple tasks, fast responses&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  High-Resolution Vision
&lt;/h2&gt;

&lt;p&gt;Opus 4.7 supports images up to 2,576 pixels on the long edge (3.75 MP). Pixel coordinates map directly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python — analyze an image from URL:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4096&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;image&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;source&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://example.com/architecture-diagram.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                    &lt;span class="p"&gt;}&lt;/span&gt;
                &lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Describe this architecture diagram. List every service and the connections between them.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Python — analyze a local image with base64:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;base64&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;screenshot.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;image_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;base64&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;standard_b64encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4096&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;image&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;source&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;base64&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;media_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;image/png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;image_data&lt;/span&gt;
                    &lt;span class="p"&gt;}&lt;/span&gt;
                &lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What UI bugs do you see in this screenshot?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Larger images use more tokens. Resize images to reduce costs if full fidelity isn’t necessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tool Use (Function Calling)
&lt;/h2&gt;

&lt;p&gt;Tool use allows Claude to invoke your defined functions. By default, Opus 4.7 prefers reasoning over tool calls. Increase the effort level for more tool use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;span class="n"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;get_weather&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Get current weather for a city. Returns temperature, conditions, and humidity.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;input_schema&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;object&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;properties&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;city&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;string&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;City name, e.g. &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;San Francisco&lt;/span&gt;&lt;span class="sh"&gt;'"&lt;/span&gt;
                &lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;units&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;string&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;enum&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;celsius&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fahrenheit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Temperature unit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;required&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;city&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;messages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s the weather like in Tokyo right now?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# First call — Claude requests a tool
&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Process tool calls
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stop_reason&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tool_use&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;assistant&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="n"&gt;tool_results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tool_use&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="c1"&gt;# Execute your function here
&lt;/span&gt;            &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;temperature&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;conditions&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Partly cloudy&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;humidity&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;65&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

            &lt;span class="n"&gt;tool_results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tool_result&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tool_use_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;tool_results&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="c1"&gt;# Second call — Claude uses the tool result
&lt;/span&gt;    &lt;span class="n"&gt;final_response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;final_response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Agentic Loop Pattern
&lt;/h3&gt;

&lt;p&gt;For agents that need multiple tool calls in sequence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;run_agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;system_prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user_message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;user_message&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;

    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16384&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;system_prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;thinking&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;adaptive&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="n"&gt;output_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;effort&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;xhigh&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;assistant&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stop_reason&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tool_use&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;hasattr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;tool_results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tool_use&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;execute_tool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;tool_results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tool_result&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tool_use_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="p"&gt;})&lt;/span&gt;

        &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;tool_results&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Task Budgets (Beta)
&lt;/h2&gt;

&lt;p&gt;Task budgets give Claude a token budget for the entire multi-turn agent loop. The model sees a countdown and tries to finish before using up the budget.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;128000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;output_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;effort&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;high&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;task_budget&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;total&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;128000&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Review the codebase and propose a refactor plan.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;betas&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;task-budgets-2026-03-13&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Constraints:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Minimum budget: 20,000 tokens&lt;/li&gt;
&lt;li&gt;Budget is advisory; Claude can overshoot&lt;/li&gt;
&lt;li&gt;Different from &lt;code&gt;max_tokens&lt;/code&gt; (which is a hard cap, invisible to the model)&lt;/li&gt;
&lt;li&gt;Requires beta header &lt;code&gt;task-budgets-2026-03-13&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Streaming Responses
&lt;/h2&gt;

&lt;p&gt;Stream responses for real-time output (useful in chat UIs).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4096&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write a Python function to parse CSV files with error handling.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text_stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;flush&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;TypeScript:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4096&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Write a Python function to parse CSV files with error handling.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="k"&gt;await &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;content_block_delta&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;delta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text_delta&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stdout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;delta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you enable adaptive thinking with &lt;code&gt;display: "summarized"&lt;/code&gt;, thinking blocks will stream first, followed by the main text. Otherwise, users see a pause while thinking, then the full text output.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt Caching
&lt;/h2&gt;

&lt;p&gt;Cache repeated context (system prompts, long docs) to reduce costs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are a senior code reviewer. Review code for security vulnerabilities, performance issues, and best practices violations...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cache_control&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ephemeral&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Review this function:&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s"&gt;def process_user_input(data):&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;    return eval(data)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cache pricing for Opus 4.7:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operation&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;5-min cache write&lt;/td&gt;
&lt;td&gt;$6.25 / MTok (1.25x base)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1-hour cache write&lt;/td&gt;
&lt;td&gt;$10 / MTok (2x base)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cache read/hit&lt;/td&gt;
&lt;td&gt;$0.50 / MTok (0.1x base)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A single cache read pays for a 5-min cache write. Two reads pay for a 1-hour write.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multi-Turn Conversations
&lt;/h2&gt;

&lt;p&gt;Maintain context by appending to the &lt;code&gt;messages&lt;/code&gt; array.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;messages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

&lt;span class="c1"&gt;# Turn 1
&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;I need to build a REST API for a todo app.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4096&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;assistant&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="c1"&gt;# Turn 2
&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Add authentication with JWT tokens.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4096&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Testing Your API Calls with Apidog
&lt;/h2&gt;

&lt;p&gt;Integrating with the Claude API means handling complex payloads: multi-turn messages, tool definitions/results, base64 images, and streaming. &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; streamlines debugging and testing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fon5pejfokea91zcuhmkw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fon5pejfokea91zcuhmkw.png" alt="Apidog screenshot" width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set up your environment:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a new project in Apidog and add the Claude Messages API endpoint.&lt;/li&gt;
&lt;li&gt;Store your &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt; in environment variables.&lt;/li&gt;
&lt;li&gt;Set required headers (&lt;code&gt;x-api-key&lt;/code&gt;, &lt;code&gt;anthropic-version&lt;/code&gt;, &lt;code&gt;content-type&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Test tool-use flows:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apidog lets you chain requests to simulate full tool-use loops.&lt;/li&gt;
&lt;li&gt;Inspect tool calls and build/send tool results visually.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Compare models:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run the same prompts on &lt;code&gt;claude-opus-4-6&lt;/code&gt; and &lt;code&gt;claude-opus-4-7&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Compare token counts, latency, and quality. Apidog’s test runner supports A/B comparisons.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Validate schemas:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define JSON schemas for expected responses.&lt;/li&gt;
&lt;li&gt;Apidog auto-validates Claude’s responses, catching regressions during prompt/model changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Common Errors and Fixes
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Error&lt;/th&gt;
&lt;th&gt;Cause&lt;/th&gt;
&lt;th&gt;Fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;400: &lt;code&gt;thinking.budget_tokens&lt;/code&gt; not supported&lt;/td&gt;
&lt;td&gt;Using extended thinking syntax&lt;/td&gt;
&lt;td&gt;Switch to &lt;code&gt;thinking: {"type": "adaptive"}&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;400: &lt;code&gt;temperature&lt;/code&gt; not supported&lt;/td&gt;
&lt;td&gt;Setting non-default sampling params&lt;/td&gt;
&lt;td&gt;Remove &lt;code&gt;temperature&lt;/code&gt;, &lt;code&gt;top_p&lt;/code&gt;, &lt;code&gt;top_k&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;400: &lt;code&gt;max_tokens&lt;/code&gt; exceeded&lt;/td&gt;
&lt;td&gt;New tokenizer produces more tokens&lt;/td&gt;
&lt;td&gt;Increase &lt;code&gt;max_tokens&lt;/code&gt; (up to 128,000)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;429: Rate limited&lt;/td&gt;
&lt;td&gt;Too many requests&lt;/td&gt;
&lt;td&gt;Implement exponential backoff; check your tier limits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blank thinking blocks&lt;/td&gt;
&lt;td&gt;Default thinking display is &lt;code&gt;"omitted"&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Add &lt;code&gt;display: "summarized"&lt;/code&gt; to thinking config&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Pricing Reference
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Usage&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Input tokens&lt;/td&gt;
&lt;td&gt;$5 / MTok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output tokens&lt;/td&gt;
&lt;td&gt;$25 / MTok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch input&lt;/td&gt;
&lt;td&gt;$2.50 / MTok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch output&lt;/td&gt;
&lt;td&gt;$12.50 / MTok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cache reads&lt;/td&gt;
&lt;td&gt;$0.50 / MTok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5-min cache writes&lt;/td&gt;
&lt;td&gt;$6.25 / MTok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1-hour cache writes&lt;/td&gt;
&lt;td&gt;$10 / MTok&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Opus 4.7’s tokenizer may use up to 35% more tokens for the same text compared to Opus 4.6. Use the &lt;code&gt;/v1/messages/count_tokens&lt;/code&gt; endpoint to estimate costs before launch.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Claude Opus 4.7 is the most capable Claude model yet. While mostly compatible with Opus 4.6, it removes extended thinking budgets and sampling parameters, requiring code updates. New features like adaptive thinking, &lt;code&gt;xhigh&lt;/code&gt; effort, task budgets, and high-res vision offer more control over reasoning and costs.&lt;/p&gt;

&lt;p&gt;Start with basic text requests, enable adaptive thinking for complex tasks, and add tool use and task budgets as your agent matures. Use Apidog to test, validate, and compare integrations across model versions.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What Is Claude Opus 4.7? Features, Benchmarks, Pricing, and Everything You Need to Know</title>
      <dc:creator>Wanda</dc:creator>
      <pubDate>Thu, 16 Apr 2026 15:23:36 +0000</pubDate>
      <link>https://dev.to/apilover/what-is-claude-opus-47-features-benchmarks-pricing-and-everything-you-need-to-know-3i7k</link>
      <guid>https://dev.to/apilover/what-is-claude-opus-47-features-benchmarks-pricing-and-everything-you-need-to-know-3i7k</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Claude Opus 4.7 is Anthropic’s most capable generally available model, released April 16, 2026. It adds high-resolution vision (up to 3.75 megapixels), a new &lt;code&gt;xhigh&lt;/code&gt; effort level, task budgets for agentic loops, and a new tokenizer. It keeps the 1M token context window and $5/$25 per million token pricing from Opus 4.6 but introduces several breaking API changes, including the removal of extended thinking budgets and sampling parameters.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Anthropic released Claude Opus 4.7 on April 16, 2026. It replaces Opus 4.6 as the flagship Claude model and is built for developers creating autonomous agents, knowledge-work assistants, and vision-heavy applications.&lt;/p&gt;

&lt;p&gt;This release is important for:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;High-resolution image support (pixel budget increased from 1.15 MP to 3.75 MP).&lt;/li&gt;
&lt;li&gt;Introduction of task budgets, allowing you to control the token allowance for entire agentic loops.&lt;/li&gt;
&lt;li&gt;Breaking API changes that require code updates if migrating from Opus 4.6.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;This guide covers Opus 4.7 features, differences from 4.6, costs, migration requirements, and how to test your Claude API integration with Apidog. Apidog supports multi-turn conversations and tool-use payloads, making it ideal for Opus 4.7 workflows.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Core Specifications
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Specification&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;API model ID&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claude-opus-4-7&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context window&lt;/td&gt;
&lt;td&gt;1,000,000 tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max output tokens&lt;/td&gt;
&lt;td&gt;128,000 tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Input pricing&lt;/td&gt;
&lt;td&gt;$5 per million tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output pricing&lt;/td&gt;
&lt;td&gt;$25 per million tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch input pricing&lt;/td&gt;
&lt;td&gt;$2.50 per million tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch output pricing&lt;/td&gt;
&lt;td&gt;$12.50 per million tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cache read pricing&lt;/td&gt;
&lt;td&gt;$0.50 per million tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5-min cache write&lt;/td&gt;
&lt;td&gt;$6.25 per million tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1-hour cache write&lt;/td&gt;
&lt;td&gt;$10 per million tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Release date&lt;/td&gt;
&lt;td&gt;April 16, 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Availability&lt;/td&gt;
&lt;td&gt;Claude API, Amazon Bedrock, Google Vertex AI, Microsoft Foundry&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://www.anthropic.com/news/claude-opus-4-7" rel="noopener noreferrer"&gt;Opus 4.7&lt;/a&gt; uses a new tokenizer that can produce up to 35% more tokens for the same input compared to Opus 4.6. The per-token price is the same, but your effective cost per request may increase depending on your content.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsbl1yinoqdi3waktcjq4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsbl1yinoqdi3waktcjq4.png" alt="Opus 4.7 Tokenizer" width="800" height="812"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s New in Claude Opus 4.7
&lt;/h2&gt;

&lt;h3&gt;
  
  
  High-Resolution Image Support
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Image input cap increased from 1,568 (1.15 MP) to 2,576 pixels (3.75 MP) on the long edge.&lt;/li&gt;
&lt;li&gt;Enables higher-fidelity screenshots, mockups, documents, and photos.&lt;/li&gt;
&lt;li&gt;1:1 pixel coordinate mapping removes the need for scale-factor calculations.&lt;/li&gt;
&lt;li&gt;Improved accuracy in:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Low-level perception&lt;/strong&gt;: pointing, measuring, counting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image localization&lt;/strong&gt;: bounding-box detection, localization in natural images&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Higher resolution means higher token usage per image. Downsample images if you don't need maximum fidelity to save costs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  New &lt;code&gt;xhigh&lt;/code&gt; Effort Level
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;effort&lt;/code&gt; parameter now supports: &lt;code&gt;low&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt;, &lt;code&gt;high&lt;/code&gt;, and &lt;code&gt;xhigh&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;xhigh&lt;/code&gt; for tasks where quality outweighs latency, such as code generation and complex agentic workflows.&lt;/li&gt;
&lt;li&gt;At &lt;code&gt;xhigh&lt;/code&gt;, the model uses more tokens for internal reasoning, improving output for difficult problems.&lt;/li&gt;
&lt;li&gt;For intelligence-sensitive work, use at least &lt;code&gt;high&lt;/code&gt;. Lower levels trade accuracy for speed and cost.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Task Budgets (Beta)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Prevents agentic loops from consuming unlimited tokens.&lt;/li&gt;
&lt;li&gt;Specify a token budget for the entire loop (minimum 20,000 tokens).&lt;/li&gt;
&lt;li&gt;The model sees a running countdown and prioritizes accordingly.&lt;/li&gt;
&lt;li&gt;Budget is advisory (not a hard cap); model may overshoot.&lt;/li&gt;
&lt;li&gt;Not the same as &lt;code&gt;max_tokens&lt;/code&gt;, which is a hard per-request ceiling unseen by the model.&lt;/li&gt;
&lt;li&gt;Requires the beta header: &lt;code&gt;task-budgets-2026-03-13&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Use task budgets&lt;/strong&gt; to control spend for open-ended agentic tasks. For quality-first tasks, you can skip the budget.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Adaptive Thinking as the Only Thinking Mode
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Extended thinking&lt;/strong&gt; (&lt;code&gt;thinking: {"type": "enabled", "budget_tokens": N}&lt;/code&gt;) is removed; attempting to use it returns a 400 error.&lt;/li&gt;
&lt;li&gt;Only adaptive thinking is supported: &lt;code&gt;thinking: {"type": "adaptive"}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Adaptive thinking allocates reasoning tokens dynamically, resulting in better performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive thinking is off by default&lt;/strong&gt;—enable it explicitly.&lt;/li&gt;
&lt;li&gt;By default, thinking content is omitted from responses. To see reasoning (e.g., for streaming), set &lt;code&gt;display: "summarized"&lt;/code&gt; in the config.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Improved Memory
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Better reads/writes to file-system-based memory.&lt;/li&gt;
&lt;li&gt;If your agent uses a scratchpad, notes file, or structured memory, Opus 4.7 updates and references notes more accurately.&lt;/li&gt;
&lt;li&gt;Useful for long-running coding agents, research assistants, and workflows needing persistent context.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Knowledge Work Improvements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Document redlining&lt;/strong&gt;: More accurate tracked changes in &lt;code&gt;.docx&lt;/code&gt; files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slide editing&lt;/strong&gt;: Improved &lt;code&gt;.pptx&lt;/code&gt; layout generation and validation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chart analysis&lt;/strong&gt;: Enhanced pixel-level chart analysis and data transcription using image-processing libraries (e.g., PIL).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qv9alquzjtcqcad5kda.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qv9alquzjtcqcad5kda.png" alt="Knowledge Work Improvements" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Changed from Opus 4.6
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Breaking API Changes
&lt;/h3&gt;

&lt;p&gt;These affect the Messages API. No breaking changes for Claude Managed Agents.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;th&gt;Before (Opus 4.6)&lt;/th&gt;
&lt;th&gt;After (Opus 4.7)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Extended thinking&lt;/td&gt;
&lt;td&gt;&lt;code&gt;thinking: {"type": "enabled", "budget_tokens": 32000}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Must use &lt;code&gt;thinking: {"type": "adaptive"}&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sampling parameters&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;temperature&lt;/code&gt;, &lt;code&gt;top_p&lt;/code&gt;, &lt;code&gt;top_k&lt;/code&gt; accepted&lt;/td&gt;
&lt;td&gt;Non-default values return 400 error&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thinking display&lt;/td&gt;
&lt;td&gt;Thinking content included by default&lt;/td&gt;
&lt;td&gt;Omitted by default; opt-in with &lt;code&gt;display: "summarized"&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tokenizer&lt;/td&gt;
&lt;td&gt;Standard tokenizer&lt;/td&gt;
&lt;td&gt;New tokenizer (up to 35% more tokens for same text)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Behavior Changes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;More literal instruction following (less generalization).&lt;/li&gt;
&lt;li&gt;Response length scales with task complexity.&lt;/li&gt;
&lt;li&gt;Fewer tool calls by default; increase &lt;code&gt;effort&lt;/code&gt; to encourage more tool use.&lt;/li&gt;
&lt;li&gt;More direct, opinionated responses (less emoji, less validation phrasing).&lt;/li&gt;
&lt;li&gt;Fewer subagents spawned by default.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;If you previously added prompt scaffolding for behaviors (e.g., “double-check slide layout”), try removing it—Opus 4.7 often handles these natively.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Pricing Breakdown
&lt;/h2&gt;

&lt;p&gt;Opus 4.7 pricing matches Opus 4.6/4.5:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Usage type&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Standard input&lt;/td&gt;
&lt;td&gt;$5 / MTok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Standard output&lt;/td&gt;
&lt;td&gt;$25 / MTok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch input&lt;/td&gt;
&lt;td&gt;$2.50 / MTok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch output&lt;/td&gt;
&lt;td&gt;$12.50 / MTok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cache read&lt;/td&gt;
&lt;td&gt;$0.50 / MTok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5-min cache write&lt;/td&gt;
&lt;td&gt;$6.25 / MTok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1-hour cache write&lt;/td&gt;
&lt;td&gt;$10 / MTok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fast mode input (4.6)&lt;/td&gt;
&lt;td&gt;$30 / MTok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;US data residency&lt;/td&gt;
&lt;td&gt;1.1x multiplier&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The new tokenizer is the key cost variable: it can produce up to 35% more tokens for the same input, so your effective per-request cost may rise. Use the &lt;code&gt;/v1/messages/count_tokens&lt;/code&gt; endpoint to check token counts for your prompts.&lt;/p&gt;

&lt;p&gt;The 1M token context window is priced the same as smaller contexts—there’s no long-context premium.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to Use Opus 4.7
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Strong Use Cases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous coding agents&lt;/strong&gt;: &lt;code&gt;xhigh&lt;/code&gt; effort and task budgets provide granular control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Computer use&lt;/strong&gt;: High-fidelity vision and 1:1 pixel mapping improve screen reliability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document processing&lt;/strong&gt;: Better &lt;code&gt;.docx&lt;/code&gt;, &lt;code&gt;.pptx&lt;/code&gt;, and chart analysis for automation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long-context retrieval&lt;/strong&gt;: 1M token window handles large codebases, legal docs, and research.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-session agents&lt;/strong&gt;: Improved file-based memory for workflows spanning many conversations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When Opus 4.7 May Be Overkill
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Simple Q&amp;amp;A or classification: Use Haiku 4.5 ($1/$5 per MTok) or Sonnet 4.6 ($3/$15 per MTok) for cost efficiency.&lt;/li&gt;
&lt;li&gt;Low-latency chatbot flows: Adaptive thinking and high effort add latency.&lt;/li&gt;
&lt;li&gt;Batch analytics on structured data: Batch API with Sonnet is generally more cost-effective.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Test Your Claude Opus 4.7 Integration with Apidog
&lt;/h2&gt;

&lt;p&gt;Switching the model ID from &lt;code&gt;claude-opus-4-6&lt;/code&gt; to &lt;code&gt;claude-opus-4-7&lt;/code&gt; is straightforward, but validating your prompts, tool definitions, and error handling after the breaking changes is critical.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnupo88dnwjdkv7orezy0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnupo88dnwjdkv7orezy0.png" alt="Testing with Apidog" width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; streamlines testing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Import your API schema:&lt;/strong&gt; Use your OpenAPI spec or manually define Claude API endpoints. Apidog auto-generates Messages API request templates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create test scenarios:&lt;/strong&gt; Build multi-turn conversations to test your tool-use patterns. Chain requests, pass context, and validate response schemas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compare model versions:&lt;/strong&gt; Run the same tests against &lt;code&gt;claude-opus-4-6&lt;/code&gt; and &lt;code&gt;claude-opus-4-7&lt;/code&gt; side by side to check token counts, response structure, and output quality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate breaking changes:&lt;/strong&gt; Ensure your updated &lt;code&gt;thinking&lt;/code&gt; config works, removed sampling parameters aren't present, and the new tokenizer doesn't exceed your &lt;code&gt;max_tokens&lt;/code&gt; limits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debug tool-use payloads:&lt;/strong&gt; Inspect full request and response bodies for tool-use conversations. Apidog’s visual interface helps spot malformed tool results or missing &lt;code&gt;tool_use_id&lt;/code&gt; references.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Migration Checklist
&lt;/h2&gt;

&lt;p&gt;If you're upgrading from Opus 4.6:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Change your model ID to &lt;code&gt;claude-opus-4-7&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Replace &lt;code&gt;thinking: {"type": "enabled", "budget_tokens": N}&lt;/code&gt; with &lt;code&gt;thinking: {"type": "adaptive"}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Remove &lt;code&gt;temperature&lt;/code&gt;, &lt;code&gt;top_p&lt;/code&gt;, and &lt;code&gt;top_k&lt;/code&gt; parameters (or set to defaults)&lt;/li&gt;
&lt;li&gt;[ ] If streaming thinking, add &lt;code&gt;display: "summarized"&lt;/code&gt; to your thinking config&lt;/li&gt;
&lt;li&gt;[ ] Increase &lt;code&gt;max_tokens&lt;/code&gt; headroom for the new tokenizer (up to 35% more tokens)&lt;/li&gt;
&lt;li&gt;[ ] Test prompt caching—token counts will differ&lt;/li&gt;
&lt;li&gt;[ ] Remove prompt scaffolding for behaviors now handled natively&lt;/li&gt;
&lt;li&gt;[ ] Run your test suite with &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; to validate end-to-end behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Claude Opus 4.7 is Anthropic’s most powerful generally available model. The improved vision, task budgets, and &lt;code&gt;xhigh&lt;/code&gt; effort level make it ideal for autonomous agents. The breaking changes—especially removal of extended thinking and sampling parameters—require code updates, but migration is straightforward.&lt;/p&gt;

&lt;p&gt;Monitor the new tokenizer's impact on costs, as increased tokenization can raise your effective spend. Always test your workloads before moving to production.&lt;/p&gt;

&lt;p&gt;For robust API integration testing and debugging, &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; gives you the environment to validate your migration and compare model versions.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Best MCP Server Testing Tools 2026: Ultimate Comparison</title>
      <dc:creator>Wanda</dc:creator>
      <pubDate>Thu, 16 Apr 2026 09:59:34 +0000</pubDate>
      <link>https://dev.to/apilover/best-mcp-server-testing-tools-2026-ultimate-comparison-38gi</link>
      <guid>https://dev.to/apilover/best-mcp-server-testing-tools-2026-ultimate-comparison-38gi</guid>
      <description>&lt;p&gt;&lt;a href="https://apidog.com/mcp-client/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Model Context Protocol (MCP) server testing&lt;/a&gt; is evolving fast in the era of AI-driven development. Automation tools and new challenges are emerging, so picking &lt;a href="https://docs.apidog.com/mcp-client-1930835m0?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;the right MCP server testing tool&lt;/a&gt; for 2026 requires more than just features—it’s about seamless integration, robustness, and future-proofing your workflow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;This guide cuts through the marketing. We’ll compare the top &lt;a href="https://apidog.com/mcp-testing-tools/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;MCP server testing tools&lt;/a&gt; for 2026, address technical issues like authentication and Shadow DOM, and give you actionable steps, code samples, and practical recommendations. Whether you’re starting from scratch or optimizing your stack, you’ll find how-to guidance below.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is an MCP Server Testing Tool?
&lt;/h2&gt;

&lt;p&gt;An MCP server testing tool is a client that enables developers and AI apps to interact with MCP (Model Context Protocol) servers—standardized endpoints that expose tools, prompts, and data resources.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo5qaj2g1f2v8oyykgl6a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo5qaj2g1f2v8oyykgl6a.png" alt="MCP server testing diagram" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Key capabilities of these tools include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connecting to MCP servers via STDIO or HTTP.&lt;/li&gt;
&lt;li&gt;Configuring authentication and environment variables.&lt;/li&gt;
&lt;li&gt;Executing server-side functions or prompts with granular parameter control.&lt;/li&gt;
&lt;li&gt;Providing real-time feedback, structured responses, and visual previews.&lt;/li&gt;
&lt;li&gt;Debugging server logic, validating API responses, and ensuring prompt/tool accuracy.&lt;/li&gt;
&lt;li&gt;Managing variables, config files, and supporting team collaboration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short, MCP server testing tools bridge AI apps to external resources for experimentation, development, and monitoring of AI workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deep Dive: The Best MCP Server Testing Tools of 2026
&lt;/h2&gt;

&lt;p&gt;As AI applications scale up, validating, testing, and debugging MCP servers becomes essential. MCP standardizes how LLMs communicate with tools, prompts, and data. The right tool ensures reliability, performance, and compliance. Here are the leading MCP testing tools for 2026, with actionable details.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Apidog: Best MCP Server Testing Platform with Visual Test Builder
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2agtmfy0a001j3pmgr8z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2agtmfy0a001j3pmgr8z.png" alt="Apidog visual MCP testing" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; is a unified API platform with native &lt;a href="https://apidog.com/mcp-server/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;MCP testing&lt;/a&gt; support and a visual testing interface. You can test servers, validate tool definitions, verify prompts, and debug endpoints—no code needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to test MCP servers with Apidog:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Import your OpenAPI or MCP server definitions.&lt;/li&gt;
&lt;li&gt;Use the visual test builder to create MCP requests.&lt;/li&gt;
&lt;li&gt;Validate responses against JSON Schema.&lt;/li&gt;
&lt;li&gt;Auto-sync test cases with documentation and mock servers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auto-generates MCP-compliant tests from OpenAPI specs.&lt;/li&gt;
&lt;li&gt;Validates tool calls, prompts, and resources visually.&lt;/li&gt;
&lt;li&gt;Supports REST, GraphQL, gRPC, WebSocket, and MCP.&lt;/li&gt;
&lt;li&gt;Free plan for teams up to 4 users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Limitations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some MCP features are new and evolving.&lt;/li&gt;
&lt;li&gt;Best suited for teams using Apidog’s full platform.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Teams building AI applications with MCP, needing integrated testing, documentation, and debugging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Free for up to 4 users; paid plans from $9/user/month.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Postman: Popular API Client with Script-Based MCP Testing
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F37dpr9qvfe2xi332o5i8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F37dpr9qvfe2xi332o5i8.png" alt="Postman MCP testing" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://apidog.com/blog/what-is-postman/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Postman&lt;/a&gt; is widely used for API testing. It doesn’t natively support MCP, but you can manually test endpoints using JSON-RPC requests and JavaScript scripts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to test MCP in Postman:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Manually create JSON-RPC requests for each MCP endpoint.&lt;/li&gt;
&lt;li&gt;Write test scripts (JavaScript) to validate responses.&lt;/li&gt;
&lt;li&gt;Organize tests in collections for repeatability.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Large user community.&lt;/li&gt;
&lt;li&gt;Scriptable with JavaScript.&lt;/li&gt;
&lt;li&gt;Collection-based organization.&lt;/li&gt;
&lt;li&gt;CI/CD integration via Newman CLI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No visual test builder for MCP.&lt;/li&gt;
&lt;li&gt;Manual and script-heavy setup.&lt;/li&gt;
&lt;li&gt;Not synced with MCP specs/docs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Individuals already using Postman who need basic, script-based MCP testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Free for 1 user; teams from $14/user/month.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Bruno: Git-Based Open-Source API Client
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frz55ytgrlvtg5qz3it0h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frz55ytgrlvtg5qz3it0h.png" alt="Bruno API Client" width="800" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://apidog.com/blog/bruno-api/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Bruno&lt;/a&gt; is an open-source API client with Git-based storage. It supports REST and GraphQL, but MCP testing is manual via JSON-RPC calls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to test MCP in Bruno:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create .http or markdown files for each MCP endpoint.&lt;/li&gt;
&lt;li&gt;Manually structure JSON-RPC payloads.&lt;/li&gt;
&lt;li&gt;Commit tests for version control.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free and open source.&lt;/li&gt;
&lt;li&gt;Requests stored in Git.&lt;/li&gt;
&lt;li&gt;Offline-first; no cloud dependency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No MCP automation or schema validation.&lt;/li&gt;
&lt;li&gt;Manual setup for each endpoint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Teams needing offline workflows and Git-based versioning for MCP testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Free.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Insomnia: Developer-Friendly REST/GraphQL Client
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0a14b67wpcdx2t8g0gc7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0a14b67wpcdx2t8g0gc7.png" alt="Insomnia API Client" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://apidog.com/blog/apidog-vs-insomnia/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Insomnia&lt;/a&gt; (by Kong) is an open-source API client for REST/GraphQL. MCP testing requires manual JSON-RPC request crafting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to test MCP in Insomnia:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a new request with method and endpoint.&lt;/li&gt;
&lt;li&gt;Build JSON-RPC payloads manually.&lt;/li&gt;
&lt;li&gt;Review responses and debug as needed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open source.&lt;/li&gt;
&lt;li&gt;Native GraphQL support.&lt;/li&gt;
&lt;li&gt;Lightweight UI.&lt;/li&gt;
&lt;li&gt;Plugin extensibility.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No native MCP support.&lt;/li&gt;
&lt;li&gt;Manual test maintenance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Developers working with REST/GraphQL who occasionally test MCP endpoints.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Free; paid plans from $12/user/month.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. AccelQ: AI-Powered Continuous Testing Platform
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4l3xkrlu1z1kt3w0a8k7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4l3xkrlu1z1kt3w0a8k7.png" alt="AccelQ Testing" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://support.accelq.com/hc/en-us/articles/38191380630541-REST-API-Test-Automation-in-ACCELQ" rel="noopener noreferrer"&gt;AccelQ&lt;/a&gt; is an enterprise automation platform with codeless, AI-powered testing. MCP isn’t natively supported, but custom code actions can extend its capabilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Enterprises needing broad test automation (API, web, mobile, desktop) with occasional MCP support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Trial available; enterprise pricing on request.&lt;/p&gt;




&lt;h3&gt;
  
  
  6. ReadyAPI: SmartBear’s Enterprise API Testing Suite
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18s1ub0ib4wpy4u0p0fx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18s1ub0ib4wpy4u0p0fx.png" alt="ReadyAPI Platform" width="800" height="647"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://apidog.com/blog/readyapi-vs-postman/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;ReadyAPI&lt;/a&gt; is a platform for REST, SOAP, and GraphQL testing. MCP testing is possible with Groovy scripting but lacks direct support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Large enterprise teams with diverse testing needs and resources for custom MCP automation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Trial available; Pro version from ~$740/user/year.&lt;/p&gt;




&lt;h3&gt;
  
  
  7. SOAtest: Parasoft’s Enterprise API and Service Testing
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq5kdaeq4cqf2zcup0997.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq5kdaeq4cqf2zcup0997.png" alt="SOAtest API Testing" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.parasoft.com/products/parasoft-soatest/" rel="noopener noreferrer"&gt;SOAtest&lt;/a&gt; is focused on enterprise service testing in regulated industries. MCP endpoints can be tested via scripts, but it’s not optimized for MCP workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Regulated enterprise teams needing broad service testing with some MCP validation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Trial available; enterprise pricing on request.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;For teams developing AI applications with MCP, &lt;a href="http://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; is the only platform with visual MCP testing, auto-generation from specs, schema validation, and integrated documentation. Tools like Postman, Insomnia, and Bruno can handle manual MCP testing, but require more scripting and setup. Enterprise platforms like AccelQ, ReadyAPI, and SOAtest are powerful but need customization for MCP.&lt;/p&gt;

&lt;p&gt;For efficient, integrated, and automated MCP testing—especially in AI workflows—Apidog is the best starting point.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AI Agents are the New API Consumers</title>
      <dc:creator>Wanda</dc:creator>
      <pubDate>Thu, 16 Apr 2026 08:40:12 +0000</pubDate>
      <link>https://dev.to/apilover/ai-agents-are-the-new-api-consumers-84d</link>
      <guid>https://dev.to/apilover/ai-agents-are-the-new-api-consumers-84d</guid>
      <description>&lt;p&gt;APIs have long been the backbone of digital integration and automation. But the landscape is changing fast: &lt;a href="https://apidog.com/mcp-server/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;AI agents are the new API consumers&lt;/a&gt;—and this shift requires a new approach to API design, documentation, testing, and governance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;In this practical guide, you'll learn what this shift means, see the technical and strategic implications, and get concrete steps (with real examples) to &lt;a href="http://apidog.com/blog/design-apis-ai-agents/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;build APIs ready for the age of AI agents&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Does It Mean That AI Agents Are the New API Consumers?
&lt;/h2&gt;

&lt;p&gt;Historically, API consumers were human developers or partner teams. They needed clear docs, consistent standards, and test sandboxes. Today, &lt;a href="https://apidog.com/solutions/ai-llm-api-development/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;autonomous AI agents&lt;/a&gt;—from personal assistants to business bots—are consuming APIs directly, often with minimal human involvement.&lt;/p&gt;

&lt;p&gt;Let's compare the key differences:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Human Developer&lt;/th&gt;
&lt;th&gt;AI Agent&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Reads docs?&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Rarely—relies on specs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Handles ambiguity?&lt;/td&gt;
&lt;td&gt;Sometimes, via support&lt;/td&gt;
&lt;td&gt;No—needs strict clarity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Workflow&lt;/td&gt;
&lt;td&gt;Manually composed&lt;/td&gt;
&lt;td&gt;Dynamically planned&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;Governed by user&lt;/td&gt;
&lt;td&gt;Needs automated enforcement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Consumption style&lt;/td&gt;
&lt;td&gt;Predictable, slower&lt;/td&gt;
&lt;td&gt;Fast, high-volume, autonomous&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; Designing for AI agents means treating APIs as machine-facing contracts. Errors must be minimized, and automation is paramount.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Are AI Agents Becoming the Dominant API Consumers?
&lt;/h2&gt;

&lt;p&gt;Several trends are fueling this change:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent-based automation:&lt;/strong&gt; Businesses deploy AI agents for customer support, onboarding, payments, risk analysis, and more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personal AI agents:&lt;/strong&gt; Consumers use bots and assistants that connect directly to services, often acting autonomously.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent-to-agent ecosystems:&lt;/strong&gt; Platforms transact with minimal human input, demanding APIs that software can consume safely and reliably.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Rhetorical question:&lt;/strong&gt; If your APIs are built for humans only, will your business be invisible to the new wave of &lt;a href="https://apidog.com/ai-powered-workflow/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;agent-driven workflows&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feisglmfw5846kh8mp2zf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feisglmfw5846kh8mp2zf.png" alt="Apidog: API platform built for AI Era" width="800" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Requirements for APIs Consumed by AI Agents
&lt;/h2&gt;

&lt;p&gt;Agent-centric APIs require more than just technical tweaks. Here’s what you need to implement:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Machine-Readable, Intent-Rich API Specifications
&lt;/h3&gt;

&lt;p&gt;AI agents don’t read docs—they rely on &lt;a href="http://apidog.com/blog/apidog-supports-llms-txt/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;machine-readable specifications&lt;/a&gt; like OpenAPI or Swagger.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Explicit schemas:&lt;/strong&gt; Define every field, data type, and response.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow metadata:&lt;/strong&gt; Encode business rules or workflows in your specs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistent naming and error codes:&lt;/strong&gt; Remove ambiguity—agents don't guess.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example: OpenAPI for Agent Consumption&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;openapi&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;3.1.0&lt;/span&gt;
&lt;span class="na"&gt;info&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Order Processing API&lt;/span&gt;
  &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;1.0.0&lt;/span&gt;
&lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;/orders&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;post&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;summary&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Create a new order&lt;/span&gt;
      &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
        &lt;span class="s"&gt;AI agents can use this endpoint to submit customer orders.&lt;/span&gt;
      &lt;span class="na"&gt;requestBody&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;application/json&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;schema&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/OrderRequest'&lt;/span&gt;
      &lt;span class="na"&gt;responses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;201'&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Order created&lt;/span&gt;
          &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;application/json&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="na"&gt;schema&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/OrderResponse'&lt;/span&gt;
&lt;span class="na"&gt;components&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;schemas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;OrderRequest&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
      &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;productId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
        &lt;span class="na"&gt;quantity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
        &lt;span class="na"&gt;aiAgentId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
      &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;productId&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;quantity&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;aiAgentId&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Tools like &lt;a href="http://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; help you &lt;a href="https://apidog.com/api-design/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;design&lt;/a&gt;, validate, and export OpenAPI specs that are agent-ready.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Automated Testing and Validation for Agent-Driven Use Cases
&lt;/h3&gt;

&lt;p&gt;AI agents consume APIs rapidly and at scale—chaining calls, hitting edge cases, and retrying instantly. Manual testing won’t cut it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strategies:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automated test generation:&lt;/strong&gt; Simulate agent workflows, including multi-step sequences.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scenario-based validation:&lt;/strong&gt; Cover both common and edge-case flows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance under load:&lt;/strong&gt; Ensure your API handles parallel, autonomous requests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How Apidog helps:&lt;/strong&gt; Use Apidog’s automated &lt;a href="https://docs.apidog.com/overview-1913651m0?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;test suites&lt;/a&gt; to create, run, and validate complex agent scenarios before they reach production.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Robust API Security and Governance for Autonomous Access
&lt;/h3&gt;

&lt;p&gt;AI agents can overwhelm APIs if not properly governed. Protect your endpoints from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Overconsumption or scraping&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automated attack patterns&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unintended data exposure or business rule bypass&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What to implement:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fine-grained authentication&lt;/strong&gt; (OAuth2, API keys tied to agent identity)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate limiting and throttling&lt;/strong&gt; at agent level&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-aware anomaly detection:&lt;/strong&gt; Monitor for bot-like patterns vs. human behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example: Agent-Specific API Key Assignment&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"agent_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"agent-12345"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"api_key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"abcd-efgh-ijkl-5678"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"permissions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"order:create"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"order:read"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rate_limit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"requests_per_minute"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Governance tip:&lt;/strong&gt; Regularly audit agent access and rotate keys as needed. Apidog's &lt;a href="https://docs.apidog.com/mcp-client-1930835m0?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;MCP testing tools&lt;/a&gt; let you simulate different agent credentials and patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Mocking and Simulation: Build APIs for Agents Without Waiting for Agents
&lt;/h3&gt;

&lt;p&gt;You often need to develop APIs before agents even exist. Use these techniques:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mock API endpoints:&lt;/strong&gt; Simulate agent calls to test logic and edge cases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mock data:&lt;/strong&gt; Feed your API with realistic agent-generated payloads.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Using Apidog:&lt;/strong&gt; Apidog’s mock server makes it easy to create agent-style API consumers for testing and refinement before real-world integration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agent-Centric API Design: A Step-By-Step Example
&lt;/h2&gt;

&lt;p&gt;Here’s a hands-on workflow for building an agent-friendly API:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Define a Machine-Readable Contract
&lt;/h3&gt;

&lt;p&gt;Use OpenAPI or Swagger to specify every endpoint, parameter, and workflow—including agent-specific metadata.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Create Automated Test Scenarios
&lt;/h3&gt;

&lt;p&gt;Test full agent workflows, not just single calls (e.g., submit order → check status → update delivery).&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Mock Agent Behavior
&lt;/h3&gt;

&lt;p&gt;Use Apidog to simulate agent requests: randomize payloads, chain calls, and inject errors to test resilience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Secure for Agent Access
&lt;/h3&gt;

&lt;p&gt;Implement strict authentication, rate limits, and logging tailored to autonomous consumption patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Publish Machine-Readable Documentation
&lt;/h3&gt;

&lt;p&gt;Expose the latest OpenAPI/Swagger docs in your API portal so agents and developers can integrate seamlessly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Case Studies: Agent API Consumption in Action
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Banking:&lt;/strong&gt; AI agents use APIs for real-time fraud detection and loan underwriting, requiring strict schemas and workflows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;E-commerce:&lt;/strong&gt; Personal AI shopping assistants use retailer APIs for searches, comparisons, and checkouts—no humans required.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Healthcare:&lt;/strong&gt; Bots automate patient intake, insurance checks, and appointments—security and error handling are critical.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Developer Workflow: How API Teams Must Adapt
&lt;/h2&gt;

&lt;p&gt;With AI agents as primary consumers, &lt;a href="https://apidog.com/solutions/ai-llm-api-development/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;developer experience is transforming&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Design-first:&lt;/strong&gt; Start with OpenAPI or Swagger as your API contract.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated CI/CD:&lt;/strong&gt; Every spec change triggers tests, mock deployments, and security scans.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuous contract validation:&lt;/strong&gt; Ensure all changes are backward-compatible and machine-consumable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API lifecycle management:&lt;/strong&gt; Use platforms like Apidog for spec-driven design, mocking, testing, and collaborative docs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Actionable Checklist: Preparing Your APIs for AI Agent Consumption
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Adopt machine-readable specs:&lt;/strong&gt; Use OpenAPI or Swagger as your API’s source of truth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automate testing:&lt;/strong&gt; Cover agent workflows, edge cases, and performance scenarios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strengthen security:&lt;/strong&gt; Fine-grained auth, rate limits, and AI-specific monitoring.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mock early, mock often:&lt;/strong&gt; Simulate agent consumption before real agents connect.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Iterate collaboratively:&lt;/strong&gt; Use platforms (such as Apidog) that unify design, testing, and docs for both humans and agents.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Business Impact: Data Ownership, Power Dynamics, and New Opportunities
&lt;/h2&gt;

&lt;p&gt;When &lt;strong&gt;AI agents are the new API consumers&lt;/strong&gt;, the dynamics change:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Customers (and their agents) own their data and terms.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Businesses must provide value through services, not just data hoarding.&lt;/li&gt;
&lt;li&gt;Transparent, intent-rich APIs become a competitive advantage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Are you ready for a world where your API’s primary audience is autonomous—and can walk away in milliseconds if your interface isn’t up to standard?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: AI Agents Are Here—Will Your APIs Keep Up?
&lt;/h2&gt;

&lt;p&gt;AI agents as API consumers mark a fundamental shift. Success requires APIs designed, tested, and secured for machine-first consumption.&lt;/p&gt;

&lt;p&gt;Platforms like Apidog offer the tools to manage this transition—validating every part of your API lifecycle for agent-driven integration.&lt;/p&gt;

&lt;p&gt;The future is intent-rich, machine-readable, and automation-ready. The question isn’t if AI agents will consume your APIs, but whether your APIs are ready for them.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Optimize Claude Code Workflows?</title>
      <dc:creator>Wanda</dc:creator>
      <pubDate>Thu, 16 Apr 2026 04:09:55 +0000</pubDate>
      <link>https://dev.to/apilover/how-to-optimize-claude-code-workflows-12m7</link>
      <guid>https://dev.to/apilover/how-to-optimize-claude-code-workflows-12m7</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Optimize your Claude Code workflow by using plain-text session management, strategic prompt structure, and integrated API testing. Break tasks into focused subtasks, use &lt;code&gt;.clinerules&lt;/code&gt; for persistent context, and validate generated code immediately with tools like &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;. Teams report 40-60% faster development cycles with these methods.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;You start a Claude Code session to build a new API endpoint. Three hours later, you’re still context-switching between your terminal, API client, and documentation. The code works, but the workflow felt scattered.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Claude Code can write code, debug, and explain patterns. But efficiency depends on your workflow, not just the tool. This guide shows you how to design repeatable, optimized Claude Code workflows: manage sessions in plain text, use prompt patterns that reduce token usage, and integrate API testing directly. You’ll learn to cut iteration time and reduce the mental overhead of long AI-assisted sessions.&lt;/p&gt;

&lt;p&gt;By the end, you’ll have a system for faster, more focused Claude Code sessions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: Why Claude Code Sessions Feel Scattered
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Context Switching Kills Flow
&lt;/h3&gt;

&lt;p&gt;Every interruption costs time. Claude Code sessions introduce new context-switching pain points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tool fragmentation:&lt;/strong&gt; Terminal, browser, API client, docs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token anxiety:&lt;/strong&gt; Context window limits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt iteration:&lt;/strong&gt; Rewriting requests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation gaps:&lt;/strong&gt; No immediate code testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Hidden Cost of Poor Workflow Design
&lt;/h3&gt;

&lt;p&gt;Poor workflow design eats time and energy. Typical pain points:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pain Point&lt;/th&gt;
&lt;th&gt;Time Lost Per Session&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Switching between tools&lt;/td&gt;
&lt;td&gt;15-30 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rewriting vague prompts&lt;/td&gt;
&lt;td&gt;10-20 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Debugging untested generated code&lt;/td&gt;
&lt;td&gt;20-45 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Losing session context&lt;/td&gt;
&lt;td&gt;10-15 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you run 4-5 sessions a week, that’s 5-10 hours/month lost to friction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Default Workflows Fall Short
&lt;/h3&gt;

&lt;p&gt;Claude Code is great for small tasks. But for real projects:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;No built-in session persistence:&lt;/strong&gt; Lose context across restarts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generic prompts = generic code:&lt;/strong&gt; Unstructured prompts lack specificity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing happens after coding:&lt;/strong&gt; Feedback is delayed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No API testing integration:&lt;/strong&gt; Constant endpoint validation is needed.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Core Concepts: Building Blocks of Optimized Workflows
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Plain-Text Session Management
&lt;/h3&gt;

&lt;p&gt;Store context in readable files. Tools like Cog show this works. Maintain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Session goals in markdown.&lt;/li&gt;
&lt;li&gt;Decision logs for key choices.&lt;/li&gt;
&lt;li&gt;API specs for reference.&lt;/li&gt;
&lt;li&gt;Test cases as living docs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why plain-text?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Files persist across sessions.&lt;/li&gt;
&lt;li&gt;Easy to search and version.&lt;/li&gt;
&lt;li&gt;Reduces token usage with focused context.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Strategic Prompt Engineering
&lt;/h3&gt;

&lt;p&gt;Prompt engineering for code generation is directive, not conversational.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt structure:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CONTEXT: [What exists already]
GOAL: [Specific outcome]
CONSTRAINTS: [Technical requirements]
OUTPUT: [Expected format]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;CONTEXT&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Building&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;REST&lt;/span&gt; &lt;span class="n"&gt;API&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="n"&gt;authentication&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;FastAPI&lt;/span&gt;
&lt;span class="n"&gt;GOAL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Create&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;POST&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;login&lt;/span&gt; &lt;span class="n"&gt;endpoint&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt; &lt;span class="n"&gt;validates&lt;/span&gt; &lt;span class="n"&gt;credentials&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;returns&lt;/span&gt; &lt;span class="n"&gt;JWT&lt;/span&gt;
&lt;span class="n"&gt;CONSTRAINTS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Use&lt;/span&gt; &lt;span class="n"&gt;Pydantic&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bcrypt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;
&lt;span class="n"&gt;OUTPUT&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Complete&lt;/span&gt; &lt;span class="n"&gt;endpoint&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="n"&gt;handling&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="n"&gt;hints&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Token Usage Optimization
&lt;/h3&gt;

&lt;p&gt;Claude’s context window is large but not infinite. Save tokens by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Referencing files, not pasting content.&lt;/li&gt;
&lt;li&gt;Using &lt;code&gt;.clinerules&lt;/code&gt; for persistent rules.&lt;/li&gt;
&lt;li&gt;Breaking large tasks into subtasks.&lt;/li&gt;
&lt;li&gt;Clearing irrelevant context between task switches.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Comprehensive Solution: Setting Up Your Optimized Workflow
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Project Structure for AI-Assisted Development
&lt;/h3&gt;

&lt;p&gt;Structure your project like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-project/
├── .clinerules           # Persistent instructions for Claude
├── .claude/              # Claude Code config
├── docs/
│   ├── api-spec.md       # API specification
│   └── decisions/        # Architecture decisions
├── src/
├── tests/
│   └── api/              # API test definitions
└── workflows/
    └── session-notes.md  # Session tracking
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Configure &lt;code&gt;.clinerules&lt;/code&gt; for Consistency
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;.clinerules&lt;/code&gt; file holds persistent standards for all sessions. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Coding Standards&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Use type hints for Python
&lt;span class="p"&gt;-&lt;/span&gt; Write docstrings for public methods
&lt;span class="p"&gt;-&lt;/span&gt; Follow PEP 8

&lt;span class="gh"&gt;# Testing Requirements&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Generate unit tests per function
&lt;span class="p"&gt;-&lt;/span&gt; Include API integration tests
&lt;span class="p"&gt;-&lt;/span&gt; Use Apidog for API validation

&lt;span class="gh"&gt;# Output Format&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Show complete files
&lt;span class="p"&gt;-&lt;/span&gt; Include error handling
&lt;span class="p"&gt;-&lt;/span&gt; Add comments for non-obvious logic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Integrate API Testing Into Your Workflow
&lt;/h3&gt;

&lt;p&gt;Treat API testing as a development driver, not a post-process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before code generation:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Define expected API behavior in a file.&lt;/li&gt;
&lt;li&gt;Create test cases in &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Share the spec with Claude Code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;During development:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Generate endpoint code.&lt;/li&gt;
&lt;li&gt;Test immediately with Apidog.&lt;/li&gt;
&lt;li&gt;Share test results with Claude for quick fixes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;After validation:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Save passing tests as regression suite.&lt;/li&gt;
&lt;li&gt;Document discovered edge cases.&lt;/li&gt;
&lt;li&gt;Update API spec with final behavior.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This workflow validates as you build, not after.&lt;/p&gt;

&lt;h3&gt;
  
  
  Detailed Example: Authentication Endpoint with Integrated Testing
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Define the API spec&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create &lt;code&gt;api-spec.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## POST /api/v1/auth/login&lt;/span&gt;

Request:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
json&lt;br&gt;
{&lt;br&gt;
  "email": "&lt;a href="mailto:user@example.com"&gt;user@example.com&lt;/a&gt;",&lt;br&gt;
  "password": "securepassword123"&lt;br&gt;
}&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Response (200 OK):
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
json&lt;br&gt;
{&lt;br&gt;
  "access_token": "eyJhbGc...",&lt;br&gt;
  "token_type": "Bearer",&lt;br&gt;
  "expires_in": 3600&lt;br&gt;
}&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Response (401 Unauthorized):
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
json&lt;br&gt;
{&lt;br&gt;
  "error": "invalid_credentials",&lt;br&gt;
  "message": "Email or password is incorrect"&lt;br&gt;
}&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Share spec with Claude Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@api-spec.md Create a FastAPI endpoint for POST /api/v1/auth/login that matches this specification. Include password hashing with bcrypt and JWT token generation.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Test immediately with Apidog&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Import the API spec into &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Set up test environments.&lt;/li&gt;
&lt;li&gt;Create assertions for response schema and status codes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Run tests and iterate&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start the server.&lt;/li&gt;
&lt;li&gt;Run Apidog tests.&lt;/li&gt;
&lt;li&gt;If tests fail, prompt:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@auth.py The login endpoint returns 500 instead of 200. Here’s the error log: [paste error]. Fix and explain.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;br&gt;
markdown&lt;br&gt;
This loop ensures code works before moving on.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 4: Use Cog or Similar for Session Persistence
&lt;/h3&gt;

&lt;p&gt;Keep a session-tracking file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Session: 2026-03-27 API Endpoint Development&lt;/span&gt;

&lt;span class="gu"&gt;## Goals&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; [x] Create user authentication endpoint
&lt;span class="p"&gt;-&lt;/span&gt; [ ] Add rate limiting
&lt;span class="p"&gt;-&lt;/span&gt; [ ] Implement JWT refresh logic

&lt;span class="gu"&gt;## Decisions Made&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Using HS256 for JWT
&lt;span class="p"&gt;-&lt;/span&gt; Rate limit: 100 requests/minute per IP

&lt;span class="gu"&gt;## Open Questions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Decide on password reset flow
&lt;span class="p"&gt;-&lt;/span&gt; Consider OAuth2 providers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reference this mid-session to maintain context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced Techniques for Power Users
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Multi-Session Project Management
&lt;/h3&gt;

&lt;p&gt;Use these for continuity:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Session handoff notes:&lt;/strong&gt; End each session with next steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checkpoint commits:&lt;/strong&gt; Commit at session boundaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decision logs:&lt;/strong&gt; Record architectural decisions.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Prompt Patterns for Complex Tasks
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Decomposition Pattern:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prompt 1: "Analyze codebase for authentication insertion points"
Prompt 2: "Plan JWT authentication implementation"
Prompt 3: "Implement token generation"
Prompt 4: "Write tests for token generation"
Prompt 5: "Integrate into login endpoint"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Iterative Refinement Pattern:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prompt 1: "Generate basic CRUD API for posts"
Prompt 2: "Add input validation"
Prompt 3: "Optimize queries"
Prompt 4: "Add pagination"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Reducing Token Usage in Long Sessions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;@file&lt;/code&gt; references, not content pastes.&lt;/li&gt;
&lt;li&gt;Summarize prior context.&lt;/li&gt;
&lt;li&gt;Clear completed context often.&lt;/li&gt;
&lt;li&gt;Store reference docs externally and link.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Integrating with CI/CD Pipelines
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Generate workflow files (GitHub Actions, etc).&lt;/li&gt;
&lt;li&gt;Test locally (e.g. with &lt;code&gt;act&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Validate endpoints with &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; in pipeline.&lt;/li&gt;
&lt;li&gt;Commit after local pipeline passes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Measuring Workflow Efficiency
&lt;/h3&gt;

&lt;p&gt;Track these metrics:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;How to Measure&lt;/th&gt;
&lt;th&gt;Target&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Session completion&lt;/td&gt;
&lt;td&gt;Tasks completed / started&lt;/td&gt;
&lt;td&gt;&amp;gt;80%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prompt iterations&lt;/td&gt;
&lt;td&gt;Rewrites per successful output&lt;/td&gt;
&lt;td&gt;&amp;lt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context switches&lt;/td&gt;
&lt;td&gt;Tool changes per hour&lt;/td&gt;
&lt;td&gt;&amp;lt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Validation time&lt;/td&gt;
&lt;td&gt;Min from code gen to tested&lt;/td&gt;
&lt;td&gt;&amp;lt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Token efficiency&lt;/td&gt;
&lt;td&gt;Useful output / total tokens&lt;/td&gt;
&lt;td&gt;&amp;gt;60%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;How to track:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Log in session notes.&lt;/li&gt;
&lt;li&gt;Note tool switches and prompt rewrites.&lt;/li&gt;
&lt;li&gt;Time validation loops.&lt;/li&gt;
&lt;li&gt;Review weekly for bottlenecks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One team dropped prompt iterations from 3.2 to 1.4 per task using CONTEXT-GOAL-CONSTRAINTS-OUTPUT.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting Common Workflow Issues
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Problem: Claude Loses Context Mid-Session
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Symptoms:&lt;/strong&gt; Forgets files or decisions, contradicts earlier outputs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Causes:&lt;/strong&gt; Context window fills, vague file references, no persistent &lt;code&gt;.clinerules&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solutions:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use &lt;code&gt;.clinerules&lt;/code&gt; for persistent context.&lt;/li&gt;
&lt;li&gt;Reference files explicitly (e.g. &lt;code&gt;@src/auth.py&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Summarize before big tasks.&lt;/li&gt;
&lt;li&gt;Start a new session with a summary if stuck.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Problem: Generated Code Doesn’t Match API Spec
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Symptoms:&lt;/strong&gt; Endpoint signatures or outputs don’t match, validation is missing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Causes:&lt;/strong&gt; Spec not shared, ambiguous prompts, no immediate validation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solutions:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Share the spec first (e.g. &lt;code&gt;@api-spec.md Review this spec...&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Add explicit constraints (“Response must match this JSON schema”).&lt;/li&gt;
&lt;li&gt;Validate immediately with &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Use test-driven prompts.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Problem: Sessions Take Too Long
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Symptoms:&lt;/strong&gt; Small tasks balloon, manual work increases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Causes:&lt;/strong&gt; Unclear goals, no task breakdown, unstructured error info.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solutions:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write session goals upfront.&lt;/li&gt;
&lt;li&gt;Time-box complex tasks.&lt;/li&gt;
&lt;li&gt;Share full error context.&lt;/li&gt;
&lt;li&gt;Restart with more context if stuck.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Problem: Token Usage Spikes
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Symptoms:&lt;/strong&gt; Context limits hit, costs rise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Causes:&lt;/strong&gt; Pasting large files, full conversation history, not clearing context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solutions:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use &lt;code&gt;@file&lt;/code&gt; references.&lt;/li&gt;
&lt;li&gt;Summarize discussions.&lt;/li&gt;
&lt;li&gt;Archive and reference finished work.&lt;/li&gt;
&lt;li&gt;Monitor token usage if possible.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Problem: Team Members Get Inconsistent Results
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Symptoms:&lt;/strong&gt; Different code styles, patterns, or quality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Causes:&lt;/strong&gt; No shared &lt;code&gt;.clinerules&lt;/code&gt;, prompt style varies, no code review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solutions:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create team-wide &lt;code&gt;.clinerules&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Build a shared prompt library.&lt;/li&gt;
&lt;li&gt;Review AI code via PRs.&lt;/li&gt;
&lt;li&gt;Document workflow expectations.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Real-World Use Cases
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Backend Team Building Microservices
&lt;/h3&gt;

&lt;p&gt;A fintech team used Claude Code and &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Defined OpenAPI specs first.&lt;/li&gt;
&lt;li&gt;Generated server stubs with Claude.&lt;/li&gt;
&lt;li&gt;Validated endpoints during development.&lt;/li&gt;
&lt;li&gt;Reduced integration bugs by 60%.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Insight:&lt;/strong&gt; Testing during generation catches issues early.&lt;/p&gt;

&lt;h3&gt;
  
  
  Solo Developer Shipping Faster
&lt;/h3&gt;

&lt;p&gt;An indie SaaS developer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Used Cog-like session tracking.&lt;/li&gt;
&lt;li&gt;Maintained decision logs.&lt;/li&gt;
&lt;li&gt;Integrated API testing each session.&lt;/li&gt;
&lt;li&gt;Shipped 3x faster than before.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Insight:&lt;/strong&gt; Externalized context reduces mental overhead.&lt;/p&gt;

&lt;h3&gt;
  
  
  DevOps Team Automating Infrastructure
&lt;/h3&gt;

&lt;p&gt;A DevOps team:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created &lt;code&gt;.clinerules&lt;/code&gt; with company standards.&lt;/li&gt;
&lt;li&gt;Generated Terraform configs with Claude.&lt;/li&gt;
&lt;li&gt;Tested in staging before production.&lt;/li&gt;
&lt;li&gt;Documented decisions in markdown.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Insight:&lt;/strong&gt; Consistent prompts = consistent, reviewable code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Alternatives and Comparisons
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Claude Code vs Other AI Coding Tools
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Strengths&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;Natural language, reasoning&lt;/td&gt;
&lt;td&gt;Complex tasks, architecture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Copilot&lt;/td&gt;
&lt;td&gt;Inline completion, IDE&lt;/td&gt;
&lt;td&gt;Quick completions, boilerplate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor AI&lt;/td&gt;
&lt;td&gt;IDE with AI built-in&lt;/td&gt;
&lt;td&gt;End-to-end AI development&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Claude Code excels at complex, multi-step tasks: architecture, API design, integration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Plain-Text Tools vs Specialized IDEs
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Plain-text (Cog, markdown):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pros:&lt;/strong&gt; Version control, tool-agnostic, searchable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cons:&lt;/strong&gt; No UI, manual organization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Specialized IDEs (Cursor, Windsurf):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pros:&lt;/strong&gt; Integrated, visual feedback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cons:&lt;/strong&gt; Vendor lock-in, less flexibility.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For CLI-centric teams, plain-text session management is seamless.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;To optimize Claude Code workflows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Externalize context:&lt;/strong&gt; Use plain-text files for session tracking, decision logs, and API specs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrate validation:&lt;/strong&gt; Test code immediately with tools like &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structure prompts:&lt;/strong&gt; Use consistent patterns for complex tasks.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These methods reduce context-switching, catch errors early, and help manage long projects across sessions.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is the best way to manage long Claude Code sessions?
&lt;/h3&gt;

&lt;p&gt;Break sessions into focused 30-60 minute blocks with clear goals. Use plain-text files to track progress. Commit code at session boundaries and maintain a decision log.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I reduce token usage in Claude Code?
&lt;/h3&gt;

&lt;p&gt;Reference files with &lt;code&gt;@filename&lt;/code&gt; instead of pasting. Use &lt;code&gt;.clinerules&lt;/code&gt; for persistent instructions. Summarize prior context. Clear completed task context between major switches.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use Claude Code for API development?
&lt;/h3&gt;

&lt;p&gt;Yes. Claude Code is strong for API development when paired with proper testing. Define your API spec first, generate code, and validate immediately with an API testing tool like &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are &lt;code&gt;.clinerules&lt;/code&gt; and how do I use them?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;.clinerules&lt;/code&gt; is a markdown file for persistent project instructions: coding standards, test requirements, output formats. It applies to all sessions in that project.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I integrate Claude Code with my existing workflow?
&lt;/h3&gt;

&lt;p&gt;Start small: add &lt;code&gt;.clinerules&lt;/code&gt; to a project, use plain-text session tracking, and integrate API testing. Expand to multi-session management and advanced prompt patterns as you go.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is plain-text session management better than specialized tools?
&lt;/h3&gt;

&lt;p&gt;Plain-text is best for CLI-centric teams using Claude Code. It’s versionable and tool-agnostic. Specialized tools offer better UX but more lock-in. Choose based on your current workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  What prompt structure works best for code generation?
&lt;/h3&gt;

&lt;p&gt;Use CONTEXT, GOAL, CONSTRAINTS, OUTPUT. Be specific about technical needs and expected output. Break big tasks into sequential prompts.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Make Your APIs AI Ready</title>
      <dc:creator>Wanda</dc:creator>
      <pubDate>Thu, 16 Apr 2026 03:19:46 +0000</pubDate>
      <link>https://dev.to/apilover/how-to-make-your-apis-ai-ready-51n8</link>
      <guid>https://dev.to/apilover/how-to-make-your-apis-ai-ready-51n8</guid>
      <description>&lt;p&gt;APIs are the backbone of modern digital ecosystems, but the rise of AI and autonomous agents is redefining what APIs need to deliver. Gone are the days when APIs simply served traditional apps or human developers—today, &lt;a href="https://apidog.com/mcp-server/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;your APIs must be AI-ready&lt;/a&gt;: discoverable, self-describing, robust, and context-aware. This guide walks you step by step through how to make your APIs AI ready, with practical examples, best practices, diagrams, and actionable insights.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Why AI Readiness for APIs Matters
&lt;/h2&gt;

&lt;p&gt;APIs that aren't designed for AI agents create friction—slow automation, inconsistent results, and missed opportunities for intelligent workflows. AI-ready APIs enable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Seamless integration with AI/ML models and agents&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Real-time data access for decision-making&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-service and discoverability for autonomous consumption&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scalability and resilience under unpredictable demand&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enhanced security and governance for sensitive operations&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s dive into how to make your APIs AI-ready, from foundational architecture to hands-on implementation and validation.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Rethink API Architecture for AI Integration
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Design for Machine and Agent Consumption
&lt;/h3&gt;

&lt;p&gt;Traditional APIs are often optimized for human developers. To be AI ready, your API must be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Self-describing:&lt;/strong&gt; Use OpenAPI or Swagger specifications to detail endpoints, data types, and error codes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistent and predictable:&lt;/strong&gt; Standardize response formats, error handling, and authentication.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context-aware:&lt;/strong&gt; Allow agents to send metadata or context parameters for richer, more relevant responses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example: AI-Ready Endpoint Design (OpenAPI YAML)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;/recommendation&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;post&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;summary&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Get personalized recommendations&lt;/span&gt;
      &lt;span class="na"&gt;requestBody&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;application/json&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;schema&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/RecommendationRequest'&lt;/span&gt;
      &lt;span class="na"&gt;responses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;200'&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Success&lt;/span&gt;
          &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;application/json&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="na"&gt;schema&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/RecommendationResponse'&lt;/span&gt;
      &lt;span class="na"&gt;x-context-aware&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice the explicit schema and the custom extension (&lt;code&gt;x-context-aware: true&lt;/code&gt;) for agent understanding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Tools like &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; can auto-generate and validate OpenAPI/Swagger specs, &lt;a href="http://apidog.com/blog/api-success-automated-documentation/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;ensuring your API’s documentation is always up-to-date&lt;/a&gt; and AI-friendly.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Build Robust Schemas and Standardize Data
&lt;/h2&gt;

&lt;p&gt;AI agents thrive on structured, unambiguous data. To make your APIs AI ready:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Leverage JSON Schema or similar standards&lt;/strong&gt; to define inputs and outputs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate all payloads rigorously&lt;/strong&gt;—invalid or ambiguous data can break AI pipelines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Version your schemas&lt;/strong&gt; so agents can adapt to changes gracefully.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Sample JSON Schema for an AI-Ready API&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"RecommendationRequest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"object"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"properties"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"userId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"context"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"object"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"preferences"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"array"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"required"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"userId"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; Use &lt;a href="https://apidog.com/api-testing/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog's schema validation and testing features&lt;/a&gt; to catch issues early and maintain robust, AI-ready contracts.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Document and Annotate for Agent Discoverability
&lt;/h2&gt;

&lt;p&gt;AI agents need to “read” and reason about your API just like a human would. This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Detailed, machine-readable documentation:&lt;/strong&gt; OpenAPI, Swagger, or API Blueprint are musts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metadata and semantic annotations:&lt;/strong&gt; Tag endpoints with business domains, use cases, or context hints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Examples and test scenarios:&lt;/strong&gt; Provide sample payloads and expected responses for every endpoint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Documentation Example:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;x-ai-use-case&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;product_recommendation"&lt;/span&gt;
&lt;span class="na"&gt;x-domain&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ecommerce"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; These annotations let AI agents discover the right API for the right task, improving automation and reliability.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Mock, Test, and Validate AI-Ready APIs
&lt;/h2&gt;

&lt;p&gt;Testing for AI readiness isn’t just about functional correctness—it’s about ensuring APIs behave as expected under a variety of scenarios, including those introduced by AI agents (e.g., high-frequency calls, unexpected data patterns).&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Steps
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create mock APIs and test data&lt;/strong&gt; to simulate AI agent behavior.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run automated test suites&lt;/strong&gt; covering edge cases, concurrency, and schema validation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test for performance and real-time requirements&lt;/strong&gt;—AI systems often need low-latency, high-throughput access.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Hands-on Example: Using Apidog for Mocking and Testing&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Mock Server:&lt;/strong&gt; Instantly spin up a cloud or local mock of your API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Test Generation:&lt;/strong&gt; &lt;a href="https://docs.apidog.com/generating-test-cases-1624860m0?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Generate test cases directly from your OpenAPI spec&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance Testing:&lt;/strong&gt; Simulate AI-scale loads to ensure your API won't break when an agent hits it 100 times per second.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  5. Ensure Real-Time Data Access and Context Awareness
&lt;/h2&gt;

&lt;p&gt;AI agents make decisions in real time and often require up-to-the-second data and contextual insights. To make your APIs AI ready:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Support streaming and push-based data&lt;/strong&gt; (e.g., WebSockets, &lt;a href="https://docs.apidog.com/sse-debugging-629889m0?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Server-Sent Events&lt;/a&gt;, or gRPC for real-time applications).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Allow context parameters&lt;/strong&gt; (e.g., user state, environment, session info) as first-class citizens in your API design.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintain statelessness where possible,&lt;/strong&gt; but provide mechanisms for agents to supply context as needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Build for Scalability, Reliability, and Security
&lt;/h2&gt;

&lt;p&gt;Making your APIs AI-ready means preparing for unpredictable, automated, and potentially massive consumption patterns.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scale horizontally:&lt;/strong&gt; Use stateless servers, autoscaling, and cloud-native deployments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implement robust authentication and authorization:&lt;/strong&gt; OAuth2, JWTs, and mutual TLS are best practices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate limiting and abuse detection:&lt;/strong&gt; AI agents can overwhelm APIs—define clear quotas and anomaly detection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor, log, and alert:&lt;/strong&gt; Set up observability for latency, error rates, and unusual traffic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Sample: REST vs. gRPC for AI-Ready APIs&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Protocol&lt;/th&gt;
&lt;th&gt;Latency&lt;/th&gt;
&lt;th&gt;Streaming&lt;/th&gt;
&lt;th&gt;Tooling&lt;/th&gt;
&lt;th&gt;AI Use Cases&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;REST&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;Mature&lt;/td&gt;
&lt;td&gt;Most&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gRPC&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Native&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;td&gt;Real-time, ML pipelines&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Choose the protocol that matches your AI use case. For most business APIs, REST is still the default, but gRPC shines for real-time ML and agent workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Lifecycle Management and Versioning
&lt;/h2&gt;

&lt;p&gt;AI agents might depend on specific API versions or schema contracts. To avoid breaking intelligent workflows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Version APIs explicitly&lt;/strong&gt; (e.g., &lt;code&gt;/v1/&lt;/code&gt; in the path or via headers).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deprecate with clear communication&lt;/strong&gt;—include &lt;code&gt;x-deprecated&lt;/code&gt; tags in your API spec.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automate lifecycle governance&lt;/strong&gt; with tools for tracking usage, dependencies, and deprecation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. Case Study: Transforming a Legacy API to Be AI Ready
&lt;/h2&gt;

&lt;p&gt;Let’s walk through a real-world scenario where an e-commerce API was upgraded for AI readiness.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inconsistent JSON responses&lt;/li&gt;
&lt;li&gt;Poor documentation&lt;/li&gt;
&lt;li&gt;No support for context or real-time triggers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Process:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Generated OpenAPI spec&lt;/strong&gt; for all endpoints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refactored responses&lt;/strong&gt; to be uniform, with explicit error handling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Added context parameters&lt;/strong&gt; (e.g., &lt;code&gt;sessionId&lt;/code&gt;, &lt;code&gt;userPreferences&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Used Apidog&lt;/strong&gt; to validate the new API spec, run automated performance tests, and mock agent-like interactions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updated documentation&lt;/strong&gt; with AI-specific annotations.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;40% faster integration by AI agents&lt;/li&gt;
&lt;li&gt;80% reduction in integration errors&lt;/li&gt;
&lt;li&gt;Ability to support real-time recommendation workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  9. Best Practices Checklist for Making Your APIs AI Ready
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Use OpenAPI/Swagger for all API documentation&lt;/li&gt;
&lt;li&gt;[ ] Define and validate strict schemas&lt;/li&gt;
&lt;li&gt;[ ] Provide machine-readable metadata and examples&lt;/li&gt;
&lt;li&gt;[ ] Mock and test APIs under AI-like conditions (e.g., with Apidog)&lt;/li&gt;
&lt;li&gt;[ ] Support real-time and context-aware operations&lt;/li&gt;
&lt;li&gt;[ ] Ensure robust security, rate limiting, and monitoring&lt;/li&gt;
&lt;li&gt;[ ] Version and deprecate APIs with clear governance&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  10. Tools and Platforms to Accelerate AI-Ready API Development
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Apidog:&lt;/strong&gt; Design, document, mock, and test APIs with advanced automation and &lt;a href="https://apidog.com/ai-powered-workflow/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;AI-readiness&lt;/a&gt; in mind.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swagger/OpenAPI:&lt;/strong&gt; Industry standard for machine-readable API specs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kong, Apigee, or Azure API Management:&lt;/strong&gt; For scaling, securing, and governing APIs at the enterprise level.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion: The Future of APIs Is AI Ready
&lt;/h2&gt;

&lt;p&gt;As AI agents become central to business processes and digital experiences, making your APIs AI ready is no longer optional—it’s a strategic imperative. By following the steps above and leveraging platforms like Apidog to automate validation, testing, and documentation, you’ll ensure your APIs are discoverable, robust, and ready for the AI-driven future.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Running AI models locally vs. via API: which should you choose?</title>
      <dc:creator>Wanda</dc:creator>
      <pubDate>Thu, 16 Apr 2026 03:19:14 +0000</pubDate>
      <link>https://dev.to/apilover/running-ai-models-locally-vs-via-api-which-should-you-choose-5d54</link>
      <guid>https://dev.to/apilover/running-ai-models-locally-vs-via-api-which-should-you-choose-5d54</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Local AI runs on your hardware, costs nothing per request, and keeps data private. API-based AI is faster to start, more capable, and scales without infrastructure. Most teams need both. This guide covers when each approach wins, with concrete numbers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Gemma 4 running natively on an iPhone. A browser extension that embeds a full language model without an API key. These weren't possible 18 months ago. Today they're shipping on HackerNews.&lt;/p&gt;

&lt;p&gt;The decision used to be simple: frontier models are API-only, everything else is too weak to matter. That's changed. Local models like Qwen2.5-72B, Gemma 4, and DeepSeek-V3 now compete on real benchmarks. Developers who previously defaulted to OpenAI's API are reconsidering, especially for privacy-sensitive applications or high-volume tasks where per-token costs compound fast.&lt;/p&gt;

&lt;p&gt;This article cuts through the marketing. You'll get concrete numbers on cost, latency, and capability so you can make the right call for your use case.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 If you're testing AI API integrations regardless of whether the model is local or cloud, Apidog's Test Scenarios work with both. You can point them at a local llama-server endpoint or at OpenAI's &lt;code&gt;/v1/chat/completions&lt;/code&gt; and run the same assertions. More on that later. See [internal: api-testing-tutorial] for the baseline testing approach.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What "running AI locally" actually means
&lt;/h2&gt;

&lt;p&gt;Local AI can mean three setups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;On-device inference&lt;/strong&gt;: The model runs entirely on the device, with no server. (E.g., Gemma Gem in a browser tab, Gemma 4 on iPhone Neural Engine, Ollama model on MacBook.) No internet needed after download.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosted server&lt;/strong&gt;: Run a model on your own hardware (workstation, cloud VM you control, or on-premises server) and expose an API. Not on the user's device, but not at OpenAI either. Tools: llama-server, Ollama, vLLM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private cloud&lt;/strong&gt;: Deploy on your own cloud infrastructure (AWS Bedrock custom models, Azure private endpoints, GCP Vertex AI custom models). More control vs. public API, less hassle than fully self-hosted.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This article compares self-hosted vs. public API, since that's the choice most developers face.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost comparison
&lt;/h2&gt;

&lt;p&gt;Local AI is the clear winner for high-volume workloads.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public API pricing (April 2026):&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Input (per 1M tokens)&lt;/th&gt;
&lt;th&gt;Output (per 1M tokens)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o&lt;/td&gt;
&lt;td&gt;$2.50&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude 3.5 Sonnet&lt;/td&gt;
&lt;td&gt;$3.00&lt;/td&gt;
&lt;td&gt;$15.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 1.5 Pro&lt;/td&gt;
&lt;td&gt;$1.25&lt;/td&gt;
&lt;td&gt;$5.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o mini&lt;/td&gt;
&lt;td&gt;$0.15&lt;/td&gt;
&lt;td&gt;$0.60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude 3 Haiku&lt;/td&gt;
&lt;td&gt;$0.25&lt;/td&gt;
&lt;td&gt;$1.25&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Self-hosted cost estimate (Qwen2.5-72B on A100 80GB):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A100 80GB (Lambda Labs): ~$1.99/hour on-demand.&lt;/li&gt;
&lt;li&gt;Qwen2.5-72B at INT4 quantization fits on one A100, serves ~200 tokens/sec.&lt;/li&gt;
&lt;li&gt;At 200 tokens/sec, that's 720K tokens/hour, or ~$0.0028 per 1K tokens total.&lt;/li&gt;
&lt;li&gt;For comparison, GPT-4o charges $0.01 per 1K tokens output alone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Break-even point:&lt;/strong&gt; If you're processing &amp;gt;70K output tokens/day, self-hosted beats GPT-4o on cost. Under that, API is cheaper (no idle GPU payment).&lt;/p&gt;

&lt;p&gt;For lighter models: a 4-bit quantized Gemma 4 (12B) runs on an RTX 4090 ($600-800 used). At $0.40/hour equivalent cloud GPU, self-hosting beats GPT-4o mini at ~15K output tokens/day.&lt;/p&gt;

&lt;h2&gt;
  
  
  Latency comparison
&lt;/h2&gt;

&lt;p&gt;Latency depends on setup.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time to first token (TTFT):&lt;/strong&gt; On a dedicated A100, TTFT for a 1K-token prompt with a 72B model is ~800ms–1.5s. OpenAI API typically returns first token in 300-800ms for similar input.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On-device inference (iPhone/Apple Silicon):&lt;/strong&gt; TTFT for Gemma 4 is 200-400ms (no network overhead).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Throughput:&lt;/strong&gt; Single A100 with a 72B model at INT4 serves one user well, but throughput drops under concurrency unless you batch. Public APIs handle concurrency automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming:&lt;/strong&gt; Both local and API support streaming. On-device: no network jitter. API: network conditions apply.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On-device = lowest latency (no network)&lt;/li&gt;
&lt;li&gt;Self-hosted = high throughput (with batching, e.g. vLLM)&lt;/li&gt;
&lt;li&gt;Public API = best for burst capacity and easy scaling&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Capability comparison
&lt;/h2&gt;

&lt;p&gt;Public APIs still lead for most demanding tasks.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reasoning/complex tasks:&lt;/strong&gt; GPT-4o, Claude 3.5 Sonnet remain ahead of open-weight models on MMLU, HumanEval, and multi-step reasoning. Qwen2.5-72B and DeepSeek-V3 have narrowed the gap, but it's still there.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code generation:&lt;/strong&gt; DeepSeek-Coder-V2 and Qwen2.5-Coder-32B match GPT-4o on many code benchmarks. For code tasks, use a specialized code model self-hosted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context length:&lt;/strong&gt; API models support 128K–1M tokens. Self-hosted models usually top out at 32K–128K (longer contexts need more RAM).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multimodal:&lt;/strong&gt; GPT-4o and Gemini 1.5 Pro handle image/audio/video. Open-weight multimodal (LLaVA, Qwen-VL) exist but lag.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Function calling/tool use:&lt;/strong&gt; OpenAI/Anthropic have reliable tool-use. Open-weight model tool use works but is less consistent. See [internal: how-ai-agent-memory-works] for impact on agents.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Privacy and data control
&lt;/h2&gt;

&lt;p&gt;Local wins by default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public API:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prompts leave your network.&lt;/li&gt;
&lt;li&gt;Provider's data retention applies (OpenAI keeps inputs 30 days by default).&lt;/li&gt;
&lt;li&gt;Provider's terms of service apply (sensitive content restrictions).&lt;/li&gt;
&lt;li&gt;In regulated industries, may be a compliance blocker.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Self-hosted:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prompts stay on your infra.&lt;/li&gt;
&lt;li&gt;No third-party retention.&lt;/li&gt;
&lt;li&gt;Full control over data handling.&lt;/li&gt;
&lt;li&gt;Easier compliance (GDPR/HIPAA).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're handling health data, legal docs, or proprietary code, self-hosted may be required.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to test AI integrations regardless of where the model runs
&lt;/h2&gt;

&lt;p&gt;You can hit &lt;code&gt;https://api.openai.com/v1/chat/completions&lt;/code&gt;, &lt;code&gt;http://localhost:11434/api/chat&lt;/code&gt; (Ollama), or &lt;code&gt;http://localhost:8080/v1/chat/completions&lt;/code&gt; (llama-server) — all are OpenAI-compatible. This lets &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; Test Scenarios run against any HTTP endpoint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Test Scenario:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scenario"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Chat completion smoke test"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"environments"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"local"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"base_url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:11434"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"production"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"base_url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://api.openai.com"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"steps"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Basic completion"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"POST"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{{base_url}}/v1/chat/completions"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"body"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{{model_name}}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"messages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Say 'test passed' and nothing else"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"max_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"assertions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"field"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"operator"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"equals"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"field"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"response.choices[0].message.content"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"operator"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"contains"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"test passed"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"field"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"response.usage.total_tokens"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"operator"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"less_than"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run this scenario against your local Ollama instance during development and against the OpenAI API in CI. If your code works locally, it should work with the API. If not, it's usually due to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model name format (&lt;code&gt;qwen2.5:72b&lt;/code&gt; for Ollama, &lt;code&gt;gpt-4o&lt;/code&gt; for OpenAI)&lt;/li&gt;
&lt;li&gt;Function calling response structure (provider differences)&lt;/li&gt;
&lt;li&gt;Streaming event format (data vs. delta vs. full response)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Apidog's Smart Mock simulates local-model behavior in CI so you don't need a GPU online. Configure a mock that returns OpenAI-compatible responses and test your scenarios. See [internal: how-to-build-tiny-llm-from-scratch] for response structure background.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up a local model server in 10 minutes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;To try self-hosted without commitment, use Ollama:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install Ollama&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://ollama.com/install.sh | sh

&lt;span class="c"&gt;# Pull a model (Gemma 4 12B, fits in 10GB VRAM)&lt;/span&gt;
ollama pull gemma4:12b

&lt;span class="c"&gt;# Start the server (OpenAI-compatible API on port 11434)&lt;/span&gt;
ollama serve

&lt;span class="c"&gt;# Test it&lt;/span&gt;
curl http://localhost:11434/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "gemma4:12b",
    "messages": [{"role": "user", "content": "Hello"}]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;For production self-hosting with concurrency, use vLLM:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;vllm
python &lt;span class="nt"&gt;-m&lt;/span&gt; vllm.entrypoints.openai.api_server &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--model&lt;/span&gt; Qwen/Qwen2.5-72B-Instruct-AWQ &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--quantization&lt;/span&gt; awq &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--max-model-len&lt;/span&gt; 32768
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This exposes an OpenAI-compatible API on port 8000. Point Apidog at &lt;code&gt;http://your-server:8000&lt;/code&gt; and run your Test Scenarios.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to choose each approach
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Local&lt;/th&gt;
&lt;th&gt;API&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;High-volume batch (&amp;gt;100K tokens/day)&lt;/td&gt;
&lt;td&gt;Cheaper&lt;/td&gt;
&lt;td&gt;Expensive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Privacy-sensitive data&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;td&gt;Risky&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lowest latency on-device&lt;/td&gt;
&lt;td&gt;Best&lt;/td&gt;
&lt;td&gt;Not possible&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frontier model capability needed&lt;/td&gt;
&lt;td&gt;Insufficient&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Burst workloads, variable traffic&lt;/td&gt;
&lt;td&gt;Complex to scale&lt;/td&gt;
&lt;td&gt;Handles automatically&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No GPU available&lt;/td&gt;
&lt;td&gt;Hard&lt;/td&gt;
&lt;td&gt;Easy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dev/test environment&lt;/td&gt;
&lt;td&gt;Great (Ollama)&lt;/td&gt;
&lt;td&gt;Costs money&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multimodal tasks&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;Full support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regulated industry compliance&lt;/td&gt;
&lt;td&gt;Easier&lt;/td&gt;
&lt;td&gt;Requires DPA&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Practical advice:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Use a public API for production (Claude or GPT-4o for quality, Haiku or 4o-mini for high-volume/cheap tasks), and Ollama locally for development/testing. This gives you frontier quality in prod, zero cost in dev, and a consistent API surface.&lt;/p&gt;

&lt;p&gt;See [internal: open-source-coding-assistants-2026] for open source coding assistants in the local AI stack.&lt;/p&gt;
&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The local vs. API decision is not binary. It depends on your volume, privacy, latency, and capability needs.&lt;/p&gt;

&lt;p&gt;For most AI-powered apps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start with a public API.&lt;/li&gt;
&lt;li&gt;Move to self-hosted when your monthly bill &amp;gt;$200-300.&lt;/li&gt;
&lt;li&gt;Use Ollama locally from day one.&lt;/li&gt;
&lt;li&gt;Keep your code provider-agnostic by using the OpenAI-compatible API surface everywhere.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Test both environments with &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; to catch subtle differences before they hit production.&lt;/p&gt;
&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What's the minimum GPU for a useful local model?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
RTX 3060 (12GB VRAM) runs Qwen2.5-7B or Gemma 4 4B at full quality. RTX 4090 (24GB VRAM) handles most 14B–20B models at INT4 and 34B models at INT2. For 72B models, you need 2x 24GB GPUs or a single A100/H100.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I run local AI on Apple Silicon?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes. Ollama has native Apple Silicon support and uses the Neural Engine. M3 Pro (18GB unified) runs Qwen2.5-14B comfortably. M4 Max (128GB) handles 70B models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is local model output good enough for production?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Depends. For code generation, summarization, and structured data extraction: yes, with a 32B+ model. For complex reasoning or nuanced writing: frontier API models still have an edge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do local models support function calling?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes, but not as reliably. Llama 3.1, Qwen2.5, and Mistral support tool use, but reliability is lower than GPT-4o/Claude 3.5 Sonnet. Test thoroughly with Apidog Test Scenarios before relying on local model tool use in production. See [internal: claude-code] for details.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much to self-host a 70B model on AWS?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
p4d.24xlarge (8x A100 40GB): $32.77/hour on-demand. Runs a 70B INT8 model with high throughput. g5.2xlarge (1x A10G 24GB) at $1.21/hour runs a 14B INT4 model. Reserved instances are 30–40% cheaper.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the difference between Ollama and llama.cpp?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
llama.cpp is the inference engine. Ollama wraps llama.cpp with REST API, model management, and a CLI. Use Ollama for dev. Use llama.cpp directly (via llama-server) for more control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I switch between local and API models without changing code?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes, if you use an OpenAI-compatible client. In Python:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;openai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;http://localhost:11434/v1&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ollama&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Connects to Ollama. Change &lt;code&gt;base_url&lt;/code&gt; to &lt;code&gt;https://api.openai.com/v1&lt;/code&gt; and update &lt;code&gt;api_key&lt;/code&gt; to switch to cloud. Set via environment variables and your code stays the same.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
