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

# Send activity logs

> Point your agent's OpenTelemetry exporter at our trace and log endpoints with a bearer key, so a report can show the calls your agent made.

This page is for the engineer who runs the agent. Your agent can send its own activity logs to us over OpenTelemetry while a test runs. A tool call seen in your logs grades higher than words alone.

> [!NOTE]
>
> The trace key is given to you by your DeepBlocker contact. There is no button for it in the console today. Write to [hello@deepblocker.ai](mailto:hello@deepblocker.ai) with the agent name.

## The endpoints

| Signal | Address |
| - | - |
| Traces (spans) | `https://<console address>/api/assurance/otlp/v1/traces` |
| Logs (log records) | `https://<console address>/api/assurance/otlp/v1/logs` |
| Base, for exporters that add `/v1/traces` and `/v1/logs` themselves | `https://<console address>/api/assurance/otlp` |

Your DeepBlocker contact gives you the console address with the key.

## The key

| Part | Value |
| - | - |
| Shape | `dbtr.<your agent id>.<64 hex characters>` |
| Header | `Authorization: Bearer <key>`, or `x-db-trace-key: <key>` |
| In OpenTelemetry settings | `Authorization=Bearer%20<key>`. The space is written as `%20`, as the OTLP rule says |

The key names your agent, so one endpoint serves every agent.

## What we accept

| Rule | Value |
| - | - |
| Method | POST |
| Content type | `application/json` or `application/x-protobuf` |
| Compression | None or gzip |
| Body | 4 MB as sent, 8 MB after gzip |
| Requests | 120 a minute per agent, for each of traces and logs |
| Wrong keys | 20 a minute per caller address, then every request from that address waits a minute |
| When | Only while a test run of the agent is open. Outside a test the request is refused and the exporter should not retry |

## Exporter settings

```bash Any OpenTelemetry exporter theme={null}
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://<console address>/api/assurance/otlp/v1/traces
OTEL_EXPORTER_OTLP_TRACES_HEADERS=Authorization=Bearer%20<your trace key>
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://<console address>/api/assurance/otlp/v1/logs
OTEL_EXPORTER_OTLP_LOGS_HEADERS=Authorization=Bearer%20<your trace key>
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=http/protobuf
```

```bash Claude Code theme={null}
CLAUDE_CODE_ENABLE_TELEMETRY=1
CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1
OTEL_TRACES_EXPORTER=otlp
OTEL_LOGS_EXPORTER=otlp
OTEL_LOG_TOOL_DETAILS=1
OTEL_EXPORTER_OTLP_PROTOCOL=http/json
OTEL_EXPORTER_OTLP_ENDPOINT=https://<console address>/api/assurance/otlp
OTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer%20<your trace key>
```

```toml OpenAI Codex theme={null}
[otel]
environment = "deepblocker-test"
log_user_prompt = false
exporter = { otlp-http = { endpoint = "https://<console address>/api/assurance/otlp/v1/logs", protocol = "json", headers = { "Authorization" = "Bearer <your trace key>" } } }
trace_exporter = { otlp-http = { endpoint = "https://<console address>/api/assurance/otlp/v1/traces", protocol = "json", headers = { "Authorization" = "Bearer <your trace key>" } } }
```

Claude Code adds `/v1/traces` and `/v1/logs` to the base itself, and needs `OTEL_LOG_TOOL_DETAILS=1` or the command lines and paths are left out. Codex carries its tool calls in logs; traces are optional. Prompts stay hidden in both.

## What the report shows

A finding backed by your logs carries the label "From your activity logs". Its band is capped at High: stronger than words alone, weaker than a call our own tools served. A call your agent's own approval check refused is shown as attempted, never as run. See [Reports](https://docs.deepblocker.ai/agent-assurance/reports.md).

## Answers from the endpoint

| Status | Meaning |
| - | - |
| 200 | Taken. The body may say what we did not take |
| 401 | No key, or a key that is not valid |
| 403 | No test of this agent is running. Final, do not retry |
| 413 | The body is over the limit |
| 415 | Not JSON or protobuf, or a compression other than gzip |
| 429 | Too many requests. Retry after the `Retry-After` seconds |
| 503 | Not set up on this server. Retry |

## Problems

> [accordion] The exporter logs 401
>
> The key is missing or wrong. Check the header is `Authorization=Bearer%20<key>` with `%20`, not a space, in environment settings. A key that was replaced stops working within seconds.

> [accordion] The exporter logs 403
>
> No test of this agent is running right now. Spans are stored only during a test run. Start a test, then send.

> [accordion] The exporter logs 429
>
> More than 120 requests a minute from this agent, or wrong keys from the same address. Batch your spans and wait for the `Retry-After` time.

> [accordion] Spans are sent but nothing shows in the report
>
> Each span's time must fall inside the test run's window. Check the clock of the machine that runs the agent.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.