World Building
Import / Export
Compendium exchange files let you seed a realm's compendium with entities and relationships before play begins, or carry lore from one realm to another.
An exchange file is a plain JSON document you upload through the realm compendium settings. When imported, every entity in the file is added to the compendium; V2 and later files also create the relationships between them. Existing entities with the same ID are updated in place rather than duplicated.
Everything an import adds or changes is recorded in each entity's History as “Import”, so a description an import replaced can be restored. A relationship in the file that you had previously deleted is brought back rather than created again. History itself is not exported.
Exchange files come in four versions. V1 supports entities only and is suitable for simple lore drops. V2 adds a relationships array for richer world graphs. V3 adds a notes array for realm-level notes that carry across imports. V4 adds a quests array, carrying each quest's hook, goal, reward, tags, linked entities, and full step timeline.
Exports can be downloaded as a single JSON file, or as a bundle: a ZIP archive containing the same export.json file alongside one Markdown file per entity (entities/<name>.md) and, as of V4, one per quest (quests/<title>.md) with its hook, goal, reward, and timeline written out as readable text. Only the JSON file is used on import; the Markdown files are for reading outside the platform.
All versions share the same envelope fields. The version field determines which additional fields are required.
version
Must be the string "4".
entities
Array of entity objects. Each entity requires id, type, name, description, notes, and accessIds. isPublicToRealm is optional; when a file omits it, the existing visibility of that entity is left alone on import.
{
"version": "4",
"exportedAt": "2024-03-01T00:00:00Z",
"exportedBy": "gamelord@example.com",
"entities": [
{
"id": "ent_01",
"type": "character",
"name": "Seraphine Voss",
"description": "A disgraced knight seeking redemption in the northern wastes.",
"notes": null,
"accessIds": null,
"isPublicToRealm": true
}
]
}relationships
Array of relationship objects. Each requires id, fromEntityId, toEntityId, type, and accessIds. isPublicToRealm is optional, with the same import behavior as on entities. The fromEntityId and toEntityId must reference ids defined in the entities array.
{
"version": "4",
"exportedAt": "2024-03-01T00:00:00Z",
"exportedBy": "gamelord@example.com",
"entities": [],
"relationships": [
{
"id": "rel_01",
"fromEntityId": "ent_01",
"toEntityId": "ent_02",
"type": "resides_in",
"accessIds": null,
"isPublicToRealm": true
}
]
}notes
Array of realm-level note objects. Each note requires id, name, text, and accessIds. Set accessIds to null to give all realm members access, or provide a list of user IDs to restrict visibility.
{
"version": "3",
"exportedAt": "2024-03-01T00:00:00Z",
"exportedBy": "gamelord@example.com",
"entities": [],
"relationships": [],
"notes": [
{
"id": "note_01",
"name": "Campaign Hook",
"text": "The vault beneath the temple belongs to The Iron Accord. Its contents have not been catalogued.",
"accessIds": null
},
{
"id": "note_02",
"name": "GM Only",
"text": "Seraphine is a sleeper agent. She does not know it yet.",
"accessIds": ["gamelord_user_id"]
}
]
}quests
Array of quest objects. Each quest requires id, title, hook, goalTitle, goalDescription, rewardTitle, rewardDescription, mechanic, motive, source, isPublicToRealm, entityIds, accessIds, and steps. rewardTitle, rewardDescription, mechanic, motive, and source may be null. entityIds reference ids in the entities array or entities already in the realm. accessIds works like it does on notes: null means every realm member, otherwise it is a list of user IDs.
quests[].steps
Array of step objects making up the quest timeline, ordered oldest to newest on import. Each step requires id, type, note, and createdAt.
{
"version": "4",
"exportedAt": "2024-03-01T00:00:00Z",
"exportedBy": "gamelord@example.com",
"entities": [],
"relationships": [],
"notes": [],
"quests": [
{
"id": "quest_01",
"title": "The Silver Locket",
"hook": "A merchant offers coin for a locket lost in the sewers.",
"goalTitle": "Recover the locket",
"goalDescription": "Bring the locket back to the merchant.",
"rewardTitle": "50 gold",
"rewardDescription": "Paid on delivery.",
"mechanic": "fetch",
"motive": "wealth",
"source": "commission",
"isPublicToRealm": true,
"entityIds": ["ent_01"],
"accessIds": null,
"steps": [
{
"id": "step_01",
"type": "discovery",
"note": "The party learned the locket fell through a grate on Mill Street.",
"createdAt": 1716550000000
}
]
}
]
}The type field on each entity must be one of the values below.
Character
| Type | Description |
|---|---|
| character | A named individual: player character, NPC, or historical figure. |
| creature | A non-humanoid being, monster, or animal. |
| species | A biological species or lineage. |
| race | A cultural or racial group of humanoids. |
Location
| Type | Description |
|---|---|
| city | A large, populous urban settlement. |
| town | A mid-sized settlement with established trade. |
| village | A small rural community. |
| settlement | A generic inhabited place that does not fit other location types. |
| region | A broad geographic area such as a kingdom or province. |
| territory | Land claimed or controlled by a specific faction. |
| landmark | A notable fixed point of interest. |
| natural_feature | A geographic feature: mountain, forest, river, etc. |
| ruin | The remnants of a destroyed or abandoned place. |
Organization
| Type | Description |
|---|---|
| faction | A political or ideological group. |
| guild | A trade or craft organization. |
| political_body | A governing council, senate, or ruling body. |
| cult | A secretive religious or devotional group. |
| religion | A formalized faith or spiritual tradition. |
| merchant | A trading enterprise or merchant company. |
| army | An organized military force. |
| clan | A kinship group or extended family unit. |
| dynasty | A ruling lineage across generations. |
| sanctuary | A protected organization offering refuge. |
| military | A generic military organization or branch. |
| residence | A noble house, estate, or household. |
Item
| Type | Description |
|---|---|
| weapon | A named weapon or class of weapons. |
| magic | A spell, enchantment, or magical effect. |
| heirloom | An item passed down through a family or lineage. |
| relic | A sacred or historically significant object. |
| tool | A practical implement or instrument. |
| artifact | A powerful or unique constructed object. |
| consumable | A potion, food, or other single-use item. |
| item | A generic item that does not fit other item types. |
Event
| Type | Description |
|---|---|
| battle | A military engagement or skirmish. |
| disaster | A catastrophic event: plague, flood, collapse. |
| upheaval | A political or social revolution or shift. |
| festival | A celebration or recurring cultural ceremony. |
| meeting | A significant gathering or summit. |
| treaty | A formal agreement between parties. |
| event | A generic historical or in-world event. |
Misc
| Type | Description |
|---|---|
| vehicle | A ship, carriage, airship, or other transport. |
| map | A chart, diagram, or navigational document. |
| letter | A written correspondence or message. |
| currency | A coin, token, or monetary system. |
| law | A decree, edict, or legal code. |
| document | A manuscript, contract, or official record. |
| resource | A natural or manufactured material resource. |
| technology | An invention, technique, or technological system. |
| unknown | Type is not yet determined. |
Establishment
| Type | Description |
|---|---|
| shop | A retail store or vendor stall. |
| marketplace | A market district or trading post. |
| temple | A place of worship. |
| business | A generic commercial establishment. |
| archive | A library, records hall, or repository of knowledge. |
| treasury | A vault or financial institution. |
| healing_center | A hospital, apothecary, or healing house. |
| political_center | A courthouse, palace, or seat of governance. |
| academy | A school, university, or training institution. |
The type field on each relationship must be one of the values below. Relationships are directional: fromEntityId is the subject and toEntityId is the object (e.g. Seraphine resides_in Ashenveil).
Organizational
| Type | Description |
|---|---|
| member_of | Subject belongs to the object organization. |
| affiliated_with | Subject has a loose association with the object. |
| parent_of | Subject is a parent organization of the object. |
| governs | Subject holds authority over the object. |
| regulated_by | Subject is subject to rules or oversight from the object. |
Locational
| Type | Description |
|---|---|
| resides_in | Subject lives or is based in the object location. |
| exists_within | Subject is physically contained inside the object. |
| found_in | Subject can be found or encountered in the object location. |
| operates_within | Subject conducts its activities in the object location. |
| adjacent_to | Subject and object are neighboring locations. |
| located_near | Subject is in the general vicinity of the object. |
| travels_to | Subject moves toward or visits the object. |
Ownership
| Type | Description |
|---|---|
| owns | Subject has legal or recognized ownership of the object. |
| possesses | Subject currently holds or carries the object. |
| has | Subject has a general association or attribute tied to the object. |
Social
| Type | Description |
|---|---|
| ally_of | Subject and object are in a cooperative relationship. |
| enemy_of | Subject and object are in active opposition. |
| competes_with | Subject and object are rivals. |
| trades_with | Subject and object exchange goods or services. |
| influences | Subject has sway over the object's behavior or decisions. |
| seeks | Subject is pursuing or searching for the object. |
Employment
| Type | Description |
|---|---|
| employs | Subject has hired the object. |
| serves | Subject works for or is loyal to the object. |
| leads | Subject is in charge of the object. |
| commands | Subject has direct authority over the object. |
Commerce
| Type | Description |
|---|---|
| creates | Subject produces or manufactures the object. |
| accepts | Subject accepts the object as payment or offering. |
| purchases | Subject buys or has bought the object. |
General
| Type | Description |
|---|---|
| associated_with | A catch-all for any meaningful connection not covered by other types. |
A V4 quest's mechanic, motive, and source fields, and each step's type field, must be one of the values below, or null for the quest-level tags.
Mechanic
| Type | Description |
|---|---|
| fetch | Retrieve an item or person. |
| deliver | Bring something to a destination. |
| escort | Protect someone on a journey. |
| rescue | Free someone from danger or captivity. |
| hunt | Track down and defeat a target. |
| defend | Hold a position against a threat. |
| investigate | Uncover facts or solve a mystery. |
| explore | Chart or discover unknown territory. |
| infiltrate | Get in and out undetected. |
| negotiate | Reach an agreement between parties. |
| sabotage | Disrupt an opponent's plans or assets. |
| escape | Get away from danger or confinement. |
| heist | Steal something of value. |
| build | Construct or establish something. |
| recruit | Bring someone onto the party's side. |
| other | A mechanic that does not fit the list above. |
Motive
| Type | Description |
|---|---|
| justice | Righting a wrong. |
| vengeance | Settling a score. |
| wealth | Pursuing riches. |
| duty | An obligation that must be honored. |
| survival | Staying alive. |
| goodwill | Helping simply because it is good. |
| loyalty | Standing by an ally or cause. |
| curiosity | Wanting to know more. |
| glory | Seeking renown. |
| power | Gaining influence or control. |
| faith | Acting on belief or devotion. |
| redemption | Making amends for the past. |
| coercion | Acting under threat or blackmail. |
| other | A motive that does not fit the list above. |
Source
| Type | Description |
|---|---|
| commission | Hired for pay. |
| request | Asked for by someone in need. |
| order | Handed down by an authority. |
| rumor | Heard secondhand. |
| discovery | Stumbled upon. |
| crisis | Forced by an unfolding emergency. |
| backstory | Rooted in a character's history. |
| self_directed | The party set this goal themselves. |
| omen | Foretold or foreshadowed. |
| consequence | A direct result of an earlier choice. |
| other | A source that does not fit the list above. |
Step Type — Progress
| Type | Description |
|---|---|
| discovery | The party learned something new. |
| milestone | A meaningful step forward. |
| complication | Something made the quest harder. |
| clock_tick | Time or pressure advanced. |
| encounter | A confrontation or meeting occurred. |
| atmosphere | Color or mood without plot movement. |
| decision | The party made a meaningful choice. |
Step Type — Ending
| Type | Description |
|---|---|
| completed | The quest succeeded. Ends the quest. |
| failed | The quest failed. Ends the quest. |
| abandoned | The party gave up on the quest. Ends the quest. |
A quest's status is not stored in the file. It comes from the steps: a quest with no steps is proposed, a quest with steps is active, and the latest ending step decides whether it is completed, failed, or abandoned.
Entities, relationships, notes, and quests each support visibility fields.
accessIds (entities & relationships)
An array of player user IDs who can view this entity or relationship. Set to null to make it visible to all realm members. When importing, these IDs must correspond to existing users in the realm.
isPublicToRealm (entities & relationships, V4+)
When true, the entity or relationship is visible to every current and future realm member, the same as turning on Public to Realm in the UI. Optional: a file that omits this field leaves the existing visibility of that entity or relationship unchanged on import.
notes (entity field)
A free-text field on each entity for the exporting user's own private notes. Every realm member has a separate copy, and none are visible to players even if accessIds is null. On import, the provided text seeds every member listed in accessIds; each person's copy then diverges independently. Set to null to omit.
accessIds (notes & quests arrays)
Each entry in the top-level notes and quests arrays has its own accessIds field. Set to null to give all realm members access, or provide a list of user IDs to restrict it. On a quest, isPublicToRealm takes precedence when true. Notes and quests are imported as-is and are not linked to any specific session.
A complete V4 exchange file with three entities, two relationships, two notes, and a quest with its step timeline, with realm-wide visibility and selective access control throughout.
{
"version": "4",
"exportedAt": "2024-06-15T12:00:00Z",
"exportedBy": "worldbuilder@example.com",
"entities": [
{
"id": "ent_kael",
"type": "character",
"name": "Kael Dawnspire",
"description": "A former war mage who now sells information out of a cramped tower in the merchant district.",
"notes": "Knows about the vault beneath the old temple. Owes a debt to the thieves guild.",
"accessIds": ["player_marlowe", "player_britta"],
"isPublicToRealm": false
},
{
"id": "ent_ironhold",
"type": "city",
"name": "Ironhold",
"description": "A sprawling trade hub built around a collapsed volcano, now home to the largest smithing guilds on the continent.",
"notes": null,
"accessIds": null,
"isPublicToRealm": true
},
{
"id": "ent_ashen",
"type": "guild",
"name": "The Ashen Circle",
"description": "A secretive mage guild operating out of Ironhold, specializing in fire-based transmutation.",
"notes": null,
"accessIds": null,
"isPublicToRealm": false
}
],
"relationships": [
{
"id": "rel_01",
"fromEntityId": "ent_kael",
"toEntityId": "ent_ironhold",
"type": "resides_in",
"accessIds": null,
"isPublicToRealm": true
},
{
"id": "rel_02",
"fromEntityId": "ent_kael",
"toEntityId": "ent_ashen",
"type": "member_of",
"accessIds": ["player_marlowe", "player_britta"],
"isPublicToRealm": false
}
],
"notes": [
{
"id": "note_01",
"name": "Campaign Hook",
"text": "The vault beneath the old temple belongs to The Ashen Circle. Kael knows the combination but will not give it freely.",
"accessIds": null
},
{
"id": "note_02",
"name": "GM Secret",
"text": "The Ashen Circle is actively searching for Kael. He has three days before they find him.",
"accessIds": ["player_marlowe"]
}
],
"quests": [
{
"id": "quest_vault",
"title": "Open the Temple Vault",
"hook": "Kael offers the vault's combination in exchange for safe passage out of Ironhold.",
"goalTitle": "Reach the vault",
"goalDescription": "Get Kael past The Ashen Circle's watchers and into the vault beneath the old temple.",
"rewardTitle": "The vault's contents",
"rewardDescription": "Whatever The Ashen Circle has been hiding beneath the temple.",
"mechanic": "escort",
"motive": "wealth",
"source": "request",
"isPublicToRealm": true,
"entityIds": ["ent_kael", "ent_ashen", "ent_ironhold"],
"accessIds": null,
"steps": [
{
"id": "step_01",
"type": "discovery",
"note": "Kael admits the vault belongs to The Ashen Circle.",
"createdAt": 1718452800000
},
{
"id": "step_02",
"type": "complication",
"note": "Ashen Circle watchers are posted at every gate out of the merchant district.",
"createdAt": 1718456400000
}
]
}
]
}