Browse the API reference

Bind Text Block

post/extensions/roboledger/{graph_id}/operations/bind-text-block

Part of Extensions: RoboLedger.

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.

Authentication

Authenticate in any one of these ways — not all of them:

  • API key in the X-API-Key header.
  • Bearer token in the Authorization header.

Path parameters

NameTypeDescription
graph_idrequiredstringGraph Id

Header parameters

NameTypeDescription
Idempotency-KeyoptionalstringIdempotency-Key

Request body

Required, application/json.

FieldTypeDescription
document_idrequiredstring

Platform Document to bind (see list-documents).

section_idoptionalstring

Slugified heading id of one section to bind (the section ids search-documents returns); omit to bind the whole document.

structure_idrequiredstring

Disclosure Structure the text block belongs to — must be block_type='regulatory_disclosure' with a text-block concept_arrangement (text_block / levelN_textblock).

element_idoptionalstring

Disclosure element to tag the text to (id form).

element_qnameoptionalstring

Disclosure element qname (e.g. 'acme:SignificantAccountingPoliciesTextBlock') — exactly one of element_id / element_qname.

period_startrequiredstring (date)

Reporting period start the narrative covers (duration fact).

period_endrequiredstring (date)

Reporting period end.

entity_idoptionalstring

Entity the fact belongs to; defaults to the primary entity.

Example request

curl
curl -X POST "https://api.robosystems.ai/extensions/roboledger/{graph_id}/operations/bind-text-block" \
  -H "X-API-Key: $ROBOSYSTEMS_API_KEY" \
  -H "Idempotency-Key: <Idempotency-Key>" \
  -H "Content-Type: application/json" \
  -d '{
  "document_id": "string",
  "structure_id": "string",
  "period_start": "2026-01-31",
  "period_end": "2026-01-31"
}'

Responses

200 Successful Response

FieldTypeDescription
operationrequiredstring

Kebab-case operation name

operationIdrequiredstring

op_-prefixed ULID for audit and SSE correlation

statusrequiredstring

Operation lifecycle state

One of: completed, pending, failed

resultoptionalBindTextBlockResponse

Command-specific result payload

BindTextBlockResponse fields
FieldTypeDescription
fact_idrequiredstring

The Nonnumeric Fact created.

fact_set_idrequiredstring

Standing 'disclosure' FactSet holding the fact.

structure_idrequiredstring
element_idrequiredstring
document_idrequiredstring
section_idoptionalstring
content_hashrequiredstring

Full sha256 hex of the bound text (drift signal).

charactersrequiredinteger

Length of the bound text.

period_startrequiredstring (date)
period_endrequiredstring (date)
replacedrequiredboolean

True when a re-bind replaced this element's existing fact in the standing FactSet (content and provenance refreshed).

atrequiredstring

ISO-8601 UTC timestamp

createdByoptionalstring

User ID that initiated the operation (null for legacy callers)

idempotentReplayoptionalboolean

True when this envelope came from the idempotency cache — the underlying command did not execute again. False on fresh executions.

Default: false

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