Skip to main content
Use the complete HTTPS URL issued for a source in Data. The source ID and provider path are part of that URL; do not replace them with a guessed host or a generic provider prefix. The existing provider SDK makes the request. The generated helper configures its base URL and headers. Start with Set up with your coding agent.

Authentication and grouping

Use your normal provider authentication alongside x-reasonblocks-key, carrying the dashboard-issued capture key. The generated helper labels every call with x-rb-run (the task) and x-rb-seq (the call’s number within it); reuse the same x-rb-run across every call in one task. A process that handles more than one task must name each task with run_headers() or an explicit rbtrace.client.run() scope, or every task shares one x-rb-run. The dashboard does not read x-rb-seq. A later full-agent training workflow also requires x-rb-snapshot-id naming a real repeatable starting state. Ordinary capture does not require that snapshot. See the integration reference for helper and header details.

Whether a call was captured

A request the recorder cannot represent is still forwarded to your provider and still answered normally — being unrepresentable never costs you the call. It does mean that call produces no training row, so the response says which happened. (Two limits are refused before forwarding rather than passed on: a request body over 2 MB, and a malformed x-rb-snapshot-id. Those return an error instead of a model answer.) accepted describes the request only, and is set before the response streams: a response can still fail to yield a usable reference — a stream that ends early, for instance — and those appear in the pipeline’s capture-gap report in Data rather than in a header. An error the connection itself returns carries no capture header at all. What gets skipped is ordinary, which is why it is worth checking. Neither list below is exhaustive — the connection accepts a fixed set of request options and skips anything else. On OpenAI: options outside the supported set (presence_penalty, frequency_penalty, n, logprobs among them), and any non-text message content such as an image. On Anthropic: stop_sequences, top_k, enabled extended thinking, and likewise any message content that is not text, a tool use or a tool result. One such option set globally means no rows at all, so check this header once when you connect rather than waiting to find an empty dataset.

Boundaries

The current dashboard connection and setup CLI do not provide OpenAI Responses, Realtime, WebSockets, Fireworks or arbitrary OpenAI-compatible upstreams. Google Gemini and Amazon Bedrock are captured through the self-hosted gateway instead — see Gemini and Bedrock. A Python wrapper does not make calls in a JavaScript or native child process compatible; configure the process that actually sends the request. For a trained full-agent release, use non-streaming requests with text and ordinary function tools. Images, forced tool selection, strict tool schemas and other request controls have separate admission rules. Capture support alone does not establish trained-model serving support. Read the full-agent serving contract before enabling a release. An older generated connection should follow the migration procedure. The sequence number x-rb-seq is read by the self-hosted gateway, where a gap in a task’s numbering leaves the run unproven. The dashboard connection groups by x-rb-run alone.