Download OpenAPI specification:Download
The BeZero Ratings API provides information about project ratings in a standard JSON response. The API is authenticated using OAuth 2.0.
With our API integration technology, participants can display the BeZero Carbon Rating and rating summary on their platform. Whether an exchange, a data provider, a marketplace or a broker, with our API solution you can provide end users with BeZero Carbon ratings.
The BeZero Carbon Rating represents BeZero’s opinion on the likelihood that a given credit achieves a tonne of CO₂e avoided or removed from the atmosphere. With ‘AAA’ representing the highest likelihood, and ‘D’ representing the lowest, the rating scale is fully aligned with financial market standards, making it easy to interpret. On the API, the rating will be returned on an 8-point scale from AAA to D.
BeZero Carbon ratings can be put ‘On Watch’ if new information comes to light. A process of review begins and at the end of this process different outcomes are possible:
Simultaneously, the rating will be ‘removed from watch’. On the API, the watch status will be returned as a boolean True/False. The watch status needs to be shown next to the rating if that project is on watch and until that watch status is removed. The API will provide the updated rating along with the watch status.
BeZero Carbon Ratings are assigned only to projects meeting a predefined eligibility criteria. These include documented tests on additionality, formal audit processes and continued public availability of all relevant information. BeZero Carbon Ratings may be withdrawn in case there is a material impairment in the project’s ability to meet any of the eligibility criteria including partial or complete withdrawal or unavailability of relevant information in public domain. BeZero may also withdraw its ratings in case BeZero Carbon becomes aware of any risks with respect to the ownership of the project and/or usage rights. All rating withdrawals are published on the BeZero API. For ratings that have been withdrawn, the API will return a Withdrawn status.
The BeZero rating applies to credits within the vintage range returned by the API as the Vintage Start and End date.
For more insight into the BeZero Carbon Rating methodology please refer to https://bezerocarbon.com/ratings/resources
A token can be acquired using the standard OAuth 2.0 authorisation flow from the BeZero Token Server using the access keys we provide. BeZero will provide a Production set of Client ID and Client Secrets that will allow you to authenticate with the Ratings API.
This API uses OAuth 2 with Client Credentials
clientCredentials https://login.bezerocarbonmarkets.com/oauth2/tokenbcm/v3.ratings:list - list ratings
bcm/v3.ratings:details - read rating details
bcm/v3.ratings:riskFactors - read rating risk factors
bcm/v3.projects:list - list projects
The API is rate limited to 1000 requests per minute, any more requests than this will result in a 429 Too Many Requests, it allows retry after 1 minute.
Clients can opt into changes by attaching a Accept-API-Version header.
If the header is omitted, the API defaults to 3.0 behaviour. Currently supported values are 3.0 and 3.1.
Requests with an unsupported Accept-API-Version value will be rejected with 400 Bad Request. Responses include the resolved Accept-API-Version header so clients can confirm which compatibility version was applied.
3.0 will exclude all but the first published rating for a project. 3.1 will return multiple ratings for a single project, if any have been published.
The ratings endpoint returns a list of BeZero ratings. Each page returns 100 ratings before it is paginated and the list is filterable by the dataLastUpdatedAt timestamp. Change to any of the data returned by ratings list or ratings details will update the dataLastUpdatedAt timestamp. You can filter the list using changedSince to only return any changes that may have occurred since the last query, to minimise API calls. queryLatestChanges is provided at the end of each paginated page to provide a timestamp of when the API was last called. BeZero ratings can change or be put on watch at any time and so polling for updates at least once per day is recommended.
| changedSince | string Example: changedSince=2024-07-10T09:46:11Z optional ISO 8601 datetime string, when provided will filter out ratings where the data has not changed since provided date |
| page | integer Example: page=1 optional pagination value |
| Accept-API-Version | string Enum: "3.0" "3.1" Optional compatibility version. If omitted, the API defaults to |
TOKEN="$(curl https://login.bezerocarbonmarkets.com/oauth2/token -d "grant_type=client_credentials" \ -d "client_id=<CLIENT_ID>" \ -d "client_secret=<CLIENT_SECRET>" \ -d "scope=bcm/v3.ratings:list" | jq -r .access_token)" curl -H"Authorization: Bearer $TOKEN" -H"Accept-API-Version: 3.1" https://api.bezerocarbonmarkets.com/v3/ratings
{- "ratings": [
- {
- "id": "ABC123",
- "projectID": "ABC123",
- "accreditor": "Full Accreditor Name",
- "registryID": "123",
- "vintages": [
- {
- "startDate": "2017-04-28",
- "endDate": "2020-11-30"
}, - {
- "startDate": "2020-12-01",
- "endDate": "2021-11-30"
}
], - "rating": "BB",
- "onRatingsWatch": false,
- "dataLastUpdatedAt": "2024-09-09T10:00:00Z",
- "links": {
- "ratingDetails": "/ratings/ABC123",
- "riskFactors": "/ratings/ABC123/risk-factors"
}
}, - {
- "id": "ABC123-POST-JJK",
- "projectID": "ABC123",
- "accreditor": "Full Accreditor Name",
- "registryID": "123",
- "vintages": [
- {
- "startDate": "2021-12-01",
- "endDate": "2022-11-30"
}
], - "rating": "AA",
- "onRatingsWatch": true,
- "dataLastUpdatedAt": "2024-09-08T09:00:00Z",
- "links": {
- "ratingDetails": "/ratings/ABC123-POST-JJK",
- "riskFactors": "/ratings/ABC123-POST-JJK/risk-factors"
}
}, - {
- "id": "DEF123",
- "projectID": "DEF123",
- "accreditor": "Full Accreditor Name",
- "registryID": "DEF123",
- "vintages": [
- {
- "startDate": "2010-01-01",
- "endDate": "2015-12-31"
}
], - "rating": "A",
- "onRatingsWatch": false,
- "dataLastUpdatedAt": "2024-09-07T10:00:00Z",
- "links": {
- "ratingDetails": "/ratings/DEF123",
- "riskFactors": "/ratings/DEF123/risk-factors"
}
}, - {
- "id": "GH1000000100",
- "projectID": "GH1000000100",
- "accreditor": "Full Accreditor Name",
- "registryID": "GH_100000_100",
- "vintages": [
- {
- "startDate": "2012-01-01",
- "endDate": "2020-12-31"
}
], - "rating": "AA",
- "onRatingsWatch": false,
- "dataLastUpdatedAt": "2024-09-07T10:00:00Z",
- "links": {
- "ratingDetails": "/ratings/GH1000000100",
- "riskFactors": "/ratings/GH1000000100/risk-factors"
}
}
], - "links": {
- "queryLatestChanges": "/ratings?changedSince=2024-09-06T09:00:00Z",
- "nextPage": "/ratings?page=2",
- "prevPage": "/ratings?page=1"
}
}The rating details endpoint returns additional information about a BeZero rating. For users interested in the textual summary analysis for a specific BeZero rating, this can be found by following the link in the ratings list response or by providing the project ID in the GET request. Summary analysis and ratings are updated together so users are recommended to get the rating and rating detail when requesting updates, otherwise the rating and rating summary will be out of sync.
| ratingID required | string The BeZero Carbon unique identifier for this rating |
| Accept-API-Version | string Enum: "3.0" "3.1" Optional compatibility version. If omitted, the API defaults to |
{- "id": "string",
- "summaryAnalysis": "string"
}The risk factors endpoint is a Premium endpoint that returns a risk factor score for each BeZero rated project. The risk factors can have a score of aaa, aa, a, bbb, bb, b, c, d. Ratings, risk factors and summary analysis are always updated together so users are recommended to get the rating, rating detail and risk factors when requesting updates. Otherwise rating, rating summary and risk factor scores will be out of sync.
| ratingID required | string The BeZero Carbon unique identifier for this rating |
| Accept-API-Version | string Enum: "3.0" "3.1" Optional compatibility version. If omitted, the API defaults to |
{- "id": "ABC123",
- "additionality": {
- "score": "aa"
}, - "carbonAccounting": {
- "score": "c"
}, - "permanence": {
- "score": "bbb"
}
}This endpoint returns projects for which BeZero has a rating. It is sorted by dataLastUpdatedAt and paginated into 100 projects. BeZero can add new ratings at any time so BeZero recommends calling this endpoint at the same cadence as the ratings list, using the changedSince functionality to filter for any changes.
| changedSince | string Example: changedSince=2024-07-10T09:46:11Z optional ISO 8601 datetime string, when provided will filter out ratings where the data has not changed since provided date |
| page | integer Example: page=1 optional pagination value |
| Accept-API-Version | string Enum: "3.0" "3.1" Optional compatibility version. If omitted, the API defaults to |
{- "projects": [
- {
- "id": "ABC123",
- "accreditor": "Full Accreditor Name",
- "registryID": "123",
- "name": "Full Project Name",
- "sectorGroup": "Nature-Based Solutions",
- "sector": "Blue Carbon",
- "subSector": "Mangroves",
- "location": "MMR",
- "dataLastUpdatedAt": "2024-09-08T09:00:00Z"
}, - {
- "id": "DEF123",
- "accreditor": "Full Accreditor Name",
- "registryID": "DEF123",
- "name": "Full Project Name",
- "sectorGroup": "Nature-Based Solutions",
- "sector": "Soil Carbon & Agriculture",
- "subSector": "Peatlands",
- "location": "IDN",
- "dataLastUpdatedAt": "2024-09-07T10:00:00Z"
}, - {
- "id": "GH1000000100",
- "accreditor": "Full Accreditor Name",
- "registryID": "GH_1000000_100",
- "name": "Full Project Name",
- "sectorGroup": "Nature-Based Solutions",
- "sector": "Forestry",
- "subSector": "Afforestation, Reforestation & Restoration",
- "location": "BRA",
- "dataLastUpdatedAt": "2024-09-07T10:00:00Z"
}
], - "links": {
- "queryLatestChanges": "/projects?changedSince=2024-09-06T09:00:00Z",
- "nextPage": "/projects?page=2",
- "prevPage": "/projects?page=1"
}
}