---
title: "report.session.write · OpenVibe.Services"
canonical: "https://openvibe.services/docs/capabilities/report.session.write"
updated: null
---

# report.session.write · OpenVibe.Services

HTML: [report.session.write · OpenVibe.Services](https://openvibe.services/docs/capabilities/report.session.write)

# `report.session.write`

Generated at 2026-11-13 06:25:48 UTC from [`openvibe-contracts v0.419.0`](https://github.com/OpenVibers/OpenVibe.Contracts/tree/v0.419.0) and [`openvibe-sdk v0.161.0`](https://github.com/OpenVibers/OpenVibe.SDK/tree/v0.161.0).

Not grantable to apps (active, first-party).

Write one agent session's report on OpenVibe.Report (the Agent Streams plan, S3). POST /internal/session-reports stores the report of a Codes task, an Actor task, a desk session or a session on a person's own machine, and answers the report's page. The route is idempotent per (source, task ref): the same session's task always answers the same report. The caller is a first-party service - Codes, Actor or Live - with a service token that holds this capability for the audience openvibe.report; Network grants it to exactly those principals. The body names the person the session was theirs, and a service may only write a report for the person it acts for. Every text field passes the house redactor before anything is stored: the raw transcript and secrets never reach the report.

- Owner: report (token audience `openvibe.report`)
- Version: 1.0
- Status: active
- Visibility: first-party
- Resource constraints: owner
- Quota class: standard
- Permissions: report:write
- Input: [report.session-write-request@1](/docs/contracts/report.session-write-request)
- Output: report.session-write-result@1
- Events: —
- Implemented by: - `POST /internal/session-reports`

[These routes in the API explorer](/docs/api/report#cap-report.session.write)
