Ecologi API
Ecologi is a climate action platform helping businesses take measurable, credible action for climate and nature.
Our APIs make it easy to embed climate action directly into your product or service—whether that's funding climate and nature projects automatically or reporting impact back to your users in real time.
Ecologi supports businesses across the net-zero journey with transparent, high-quality projects and clear, auditable reporting.
Create an accountImpact projects
With the Ecologi API, you can fund a variety of rigorously vetted climate and nature projects:
Tree planting — Restore degraded land with diverse, ecologically appropriate species.
Local tree planting — Fund reforestation projects in a specific country (UK, US, Australia or Brazil).
Carbon avoidance — Prevent emissions, e.g. rainforest protection, clean energy, or community initiatives.
Carbon removals — Certified projects that permanently remove CO₂e from the atmosphere, such as biochar or enhanced rock weathering.
Habitat restoration — Protect and regenerate ecosystems while supporting communities, e.g. wildflower or seagrass restoration.
All projects meet stringent climate, nature, and social criteria. For each impact type, we assign a nominated project that you support via the API, and we periodically rotate these projects to ensure your funding continues to make the greatest impact. You can explore the full list on our Impact Projects page.
API capabilities
Capability | API | Cost |
|---|---|---|
Fund tree planting | POST Impact API | GBP £0.60 / USD $0.89 / EUR €0.80 / AUD A$1.34 / CAD CA$1.24 per tree |
Fund local tree planting (UK) | POST Impact API | GBP £5.00 / USD $7.38 / EUR €6.30 / AUD A$11.20 / CAD CA$10.30 per tree |
Fund local tree planting (US) | POST Impact API | GBP £1.85 / USD $2.73 / EUR €2.33 / AUD A$4.14 / CAD CA$3.81 per tree |
Fund local tree planting (AU) | POST Impact API | GBP £4.50 / USD $6.64 / EUR €5.76 / AUD A$10.08 / CAD CA$9.27 per tree |
Fund local tree planting (BR) | POST Impact API | GBP £5.45 / USD $8.50 / EUR €7.00 / AUD A$12.00 / CAD CA$11.50 per tree |
Fund carbon avoidance | POST Impact API | GBP £9.45 / USD $12.50 / EUR €11.20 / AUD A$18.90 / CAD CA$16.40 per tonne CO₂e |
Fund carbon removals | POST Impact API | GBP £150.00 / USD $221.50 / EUR €190.50 / AUD A$330.00 / CAD CA$307.50 per tonne CO₂e |
Fund habitat restoration | POST Impact API | GBP £5.00 / USD $7.38 / EUR €6.30 / AUD A$11.20 / CAD CA$10.30 per m² |
Retrieve total impact | GET Reporting API | Free |
Retrieve CO₂e avoided | GET Reporting API | Free |
Retrieve CO₂e removed | GET Reporting API | Free |
Retrieve trees planted | GET Reporting API | Free |
Retrieve habitat restored | GET Reporting API | Free |
Getting started
Create an account at ecologi.com/pay-as-you-go.
Find your API key on the Impact API page.
Send your first request to any of the endpoints below.
Authentication
The Impact API authenticates requests via Bearer tokens. Pass your API key in the Authorization header on every request:
HTTP header
Authorization: Bearer YOUR_API_KEYThe Reporting API is public and does not require authentication.
Billing & purchase behaviour
Monthly billing. Purchases are billed on the 1st of each month. Impact appears in your profile as pending until payment is successful.
Minimum invoice. The minimum billable amount is £3 (or equivalent). Smaller purchases roll over to the next invoice.
Test mode. Pass
"test": truein any purchasing request body to return the expected response without being charged. Test purchases do not appear on your profile.Idempotency keys. Send an
Idempotency-Keyheader with any purchasing request to safely retry without risking duplicate purchases.The “name” field. The optional
namefield on purchasing requests is shown as the “funded by” label on your profile. If your Ecologi profile is public, any personally identifiable information you send here will also be public, so ask for permission before passing customer names, or shield them (e.g. send only a first name). Tree purchases using the same name within 24 hours accumulate onto a single tile.Recipient emails. Pass an optional
recipientEmailon any purchasing request to send a templated notification email to a third party — useful for gifting impact to your customers. This feature is gated per-account: passing the field without the feature enabled returns a 403. Email support@ecologi.com to request access.
Impact API
Purchase trees, local trees, carbon avoidance, carbon removals, or habitat restoration. All endpoints require Bearer-token authentication.
Base URL: https://public.ecologi.com
/impact/treesPurchase trees
Purchase 1 or more trees per request (up to 250,000). The trees are added to your Ecologi forest as "pending" until your next monthly invoice is paid.
Parameters
Name | In | Type | Required | Description |
|---|---|---|---|---|
Authorization | Header | string | Yes | Bearer token containing your API key, e.g. "Bearer YOUR_API_KEY". |
Idempotency-Key | Header | string | No | A random request key that allows you to safely retry requests without accidentally performing the same operation twice. |
number | Body | number (1–250,000) | Yes | The number of trees to purchase. |
name | Body | string | No | A "funded by" name shown alongside the trees in your forest. Requests with the same name within a 24-hour window accumulate on a single tile. |
test | Body | boolean | No | When true, returns the expected response without charging you or showing the purchase on your profile. |
recipientEmail | Body | string (email) | No | Optional. Email address of a third-party recipient to notify about this purchase — useful for gifting impact to your customers. They receive a single templated email with a link to view the impact. Echoed back in the response. Validated as an email; in test mode the field is validated and echoed but no email is sent. This feature is gated per-account: passing it without the feature enabled returns 403. Contact support@ecologi.com to request access. |
Example request
cURL
curl -X POST https://public.ecologi.com/impact/trees \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"number": 3,
"name": "Our valued customer X for order Y"
}'Request body
JSON
{
"number": 3,
"name": "Our valued customer X for order Y"
}Example response
201 Created
{
"amount": 1.80,
"currency": "GBP",
"treeUrl": "https://ecologi.com/test?tree=604a74856345f7001caff578",
"name": "Our valued customer X for order Y",
"projectDetails": [
{
"name": "Forest restoration in Kenya",
"projectUrl": "https://ecologi.com/projects/forest-restoration-in-kenya",
"splitPercentage": 100,
"splitAmountTrees": 3
}
]
}/impact/local-treesPurchase local trees
Purchase trees in a specific country. Each country has its own reforestation project and pricing. Supported countries are UK, US, AU (Australia), and BR (Brazil).
Parameters
Name | In | Type | Required | Description |
|---|---|---|---|---|
Authorization | Header | string | Yes | Bearer token containing your API key, e.g. "Bearer YOUR_API_KEY". |
Idempotency-Key | Header | string | No | A random request key that allows you to safely retry requests without accidentally performing the same operation twice. |
number | Body | integer (≥1) | Yes | The number of local trees to purchase. |
country | Body | "UK" | "US" | "AU" | "BR" | Yes | The country where the trees will be planted. |
name | Body | string | No | A "funded by" name shown alongside the trees in your forest. |
test | Body | boolean | No | When true, returns the expected response without charging you or showing the purchase on your profile. |
recipientEmail | Body | string (email) | No | Optional. Email address of a third-party recipient to notify about this purchase — useful for gifting impact to your customers. They receive a single templated email with a link to view the impact. Echoed back in the response. Validated as an email; in test mode the field is validated and echoed but no email is sent. This feature is gated per-account: passing it without the feature enabled returns 403. Contact support@ecologi.com to request access. |
Example request
cURL
curl -X POST https://public.ecologi.com/impact/local-trees \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"number": 2,
"country": "UK"
}'Request body
JSON
{
"number": 2,
"country": "UK"
}Example response
201 Created
{
"amount": 10.00,
"currency": "GBP",
"treeUrl": "https://ecologi.com/test?tree=604a74856345f7001caff578",
"name": "Our valued customer X for order Y",
"projectDetails": [
{
"name": "Reforestation projects in the UK",
"projectUrl": "https://ecologi.com/projects/reforestation-projects-in-the-uk",
"quantity": 2
}
]
}/impact/carbonPurchase carbon avoidance
Purchase carbon avoidance credits, billed by the kilogram or tonne. The minimum purchase is 1 kg (or 0.001 tonnes). Funding may be split across multiple projects.
Parameters
Name | In | Type | Required | Description |
|---|---|---|---|---|
Authorization | Header | string | Yes | Bearer token containing your API key, e.g. "Bearer YOUR_API_KEY". |
Idempotency-Key | Header | string | No | A random request key that allows you to safely retry requests without accidentally performing the same operation twice. |
number | Body | number | Yes | The number of units to purchase. |
units | Body | "KG" | "Tonnes" | Yes | The unit of purchase (kilograms or tonnes). |
name | Body | string | No | A "funded by" name shown alongside this impact on your Ecologi profile. |
test | Body | boolean | No | When true, returns the expected response without charging you or showing the purchase on your profile. |
recipientEmail | Body | string (email) | No | Optional. Email address of a third-party recipient to notify about this purchase — useful for gifting impact to your customers. They receive a single templated email with a link to view the impact. Echoed back in the response. Validated as an email; in test mode the field is validated and echoed but no email is sent. This feature is gated per-account: passing it without the feature enabled returns 403. Contact support@ecologi.com to request access. |
Example request
cURL
curl -X POST https://public.ecologi.com/impact/carbon \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"number": 10,
"units": "KG"
}'Request body
JSON
{
"number": 10,
"units": "KG"
}Example response
201 Created
{
"number": 10,
"units": "KG",
"numberInTonnes": 0.01,
"amount": 0.09,
"currency": "GBP",
"name": "Our valued customer X for order Y",
"projectDetails": [
{
"name": "Peatland restoration and conservation in Indonesia",
"projectUrl": "https://ecologi.com/projects/peatland-restoration-in-indonesia",
"splitPercentage": 14,
"splitAmountTonnes": 0.0014
},
{
"name": "Converting landfill gas to energy in Northern Turkey",
"projectUrl": "https://ecologi.com/projects/converting-landfill-gas-to-energy-turkey",
"splitPercentage": 86,
"splitAmountTonnes": 0.0086
}
]
}/impact/carbon-removalPurchase carbon removals
Purchase permanent carbon removals such as biochar or enhanced rock weathering. Billed by the kilogram, with a 1 kg minimum.
Parameters
Name | In | Type | Required | Description |
|---|---|---|---|---|
Authorization | Header | string | Yes | Bearer token containing your API key, e.g. "Bearer YOUR_API_KEY". |
Idempotency-Key | Header | string | No | A random request key that allows you to safely retry requests without accidentally performing the same operation twice. |
number | Body | number (≥1) | Yes | The number of kilograms of carbon removal to purchase. |
name | Body | string | No | A "funded by" name shown alongside this impact on your Ecologi profile. |
test | Body | boolean | No | When true, returns the expected response without charging you or showing the purchase on your profile. |
recipientEmail | Body | string (email) | No | Optional. Email address of a third-party recipient to notify about this purchase — useful for gifting impact to your customers. They receive a single templated email with a link to view the impact. Echoed back in the response. Validated as an email; in test mode the field is validated and echoed but no email is sent. This feature is gated per-account: passing it without the feature enabled returns 403. Contact support@ecologi.com to request access. |
Example request
cURL
curl -X POST https://public.ecologi.com/impact/carbon-removal \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"number": 10
}'Request body
JSON
{
"number": 10
}Example response
201 Created
{
"amount": 1.85,
"currency": "GBP",
"tileUrl": "https://ecologi.com/business-name?tileId=abc123",
"name": "Our valued customer X for order Y",
"projectDetails": [
{
"name": "Biochar carbon removal",
"projectUrl": "https://ecologi.com/projects/biochar-carbon-removal",
"quantity": 10
}
]
}/impact/habitat-restorationPurchase habitat restoration
Fund the restoration of natural habitats such as wildflower meadows or seagrass beds. Billed by the square metre with a 0.1 m² minimum and one decimal place of precision.
Parameters
Name | In | Type | Required | Description |
|---|---|---|---|---|
Authorization | Header | string | Yes | Bearer token containing your API key, e.g. "Bearer YOUR_API_KEY". |
Idempotency-Key | Header | string | No | A random request key that allows you to safely retry requests without accidentally performing the same operation twice. |
number | Body | number (≥0.1) | Yes | The number of square metres of habitat to restore. Supports one decimal place (e.g. 5.5). |
name | Body | string | No | A "funded by" name shown alongside this impact on your Ecologi profile. |
test | Body | boolean | No | When true, returns the expected response without charging you or showing the purchase on your profile. |
recipientEmail | Body | string (email) | No | Optional. Email address of a third-party recipient to notify about this purchase — useful for gifting impact to your customers. They receive a single templated email with a link to view the impact. Echoed back in the response. Validated as an email; in test mode the field is validated and echoed but no email is sent. This feature is gated per-account: passing it without the feature enabled returns 403. Contact support@ecologi.com to request access. |
Example request
cURL
curl -X POST https://public.ecologi.com/impact/habitat-restoration \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"number": 5
}'Request body
JSON
{
"number": 5
}Example response
201 Created
{
"amount": 25,
"currency": "GBP",
"tileUrl": "https://ecologi.com/business-name?tileId=xyz789",
"name": "Our valued customer X for order Y",
"projectDetails": [
{
"name": "UK wildflower meadow restoration",
"projectUrl": "https://ecologi.com/projects/uk-wildflower-meadow-restoration",
"quantity": 5
}
]
}Reporting API
Read-only access to your impact totals. No authentication required. Data refreshes every 10 minutes.
Base URL: https://public.ecologi.com
/users/{username}/treesGet total trees funded
Returns the total number of trees this user has funded.
Parameters
Name | In | Type | Required | Description |
|---|---|---|---|---|
username | Path | string | Yes | Your Ecologi username (e.g. "business-name"). |
Example request
cURL
curl https://public.ecologi.com/users/business-name/treesExample response
200 OK
{
"total": 16348,
"pending": 871
}/users/{username}/carbon-offsetGet total tonnes of CO₂e avoided
Returns the total tonnes of CO₂e emissions this user has avoided.
Parameters
Name | In | Type | Required | Description |
|---|---|---|---|---|
username | Path | string | Yes | Your Ecologi username (e.g. "business-name"). |
Example request
cURL
curl https://public.ecologi.com/users/business-name/carbon-offsetExample response
200 OK
{
"total": 187.4,
"pending": 14.9
}/users/{username}/carbon-removalGet total tonnes of CO₂e removed
Returns the total tonnes of CO₂e this user has permanently removed from the atmosphere.
Parameters
Name | In | Type | Required | Description |
|---|---|---|---|---|
username | Path | string | Yes | Your Ecologi username (e.g. "business-name"). |
Example request
cURL
curl https://public.ecologi.com/users/business-name/carbon-removalExample response
200 OK
{
"total": 2.5,
"pending": 0.5
}/users/{username}/habitat-restorationGet total habitat restored
Returns the total area of habitat and ecosystem this user has restored, in square metres.
Parameters
Name | In | Type | Required | Description |
|---|---|---|---|---|
username | Path | string | Yes | Your Ecologi username (e.g. "business-name"). |
Example request
cURL
curl https://public.ecologi.com/users/business-name/habitat-restorationExample response
200 OK
{
"total": 150,
"pending": 25
}/users/{username}/impactGet total combined impact
Returns a combined view of all impact this user has funded — trees, carbon avoidance, carbon removal, and habitat restoration — in a single request.
Parameters
Name | In | Type | Required | Description |
|---|---|---|---|---|
username | Path | string | Yes | Your Ecologi username (e.g. "business-name"). |
Example request
cURL
curl https://public.ecologi.com/users/business-name/impactExample response
200 OK
{
"trees": 16348,
"carbonOffset": 187.4,
"carbonRemoval": 2.5,
"habitatRestoration": 150,
"pending": {
"trees": 871,
"carbonOffset": 14.9,
"carbonRemoval": 0.5,
"habitatRestoration": 25
}
}Need help?
If you have any questions or need help integrating the API, get in touch and we'll be happy to help.
Email support@ecologi.com