curl --request POST \
--url https://api.computeflow.cloud/api/v3/builds/docker-image \
--header 'Content-Type: application/json' \
--header 'api-key: <api-key>' \
--data '
{
"image_url": "<string>",
"name": "default",
"executable_path": "<string>"
}
'import requests
url = "https://api.computeflow.cloud/api/v3/builds/docker-image"
payload = {
"image_url": "<string>",
"name": "default",
"executable_path": "<string>"
}
headers = {
"api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({image_url: '<string>', name: 'default', executable_path: '<string>'})
};
fetch('https://api.computeflow.cloud/api/v3/builds/docker-image', 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://api.computeflow.cloud/api/v3/builds/docker-image",
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([
'image_url' => '<string>',
'name' => 'default',
'executable_path' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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://api.computeflow.cloud/api/v3/builds/docker-image"
payload := strings.NewReader("{\n \"image_url\": \"<string>\",\n \"name\": \"default\",\n \"executable_path\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("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://api.computeflow.cloud/api/v3/builds/docker-image")
.header("api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"image_url\": \"<string>\",\n \"name\": \"default\",\n \"executable_path\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.computeflow.cloud/api/v3/builds/docker-image")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"image_url\": \"<string>\",\n \"name\": \"default\",\n \"executable_path\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "<string>",
"build_id": "<string>",
"message": "<string>"
}{
"error": "<string>",
"status": 123,
"detail": "<string>"
}Create build from Docker image
Creates a build from an existing Docker image instead of uploading a ZIP. PlayFlow pulls the image and makes it available for deployment.
Processing is triggered automatically — no need to call /process separately. Poll GET /builds/{build_id} until status is ready.
For private registries, provide registry_credentials with username and password/token. Public images (Docker Hub, ghcr.io public repos) don’t need credentials.
curl --request POST \
--url https://api.computeflow.cloud/api/v3/builds/docker-image \
--header 'Content-Type: application/json' \
--header 'api-key: <api-key>' \
--data '
{
"image_url": "<string>",
"name": "default",
"executable_path": "<string>"
}
'import requests
url = "https://api.computeflow.cloud/api/v3/builds/docker-image"
payload = {
"image_url": "<string>",
"name": "default",
"executable_path": "<string>"
}
headers = {
"api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({image_url: '<string>', name: 'default', executable_path: '<string>'})
};
fetch('https://api.computeflow.cloud/api/v3/builds/docker-image', 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://api.computeflow.cloud/api/v3/builds/docker-image",
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([
'image_url' => '<string>',
'name' => 'default',
'executable_path' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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://api.computeflow.cloud/api/v3/builds/docker-image"
payload := strings.NewReader("{\n \"image_url\": \"<string>\",\n \"name\": \"default\",\n \"executable_path\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("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://api.computeflow.cloud/api/v3/builds/docker-image")
.header("api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"image_url\": \"<string>\",\n \"name\": \"default\",\n \"executable_path\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.computeflow.cloud/api/v3/builds/docker-image")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"image_url\": \"<string>\",\n \"name\": \"default\",\n \"executable_path\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "<string>",
"build_id": "<string>",
"message": "<string>"
}{
"error": "<string>",
"status": 123,
"detail": "<string>"
}Authorizations
Body
Create a build from an existing Docker image instead of uploading a ZIP. PlayFlow pulls the image and prepares it for deployment.
Full Docker image URL including tag. Examples: "ghcr.io/myorg/gameserver:v2.1.0", "registry.example.com/game:latest", "docker.io/myname/server:1.0".
1Build name for versioning (e.g., "default", "beta"). Versions auto-increment per name per project.
Path to the game executable inside the Docker image. Required if your executable is not at the default location (Server.x86_64).
Credentials for private Docker registries. Not needed for public images (Docker Hub public, ghcr.io public). Required for private repos.
Show child attributes
Show child attributes
Response
Docker image build created and processing started. Poll GET /builds/{build_id} for status updates.