Get a health report
curl --request GET \
--url https://api.georaf.com/v1/health/reports/{report_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.georaf.com/v1/health/reports/{report_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.georaf.com/v1/health/reports/{report_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.georaf.com/v1/health/reports/{report_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.georaf.com/v1/health/reports/{report_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.georaf.com/v1/health/reports/{report_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.georaf.com/v1/health/reports/{report_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": "rpt_9z8y7x",
"upload": {
"id": "up_a1b2c3d4",
"filename": "parcels.kml",
"format": "kml",
"size_bytes": 142819,
"download_url": "https://geodata-files.r2.cloudflarestorage.com/<org>/uploads/{id}.{ext}?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600&X-Amz-Signature=...",
"created_at": "2026-05-08T15:31:56Z"
},
"status": "completed",
"score": 87,
"total_issues": 3,
"stages": {
"critical": {
"status": "pass",
"checks": [
{
"code": "has_features",
"label": "File contains entries",
"status": "pass",
"details": "50 entry(ies) found."
},
{
"code": "file_opened",
"label": "File opened cleanly",
"status": "pass",
"details": "The file was readable end to end."
},
{
"code": "crs",
"label": "Coordinate system: EPSG:4326",
"status": "pass",
"details": "The file declares its coordinate system as EPSG:4326."
}
]
},
"valid_invalid": {
"status": "warn",
"total": 50,
"valid_count": 42,
"invalid_count": 8,
"invalid_reasons": [
{
"code": "parse_errors",
"label": "Geometry incorrect",
"count": 1
},
{
"code": "coordinates_in_range",
"label": "Coordinates outside the world map",
"count": 3
},
{
"code": "empty_geometries",
"label": "Geometry is empty/null",
"count": 4
}
],
"invalid_indices": [
3,
7,
12,
18,
22,
27,
31
]
},
"fixable": {
"status": "warn",
"fixable_count": 5,
"fixable_reasons": [
{
"code": "valid_geometries",
"label": "Geometric errors",
"count": 5
}
]
}
},
"created_at": "2026-05-08T15:34:00Z",
"completed_at": "2026-05-08T15:34:42Z"
}Health Check
Get a health report
Returns current state. While running, status is pending and checks is empty. When completed, the full report is populated. After auto-fix, fix_upload contains the cleaned-up file and fix_summary describes the repairs.
Get a health report
curl --request GET \
--url https://api.georaf.com/v1/health/reports/{report_id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.georaf.com/v1/health/reports/{report_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.georaf.com/v1/health/reports/{report_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.georaf.com/v1/health/reports/{report_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.georaf.com/v1/health/reports/{report_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.georaf.com/v1/health/reports/{report_id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.georaf.com/v1/health/reports/{report_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": "rpt_9z8y7x",
"upload": {
"id": "up_a1b2c3d4",
"filename": "parcels.kml",
"format": "kml",
"size_bytes": 142819,
"download_url": "https://geodata-files.r2.cloudflarestorage.com/<org>/uploads/{id}.{ext}?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600&X-Amz-Signature=...",
"created_at": "2026-05-08T15:31:56Z"
},
"status": "completed",
"score": 87,
"total_issues": 3,
"stages": {
"critical": {
"status": "pass",
"checks": [
{
"code": "has_features",
"label": "File contains entries",
"status": "pass",
"details": "50 entry(ies) found."
},
{
"code": "file_opened",
"label": "File opened cleanly",
"status": "pass",
"details": "The file was readable end to end."
},
{
"code": "crs",
"label": "Coordinate system: EPSG:4326",
"status": "pass",
"details": "The file declares its coordinate system as EPSG:4326."
}
]
},
"valid_invalid": {
"status": "warn",
"total": 50,
"valid_count": 42,
"invalid_count": 8,
"invalid_reasons": [
{
"code": "parse_errors",
"label": "Geometry incorrect",
"count": 1
},
{
"code": "coordinates_in_range",
"label": "Coordinates outside the world map",
"count": 3
},
{
"code": "empty_geometries",
"label": "Geometry is empty/null",
"count": 4
}
],
"invalid_indices": [
3,
7,
12,
18,
22,
27,
31
]
},
"fixable": {
"status": "warn",
"fixable_count": 5,
"fixable_reasons": [
{
"code": "valid_geometries",
"label": "Geometric errors",
"count": 5
}
]
}
},
"created_at": "2026-05-08T15:34:00Z",
"completed_at": "2026-05-08T15:34:42Z"
}Authorizations
Headers
Path Parameters
Response
Successful Response
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Aggregate of repairs applied. Counts accumulate across incremental fix calls on the same report.
Show child attributes
Show child attributes
⌘I