Skip to content

Projects & Sites Management API

Manage projects and sites through the API.


List Projects

Retrieves a list of all projects with pagination support.

HTTP request

GET https://api.darukaa.com/api/v1/projects

Query parameters

Parameter Type Required Default Description
skip integer No 0 Number of projects to skip (used for pagination)
limit integer No 100 Maximum number of projects to return

Headers

Header Value Required
Authorization Bearer Yes

Example request

curl -X GET "https://api.darukaa.com/api/v1/projects?skip=0&limit=10" \
  -H "Authorization: Bearer <your_access_token>"
import requests

headers = {"Authorization": f"Bearer {access_token}"}
params = {"skip": 0, "limit": 10}

response = requests.get(
    "https://api.darukaa.com/api/v1/projects",
    headers=headers,
    params=params
)

projects = response.json()
const response = await fetch('https://api.darukaa.com/api/v1/projects?skip=0&limit=10', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${accessToken}`
  }
});

const projects = await response.json();

Status codes

Code Description
200 Success - Projects retrieved successfully
401 Unauthorized - Invalid or missing access token

Response body

Success (200)

[
  {
    "project_name": "Sundarbans Mangrove Restoration",
    "project_start_date": "2020-01-15",
    "project_end_date": "2030-12-31",
    "country": "India",
    "project_description": "Large-scale mangrove restoration project in the Sundarbans delta",
    "project_type": "ARR",
    "total_area": 1250.5,
    "area_unit": "ha",
    "project_developer": "EcoRestore Foundation",
    "crediting_period": "10 years",
    "registry": "Verra",
    "sdg": ["SDG 13", "SDG 15"],
    "project_id": "aac7-xxxx-xxxx-xxxx-f0b9",
    "project_status": "Active",
    "processing_status": "Completed",
    "processing_message": null,
    "has_carbon_module": true,
    "has_biodiversity_module": true,
    "has_climate_module": true,
    "created_at": "2025-12-04T13:30:00Z",
    "updated_at": "2025-12-04T13:30:00Z",
    "sites": []
  }
]

Failure (401)

{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or missing access token",
    "details": "Please provide a valid Bearer token in the Authorization header",
    "request_id": "req_abc123",
    "timestamp": "2025-12-04T13:30:00Z"
  }
}
Field Type Description
project_name string Name of the project
project_start_date string/null Start date of the project
project_end_date string/null End date of the project
country string/null Project country
project_description string/null Description of the project
project_type string Category of project (ARR/ALM/etc.)
total_area float/null Total area covered under the project
area_unit string Area measurement unit (e.g., ha)
project_developer string Name of the organization/person developing the project
crediting_period string/null Crediting period duration
registry string Project registry (e.g., Verra)
project_id UUID string Unique identifier for the project
project_status string Draft / Active / In Review etc.
processing_status string Status of backend processing
processing_message string/null Status notes or warnings
has_carbon_module boolean Carbon module enabled
has_biodiversity_module boolean Biodiversity module enabled
has_climate_module boolean Climate module enabled
created_at datetime Timestamp of creation
updated_at datetime Timestamp of last update
sites array[object] Project-wise list of associated sites

Get Project

Retrieves detailed information about a specific project.

HTTP request

GET https://api.darukaa.com/api/v1/projects/{project_id}

Path parameters

Parameter Type Required Description
project_id string (UUID) Yes Unique project ID to fetch details of

Request body

The request body contains data with the following structure:

{
  "get_satellite_images": false
}
Field Type Required Default Description
get_satellite_images boolean No false Whether to include satellite imagery objects in response

Headers

Header Value Required
Authorization Bearer Yes

Example request

curl -X GET "https://api.darukaa.com/api/v1/projects/8dc-xxxx-xxxx-xxxx-8b2" \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{"get_satellite_images": false}'
project_id = "8dc-xxxx-xxxx-xxxx-158b2"
response = requests.get(
    f"https://api.darukaa.com/api/v1/projects/{project_id}",
    headers=headers,
    json={"get_satellite_images": False}
)
project_details = response.json()
const projectId = "8dc-xxxx-xxxx-xxxx-58b2";
const response = await fetch(`https://api.darukaa.com/api/v1/projects/${projectId}`, {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${accessToken}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ get_satellite_images: false })
});

const projectDetails = await response.json();

Status codes

Code Description
200 Success - Project details retrieved successfully
401 Unauthorized - Invalid or missing access token
404 Not Found - Project with the specified ID does not exist

Response body

Success (200)

