---
title: "Bind Text Block"
method: POST
path: "/extensions/roboledger/{graph_id}/operations/bind-text-block"
tags: ["RoboLedger: Information Blocks"]
---

# Bind Text Block

`POST /extensions/roboledger/{graph_id}/operations/bind-text-block`

## 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/bind-text-block`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Bind a platform Document (markdown) — or one of its sections — to a disclosure element as a Nonnumeric text-block fact. The document stays the editable source of truth; the fact snapshots its text into a standing 'disclosure' FactSet with document provenance (document_id + section + content_hash). Re-binding the same element and period replaces the fact and refreshes the hash. Reports generated afterward snapshot the standing set, so filed reports are immutable against later document edits.

**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

- BindTextBlockRequest
  - `document_id` string, required: Platform Document to bind (see list-documents).
  - `section_id` string, nullable: Slugified heading id of one section to bind (the section ids search-documents returns); omit to bind the whole document.
  - `structure_id` string, required: Disclosure Structure the text block belongs to — must be block_type='regulatory_disclosure' with a text-block concept_arrangement (text_block / levelN_textblock).
  - `element_id` string, nullable: Disclosure element to tag the text to (id form).
  - `element_qname` string, nullable: Disclosure element qname (e.g. 'acme:SignificantAccountingPoliciesTextBlock') — exactly one of element_id / element_qname.
  - `period_start` string, date, required: Reporting period start the narrative covers (duration fact).
  - `period_end` string, date, required: Reporting period end.
  - `entity_id` string, nullable: Entity the fact belongs to, by id; omit for the group parent.

## Response `200`

Successful Response

- OperationEnvelopeBindTextBlockResponse
  - `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` BindTextBlockResponse
    - `fact_id` string, required: The Nonnumeric Fact created.
    - `fact_set_id` string, required: Standing 'disclosure' FactSet holding the fact.
    - `structure_id` string, required
    - `element_id` string, required
    - `document_id` string, required
    - `section_id` string, nullable
    - `content_hash` string, required: Full sha256 hex of the bound text (drift signal).
    - `characters` integer, required: Length of the bound text.
    - `period_start` string, date, required
    - `period_end` string, date, required
    - `replaced` boolean, required: True when a re-bind replaced this element's existing fact in the standing FactSet (content and provenance refreshed).
  - `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)
