Scans
Validate Workspace Path
Check whether a filesystem path is a valid OpenClaw workspace
POST
/
api
/
v1
/
scan
/
validate-path
Validate Workspace Path
curl --request POST \
--url http://localhost:8000/api/v1/scan/validate-path \
--header 'Content-Type: application/json' \
--data '
{
"path": "<string>"
}
'import requests
url = "http://localhost:8000/api/v1/scan/validate-path"
payload = { "path": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({path: '<string>'})
};
fetch('http://localhost:8000/api/v1/scan/validate-path', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8000",
CURLOPT_URL => "http://localhost:8000/api/v1/scan/validate-path",
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([
'path' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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 := "http://localhost:8000/api/v1/scan/validate-path"
payload := strings.NewReader("{\n \"path\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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("http://localhost:8000/api/v1/scan/validate-path")
.header("Content-Type", "application/json")
.body("{\n \"path\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8000/api/v1/scan/validate-path")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"path\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"valid": true,
"openclaw_json_found": true,
"path": "<string>",
"error": "<string>"
}Used by the dashboard before kicking off a scan. The path is validated server-side because the dashboard runs in a browser that cannot inspect the engine host’s filesystem.
Request body —
Request body — ValidatePathPayload
string
required
Absolute filesystem path (whitespace is trimmed).
Response
boolean
true if the path exists and contains openclaw.jsonboolean
Whether
openclaw.json was foundstring
Echo of the resolved path
string
Reason for failure when
valid is false (e.g. Path does not exist, Not an OpenClaw workspace (no openclaw.json found))⌘I
Validate Workspace Path
curl --request POST \
--url http://localhost:8000/api/v1/scan/validate-path \
--header 'Content-Type: application/json' \
--data '
{
"path": "<string>"
}
'import requests
url = "http://localhost:8000/api/v1/scan/validate-path"
payload = { "path": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({path: '<string>'})
};
fetch('http://localhost:8000/api/v1/scan/validate-path', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8000",
CURLOPT_URL => "http://localhost:8000/api/v1/scan/validate-path",
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([
'path' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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 := "http://localhost:8000/api/v1/scan/validate-path"
payload := strings.NewReader("{\n \"path\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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("http://localhost:8000/api/v1/scan/validate-path")
.header("Content-Type", "application/json")
.body("{\n \"path\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8000/api/v1/scan/validate-path")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"path\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"valid": true,
"openclaw_json_found": true,
"path": "<string>",
"error": "<string>"
}
