Bindler Cbam Cost API
The Cbam Cost API from Bindler — 1 operation(s) for cbam cost.
The Cbam Cost API from Bindler — 1 operation(s) for cbam cost.
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/bindler-co:bindler-co-cbam-cost-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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: Bindler Cbam Cost API
version: 1.0.0
description: 'Three regulation calculators as JSON endpoints: EU AI Act classification (Regulation (EU) 2024/1689), CBAM certificate cost 2026 to 2034 (Regulation (EU) 2023/956) and the UAE Corporate Tax computation (Federal Decree-Law No. 47 of 2022). Same code as the free browser tools at bindler.co, generated from them at every build. Free tier: 25 calls a day per IP, no account. Unlimited: $19 a month key from Gumroad. Facts only, the instrument cited in every response; not legal or tax advice. Docs: https://bindler.co/api/'
contact:
name: Bindler
url: https://bindler.co/api/
email: bindler540@gmail.com
servers:
- url: https://bindler.co/api/v1
security:
- ApiKey: []
- ApiKeyQuery: []
- {}
tags:
- name: Cbam Cost
paths:
/cbam-cost:
get:
summary: CBAM certificate cost, query parameters
operationId: cbamCostGet
description: The same calculation as POST, with the basket passed as a JSON string in the lines query parameter.
parameters:
- name: year
in: query
required: false
description: Year of import, 2026 to 2034. It sets the CBAM factor, the complement of the free allocation share (Directive (EU) 2023/959, Article 10a(1a)). Default 2026.
schema:
type: integer
minimum: 2026
maximum: 2034
- name: price
in: query
required: false
description: certificate price, EUR per tCO2e
schema:
type: number
- name: lines
in: query
required: true
description: The import basket as a JSON array in a single string, the same objects the POST body takes, url-encoded. The endpoint parses the string; anything that does not parse to a non-empty array returns 400.
schema:
type: string
responses:
'200':
description: 'The priced basket: totals, certificates, cost, the per-line detail, the same basket in every year, basis and docs.'
content:
application/json:
schema:
type: object
description: The priced basket. Every call returns all fourteen keys.
properties:
year:
type: integer
description: The year the basket was priced in, as used, default 2026.
certificate_price_eur:
type: number
description: The certificate price used, in EUR per tCO2e, as sent, default zero.
cbam_factor:
type: number
description: The CBAM factor applied for that year, the complement of the free allocation share.
tonnes:
type: number
description: Total tonnes of goods across the basket, tested against the 50 tonne threshold.
embedded_tco2e:
type: number
description: Total embedded emissions of the basket before the CBAM factor.
chargeable_tco2e:
type: number
description: Total emissions after the CBAM factor, the chargeable quantity.
certificates:
type: integer
description: Certificates to surrender, the chargeable tonnes rounded up to the next whole certificate.
cost_eur:
type: number
description: Total cost of the basket in EUR at the certificate price given.
cost_per_tonne_eur:
type: number
description: Cost divided by tonnes of goods, zero when the basket has no tonnage.
above_50t_threshold:
type: boolean
description: Whether total tonnes exceed 50, the single mass threshold below which there is no CBAM obligation.
lines:
type: array
description: One entry per goods line sent, in order, at most the first 200.
items:
type: object
description: One priced goods line, in the order it was sent.
properties:
sector:
type: string
description: The Annex I goods group used for the line, after matching; an unrecognised sector falls back to Iron and steel.
enum:
- Cement
- Fertilisers
- Iron and steel
- Aluminium
- Hydrogen
- Electricity
cn:
type: string
description: The CN code as sent, echoed back unchanged.
origin:
type: string
description: The country of origin as sent, echoed back unchanged.
tonnes:
type: number
description: Quantity of goods on this line, in tonnes, as sent.
indirect_counted:
type: boolean
description: Whether indirect emissions count for this sector, true for Cement and Fertilisers only, per Annex II.
embedded_tco2e:
type: number
description: Total embedded emissions of the line, tonnes multiplied by embedded_per_tonne.
chargeable_tco2e:
type: number
description: Embedded emissions of the line after the CBAM factor for the year is applied.
net_price_eur:
type: number
description: Certificate price less any carbon price already paid in the country of origin, floored at zero.
cost_eur:
type: number
description: Cost of the line, chargeable_tco2e multiplied by net_price_eur.
same_basket_every_year:
type: array
description: The same basket priced in each year from 2026 to 2034 at the same certificate price.
items:
type: object
description: The same basket priced in one of the nine years.
properties:
year:
type: integer
description: The year of import, 2026 through 2034.
cbam_factor:
type: number
description: The CBAM factor for that year, 0.025 in 2026 rising to 1.0 in 2034.
chargeable_tco2e:
type: number
description: Basket emissions after that year's factor.
certificates:
type: integer
description: Certificates to surrender that year, the chargeable tonnes rounded up.
cost_eur:
type: number
description: Basket cost in that year at the same certificate price.
basis:
type: string
description: The instruments the calculation rests on, with the note that it is not advice.
docs:
type: string
description: Link to the documentation section for this endpoint, https://bindler.co/api/#cbam-cost
'400':
description: 'Bad request: the body was not valid JSON, the year is outside 2026 to 2034, or lines is missing, not an array or empty. The sector list is returned with the error in the last case.'
content:
application/json:
schema:
type: object
description: Error body returned for an unusable request.
properties:
error:
type: string
description: 'What was wrong: send JSON, the year range, or the shape lines must take.'
sectors:
type: array
description: The six accepted sector names. Present only on the lines error.
items:
type: string
'401':
description: 'Missing or invalid key: a value shaped like a Gumroad licence key was sent in x-api-key or ?key= and Gumroad did not verify it (refunded, charged back or cancelled purchases count as invalid).'
content:
application/json:
schema:
type: object
description: Error body returned when the presented licence key does not verify.
properties:
error:
type: string
description: Always the text invalid key.
enum:
- invalid key
docs:
type: string
description: Link to the API documentation page, https://bindler.co/api/
'429':
description: 'Free tier exhausted: more than 25 active minutes of calls from this IP in the current UTC day, and no verified key was sent. Send a key to remove the limit.'
headers:
x-ratelimit-limit:
description: The free tier ceiling, the string 25.
schema:
type: string
x-ratelimit-remaining:
description: Remaining free calls, the string 0 on this response.
schema:
type: string
content:
application/json:
schema:
type: object
description: Error body returned when the free per-IP allowance is spent.
properties:
error:
type: string
description: Explains the free tier ceiling and how to send a key.
docs:
type: string
description: Link to the API documentation page, https://bindler.co/api/
tags:
- Cbam Cost
post:
summary: CBAM certificate cost for a basket of goods, 2026 to 2034
operationId: cbamCost
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
year:
description: Year of import, 2026 to 2034. It sets the CBAM factor, the complement of the free allocation share (Directive (EU) 2023/959, Article 10a(1a)). Default 2026.
type: integer
minimum: 2026
maximum: 2034
price:
type: number
description: certificate price, EUR per tCO2e
lines:
description: 'The import basket: one object per goods line, at least one and at most 200.'
type: array
items:
type: object
properties:
sector:
description: Annex I goods group for the line. Cement and Fertilisers count indirect emissions as well as direct; Iron and steel, Aluminium and Hydrogen count direct emissions only (Annex II); Electricity is priced on its own generation emissions. Default Iron and steel.
type: string
enum:
- Cement
- Fertilisers
- Iron and steel
- Aluminium
- Hydrogen
- Electricity
cn:
description: CN code of the goods, such as 7208. Returned on the line; it does not change the calculation.
type: string
origin:
description: Country of origin of the goods, such as TR. Returned on the line; it does not change the calculation.
type: string
tonnes:
description: Quantity imported on this line, in tonnes of goods. The basket total is tested against the 50 tonne single mass threshold, below which there is no CBAM obligation.
type: number
embedded_per_tonne:
description: Embedded emissions in tCO2e per tonne of goods, direct plus indirect where Annex II counts indirect. Use the producer's verified actual values, or the Commission default for the CN code and country.
type: number
origin_carbon_price_eur_per_t:
description: Carbon price already paid in the country of origin, EUR per tonne of CO2e, netted off the certificate price for this line and floored at zero (Article 9).
type: number
minItems: 1
maxItems: 200
example:
year: 2026
price: 80
lines:
- sector: Iron and steel
cn: '7208'
origin: TR
tonnes: 1000
embedded_per_tonne: 1.9
origin_carbon_price_eur_per_t: 0
responses:
'200':
description: 'The priced basket: totals, certificates, cost, the per-line detail, the same basket in every year, basis and docs.'
content:
application/json:
schema:
type: object
description: The priced basket. Every call returns all fourteen keys.
properties:
year:
type: integer
description: The year the basket was priced in, as used, default 2026.
certificate_price_eur:
type: number
description: The certificate price used, in EUR per tCO2e, as sent, default zero.
cbam_factor:
type: number
description: The CBAM factor applied for that year, the complement of the free allocation share.
tonnes:
type: number
description: Total tonnes of goods across the basket, tested against the 50 tonne threshold.
embedded_tco2e:
type: number
description: Total embedded emissions of the basket before the CBAM factor.
chargeable_tco2e:
type: number
description: Total emissions after the CBAM factor, the chargeable quantity.
certificates:
type: integer
description: Certificates to surrender, the chargeable tonnes rounded up to the next whole certificate.
cost_eur:
type: number
description: Total cost of the basket in EUR at the certificate price given.
cost_per_tonne_eur:
type: number
description: Cost divided by tonnes of goods, zero when the basket has no tonnage.
above_50t_threshold:
type: boolean
description: Whether total tonnes exceed 50, the single mass threshold below which there is no CBAM obligation.
lines:
type: array
description: One entry per goods line sent, in order, at most the first 200.
items:
type: object
description: One priced goods line, in the order it was sent.
properties:
sector:
type: string
description: The Annex I goods group used for the line, after matching; an unrecognised sector falls back to Iron and steel.
enum:
- Cement
- Fertilisers
- Iron and steel
- Aluminium
- Hydrogen
- Electricity
cn:
type: string
description: The CN code as sent, echoed back unchanged.
origin:
type: string
description: The country of origin as sent, echoed back unchanged.
tonnes:
type: number
description: Quantity of goods on this line, in tonnes, as sent.
indirect_counted:
type: boolean
description: Whether indirect emissions count for this sector, true for Cement and Fertilisers only, per Annex II.
embedded_tco2e:
type: number
description: Total embedded emissions of the line, tonnes multiplied by embedded_per_tonne.
chargeable_tco2e:
type: number
description: Embedded emissions of the line after the CBAM factor for the year is applied.
net_price_eur:
type: number
description: Certificate price less any carbon price already paid in the country of origin, floored at zero.
cost_eur:
type: number
description: Cost of the line, chargeable_tco2e multiplied by net_price_eur.
same_basket_every_year:
type: array
description: The same basket priced in each year from 2026 to 2034 at the same certificate price.
items:
type: object
description: The same basket priced in one of the nine years.
properties:
year:
type: integer
description: The year of import, 2026 through 2034.
cbam_factor:
type: number
description: The CBAM factor for that year, 0.025 in 2026 rising to 1.0 in 2034.
chargeable_tco2e:
type: number
description: Basket emissions after that year's factor.
certificates:
type: integer
description: Certificates to surrender that year, the chargeable tonnes rounded up.
cost_eur:
type: number
description: Basket cost in that year at the same certificate price.
basis:
type: string
description: The instruments the calculation rests on, with the note that it is not advice.
docs:
type: string
description: Link to the documentation section for this endpoint, https://bindler.co/api/#cbam-cost
'400':
description: 'Bad request: the body was not valid JSON, the year is outside 2026 to 2034, or lines is missing, not an array or empty. The sector list is returned with the error in the last case.'
content:
application/json:
schema:
type: object
description: Error body returned for an unusable request.
properties:
error:
type: string
description: 'What was wrong: send JSON, the year range, or the shape lines must take.'
sectors:
type: array
description: The six accepted sector names. Present only on the lines error.
items:
type: string
'401':
description: 'Missing or invalid key: a value shaped like a Gumroad licence key was sent in x-api-key or ?key= and Gumroad did not verify it (refunded, charged back or cancelled purchases count as invalid).'
content:
application/json:
schema:
type: object
description: Error body returned when the presented licence key does not verify.
properties:
error:
type: string
description: Always the text invalid key.
enum:
- invalid key
docs:
type: string
description: Link to the API documentation page, https://bindler.co/api/
'429':
description: 'Free tier exhausted: more than 25 active minutes of calls from this IP in the current UTC day, and no verified key was sent. Send a key to remove the limit.'
headers:
x-ratelimit-limit:
description: The free tier ceiling, the string 25.
schema:
type: string
x-ratelimit-remaining:
description: Remaining free calls, the string 0 on this response.
schema:
type: string
content:
application/json:
schema:
type: object
description: Error body returned when the free per-IP allowance is spent.
properties:
error:
type: string
description: Explains the free tier ceiling and how to send a key.
docs:
type: string
description: Link to the API documentation page, https://bindler.co/api/
tags:
- Cbam Cost
options:
summary: CORS preflight for the CBAM endpoint
operationId: cbamCostOptions
description: Answers the browser preflight with the allowed origin, methods and headers, and no body.
security: []
responses:
'204':
description: CORS preflight answered with no body. The endpoint replies to OPTIONS before any key check or rate limiting.
headers:
access-control-allow-origin:
description: Always the wildcard star, any origin may call.
schema:
type: string
access-control-allow-methods:
description: The methods allowed, the string GET, POST, OPTIONS.
schema:
type: string
access-control-allow-headers:
description: The headers allowed, content-type and x-api-key.
schema:
type: string
tags:
- Cbam Cost
components:
securitySchemes:
ApiKey:
type: apiKey
in: header
name: x-api-key
description: Gumroad licence key for the product bindler-api, sent in the x-api-key header. Keys that do not match the four-group licence pattern are ignored and the call falls through to the free tier.
ApiKeyQuery:
type: apiKey
in: query
name: key
description: The same Gumroad licence key passed as a query parameter instead of the header, accepted by every endpoint.