Get a benchmark report using the standard model from project Id
curl --request GET \
--url https://api.n-3.co.uk/benchmark/project/{projectId} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.n-3.co.uk/benchmark/project/{projectId}"
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.n-3.co.uk/benchmark/project/{projectId}', 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.n-3.co.uk/benchmark/project/{projectId}",
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.n-3.co.uk/benchmark/project/{projectId}"
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.n-3.co.uk/benchmark/project/{projectId}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.n-3.co.uk/benchmark/project/{projectId}")
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{
"totals": 2571000,
"external_works_variation": 100000,
"total_including_external_works": 2571000,
"total_adjusted_value": 2991359,
"adjusted_cost_per_m2": 1994,
"lower_limit": 1595,
"upper_limit": 2592,
"_meta": {
"adjustment_percentage": 0.35,
"external_works_percentage": 0.25,
"strength": 75,
"profiled_strength": 2.5,
"location": {
"county": "London",
"index": 100
}
}
}Benchmarking
Get a benchmark report using the standard model from project Id
GET
/
benchmark
/
project
/
{projectId}
Get a benchmark report using the standard model from project Id
curl --request GET \
--url https://api.n-3.co.uk/benchmark/project/{projectId} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.n-3.co.uk/benchmark/project/{projectId}"
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.n-3.co.uk/benchmark/project/{projectId}', 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.n-3.co.uk/benchmark/project/{projectId}",
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.n-3.co.uk/benchmark/project/{projectId}"
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.n-3.co.uk/benchmark/project/{projectId}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.n-3.co.uk/benchmark/project/{projectId}")
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{
"totals": 2571000,
"external_works_variation": 100000,
"total_including_external_works": 2571000,
"total_adjusted_value": 2991359,
"adjusted_cost_per_m2": 1994,
"lower_limit": 1595,
"upper_limit": 2592,
"_meta": {
"adjustment_percentage": 0.35,
"external_works_percentage": 0.25,
"strength": 75,
"profiled_strength": 2.5,
"location": {
"county": "London",
"index": 100
}
}
}Overview
Retrieves existing benchmark reports and cost predictions for a specific project. This endpoint provides access to previously generated benchmarks, including hybrid development support for composite projects.Response Features
Cost Predictions
- Statistical cost forecasts based on similar projects
- Confidence intervals showing prediction uncertainty
- Historical trend analysis and market positioning
- Element-level cost breakdowns
Comparison Analysis
- Similar project matches with quality grades
- Source health ratings (20-100% reliability)
- Similarity scores and ranking factors
- Geographic and temporal context
Quality Indicators
- Data completeness assessments
- Statistical validity checks
- Benchmark reliability scores
- Confidence level indicators
Multi-Development Support
For composite projects, the endpoint supports:- Hybrid View - Toggle between composite and individual developments
- Development-Specific Data - Separate predictions for each building type
- Aggregate Analysis - Combined project-level insights
- Cross-Development Comparison - Performance across different building types
Usage Examples
Standard Project Request
GET /benchmark/project/12345
Hybrid Development Request
GET /benchmark/project/12345?hybridSupport=true&development=dev1
Response Structure
Returns comprehensive benchmark data:{
"predictions": {
"costForecast": {...},
"confidenceInterval": {...},
"qualityRating": "Strong"
},
"comparisons": {
"similarProjects": [...],
"qualityGrades": [...],
"sourceHealth": {...}
},
"metadata": {
"generatedAt": "...",
"modelVersion": "...",
"dataSource": "..."
}
}
Error Handling
- 404 - Project not found or no benchmark data available
- 400 - Invalid project ID or request parameters
- 500 - Server error during benchmark retrieval
Related Endpoints
- Create Benchmark - Generate new predictions
- Get Similar Projects - Find comparable projects
- Find Snapshots - Access saved benchmarks
Authorizations
x-api-keybearer
Path Parameters
Response
200 - application/json
Total cost (sum)
Example:
2571000
External works variation
Example:
100000
Total including external works
Example:
2571000
Total adjusted value
Example:
2991359
Adjusted cost per m2 (GIFA)
Example:
1994
Lower limit for adjusted cost per m2
Example:
1595
Upper limit for adjusted cost per m2
Example:
2592
Show child attributes
Show child attributes

