Homer Doc

Homer Versions history

Homer Docs

Share your Homer project

Public Preview

Homer lets you expose your project to external people to let them test dialogues and mechanics. Turning on the share option will create a public URL from which the project is published. Sharing can be restricted with a password and can have annotations (anyone with access to the public page can annotate each node.

Annotations will then be visible in the info panel of nodes.

Select “Share Options” from the main project menu to open the sharing panel.

Screenshot 2026-06-25 alle 23.18.38.png

Public Data (API)

From this panel, you can control whether your project data can be accessed through the Homer API.

<aside> ⚠️

Warning! Applications that repeatedly request the same project files may be banned from accessing the Homer API. Download data only when your project is updated, and avoid unnecessary API calls by caching files locally.

</aside>

When Public Data is enabled, anyone can download your project files, including homer.json, HomerVars.js, HomerVars.cs, and all project assets, using the following endpoints:

API Endpoints

homer.json: <https://homer.open-lab.com/api/json/[projectID]>
HomerVars.js: <https://homer.open-lab.com/api/variables/js/[projectID]>
HomerVars.cs: <https://homer.open-lab.com/api/variables/cs/[projectID]>
assets: <https://homer.open-lab.com/api/assets/[projectID]>

If Public Data is disabled, API requests must include your Project Token as a POST parameter to authenticate access to the project files. This applies to all endpoints listed above.

API Examples

When Public Data is disabled, include your Project Token as a POST parameter named token in every API request.

1. JavaScript (Fetch API)

const projectId="YOUR_PROJECT_ID";
const token="YOUR_PROJECT_TOKEN";

fetch(`https://homer.open-lab.com/api/json/${projectId}`, {
    method:"POST",
    headers: {
				"Content-Type":"application/x-www-form-urlencoded"
    },
    body:newURLSearchParams({
        token:token
    })
})
.then(response =>response.json())
.then(data => {
	console.log(data);
})
.catch(error => {
	console.error(error);
});

JavaScript (jQuery)

const projectId="YOUR_PROJECT_ID";
const token="YOUR_PROJECT_TOKEN";

$.ajax({
    url:`https://homer.open-lab.com/api/json/${projectId}`,
    type:"POST",
    data: {
        token:token
    },
    dataType:"json",
    success:function(data) {
				console.log(data);
    },
    error:function(xhr,status,error) {
				console.error(error);
    }
});

2. PHP (cURL)

<?php

$projectId="YOUR_PROJECT_ID";
$token="YOUR_PROJECT_TOKEN";

$ch=curl_init("<https://homer.open-lab.com/api/json/>".$projectId);

curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
'token' =>$token
]);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);

$response=curl_exec($ch);

curl_close($ch);

$data=json_decode($response,true);

print_r($data);

3. C# (.NET HttpClient)

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Net.Http;
usingSystem.Threading.Tasks;

classExample
{
staticasyncTaskMain()
    {
stringprojectId="YOUR_PROJECT_ID";
stringtoken="YOUR_PROJECT_TOKEN";

usingHttpClientclient=newHttpClient();

varcontent=newFormUrlEncodedContent(new[]
        {
newKeyValuePair<string,string>("token",token)
        });

HttpResponseMessageresponse=awaitclient.PostAsync(
$"<https://homer.open-lab.com/api/json/{projectId}>",
content
        );

stringjson=awaitresponse.Content.ReadAsStringAsync();

Console.WriteLine(json);
    }
}

Downloading other resources

The same approach can be used for the other API endpoints by simply changing the URL:

Resource Endpoint
homer.json /api/json/[projectID]
HomerVars.js /api/variables/js/[projectID]
HomerVars.cs /api/variables/cs/[projectID]
Assets (.zip) /api/assets/[projectID]

When Public Data is enabled, no authentication is required, and the POST body can be omitted. When it is disabled, include the token POST parameter in every request.

Collaborating on the same project

From the same panel, you can manage who can collaborate on the project.

Screenshot 2026-06-25 alle 23.19.28.png

You can invite other users as administrators, editors, or readers using their email. If the user already has a Homer account registered with that email, they will find the project you are sharing on their Homer projects list page. Otherwise, the invited user will be asked to create an account using that email, and after the registration process, they will find the project in their project list.

Any administrator user invited to the project possesses the capability to modify other users’ roles and remove them from the project collaboration.

How does collaboration work

Ownership

When multiple users are simultaneously working on the project, ownership initially belongs to the first user who starts. However, other administrator users retain the ability to acquire ownership at any time.

Project ownership grants privileges such as editing Variables, Actors, Labels, languages, and metadata. Users with roles as Editors and Readers cannot obtain project ownership.

Furthermore, when a user is actively working on a flow, that specific flow enters a read-only mode, preventing any modifications by other users until the user finishes their task. Other users retain the ability to acquire ownership at any time.

To acquire ownership of a flow in a read-only modality, select “Get ownership” from the main Flow menu.

Auto Update Flow

When a flow is in a read-only modality, users can activate the “Auto Update Flow” modality to see what the owner is doing in real time.

Table of Contents