Create Entity
/extensions/roboledger/{graph_id}/operations/create-entityPart of RoboLedger: Setup.
Add an entity to the graph's reporting group: a subsidiary under parent_entity_id (default the group parent) that keeps its own books, chart of accounts and close, on the group's fiscal cadence. A graph created without an entity gets this one as its group parent. Creates the entity row only — give it a chart next (initialize-chart-of-accounts with entity_id) and a calendar (initialize with entity_id); from then on every ledger operation takes entity_id to act in its books, and omitting it means the group parent. The Reporting Style follows entity_type unless reporting_style_id names one. ticker prefixes the entity's account names and must be unique in the graph (409). There is no cap on entities: a graph is one reporting group, and everyone with access to it sees every entity.
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-Keyheader. - Bearer token in the
Authorizationheader.
Path parameters
| Name | Type | Description |
|---|---|---|
graph_idrequired | string | Graph Id Constraints: matches |
Header parameters
| Name | Type | Description |
|---|---|---|
Idempotency-Keyoptional | string | Idempotency-Key |
Request body
Required, application/json.
| Field | Type | Description |
|---|---|---|
namerequired | string | Display name. Constraints: 1–255 characters |
legal_nameoptional | string | Registered legal name. Defaults to |
entity_typeoptional | string | Legal form: |
reporting_style_idoptional | string | Structure id of the Reporting Style to present under, validated in the graph like change-reporting-style. Omit to derive it from |
parent_entity_idoptional | string | The entity this one is held under. Omit for the group parent; name a subsidiary to nest a sub-group under it. |
ownership_pctoptional | number | The parent's share of this entity, as a percent (100 = wholly owned). Omit when not recorded. Refused on a graph's first entity, which becomes the group parent. Constraints: at most 100; greater than 0 |
tickeroptional | string | Short symbol, unique in the graph; it prefixes the entity's account names ( Constraints: 1–10 characters |
urioptional | string | Canonical URL / external identifier. |
cikoptional | string | |
sicoptional | string | |
sic_descriptionoptional | string | |
categoryoptional | string | |
state_of_incorporationoptional | string | |
fiscal_year_endoptional | string | Fiscal year-end as MM-DD. Defaults to the parent's: a graph has one fiscal cadence, and every entity's calendar follows it. |
tax_idoptional | string | |
leioptional | string | |
industryoptional | string | |
phoneoptional | string | |
websiteoptional | string | |
address_line1optional | string | |
address_cityoptional | string | |
address_stateoptional | string | |
address_postal_codeoptional | string | |
address_countryoptional | string |
Example request
curl -X POST "https://api.robosystems.ai/extensions/roboledger/{graph_id}/operations/create-entity" \
-H "X-API-Key: $ROBOSYSTEMS_API_KEY" \
-H "Idempotency-Key: <Idempotency-Key>" \
-H "Content-Type: application/json" \
-d '{
"entity_type": "llc",
"name": "Maple Court LLC",
"ownership_pct": 100
}'curl -X POST "https://api.robosystems.ai/extensions/roboledger/{graph_id}/operations/create-entity" \
-H "X-API-Key: $ROBOSYSTEMS_API_KEY" \
-H "Idempotency-Key: <Idempotency-Key>" \
-H "Content-Type: application/json" \
-d '{
"entity_type": "llc",
"legal_name": "Harbor Property Management, LLC",
"name": "Harbor Property Management LLC",
"ownership_pct": 60,
"parent_entity_id": "ent_01J9ZK3M4N5P6Q7R8S9T0V1W2X",
"state_of_incorporation": "DE",
"tax_id": "12-3456789",
"ticker": "HPM"
}'Responses
200 Successful Response
| Field | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operationrequired | string | Kebab-case operation name | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
operationIdrequired | string | op_-prefixed ULID for audit and SSE correlation | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
statusrequired | string | Operation lifecycle state One of: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
resultoptional | LedgerEntityResponse | Command-specific result payload LedgerEntityResponse fields
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
atrequired | string | ISO-8601 UTC timestamp | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createdByoptional | string | User ID that initiated the operation | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
idempotentReplayoptional | boolean | True when this envelope came from the idempotency cache — the underlying command did not execute again. False on fresh executions. Default: |
| Status | Meaning |
|---|---|
| 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 |