AppVersions
Live Sync App Version (v1)
Trigger a live sync for the active preview instance of a draft app version. The caller provides the current commit IDs; the server syncs only what has changed since the last sync. Returns 404 if no active preview instance exists. No-op (triggered=false) if all provided commits are already up to date.
POST
/
api
/
apps
/
v1
/
apps
/
{appId}
/
versions
/
{versionId}
/
liveSync
Live Sync App Version (v1)
curl --request POST \
--url https://mycluster.domino.tech/api/apps/v1/apps/{appId}/versions/{versionId}/liveSync \
--header 'Content-Type: application/json' \
--header 'X-Domino-Api-Key: <api-key>' \
--data '
{
"dfsCommitId": "<string>",
"importedRepoCommits": [
{
"ref": "<string>",
"repoId": "<string>"
}
],
"mainRepoCommitId": "<string>"
}
'import requests
url = "https://mycluster.domino.tech/api/apps/v1/apps/{appId}/versions/{versionId}/liveSync"
payload = {
"dfsCommitId": "<string>",
"importedRepoCommits": [
{
"ref": "<string>",
"repoId": "<string>"
}
],
"mainRepoCommitId": "<string>"
}
headers = {
"X-Domino-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Domino-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dfsCommitId: '<string>',
importedRepoCommits: [{ref: '<string>', repoId: '<string>'}],
mainRepoCommitId: '<string>'
})
};
fetch('https://mycluster.domino.tech/api/apps/v1/apps/{appId}/versions/{versionId}/liveSync', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://mycluster.domino.tech/api/apps/v1/apps/{appId}/versions/{versionId}/liveSync",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dfsCommitId' => '<string>',
'importedRepoCommits' => [
[
'ref' => '<string>',
'repoId' => '<string>'
]
],
'mainRepoCommitId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Domino-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://mycluster.domino.tech/api/apps/v1/apps/{appId}/versions/{versionId}/liveSync"
payload := strings.NewReader("{\n \"dfsCommitId\": \"<string>\",\n \"importedRepoCommits\": [\n {\n \"ref\": \"<string>\",\n \"repoId\": \"<string>\"\n }\n ],\n \"mainRepoCommitId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Domino-Api-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://mycluster.domino.tech/api/apps/v1/apps/{appId}/versions/{versionId}/liveSync")
.header("X-Domino-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"dfsCommitId\": \"<string>\",\n \"importedRepoCommits\": [\n {\n \"ref\": \"<string>\",\n \"repoId\": \"<string>\"\n }\n ],\n \"mainRepoCommitId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mycluster.domino.tech/api/apps/v1/apps/{appId}/versions/{versionId}/liveSync")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Domino-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dfsCommitId\": \"<string>\",\n \"importedRepoCommits\": [\n {\n \"ref\": \"<string>\",\n \"repoId\": \"<string>\"\n }\n ],\n \"mainRepoCommitId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"triggered": true
}{
"error": "<string>"
}{
"code": "UNAUTHORIZED",
"message": "Authentication is required to access this resource."
}{
"code": "FORBIDDEN",
"message": "You do not have permission to perform this action."
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
DominoApiKeyBearerAuthentication
Body
application/json
Response
Success
Response returned when a live sync is requested.
True if a sync was dispatched to the preview pod; false if all provided commits match what was last synced.
Last modified on June 26, 2026
Related topics
Publish and deploy App versionsDevelop and test an AppBest practices for Domino AppsList App Versions (v1)Was this page helpful?
⌘I
Live Sync App Version (v1)
curl --request POST \
--url https://mycluster.domino.tech/api/apps/v1/apps/{appId}/versions/{versionId}/liveSync \
--header 'Content-Type: application/json' \
--header 'X-Domino-Api-Key: <api-key>' \
--data '
{
"dfsCommitId": "<string>",
"importedRepoCommits": [
{
"ref": "<string>",
"repoId": "<string>"
}
],
"mainRepoCommitId": "<string>"
}
'import requests
url = "https://mycluster.domino.tech/api/apps/v1/apps/{appId}/versions/{versionId}/liveSync"
payload = {
"dfsCommitId": "<string>",
"importedRepoCommits": [
{
"ref": "<string>",
"repoId": "<string>"
}
],
"mainRepoCommitId": "<string>"
}
headers = {
"X-Domino-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Domino-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dfsCommitId: '<string>',
importedRepoCommits: [{ref: '<string>', repoId: '<string>'}],
mainRepoCommitId: '<string>'
})
};
fetch('https://mycluster.domino.tech/api/apps/v1/apps/{appId}/versions/{versionId}/liveSync', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://mycluster.domino.tech/api/apps/v1/apps/{appId}/versions/{versionId}/liveSync",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dfsCommitId' => '<string>',
'importedRepoCommits' => [
[
'ref' => '<string>',
'repoId' => '<string>'
]
],
'mainRepoCommitId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Domino-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://mycluster.domino.tech/api/apps/v1/apps/{appId}/versions/{versionId}/liveSync"
payload := strings.NewReader("{\n \"dfsCommitId\": \"<string>\",\n \"importedRepoCommits\": [\n {\n \"ref\": \"<string>\",\n \"repoId\": \"<string>\"\n }\n ],\n \"mainRepoCommitId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Domino-Api-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://mycluster.domino.tech/api/apps/v1/apps/{appId}/versions/{versionId}/liveSync")
.header("X-Domino-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"dfsCommitId\": \"<string>\",\n \"importedRepoCommits\": [\n {\n \"ref\": \"<string>\",\n \"repoId\": \"<string>\"\n }\n ],\n \"mainRepoCommitId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mycluster.domino.tech/api/apps/v1/apps/{appId}/versions/{versionId}/liveSync")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Domino-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dfsCommitId\": \"<string>\",\n \"importedRepoCommits\": [\n {\n \"ref\": \"<string>\",\n \"repoId\": \"<string>\"\n }\n ],\n \"mainRepoCommitId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"triggered": true
}{
"error": "<string>"
}{
"code": "UNAUTHORIZED",
"message": "Authentication is required to access this resource."
}{
"code": "FORBIDDEN",
"message": "You do not have permission to perform this action."
}{
"error": "<string>"
}{
"error": "<string>"
}