Test an agent
Run the agent's prompt, model and knowledge base against a message and return the reply instead of delivering it. Nothing is delivered and no execution is recorded.
Billed like a live reply. On an agent with the zavu provider the run is charged to your balance at the same price per token, and refused with 402 insufficient_balance at a balance of zero; on a bring-your-own-key agent it costs your provider. cost on the response is what it charged. Runs are rate limited per project (429).
Tools. By default the model is offered the agent's enabled tools but none is run: if it picks one, the reply stops there and plannedToolCalls says which, with what arguments. Set executeTools to run them — that reaches your real handlers, with whatever they cost and change — and read executedToolCalls.
Test-mode keys are billed the same way, and executeTools with one still reaches your real handlers and writes real memory: a test run is not sandboxed by the key's mode.
Authorization
AuthorizationheaderrequiredBearer YOUR_API_KEY. Create a key in the dashboard.
Path parameters
agentIdstringrequiredAgent ID.
Body
application/json
messagestringrequiredWhat to say to the agent.
historyobject[]Prior turns, oldest first, to exercise multi-turn behaviour without persisting a thread. Trimmed to the agent's context window.
2 properties
rolestringrequiredOne ofuserassistantcontentstringrequired
useKnowledgeBasebooleanSet false to skip retrieval and isolate prompt behaviour from the knowledge base.
DefaulttrueexecuteToolsbooleanRun the tools the agent calls instead of reporting the choice and stopping.
Off by default because a tool handler talks to the outside world: a rehearsal that charges a card is not a rehearsal. Turn it on to exercise the loop that actually matters — the model picks a tool, the handler answers, the model replies with the result — without sending a message to anyone. What ran comes back in
executedToolCalls.Defaultfalse
Responses
200The agent's reply.
successbooleanrequiredtextstringrequiredWhat the agent would reply.
errorstringrequiredinputTokensintegerrequiredoutputTokensintegerrequiredlatencyMsintegerrequiredknowledgeChunksUsedintegerrequiredKnowledge-base chunks retrieved for this message. Zero means the answer was not grounded in your documents.
executedToolCallsobject[]Tools that actually ran, in order, when the request set
executeTools. Empty on a normal dry run, where nothing is executed. An entry withok: falsemeans the agent saw an error and answered around it, which is what a customer would have received.3 properties
namestringrequiredokbooleanrequirederrorstring
warningsstring[]requiredThings that are true of this agent but that a dry run cannot prove. Surfaced so a passing dry run is never mistaken for proof that the agent works live.
- The agent being disabled.
- Enabled tools that were offered to the model but not run: if the agent picks one, the reply stops at that choice (see
plannedToolCalls). PassexecuteToolsto run them. - Tools that ran for real, when
executeToolswas set, and any that failed. - An agent whose sender has none of the channels it triggers on, which answers every dry run and no real message.
- Contact metadata that exists on a real conversation but not here, and memory tools (
remember,recall,save_record), which have no contact to write about on a test run.
costnumberrequiredUSD charged to your balance for this run. 0 on a bring-your-own-key agent. When the balance covers only part of a run, that part is charged and the next run is refused with
402.plannedToolCallsobject[]requiredTools the model chose to call, with the arguments it chose, on a run without
executeTools. Nothing was executed: the reply stops at the choice. Empty when it answered without reaching for a tool, and on a run that executed tools (seeexecutedToolCalls).2 properties
namestringrequiredargumentsstringrequiredThe arguments as a JSON string.
400message is required, or the message and history exceed 64 KB.
codestringrequiredmessagestringrequireddetailsobject
401Unauthorized.
codestringrequiredmessagestringrequireddetailsobject
402The agent runs on a Zavu model and the balance is at or below zero.
codestringrequiredmessagestringrequireddetailsobject
404Sender or agent not found.
codestringrequiredmessagestringrequireddetailsobject
429Too many test runs for this project. Retry after the number of seconds in the message.
codestringrequiredmessagestringrequireddetailsobject