Skip to main content

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.
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.

Example with useCache

Add the useCache query parameter to your execution request.
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}
      }'
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}
  }'
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)
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
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());
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 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());
        }
    }
}