---
title: "Share Report"
method: POST
path: "/extensions/roboledger/{graph_id}/operations/share-report"
tags: ["RoboLedger: Report Distribution"]
---

# Share Report

`POST /extensions/roboledger/{graph_id}/operations/share-report`

## Request

- Base URL: `https://api.robosystems.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.robosystems.ai/extensions/roboledger/{graph_id}/operations/share-report`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Pushes a published report to every member of the target publish list. Each share is an independent copy: the report row + all its facts are cloned into the recipient's tenant schema with `source_graph_id` / `source_report_id` provenance fields populated. Per-target outcomes (success or error) surface in the response — share does not fail-fast across targets. Recipients that have blocked this graph come back as an error for that target; withdraw a delivered copy with `revoke-report-share`.

**Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.

## Path parameters

- `graph_id` string, required

## Headers

- `Idempotency-Key` string, nullable

## Request body

- ShareReportOperation: Share a published Report to every member of a publish list.
  - `publish_list_id` string, required: Publish list whose members will receive the report. Created via `create-publish-list`.
  - `report_id` string, required: The published Report to share.

## Response `200`

Successful Response

- OperationEnvelopeShareReportResponse
  - `operation` string, required: Kebab-case operation name
  - `operationId` string, required: op_-prefixed ULID for audit and SSE correlation
  - `status` 'completed' | 'pending' | 'failed', required: Operation lifecycle state
  - `result` ShareReportResponse: Result of sharing a report to a publish list — one row per target.
    - `report_id` string, required: The report that was shared.
    - `results` ShareResultItem[], required: Per-recipient outcomes. Inspect to find partial failures — the share operation does not fail-fast across targets.
      - `target_graph_id` string, required: Recipient graph ID (a publish-list member).
      - `status` string, required: `shared` when the copy succeeded; `error` when this target failed (other targets may still have succeeded).
      - `error` string, nullable: Error message when `status='error'`, else null.
      - `fact_count` integer: Number of facts copied into the target on success.
  - `at` string, required: ISO-8601 UTC timestamp
  - `createdBy` string, nullable: User ID that initiated the operation
  - `idempotentReplay` boolean: True when this envelope came from the idempotency cache — the underlying command did not execute again. False on fresh executions.

## Other responses

- `400`: Invalid request
- `401`: Authentication required
- `403`: Access denied
- `404`: Resource not found
- `409`: Idempotency-Key conflict — key reused with different body
- `422`: Validation error
- `429`: Rate limit exceeded
- `500`: Internal server error

---

[API](https://skmtc.dev/robosystems/apis/robosystems-api.md) · [All operations](https://skmtc.dev/robosystems/apis/robosystems-api/llms.txt) · [OpenAPI document](https://skmtc.dev/robosystems/apis/robosystems-api/revisions/e661e2d5ca6a?raw)
