curl --request GET \
--url https://www.closient.com/sustainability/api/v1/products/{gtin}/sustainability \
--header 'X-API-Key: <api-key>'import requests
url = "https://www.closient.com/sustainability/api/v1/products/{gtin}/sustainability"
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://www.closient.com/sustainability/api/v1/products/{gtin}/sustainability', 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://www.closient.com/sustainability/api/v1/products/{gtin}/sustainability",
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://www.closient.com/sustainability/api/v1/products/{gtin}/sustainability"
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://www.closient.com/sustainability/api/v1/products/{gtin}/sustainability")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.closient.com/sustainability/api/v1/products/{gtin}/sustainability")
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{
"packaging": [
{
"id": "<string>",
"description": "<string>",
"is_recyclable": true,
"is_reusable": true,
"weight_grams": 1,
"recycled_content_percentage": 50,
"recyclability": {
"assessed_by": "RecycleSmart Labs",
"assessment_date": "2025-03-01",
"assessment_standard": "ISO_14021",
"conditions": "Rinse and remove cap before recycling.",
"description": "PET plastic, widely recyclable.",
"recyclability_code": "PET-1",
"recyclability_percentage": 95,
"recycling_instructions": "Place in curbside recycling bin.",
"recycling_instructions_url": "https://example.com/recycle",
"recycling_stream": "PLASTIC_PET",
"status": "WIDELY_RECYCLABLE",
"valid_regions": "US, CA, EU",
"valid_until": "2026-03-01"
}
}
],
"components": [
{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"quantity": 1,
"is_separable": true,
"separation_instructions": "<string>",
"weight_grams": 1
}
],
"end_of_life_instructions": [
{
"id": "<string>",
"description": "<string>",
"valid_regions": "<string>",
"priority": 1,
"collection_url": ""
}
],
"environmental_impacts": [
{
"id": "<string>",
"score_value": 123,
"unit": "<string>",
"methodology_reference": "<string>",
"notes": "<string>",
"assessment_date": "2023-12-25"
}
],
"circularity": {
"assessment_date": "2025-06-01",
"durability_score": 8,
"methodology": "EU Circular Economy Monitoring Framework",
"overall_score": 7.5,
"recyclability_score": 9,
"repairability_score": 6,
"reusability_score": 7
},
"recyclability": {
"assessed_by": "RecycleSmart Labs",
"assessment_date": "2025-03-01",
"assessment_standard": "ISO_14021",
"conditions": "Rinse and remove cap before recycling.",
"description": "PET plastic, widely recyclable.",
"recyclability_code": "PET-1",
"recyclability_percentage": 95,
"recycling_instructions": "Place in curbside recycling bin.",
"recycling_instructions_url": "https://example.com/recycle",
"recycling_stream": "PLASTIC_PET",
"status": "WIDELY_RECYCLABLE",
"valid_regions": "US, CA, EU",
"valid_until": "2026-03-01"
}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error_code": "<string>",
"timestamp": "<string>",
"retryable": false,
"retry_after": 123,
"owner_action_required": true,
"details": "<unknown>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error_code": "<string>",
"timestamp": "<string>",
"retryable": false,
"retry_after": 123,
"owner_action_required": true,
"details": "<unknown>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error_code": "<string>",
"timestamp": "<string>",
"retryable": false,
"retry_after": 123,
"owner_action_required": true,
"details": "<unknown>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error_code": "<string>",
"timestamp": "<string>",
"retryable": false,
"retry_after": 123,
"owner_action_required": true,
"details": "<unknown>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error_code": "<string>",
"timestamp": "<string>",
"retryable": false,
"retry_after": 123,
"owner_action_required": true,
"details": "<unknown>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error_code": "<string>",
"timestamp": "<string>",
"retryable": false,
"retry_after": 123,
"owner_action_required": true,
"details": "<unknown>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error_code": "<string>",
"timestamp": "<string>",
"retryable": false,
"retry_after": 123,
"owner_action_required": true,
"details": "<unknown>"
}Get product sustainability data
Retrieve aggregated sustainability data for a product identified by GTIN: circularity scores, recyclability information, packaging breakdown, major components, end-of-life instructions, and quantified environmental impact assessments.
Empty sections are returned as null (single records) or empty lists; the response shape is stable regardless of how much data is available for the product.
curl --request GET \
--url https://www.closient.com/sustainability/api/v1/products/{gtin}/sustainability \
--header 'X-API-Key: <api-key>'import requests
url = "https://www.closient.com/sustainability/api/v1/products/{gtin}/sustainability"
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://www.closient.com/sustainability/api/v1/products/{gtin}/sustainability', 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://www.closient.com/sustainability/api/v1/products/{gtin}/sustainability",
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://www.closient.com/sustainability/api/v1/products/{gtin}/sustainability"
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://www.closient.com/sustainability/api/v1/products/{gtin}/sustainability")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.closient.com/sustainability/api/v1/products/{gtin}/sustainability")
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{
"packaging": [
{
"id": "<string>",
"description": "<string>",
"is_recyclable": true,
"is_reusable": true,
"weight_grams": 1,
"recycled_content_percentage": 50,
"recyclability": {
"assessed_by": "RecycleSmart Labs",
"assessment_date": "2025-03-01",
"assessment_standard": "ISO_14021",
"conditions": "Rinse and remove cap before recycling.",
"description": "PET plastic, widely recyclable.",
"recyclability_code": "PET-1",
"recyclability_percentage": 95,
"recycling_instructions": "Place in curbside recycling bin.",
"recycling_instructions_url": "https://example.com/recycle",
"recycling_stream": "PLASTIC_PET",
"status": "WIDELY_RECYCLABLE",
"valid_regions": "US, CA, EU",
"valid_until": "2026-03-01"
}
}
],
"components": [
{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"quantity": 1,
"is_separable": true,
"separation_instructions": "<string>",
"weight_grams": 1
}
],
"end_of_life_instructions": [
{
"id": "<string>",
"description": "<string>",
"valid_regions": "<string>",
"priority": 1,
"collection_url": ""
}
],
"environmental_impacts": [
{
"id": "<string>",
"score_value": 123,
"unit": "<string>",
"methodology_reference": "<string>",
"notes": "<string>",
"assessment_date": "2023-12-25"
}
],
"circularity": {
"assessment_date": "2025-06-01",
"durability_score": 8,
"methodology": "EU Circular Economy Monitoring Framework",
"overall_score": 7.5,
"recyclability_score": 9,
"repairability_score": 6,
"reusability_score": 7
},
"recyclability": {
"assessed_by": "RecycleSmart Labs",
"assessment_date": "2025-03-01",
"assessment_standard": "ISO_14021",
"conditions": "Rinse and remove cap before recycling.",
"description": "PET plastic, widely recyclable.",
"recyclability_code": "PET-1",
"recyclability_percentage": 95,
"recycling_instructions": "Place in curbside recycling bin.",
"recycling_instructions_url": "https://example.com/recycle",
"recycling_stream": "PLASTIC_PET",
"status": "WIDELY_RECYCLABLE",
"valid_regions": "US, CA, EU",
"valid_until": "2026-03-01"
}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error_code": "<string>",
"timestamp": "<string>",
"retryable": false,
"retry_after": 123,
"owner_action_required": true,
"details": "<unknown>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error_code": "<string>",
"timestamp": "<string>",
"retryable": false,
"retry_after": 123,
"owner_action_required": true,
"details": "<unknown>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error_code": "<string>",
"timestamp": "<string>",
"retryable": false,
"retry_after": 123,
"owner_action_required": true,
"details": "<unknown>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error_code": "<string>",
"timestamp": "<string>",
"retryable": false,
"retry_after": 123,
"owner_action_required": true,
"details": "<unknown>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error_code": "<string>",
"timestamp": "<string>",
"retryable": false,
"retry_after": 123,
"owner_action_required": true,
"details": "<unknown>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error_code": "<string>",
"timestamp": "<string>",
"retryable": false,
"retry_after": 123,
"owner_action_required": true,
"details": "<unknown>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error_code": "<string>",
"timestamp": "<string>",
"retryable": false,
"retry_after": 123,
"owner_action_required": true,
"details": "<unknown>"
}Authorizations
Path Parameters
GTIN identifier of the product.
8 - 14^\d{8}$|^\d{12,14}$Response
OK
Aggregated sustainability data for a single product (trade item).
Packaging elements (primary, secondary, tertiary). Empty list if no packaging records exist.
Show child attributes
Show child attributes
Major components of the product, ordered by priority then name. Empty list if no components are recorded.
Show child attributes
Show child attributes
Disposal guidance for the product or its components, ordered by priority then instruction_type. Empty list if none are recorded.
Show child attributes
Show child attributes
Quantified environmental impact assessments (carbon, water, energy, waste, etc.). Empty list if none are recorded.
Show child attributes
Show child attributes
Aggregate circularity scores for the product. null when no circularity assessment has been recorded.
Show child attributes
Show child attributes
{ "assessment_date": "2025-06-01", "durability_score": 8, "methodology": "EU Circular Economy Monitoring Framework", "overall_score": 7.5, "recyclability_score": 9, "repairability_score": 6, "reusability_score": 7 }
Best-of recyclability across packaging components — the component with the highest recyclability_percentage is surfaced here so legacy callers that expected a single per-product recyclability record still get a sensible value. null when no component has a recyclability assessment. For the full per-component breakdown, iterate packaging and read packaging[].recyclability.
Show child attributes
Show child attributes
{ "assessed_by": "RecycleSmart Labs", "assessment_date": "2025-03-01", "assessment_standard": "ISO_14021", "conditions": "Rinse and remove cap before recycling.", "description": "PET plastic, widely recyclable.", "recyclability_code": "PET-1", "recyclability_percentage": 95, "recycling_instructions": "Place in curbside recycling bin.", "recycling_instructions_url": "https://example.com/recycle", "recycling_stream": "PLASTIC_PET", "status": "WIDELY_RECYCLABLE", "valid_regions": "US, CA, EU", "valid_until": "2026-03-01" }