curl --request GET \
--url https://api.hacktron.ai/v1/cost-estimations/{id} \
--header 'X-Api-Key: <api-key>'import requests
url = "https://api.hacktron.ai/v1/cost-estimations/{id}"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://api.hacktron.ai/v1/cost-estimations/{id}', 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.hacktron.ai/v1/cost-estimations/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-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"
"net/http"
"io"
)
func main() {
url := "https://api.hacktron.ai/v1/cost-estimations/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hacktron.ai/v1/cost-estimations/{id}")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hacktron.ai/v1/cost-estimations/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "123e4567-e89b-12d3-a456-426614174000",
"organization_id": "f336d0bc-b841-465b-8045-024475c079dd",
"user_id": "f336d0bc-b841-465b-8045-024475c079dd",
"task_id": "cost_est_owner-repo_12345",
"status": "completed",
"repos": [
{
"source": "connected",
"repo_url": "https://github.com/owner/repo",
"branch": "main",
"commit_sha": "abc123def456",
"archive_id": "<string>"
}
],
"triage_required": false,
"triage_fee_credits": 1600,
"created_at": "2026-03-10T12:00:00.000Z",
"updated_at": "2026-03-10T12:05:00.000Z",
"name": "<string>",
"total_credits": 8000,
"repo_results": [
{
"repo_url": "https://github.com/owner/repo",
"status": "completed",
"from_cache": false,
"branch": "main",
"commit_sha": "abc123def456",
"applications": [
{
"app_name": "backend-api",
"app_root_path": "apps/api",
"architecture": "NestJS REST API with PostgreSQL"
}
],
"credits": 4000,
"error": "<string>",
"failure_reason": "unsupported_language",
"unsupported_languages": [
"<string>"
]
}
],
"error": "<string>"
}Get cost estimation
Fetch a cost estimation by ID.
curl --request GET \
--url https://api.hacktron.ai/v1/cost-estimations/{id} \
--header 'X-Api-Key: <api-key>'import requests
url = "https://api.hacktron.ai/v1/cost-estimations/{id}"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://api.hacktron.ai/v1/cost-estimations/{id}', 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.hacktron.ai/v1/cost-estimations/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-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"
"net/http"
"io"
)
func main() {
url := "https://api.hacktron.ai/v1/cost-estimations/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.hacktron.ai/v1/cost-estimations/{id}")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hacktron.ai/v1/cost-estimations/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "123e4567-e89b-12d3-a456-426614174000",
"organization_id": "f336d0bc-b841-465b-8045-024475c079dd",
"user_id": "f336d0bc-b841-465b-8045-024475c079dd",
"task_id": "cost_est_owner-repo_12345",
"status": "completed",
"repos": [
{
"source": "connected",
"repo_url": "https://github.com/owner/repo",
"branch": "main",
"commit_sha": "abc123def456",
"archive_id": "<string>"
}
],
"triage_required": false,
"triage_fee_credits": 1600,
"created_at": "2026-03-10T12:00:00.000Z",
"updated_at": "2026-03-10T12:05:00.000Z",
"name": "<string>",
"total_credits": 8000,
"repo_results": [
{
"repo_url": "https://github.com/owner/repo",
"status": "completed",
"from_cache": false,
"branch": "main",
"commit_sha": "abc123def456",
"applications": [
{
"app_name": "backend-api",
"app_root_path": "apps/api",
"architecture": "NestJS REST API with PostgreSQL"
}
],
"credits": 4000,
"error": "<string>",
"failure_reason": "unsupported_language",
"unsupported_languages": [
"<string>"
]
}
],
"error": "<string>"
}status reaches a terminal value (completed, partial, or failed).
readAuthorizations
Path Parameters
Response
Estimation UUID
"123e4567-e89b-12d3-a456-426614174000"
Organization UUID
"f336d0bc-b841-465b-8045-024475c079dd"
User UUID
"f336d0bc-b841-465b-8045-024475c079dd"
Task identifier
"cost_est_owner-repo_12345"
Estimation status
pending, running, completed, partial, failed "completed"
Input repositories
Show child attributes
Show child attributes
Whether human triage is mandatory for a scan of this estimation (large app, above the predicted-cost threshold). The customer cannot opt out when true.
false
Triage fee in credits (a percentage of the scan base credits) added when triage is enabled
1600
Timestamp when estimation was created
"2026-03-10T12:00:00.000Z"
Timestamp when estimation was last updated
"2026-03-10T12:05:00.000Z"
Friendly name for this estimation
Total estimated credits across all repos
8000
Per-repo estimation results
Show child attributes
Show child attributes
Error message