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 account

Impact projects

With the Ecologi API, you can fund a variety of rigorously vetted climate and nature projects:

  • Tree plantingRestore degraded land with diverse, ecologically appropriate species.

  • Local tree plantingFund reforestation projects in a specific country (UK, US, Australia or Brazil).

  • Carbon avoidancePrevent emissions, e.g. rainforest protection, clean energy, or community initiatives.

  • Carbon removalsCertified projects that permanently remove CO₂e from the atmosphere, such as biochar or enhanced rock weathering.

  • Habitat restorationProtect 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

  1. Create an account at ecologi.com/pay-as-you-go.

  2. Find your API key on the Impact API page.

  3. 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_KEY

The 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": true in 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-Key header with any purchasing request to safely retry without risking duplicate purchases.

  • The “name” field. The optional name field 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 recipientEmail on 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

POST/impact/trees

Purchase 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
    }
  ]
}
POST/impact/local-trees

Purchase 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
    }
  ]
}
POST/impact/carbon

Purchase 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
    }
  ]
}
POST/impact/carbon-removal

Purchase 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
    }
  ]
}
POST/impact/habitat-restoration

Purchase 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

GET/users/{username}/trees

Get 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/trees

Example response

200 OK

{
  "total": 16348,
  "pending": 871
}
GET/users/{username}/carbon-offset

Get 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-offset

Example response

200 OK

{
  "total": 187.4,
  "pending": 14.9
}
GET/users/{username}/carbon-removal

Get 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-removal

Example response

200 OK

{
  "total": 2.5,
  "pending": 0.5
}
GET/users/{username}/habitat-restoration

Get 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-restoration

Example response

200 OK

{
  "total": 150,
  "pending": 25
}
GET/users/{username}/impact

Get 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/impact

Example 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