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

# Timeouts and errors

> Response timeouts for streaming runs and idempotent tool response errors

## Streaming run timeout

Cap how long **`await run`** / **`run_agent`** waits after start:

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
final = await client.run_agent(
    agent_id="YOUR_AGENT_UUID",
    string_inputs={"1": "Hello"},
    environment="playground",
    response_timeout=600.0,
)
```

Use a generous limit for long-running graphs, or the default from the SDK (see [Environment](/reference/environment)).

## Idempotent duplicate tool responses

If tool results are submitted twice for the same `call_id`, the API may respond with **HTTP 409** and a stable error code. Treat that as safe to ignore when you know the first submission succeeded.

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
from agentsapi import AgentServiceAPIHTTPError, ERROR_CODE_TOOL_RESPONSES_ALREADY_SUBMITTED

try:
    await client.send_tool_responses(agent_id, task_id, responses)
except AgentServiceAPIHTTPError as e:
    if e.status_code == 409 and e.error_code == ERROR_CODE_TOOL_RESPONSES_ALREADY_SUBMITTED:
        pass  # already accepted
    else:
        raise
```
