Scan Application Source
curl --request POST \
--url https://api.vertracloud.app/v1/apps/scan \
--header 'Content-Type: application/json' \
--data '
{
"main": "<string>"
}
'import requests
url = "https://api.vertracloud.app/v1/apps/scan"
payload = { "main": "<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({main: '<string>'})
};
fetch('https://api.vertracloud.app/v1/apps/scan', 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.vertracloud.app/v1/apps/scan",
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([
'main' => '<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 := "https://api.vertracloud.app/v1/apps/scan"
payload := strings.NewReader("{\n \"main\": \"<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("https://api.vertracloud.app/v1/apps/scan")
.header("Content-Type", "application/json")
.body("{\n \"main\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vertracloud.app/v1/apps/scan")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"main\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"response": {
"suggested_start_command": "npm run start",
"suggested_build_command": "npm run build",
"suggested_memory_mb": 512,
"suggested_public_web": true,
"missing_dependencies": []
}
}
Applications
Scan Application Source
Pre-scans a zip before creating an application, returning start/build command and memory suggestions.
POST
/
v1
/
apps
/
scan
Scan Application Source
curl --request POST \
--url https://api.vertracloud.app/v1/apps/scan \
--header 'Content-Type: application/json' \
--data '
{
"main": "<string>"
}
'import requests
url = "https://api.vertracloud.app/v1/apps/scan"
payload = { "main": "<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({main: '<string>'})
};
fetch('https://api.vertracloud.app/v1/apps/scan', 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.vertracloud.app/v1/apps/scan",
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([
'main' => '<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 := "https://api.vertracloud.app/v1/apps/scan"
payload := strings.NewReader("{\n \"main\": \"<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("https://api.vertracloud.app/v1/apps/scan")
.header("Content-Type", "application/json")
.body("{\n \"main\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vertracloud.app/v1/apps/scan")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"main\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"response": {
"suggested_start_command": "npm run start",
"suggested_build_command": "npm run build",
"suggested_memory_mb": 512,
"suggested_public_web": true,
"missing_dependencies": []
}
}
This is dashboard-session only: an API key gets
API_KEY_SCOPE_DENIED (403) here, regardless of its
scopes. It exists for the app-creation wizard, not for external integrations.file
required
The ZIP file to scan. Same size and archive limits as
file on Create Application.string
required
The main file of the application, used to detect the runtime language.
Response
object
Show Toggle object
Show Toggle object
string
Suggested startup command for the detected framework, if any.
string
Suggested build command for the detected framework, if any.
integer
Suggested RAM in MB based on the project’s dependencies, if any.
boolean
Whether the project looks like a web app that should be published, if detectable.
string[]
Dependencies the scan could not find declared in the project’s manifest, if any.
{
"response": {
"suggested_start_command": "npm run start",
"suggested_build_command": "npm run build",
"suggested_memory_mb": 512,
"suggested_public_web": true,
"missing_dependencies": []
}
}
Error Responses
string
Show Toggle possible values
Show Toggle possible values
string
The uploaded file is smaller than 100 bytes.
string
The uploaded file exceeds the 100 MB limit.
string
The file is not a valid zip, or is corrupted.
string
The
main file does not exist in the zip.string
The zip’s uncompressed content exceeds the platform limit.
string
The zip has too many entries.
string
The request used an API key instead of a dashboard session.