{
  "project_name": "Sundarbans Mangrove Restoration",
  "project_start_date": "2020-01-15",
  "project_end_date": "2030-12-31",
  "country": "India",
  "project_description": "Large-scale mangrove restoration project in the Sundarbans delta",
  "project_type": "ARR",
  "total_area": 1250.5,
  "area_unit": "ha",
  "project_developer": "EcoRestore Foundation",
  "crediting_period": "10 years",
  "registry": "Verra",
  "sdg": ["SDG 13", "SDG 15"],
  "project_id": "aac7-xxxx-xxxx-xxxx-0b9",
  "project_status": "Active",
  "processing_status": "Completed",
  "processing_message": null,
  "has_carbon_module": true,
  "has_biodiversity_module": true,
  "has_climate_module": true,
  "created_at": "2025-12-04T13:30:00Z",
  "updated_at": "2025-12-04T13:30:00Z",
  "sites": []
}

Failure (401)

{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or missing access token",
    "details": "Please provide a valid Bearer token in the Authorization header",
    "request_id": "req_abc123",
    "timestamp": "2025-12-04T13:30:00Z"
  }
}

Failure (404)

{
  "error": {
    "code": "PROJECT_NOT_FOUND",
    "message": "Project not found",
    "details": "No project exists with the ID: 8dc6-xxxx-xxxx-xxxx-58b2",
    "request_id": "req_abc123",
    "timestamp": "2025-12-04T13:30:00Z"
  }
}
Field Type Description
project_name string Name of the project
project_start_date string/null Start date of the project
project_end_date string/null End date of the project
country string/null Project country
project_description string/null Description of the project
project_type string Category of project (ARR/ALM/etc.)
total_area float/null Total area covered under the project
area_unit string Area measurement unit (e.g., ha)
project_developer string Name of the organization/person developing the project
crediting_period string/null Crediting period duration
registry string Project registry (e.g., Verra)
project_id UUID string Unique identifier for the project
project_status string Draft / Active / In Review etc.
processing_status string Status of backend processing
processing_message string/null Status notes or warnings
has_carbon_module boolean Carbon module enabled
has_biodiversity_module boolean Biodiversity module enabled
has_climate_module boolean Climate module enabled
created_at datetime Timestamp of creation
updated_at datetime Timestamp of last update
sites array[object] Project-wise list of associated sites

List Sites

Retrieves all sites belonging to a specific project.

HTTP request

GET https://api.darukaa.com/api/v1/projects/{project_id}/sites

Path parameters

Parameter Type Required Description
project_id string (UUID) Yes ID of the project whose sites are to be listed

Request body

The request body contains data with the following structure:

{
  "skip": 0,
  "limit": 100
}
Field Type Required Default Description
skip integer No 0 Pagination offset
limit integer No 100 Number of sites to return

Headers

Header Value Required
Authorization Bearer Yes

Example request

curl -X GET "https://api.darukaa.com/api/v1/projects/8dc-xxxx-xxxx-xxxx-158b2/sites" \
  -H "Authorization: Bearer <your_access_token>" \
  -H "Content-Type: application/json" \
  -d '{"skip": 0, "limit": 100}'
project_id = "8dc6-xxxx-xxxx-xxxx-58b2"
response = requests.get(
    f"https://api.darukaa.com/api/v1/projects/{project_id}/sites",
    headers=headers,
    json={"skip": 0, "limit": 100}
)
sites = response.json()
const projectId = "8dc6-xxxx-xxxx-xxxx-58b2";
const response = await fetch(`https://api.darukaa.com/api/v1/projects/${projectId}/sites`, {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${accessToken}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ skip: 0, limit: 100 })
});

const sites = await response.json();

Status codes

Code Description
200 Success - Sites retrieved successfully
401 Unauthorized - Invalid or missing access token
404 Not Found - Project with the specified ID does not exist

Response body

Success (200)

[
  {
    "site_name": "Site A - North Section",
    "type": "Restoration",
    "area": 250.75,
    "site_id": "3266-xxxx-xxxx-xxxx-5e8b2",
    "project_id": "aac7-xxxx-xxxx-xxxx-f0b9",
    "shapefile_gcs_path": "gs://bucket/projects/project_id/sites/site_id/shapefile.shp",
    "created_at": "2025-12-04T13:30:00Z",
    "updated_at": "2025-12-04T13:30:00Z",
    "boundary": "POLYGON((88.1234 22.5678, 88.1235 22.5679, ...))",
    "centroid_wkt": "POINT(88.1234 22.5678)",
    "carbon_analysis_status": "Completed",
    "climate_analysis_status": "Completed",
    "bio_analysis_status": "In Progress",
    "carbon_analysis_enabled": true,
    "bio_analysis_enabled": true,
    "climate_analysis_enabled": true,
    "satellite_imagery": "gs://bucket/satellite/imagery.tif"
  }
]

Failure (401)

{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or missing access token",
    "details": "Please provide a valid Bearer token in the Authorization header",
    "request_id": "req_abc123",
    "timestamp": "2025-12-04T13:30:00Z"
  }
}

