Skip to main content
Every request ends in exactly one of three outcomes: answer, no answer, or failure. Failures are never retried and never shown to shoppers. The agent simply answers from its other sources for that turn.

Status codes

A few things worth knowing:
  • Redirects are not followed, even within your own domain. Configure the final URL in Studio.
  • 204 No Content is a 2xx with an empty body, so it fails as invalid_json. Return {"version": 1, "status": "no_answer"} instead.
  • Anagram does not read Retry-After, rate-limit headers, or any header other than the status line. A 429 is just another http_error.
  • Response bodies on error are discarded. Nothing in them reaches the agent, Studio, or the shopper, so include whatever detail helps your own logs.

Limits

The 8-second timeout is the one most endpoints trip over. If your system needs a slow model call or a database scan, answer with what you can compute quickly, or precompute. A no_answer in 300 ms is better for the shopper than a perfect answer at 9 seconds, which is discarded.

Failure reasons

These are the values you will see under Test a question in Studio and in Anagram’s diagnostics.

What the shopper sees

Nothing about a failure. The agent does not apologize for or mention your service. It answers from the catalog and your other knowledge, and the reply may be less specific than it would otherwise be. If the source is failing often, you will notice in Studio when testing, not from shopper complaints. When your source is disabled, no requests are made at all and the agent behaves as if the source did not exist.