Get Cost Analysis
curl --request GET \
--url https://api.wistx.ai/v1/indexing/resources/{resource_id}/cost-analysisimport requests
url = "https://api.wistx.ai/v1/indexing/resources/{resource_id}/cost-analysis"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.wistx.ai/v1/indexing/resources/{resource_id}/cost-analysis', 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.wistx.ai/v1/indexing/resources/{resource_id}/cost-analysis",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.wistx.ai/v1/indexing/resources/{resource_id}/cost-analysis"
req, _ := http.NewRequest("GET", url, nil)
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.wistx.ai/v1/indexing/resources/{resource_id}/cost-analysis")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.wistx.ai/v1/indexing/resources/{resource_id}/cost-analysis")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"resource_id": "res_abc123",
"repository_url": "https://github.com/owner/repo",
"environment_name": "production",
"cost_analysis": {
"total_monthly_cost_usd": 1250.50,
"by_service": {
"EC2": 800.00,
"RDS": 350.00,
"S3": 100.50
},
"by_resource_type": {
"t3.large": 400.00,
"db.t3.medium": 350.00
},
"optimization_opportunities": [
{
"service": "EC2",
"current_cost": 400.00,
"optimized_cost": 250.00,
"savings": 150.00,
"recommendation": "Use Reserved Instances"
}
]
}
}
{
"detail": "User ID not found"
}
{
"detail": "Resource not found or access denied"
}
{
"detail": "Failed to get cost analysis"
}
Indexing
Get Cost Analysis
Get aggregated cost analysis for an indexed repository
GET
/
v1
/
indexing
/
resources
/
{resource_id}
/
cost-analysis
Get Cost Analysis
curl --request GET \
--url https://api.wistx.ai/v1/indexing/resources/{resource_id}/cost-analysisimport requests
url = "https://api.wistx.ai/v1/indexing/resources/{resource_id}/cost-analysis"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.wistx.ai/v1/indexing/resources/{resource_id}/cost-analysis', 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.wistx.ai/v1/indexing/resources/{resource_id}/cost-analysis",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.wistx.ai/v1/indexing/resources/{resource_id}/cost-analysis"
req, _ := http.NewRequest("GET", url, nil)
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.wistx.ai/v1/indexing/resources/{resource_id}/cost-analysis")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.wistx.ai/v1/indexing/resources/{resource_id}/cost-analysis")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"resource_id": "res_abc123",
"repository_url": "https://github.com/owner/repo",
"environment_name": "production",
"cost_analysis": {
"total_monthly_cost_usd": 1250.50,
"by_service": {
"EC2": 800.00,
"RDS": 350.00,
"S3": 100.50
},
"by_resource_type": {
"t3.large": 400.00,
"db.t3.medium": 350.00
},
"optimization_opportunities": [
{
"service": "EC2",
"current_cost": 400.00,
"optimized_cost": 250.00,
"savings": 150.00,
"recommendation": "Use Reserved Instances"
}
]
}
}
{
"detail": "User ID not found"
}
{
"detail": "Resource not found or access denied"
}
{
"detail": "Failed to get cost analysis"
}
Get aggregated cost analysis from knowledge articles for an indexed repository
curl --request GET \
--url 'https://api.wistx.ai/v1/indexing/resources/res_abc123/cost-analysis?refresh=false' \
--header 'Authorization: Bearer YOUR_API_KEY'
import requests
api_key = "YOUR_API_KEY"
resource_id = "res_abc123"
response = requests.get(
f"https://api.wistx.ai/v1/indexing/resources/{resource_id}/cost-analysis",
headers={"Authorization": f"Bearer {api_key}"},
params={"refresh": False}
)
analysis = response.json()
print(f"Cost analysis for: {analysis['repository_url']}")
const apiKey = "YOUR_API_KEY";
const resourceId = "res_abc123";
const response = await fetch(
`https://api.wistx.ai/v1/indexing/resources/${resourceId}/cost-analysis?refresh=false`,
{
headers: {
Authorization: `Bearer ${apiKey}`
}
}
);
const analysis = await response.json();
console.log(`Cost analysis for: ${analysis.repository_url}`);
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
)
func main() {
apiKey := "YOUR_API_KEY"
resourceID := "res_abc123"
baseURL := fmt.Sprintf("https://api.wistx.ai/v1/indexing/resources/%s/cost-analysis", resourceID)
params := url.Values{}
params.Add("refresh", "false")
fullURL := baseURL + "?" + params.Encode()
req, _ := http.NewRequest("GET", fullURL, nil)
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", apiKey))
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var analysis map[string]interface{}
json.NewDecoder(resp.Body).Decode(&analysis)
fmt.Printf("Cost analysis for: %v\n", analysis["repository_url"])
}
require 'net/http'
require 'json'
require 'uri'
api_key = "YOUR_API_KEY"
resource_id = "res_abc123"
url = URI("https://api.wistx.ai/v1/indexing/resources/#{resource_id}/cost-analysis?refresh=false")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer #{api_key}"
response = http.request(request)
analysis = JSON.parse(response.body)
puts "Cost analysis for: #{analysis['repository_url']}"
<?php
$apiKey = "YOUR_API_KEY";
$resourceId = "res_abc123";
$url = "https://api.wistx.ai/v1/indexing/resources/" . $resourceId . "/cost-analysis?refresh=false";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer " . $apiKey
]);
$response = curl_exec($ch);
curl_close($ch);
$analysis = json_decode($response, true);
echo "Cost analysis for: " . $analysis['repository_url'];
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
public class GetCostAnalysis {
public static void main(String[] args) throws Exception {
String apiKey = "YOUR_API_KEY";
String resourceId = "res_abc123";
URL url = new URL("https://api.wistx.ai/v1/indexing/resources/" + resourceId + "/cost-analysis?refresh=false");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Authorization", "Bearer " + apiKey);
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
StringBuilder response = new StringBuilder();
String responseLine;
while ((responseLine = br.readLine()) != null) {
response.append(responseLine.trim());
}
Gson gson = new Gson();
JsonObject analysis = gson.fromJson(response.toString(), JsonObject.class);
System.out.println("Cost analysis for: " + analysis.get("repository_url"));
}
}
Path Parameters
string
required
Resource ID of the indexed repository.
Query Parameters
boolean
Force recalculation of cost analysis.Default:
falseResponse
{
"resource_id": "res_abc123",
"repository_url": "https://github.com/owner/repo",
"environment_name": "production",
"cost_analysis": {
"total_monthly_cost_usd": 1250.50,
"by_service": {
"EC2": 800.00,
"RDS": 350.00,
"S3": 100.50
},
"by_resource_type": {
"t3.large": 400.00,
"db.t3.medium": 350.00
},
"optimization_opportunities": [
{
"service": "EC2",
"current_cost": 400.00,
"optimized_cost": 250.00,
"savings": 150.00,
"recommendation": "Use Reserved Instances"
}
]
}
}
{
"detail": "User ID not found"
}
{
"detail": "Resource not found or access denied"
}
{
"detail": "Failed to get cost analysis"
}
Related Endpoints
- Get Compliance Analysis - Get compliance analysis
- Get Resource Status - Check resource status
- Cost Search - Search cost data