Failure (404)

{
  "error": {
    "code": "PROJECT_NOT_FOUND",
    "message": "Project not found",
    "details": "No project exists with the ID: 8dc-xxxx-xxxx-xxxx-8b2",
    "request_id": "req_abc123",
    "timestamp": "2025-12-04T13:30:00Z"
  }
}
Field Type Description
site_name string Name of the site under the project
type string Type/category of site (e.g., Restoration, Monitoring)
area number Area covered under site
site_id UUID string Unique identifier for the site
project_id UUID string Corresponding project ID
shapefile_gcs_path string/null GCS location of shapefile if uploaded
created_at datetime Timestamp when site was created
updated_at datetime Last modification timestamp
boundary string/null Polygon boundary in WKT / GeoJSON format
centroid_wkt string/null Geographic centroid point of the site
carbon_analysis_status string Status of carbon model run
climate_analysis_status string Status of climate model run
bio_analysis_status string Status of biodiversity analysis
carbon_analysis_enabled boolean Carbon engine enabled for this site
bio_analysis_enabled boolean Biodiversity engine enabled for this site
climate_analysis_enabled boolean Climate engine enabled for this site
satellite_imagery string/null Satellite imagery reference if available

Get Site

Retrieves detailed information about a specific site.

HTTP request

GET https://api.darukaa.com/api/v1/sites/{site_id}

Path parameters

Parameter Type Required Description
site_id string (UUID) Yes Unique Site ID for lookup

Headers

Header Value Required
Authorization Bearer Yes

Example request

curl -X GET "https://api.darukaa.com/api/v1/sites/3fa-xxxx-xxxx-xxxx-fa6" \
  -H "Authorization: Bearer <your_access_token>"
site_id = "3fa-xxxx-xxxx-xxxx-afa6"
response = requests.get(
    f"https://api.darukaa.com/api/v1/sites/{site_id}",
    headers=headers
)
site_details = response.json()
const siteId = "3fa8-xxxx-xxxx-xxxx-afa6";
const response = await fetch(`https://api.darukaa.com/api/v1/sites/${siteId}`, {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${accessToken}`
  }
});

const siteDetails = await response.json();

Status codes

Code Description
200 Success - Site details retrieved successfully
401 Unauthorized - Invalid or missing access token
404 Not Found - Site with the specified ID does not exist

Response body

Success (200)

{
  "site_name": "Site A - North Section",
  "type": "Restoration",
  "area": 250.75,
  "site_id": "3266-xxxx-xxxx-xxxx-e8b2",
  "project_id": "aac-xxxx-xxxx-xxxx-f0b9",
  "shapefile_gcs_path": "gs://bucket/projects/project_id/sites/site_id/shapefile.shp",
  "created_at": "2025-12-04T13:30:00Z",
  "updated_at": "2025-12-04T13:30:00Z",
  "boundary": "POLYGON((88.1234 22.5678, 88.1235 22.5679, ...))",
  "centroid_wkt": "POINT(88.1234 22.5678)",
  "carbon_analysis_status": "Completed",
  "climate_analysis_status": "Completed",
  "bio_analysis_status": "In Progress",
  "carbon_analysis_enabled": true,
  "bio_analysis_enabled": true,
  "climate_analysis_enabled": true,
  "satellite_imagery": "gs://bucket/satellite/imagery.tif"
}

Failure (401)

{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or missing access token",
    "details": "Please provide a valid Bearer token in the Authorization header",
    "request_id": "req_abc123",
    "timestamp": "2025-12-04T13:30:00Z"
  }
}

Failure (404)

{
  "error": {
    "code": "SITE_NOT_FOUND",
    "message": "Site not found",
    "details": "No site exists with the ID: 3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "request_id": "req_abc123",
    "timestamp": "2025-12-04T13:30:00Z"
  }
}
Field Type Description
site_name string Name of the site under the project
type string Type/category of site (e.g., Restoration, Monitoring)
area number Area covered under site
site_id UUID string Unique identifier for the site
project_id UUID string Corresponding project ID
shapefile_gcs_path string/null GCS location of shapefile if uploaded
created_at datetime Timestamp when site was created
updated_at datetime Last modification timestamp
boundary string/null Polygon boundary in WKT / GeoJSON format
centroid_wkt string/null Geographic centroid point of the site
carbon_analysis_status string Status of carbon model run
climate_analysis_status string Status of climate model run
bio_analysis_status string Status of biodiversity analysis
carbon_analysis_enabled boolean Carbon engine enabled for this site
bio_analysis_enabled boolean Biodiversity engine enabled for this site
climate_analysis_enabled boolean Climate engine enabled for this site
satellite_imagery string/null Satellite imagery reference if available