BeZero Carbon Ratings API
The Ratings API from BeZero Carbon — 3 operation(s) for ratings.
The Ratings API from BeZero Carbon — 3 operation(s) for ratings.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/bezero-carbon-ratings-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: BeZero Ratings API
version: 3.0.0
x-logo:
url: ./logo.svg
altText: BeZero logo
href: https://bezerocarbon.com
contact:
name: BeZero Engineering
email: engineering@bezerocarbon.com
description: 'BeZero Ratings API Migration Guide v2 to v3
# Introduction to the Ratings API
The BeZero Ratings API provides information about project ratings in a standard JSON response.'
servers:
- url: https://api.bezerocarbonmarkets.com/v3
tags:
- name: Ratings
paths:
/ratings:
get:
description: 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.
summary: List Ratings
operationId: listRatings
parameters:
- $ref: '#/components/parameters/AcceptApiVersion'
- in: query
name: changedSince
description: optional ISO 8601 datetime string, when provided will filter out ratings where the data has not changed since provided date
required: false
schema:
type: string
example: '2024-07-10T09:46:11Z'
- in: query
name: page
description: optional pagination value
required: false
schema:
type: integer
example: 1
security:
- OAuth2:
- bcm/v3.ratings:list
responses:
'200':
description: 'List ratings for projects ordered by dataLastUpdatedAt and projectID.
Note that only the first published rating for each project will be included unless the `Accept-API-Version: 3.1` header is attached.
'
content:
application/json:
schema:
type: object
properties:
ratings:
type: array
items:
type: object
required:
- id
- projectID
- accreditor
- registryID
- vintages
- rating
- onRatingsWatch
- summaryAnalysis
- platformURL
- dataLastUpdatedAt
- links
properties:
id:
type: string
description: The BeZero Carbon unique identifier for this rating
projectID:
type: string
description: The BeZero Carbon unique identifier for the project this rating applies to
accreditor:
type: string
description: The human-readable name of the accreditor used by the project
registryID:
type: string
description: ID of project as described in official project documentation
vintages:
description: Periods of time for the project with which the rating is applicable
type: array
items:
type: object
properties:
startDate:
type: string
description: ISO 8601 date string for the date this rating begins being applicable
endDate:
type: string
description: ISO 8601 date string for the date this rating stops being applicable
rating:
type: string
enum:
- AAA
- AA
- A
- BBB
- BB
- B
- C
- D
- Withdrawn
description: The BeZero Carbon rating for the project.
onRatingsWatch:
type: boolean
description: Indicates whether the rating for this project is on 'rating watch'. If information comes to light which could potentially affect a rating, BeZero could place the rating on 'rating watch'. The new information is then reviewed in detail and an updated rating will be published.
summaryAnalysis:
type: string
description: Summary of rating analysis for this rating.
platformURL:
type: string
description: Fully-qualified URL to view project on BeZero Carbon Platform
dataLastUpdatedAt:
type: string
description: ISO 8601 datetime string for when this rating's data was most recently changed
links:
type: object
required:
- ratingDetails
- riskFactors
properties:
ratingDetails:
type: string
description: Relative URL for fetching additional details about this rating
riskFactors:
type: string
description: Relative URL for fetching this rating's risk factor scores. The risk factors endpoint is a Premium endpoint.
links:
type: object
properties:
queryLatestChanges:
type: string
description: Relative URL for future use when wanting to query all ratings that have changed since this current request was made
nextPage:
type:
- string
- 'null'
description: Paginated page number
prevPage:
type:
- string
- 'null'
description: Paginated page number
example:
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
summaryAnalysis: Example summary analysis for this rating.
platformURL: https://bezerocarbonmarkets.com/projects/ABC123
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
summaryAnalysis: Example summary analysis for this rating.
platformURL: https://bezerocarbonmarkets.com/projects/ABC123
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
summaryAnalysis: Example summary analysis for this rating.
platformURL: https://bezerocarbonmarkets.com/projects/DEF123
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
summaryAnalysis: Example summary analysis for this rating.
platformURL: https://bezerocarbonmarkets.com/projects/GH1000000100
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
'403':
description: unauthorised
'429':
description: rate limit exceeded
headers:
Retry-After:
description: seconds to wait before retrying
schema:
type: integer
x-code-samples:
- lang: shell
label: curl
source: "TOKEN=\"$(curl https://login.bezerocarbonmarkets.com/oauth2/token -d \"grant_type=client_credentials\" \\\n -d \"client_id=<CLIENT_ID>\" \\\n -d \"client_secret=<CLIENT_SECRET>\" \\\n -d \"scope=bcm/v3.ratings:list\" | jq -r .access_token)\"\n\ncurl -H\"Authorization: Bearer $TOKEN\" -H\"Accept-API-Version: 3.1\" https://api.bezerocarbonmarkets.com/v3/ratings\n"
tags:
- Ratings
/ratings/{ratingID}:
get:
deprecated: true
description: Deprecated. The `summaryAnalysis` field is now included in the `GET /ratings` list response, so clients should use the list endpoint instead of this endpoint.
summary: Get Rating Details
operationId: getRatingDetails
parameters:
- $ref: '#/components/parameters/AcceptApiVersion'
- name: ratingID
in: path
description: The BeZero Carbon unique identifier for this rating
schema:
type: string
required: true
security:
- OAuth2:
- bcm/v3.ratings:details
responses:
'200':
description: Additional details of a rating
content:
application/json:
schema:
type: object
required:
- id
- summaryAnalysis
properties:
id:
type: string
description: The BeZero Carbon unique identifier for this rating
summaryAnalysis:
type: string
description: The analysis summary for the rating.
'403':
description: unauthorised
'404':
description: rating not found
'429':
description: rate limit exceeded
headers:
Retry-After:
description: seconds to wait before retrying
schema:
type: integer
tags:
- Ratings
/ratings/{ratingID}/risk-factors:
get:
description: 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.
summary: 'Premium: Risk factors'
operationId: getRiskFactors
parameters:
- $ref: '#/components/parameters/AcceptApiVersion'
- name: ratingID
in: path
description: The BeZero Carbon unique identifier for this rating
schema:
type: string
required: true
security:
- OAuth2:
- bcm/v3.ratings:riskFactors
responses:
'200':
description: Additional details of a rating
content:
application/json:
schema:
type: object
required:
- id
- additionality
- carbonAccounting
- permanence
properties:
id:
type: string
description: The BeZero Carbon unique identifier for this rating
additionality:
type: object
properties:
score:
type: string
enum:
- aaa
- aa
- a
- bbb
- bb
- b
- c
- d
- ''
description: The rating's risk factor score for Additionality
carbonAccounting:
type: object
properties:
score:
type: string
enum:
- aaa
- aa
- a
- bbb
- bb
- b
- c
- d
- ''
description: The rating's risk factor score for Carbon Accounting
permanence:
type: object
properties:
score:
type: string
enum:
- aaa
- aa
- a
- bbb
- bb
- b
- c
- d
- ''
description: The rating's risk factor score for Permanence
example:
id: ABC123
additionality:
score: aa
carbonAccounting:
score: c
permanence:
score: bbb
'403':
description: unauthorised
'404':
description: rating not found
'429':
description: rate limit exceeded
headers:
Retry-After:
description: seconds to wait before retrying
schema:
type: integer
tags:
- Ratings
components:
parameters:
AcceptApiVersion:
in: header
name: Accept-API-Version
required: false
schema:
type: string
enum:
- '3.0'
- '3.1'
description: 'Optional compatibility version. If omitted, the API defaults to `3.0` behavior.
'
securitySchemes:
OAuth2:
type: oauth2
description: This API uses OAuth 2 with Client Credentials
flows:
clientCredentials:
tokenUrl: https://login.bezerocarbonmarkets.com/oauth2/token
scopes:
bcm/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