Frostune:VO provides two equivalent ways to access integration data:
Both methods produce the same data structure and schema.
To pull Frostune:VO data live, run FrostuneVO locally and query:
http://localhost:5000/api/integration/manifest
This endpoint returns a live JSON manifest of the currently open FrostuneVO project, including:
Query flags such as includeCustomProps=1 or includeText=1 control what data is included.
By default, the service is accessible only on the same machine as FrostuneVO.
Your engine or editor tool queries this endpoint:
FrostuneVO runs locally
The engine/tool pulls data locally
This design avoids cloud dependencies and keeps all narrative data private.
By default, FrostuneVO binds to 127.0.0.1, meaning it is reachable only from the same machine.
✅ This works everywhere as long as:
http://localhost:5000 is reachableIf a studio explicitly wants to access the API from another machine on the LAN, the server can be configured to bind to 0.0.0.0 (with appropriate firewall or VPN rules).
For most workflows, local-only access is recommended.
All parameters are optional.
| Param | Type | Default | Description |
|---|---|---|---|
includeText |
0/1 |
0 |
Include dialogue text in each item. |
includeNotes |
0/1 |
1 |
Include notes (direction / comments). |
includeHasWav |
0/1 |
0 |
Computes hasWav by checking the filesystem (slower). |
includeCustomProps |
0/1 |
0 |
Includes custom property values per line and definitions in meta.customProps.defs. |
voicesRoot |
string | project outputDir or "voices" |
Root folder for wav checks (only relevant when includeHasWav=1). |
eventTemplate |
string | Play_{key} |
Template for wwise.eventName. |
originalsSubFolderTemplate |
string | VO\{sceneTag}\{speakerSlug} |
Template for wwise.originalsSubFolder. |
objectPathTemplate |
string | VO\{sceneTag}\{key}_{speakerSlug} |
Template for wwise.objectPath. |
Available in all templates:
{key} → filename without .wav (e.g. VO_6ee362){filename} → filename with .wav{sceneTag}, {sceneName}, {sceneFolder}{speaker}, {speakerTag}, {speakerSlug}{stringId}Minimal (fast):
curl "http://localhost:5000/api/integration/manifest"
Include custom props:
curl "http://localhost:5000/api/integration/manifest?includeCustomProps=1"
Include text + custom props:
curl "http://localhost:5000/api/integration/manifest?includeText=1&includeCustomProps=1"
Compute hasWav:
curl "http://localhost:5000/api/integration/manifest?includeHasWav=1&voicesRoot=voices"
{
"meta": { ... },
"items": [ ... ]
}
meta| Field | Type | Notes |
|---|---|---|
schema |
string | frostune.integration.v1 |
exportedAt |
string | ISO timestamp |
projectName |
string | Project display name |
voicesRoot |
string | Voices root used |
options |
object | Echo of options used |
customProps |
object (optional) | Present only if includeCustomProps=1 |
items[] (one per spoken line)| Field | Type | Notes |
|---|---|---|
id |
string | Stable line UUID |
stringId |
string | StringID@WavName |
sceneId |
string | Scene UUID |
sceneTag |
string | Sanitized scene tag |
sceneName |
string | Scene name |
sceneFolder |
string | Folder hierarchy |
index |
number | Line index |
speaker |
string | Speaker name |
speakerTag |
string | Sanitized speaker tag |
speakerGender |
string | Optional |
filename |
string | e.g. VO_6ee362.wav |
key |
string | Filename without extension |
wavRel |
string | Relative wav path |
hasWav |
boolean | null |
spatialMode |
2d |
3d |
priority |
number | Default 50 |
delaySeconds |
number | Default 0 |
wwise |
object | Mapping-friendly fields |
text |
string | null |
notes |
string | null |
custom |
object | null |
custom (when enabled)"custom": {
"new_text": "1",
"new_dropdown": "None",
"new_checkbox": false
}