Programmatic access to your carbon data. Generate CRPs, upload utility bills, and retrieve scope-level emissions from any language or platform.
All requests require a Bearer token in the Authorization header. API keys are prefixed with cp_live_ for production and cp_test_ for sandbox environments.
bashcurl -H "Authorization: Bearer cp_live_your_key_here" \
https://carbonpass.co/api/v1/companyAPI access is available on Business and Partner plans. Generate keys from your account settings.
Rate limits are enforced per API key. When you exceed the limit, requests return 429 Too Many Requests.
Every response includes X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers so you can throttle proactively.
All endpoints use the base URL https://carbonpass.co/api/v1 and return JSON.
/api/v1/companyRetrieve your company profile including total emissions, site count, and current financial year.
bashcurl -H "Authorization: Bearer cp_live_your_key_here" \
https://carbonpass.co/api/v1/companyjson{
"id": "comp_8xK2mNpQ",
"name": "Acme Industries Ltd",
"industry": "Manufacturing",
"financialYear": "2025-2026",
"sites": 3,
"totalEmissions": {
"scope1": 124.8,
"scope2": 312.5,
"scope3": 89.2,
"total": 526.5,
"unit": "tCO2e"
},
"passportStatus": "active",
"crpCount": 4
}/api/v1/emissionsRetrieve a detailed scope breakdown of emissions. Optionally filter by financial year or site.
bashcurl -H "Authorization: Bearer cp_live_your_key_here" \
"https://carbonpass.co/api/v1/emissions?fy=2025-2026&siteId=site_3rZ1"json{
"financialYear": "2025-2026",
"siteId": "site_3rZ1",
"siteName": "Birmingham Warehouse",
"emissions": {
"scope1": { "total": 42.1, "sources": { "naturalGas": 38.4, "fleet": 3.7 } },
"scope2": { "total": 108.3, "sources": { "electricity": 108.3 } },
"scope3": { "total": 21.6, "sources": { "water": 4.2, "waste": 17.4 } }
},
"unit": "tCO2e",
"lastUpdated": "2026-03-15T10:22:00Z"
}/api/v1/billsUpload a utility bill for processing. The file is parsed automatically and emissions are calculated once confirmed.
bashcurl -X POST \
-H "Authorization: Bearer cp_live_your_key_here" \
-F "file=@invoice-mar-2026.pdf" \
-F "type=electricity" \
-F "siteId=site_3rZ1" \
https://carbonpass.co/api/v1/billsjson{
"id": "bill_9vW4kLpR",
"status": "processing",
"type": "electricity",
"siteId": "site_3rZ1",
"fileName": "invoice-mar-2026.pdf",
"uploadedAt": "2026-04-06T14:30:00Z",
"estimatedCompletion": "2026-04-06T14:32:00Z"
}/api/v1/crp/generateTrigger generation of a Carbon Reduction Plan (CRP) for the current financial year. The CRP is published automatically once complete.
bashcurl -X POST \
-H "Authorization: Bearer cp_live_your_key_here" \
-H "Content-Type: application/json" \
https://carbonpass.co/api/v1/crp/generatejson{
"id": "crp_5tN8xBmQ",
"status": "generating",
"financialYear": "2025-2026",
"createdAt": "2026-04-06T14:35:00Z",
"estimatedCompletion": "2026-04-06T14:36:00Z"
}/api/v1/crp/{id}Check the status of a CRP. Once complete, the response includes a download URL for the PDF.
bashcurl -H "Authorization: Bearer cp_live_your_key_here" \
https://carbonpass.co/api/v1/crp/crp_5tN8xBmQjson{
"id": "crp_5tN8xBmQ",
"status": "complete",
"financialYear": "2025-2026",
"totalEmissions": 526.5,
"reductionTarget": 12,
"createdAt": "2026-04-06T14:35:00Z",
"completedAt": "2026-04-06T14:35:48Z",
"downloadUrl": "https://carbonpass.co/api/v1/crp/crp_5tN8xBmQ/download",
"publicUrl": "https://carbonpass.co/crp/crp_5tN8xBmQ"
}All errors return a JSON body with error and message fields.
json{
"error": "bad_request",
"message": "Missing required field \"type\" in bill upload.",
"status": 400
}Configure webhook endpoints in your account settings to receive real-time notifications when key events occur. All payloads are signed with HMAC-SHA256 using your webhook secret.
Example payload:
json{
"event": "crp.generated",
"timestamp": "2026-04-06T14:35:48Z",
"data": {
"id": "crp_5tN8xBmQ",
"financialYear": "2025-2026",
"totalEmissions": 526.5,
"downloadUrl": "https://carbonpass.co/api/v1/crp/crp_5tN8xBmQ/download"
}
}Verify the X-CarbonPass-Signature header by computing an HMAC-SHA256 of the raw request body with your webhook secret. Reject any request where the signature does not match.
Start building with the CarbonPass API today. Generate your first API key and make your first request in minutes.