> ## Documentation Index
> Fetch the complete documentation index at: https://e2b.manicule.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For every page in one file, fetch https://e2b.manicule.dev/llms-full.txt (large).
> To search and read these docs as tools, connect the MCP server at https://e2b.manicule.dev/api/mcp.
> Every agent surface: https://e2b.manicule.dev/.well-known/llms-manifest.json

# Streaming (/docs/code-interpreting/streaming)

<!-- agent-signals: reading_time_min: 2 · est_tokens: 872 · updated: 2026-07-30 -->
Related: [Analyze data with AI](/docs/code-interpreting/analyze-data-with-ai.md), [Code contexts](/docs/code-interpreting/contexts.md), [Create charts & visualizations](/docs/code-interpreting/create-charts-visualizations.md), [Customize the template](/docs/code-interpreting/customize-template.md), [Supported languages](/docs/code-interpreting/supported-languages.md)

E2B Code Interpreter SDK allows you to stream the output, and results when executing code in the sandbox.

## Stream `stdout` and `stderr`

When using the `runCode()` method in JavaScript or `run_code()` in Python you can pass `onStdout`/`on_stdout` and `onStderr`/`on_stderr` callbacks to handle the output.

<CodeGroup>
```js title="JavaScript & TypeScript" highlight={15-17}
import { Sandbox } from '@e2b/code-interpreter'

const codeToRun = `
  import time
  import sys
  print("This goes first to stdout")
  time.sleep(3)
  print("This goes later to stderr", file=sys.stderr)
  time.sleep(3)
  print("This goes last")
`
const sandbox = await Sandbox.create()
sandbox.runCode(codeToRun, {
  // Use `onError` to handle runtime code errors
  onError: error => console.error('error:', error),
  onStdout: data => console.log('stdout:', data),
  onStderr: data => console.error('stderr:', data),
})
```

```python title="Python" highlight={17-19}
from e2b_code_interpreter import Sandbox

code_to_run = """
  import time
  import sys
  print("This goes first to stdout")
  time.sleep(3)
  print("This goes later to stderr", file=sys.stderr)
  time.sleep(3)
  print("This goes last")
"""

sandbox = Sandbox.create()
sandbox.run_code(
  code_to_run,
  # Use `on_error` to handle runtime code errors
  on_error=lambda error: print('error:', error),
  on_stdout=lambda data: print('stdout:', data),
  on_stderr=lambda data: print('stderr:', data),
)
```
</CodeGroup>

The code above will print the following:

<CodeGroup>
```javascript title="JavaScript & TypeScript"
stdout: {
  error: false,
  line: "This goes first to stdout\n",
  timestamp: 1729049666861000,
}
stderr: {
  error: true,
  line: "This goes later to stderr\n",
  timestamp: 1729049669924000,
}
stdout: {
  error: false,
  line: "This goes last\n",
  timestamp: 1729049672664000,
}
```

```bash title="Python"
stdout: This goes first to stdout

stderr: This goes later to stderr

stdout: This goes last
```
</CodeGroup>

## Stream `results`

When using the `runCode()` method in JavaScript or `run_code()` in Python you can pass `onResults`/`on_results` callback
to receive results from the sandbox like charts, tables, text, and more.

<CodeGroup>
```js title="JavaScript & TypeScript" highlight={20}
const codeToRun = `
import matplotlib.pyplot as plt

# Prepare data
categories = ['Category A', 'Category B', 'Category C', 'Category D']
values = [10, 20, 15, 25]

# Create and customize the bar chart
plt.figure(figsize=(10, 6))
plt.bar(categories, values, color='green')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Values by Category')

# Display the chart
plt.show()
`
const sandbox = await Sandbox.create()
await sandbox.runCode(codeToRun, {
  onResult: result => console.log('result:', result),
})
```

```python title="Python" highlight={24}
from e2b_code_interpreter import Sandbox

code_to_run = """
import matplotlib.pyplot as plt

# Prepare data
categories = ['Category A', 'Category B', 'Category C', 'Category D']
values = [10, 20, 15, 25]

# Create and customize the bar chart
plt.figure(figsize=(10, 6))
plt.bar(categories, values, color='green')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Values by Category')

# Display the chart
plt.show()
"""

sandbox = Sandbox.create()
sandbox.run_code(
  code_to_run,
  on_result=lambda result: print('result:', result),
)
```
</CodeGroup>
