> ## Documentation Index
> Fetch the complete documentation index at: https://docs.logic.inc/llms.txt
> Use this file to discover all available pages before exploring further.

# Caching

> How to reuse cached results from previous agent executions

## Caching

If you run an agent with the same input more than once, you can reuse the result from a previous run instead of executing the agent again. Add the `useCache` query parameter set to `true` to enable this.

A previous execution is reused only when the **agent version**, the **tenant ID**, and the **input** all match. When a match is found, the API returns its result immediately, which reduces latency and cost. If no match is found, the agent runs normally and its result becomes available for future cached requests.

When a cached result is returned, the response has `"cached": true` and a `cachedDocumentExecutionId` pointing to the original execution that produced it.

<Info>
  Caching is disabled by default. You can also enable it per agent version in
  the execution config; the `useCache` query parameter overrides that persisted
  setting for a single call. Use it when the same input reliably produces the
  same output and you want to avoid re-running the agent.
</Info>

### Example with `useCache`

Add the `useCache` query parameter to your execution request.

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST 'https://api.logic.inc/v1/agents/{agent_id}/executions?useCache=true'
    -H "Authorization: Bearer $LOGIC_API_TOKEN"
    -H "Content-Type: application/json"
    -d '{
          {YOUR INPUT JSON HERE}
        }'
  ```

  ```bash httpie theme={null}
  http POST 'https://api.logic.inc/v1/agents/{agent_id}/executions'
    useCache==true
    "Authorization:Bearer $LOGIC_API_TOKEN"
    "Content-Type:application/json"
    --raw '{
      {YOUR INPUT JSON HERE}
    }'
  ```

  ```python python theme={null}
  import requests

  LOGIC_API_TOKEN = "ls-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

  response = requests.post(
      "https://api.logic.inc/v1/agents/{agent_id}/executions",
      params={"useCache": "true"},
      headers={
          "Authorization": f"Bearer {LOGIC_API_TOKEN}",
          "Content-Type": "application/json",
      },
      json={
          # Add your agent input here
      },
  )

  print(response.status_code, response.text)
  ```

  ```ruby ruby theme={null}
  require 'net/http'
  require 'json'

  uri = URI('https://api.logic.inc/v1/agents/{agent_id}/executions')
  uri.query = URI.encode_www_form({ useCache: "true" })

  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  LOGIC_API_TOKEN = 'ls-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
  headers = {
    "Authorization" => "Bearer #{LOGIC_API_TOKEN}",
    "Content-Type" => "application/json"
  }
  body = { }.to_json

  request = Net::HTTP::Post.new(uri, headers)
  request.body = body

  response = http.request(request)
  puts response.code
  puts response.body
  ```

  ```javascript javascript theme={null}
  const LOGIC_API_TOKEN = "ls-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

  const url = new URL("https://api.logic.inc/v1/agents/{agent_id}/executions");
  url.searchParams.set("useCache", "true");

  const response = await fetch(url, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${LOGIC_API_TOKEN}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      // Add your agent input here
    }),
  });

  console.log(await response.json());
  ```

  ```go go theme={null}
  package main

  import (
      "bytes"
      "fmt"
      "io/ioutil"
      "net/http"
  )

  const (
      LOGIC_API_TOKEN = "ls-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  )

  func main() {
      url := "https://api.logic.inc/v1/agents/{agent_id}/executions?useCache=true"

      jsonStr := `{
        {YOUR INPUT JSON HERE}
      }`

      req, err := http.NewRequest("POST", url, bytes.NewBufferString(jsonStr))
      if err != nil {
          panic(err)
      }

      req.Header.Set("Authorization", "Bearer "+LOGIC_API_TOKEN)
      req.Header.Set("Content-Type", "application/json")

      client := &http.Client{}
      resp, err := client.Do(req)
      if err != nil {
          panic(err)
      }
      defer resp.Body.Close()

      body, _ := ioutil.ReadAll(resp.Body)
      fmt.Println(string(body))
  }
  ```

  ```java java theme={null}
  // Java requires the OkHttp library. You can add it to your project using Maven or Gradle. Learn more in the Java Quick Start section of the API reference.

  import okhttp3.*;
  import java.io.IOException;

  public class Main {
      public static void main(String[] args) throws IOException {
          OkHttpClient client = new OkHttpClient();

          String json = "{ /* your input JSON here */ }";
          RequestBody body = RequestBody.create(json, MediaType.get("application/json"));

          HttpUrl url = HttpUrl.parse("https://api.logic.inc/v1/agents/{agent_id}/executions")
              .newBuilder()
              .addQueryParameter("useCache", "true")
              .build();

          Request request = new Request.Builder()
              .url(url)
              .addHeader("Authorization", "Bearer ls-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
              .addHeader("Content-Type", "application/json")
              .post(body)
              .build();

          try (Response response = client.newCall(request).execute()) {
              System.out.println(response.body().string());
          }
      }
  }
  ```
</CodeGroup>
