Puro.earth MyPuro API (1.0.0)
Download OpenAPI specification:Download
Authorization
The MyPuro portal API uses role-based access control (RBAC) to assign and manage rights for users. If a request is made by a user who lacks the needed authorization, the request will instead return either an HTTP 403 Forbidden or HTTP 404 Not Found response.
Not Found responses are reserved for cases where the application cannot determine whether the resource exists or whether the user is not able to interact with it. In endpoints that list multiple resources, only those the user is authorized to view will be returned.
List account holders
Authorizations:
query Parameters
limit | integer [ 1 .. 100 ] How many items to return at one time (max 100) |
offset | integer >= 1 How many items to skip |
Responses
Response samples
- 200
- 400
- 401
- 429
- 500
{- "pagination": {
- "total": 1,
- "offset": 0,
- "limit": 100
}, - "data": [
- {
- "accountHolderId": "f4826423-21b9-4ee0-905d-311e758ee750",
- "name": "Acme Inc.",
- "businessId": "FI12345671",
- "address": {
- "postalCode": "00100",
- "city": "Helsinki",
- "country": "FI",
- "street1": "Long Street",
- "street2": "Long Street 2"
}, - "registeredOn": "2024-12-13T09:53:26.760Z"
}
]
}
Get account holder by id
Authorizations:
path Parameters
accountHolderId required | string <uuid> The id of the account holder to retrieve |
Responses
Response samples
- 200
- 401
- 404
- 429
- 500
{- "accountHolderId": "f4826423-21b9-4ee0-905d-311e758ee750",
- "name": "Acme Inc.",
- "businessId": "FI12345671",
- "address": {
- "postalCode": "00100",
- "city": "Helsinki",
- "country": "FI",
- "street1": "Long Street",
- "street2": "Long Street 2"
}, - "registeredOn": "2024-12-13T09:53:26.760Z"
}
List accounts
Authorizations:
query Parameters
limit | integer [ 1 .. 100 ] How many items to return at one time (max 100) |
offset | integer >= 1 How many items to skip |
Responses
Response samples
- 200
- 401
- 429
- 500
{- "pagination": {
- "total": 1,
- "offset": 0,
- "limit": 100
}, - "data": [
- {
- "accountNumber": "f4826423-21b9-4ee0-905d-311e758ee750",
- "name": "Default Account",
- "parentAccountNumber": "1e54f53b-57cb-4f65-adb1-77b0e1e33ce2",
- "accountHolderId": "f4826423-905d-4ee0-4ee0-311e758ee750",
- "isActive": true
}
]
}
Create a new account
Authorizations:
header Parameters
Idempotency-Key required | string A client-side provided unique key to allow idempotently calling this API endpoint. The value must match the pattern: |
Request Body schema: application/jsonrequired
The data to create the account with.
name required | string [ 1 .. 100 ] characters The name of the account |
parentAccountNumber required | string or null <uuid> The account number of the parent, or |
accountHolderId required | string <uuid> The ID of the account holder this account is part of. |
Responses
Request samples
- Payload
{- "name": "Default Account",
- "parentAccountNumber": "f4826423-6423-4ee0-905d-311e758ee750",
- "accountHolderId": "f4826423-6423-4ee0-905d-311e758ee750"
}
Response samples
- 201
- 401
- 422
- 429
- 500
{- "accountNumber": "f4826423-6423-4ee0-905d-311e758ee750"
}
Get account by id
Authorizations:
path Parameters
accountNumber required | string <uuid> The account number of the account to retrieve |
Responses
Response samples
- 200
- 401
- 404
- 429
- 500
{- "accountNumber": "f4826423-21b9-4ee0-905d-311e758ee750",
- "name": "Default Account",
- "parentAccountNumber": "1e54f53b-57cb-4f65-adb1-77b0e1e33ce2",
- "accountHolderId": "f4826423-905d-4ee0-4ee0-311e758ee750",
- "isActive": true
}
Updates account details
Authorizations:
path Parameters
accountNumber required | string <uuid> The account number of the account to update |
Request Body schema: application/jsonrequired
The data to update the account with.
accountName | string The name of the account |
isActive | string Whether the account is active. Inactive accounts cannot be used for many operations, such as transferring assets. |
Responses
Request samples
- Payload
{- "accountName": "Default Account",
- "isActive": true
}
Response samples
- 200
- 401
- 404
- 429
- 500
{- "accountName": "Default Account",
- "isActive": true
}
List certificates of an account
Authorizations:
path Parameters
accountNumber required | string <uuid> The account number of the account to retrieve the balance for |
query Parameters
limit | integer [ 1 .. 100 ] How many items to return at one time (max 100) |
offset | integer >= 1 How many items to skip |
Responses
Response samples
- 200
- 401
- 429
- 500
{- "pagination": {
- "total": 1,
- "offset": 0,
- "limit": 100
}, - "data": [
- {
- "certificates": "PURO_PR_CORC100+_FI_148003_2024_0052850a-1263-4d3f-af6f-a91288df04e3_1-100",
- "volume": 1,
- "accountNumber": "ca1c0b6b-0b3b-4b3b-8b3b-0b3b0b3b0b3b",
- "methodologyCode": "C03000000",
- "methodologyName": "Biochar",
- "productionFacilityCode": "OC4C00",
- "vintage": "2022",
- "productionStartDate": "2022-01-01T00:00:00.000Z",
- "productionEndDate": "2022-12-12T00:00:00.000Z",
- "creditType": "CORC100+",
- "issueDate": "2022-12-12T00:00:00.000Z"
}
]
}
Get production facility by code
Authorizations:
path Parameters
productionFacilityCode required | string The code of the production facility to retrieve |
Responses
Response samples
- 200
- 401
- 404
- 500
{- "productionFacilityCode": "123ABC",
- "name": "Biochar facility",
- "accountHolderId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "methodologyCode": "C030000000",
- "methodologyName": "Biochar",
- "address": {
- "postalCode": "00100",
- "city": "Helsinki",
- "country": "FI",
- "street1": "Long Street",
- "street2": "Long Street",
- "state": "Ohio"
}, - "geographicalLocation": {
- "latitude": "60.192059",
- "longitude": "24.945831"
}, - "dateOfCommissioning": "2024-10-01",
- "registeredOn": "2024-10-01T00:00:00Z",
- "facilityStatus": "ACTIVE"
}
List production facilities
Authorizations:
query Parameters
limit | integer [ 1 .. 100 ] How many items to return at one time (max 100) |
offset | integer >= 1 How many items to skip |
Responses
Response samples
- 200
- 401
{- "pagination": {
- "total": 1,
- "offset": 0,
- "limit": 100
}, - "data": [
- {
- "productionFacilityCode": "123ABC",
- "name": "Biochar facility",
- "accountHolderId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "methodologyCode": "C030000000",
- "methodologyName": "Biochar",
- "address": {
- "postalCode": "00100",
- "city": "Helsinki",
- "country": "FI",
- "street1": "Long Street",
- "street2": "Long Street",
- "state": "Ohio"
}, - "geographicalLocation": {
- "latitude": "60.192059",
- "longitude": "24.945831"
}, - "dateOfCommissioning": "2024-10-01",
- "registeredOn": "2024-10-01T00:00:00Z",
- "facilityStatus": "ACTIVE"
}
]
}
Get transactions by id
Authorizations:
path Parameters
transactionId required | string <uuid> The id of the transaction to retrieve |
Responses
Response samples
- 200
- 401
- 404
- 429
- 500
{- "transactionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "volume": 100,
- "unitPrice": 279.99,
- "totalPrice": "27999.00",
- "currency": "EUR",
- "sourceAccountNumber": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "destinationAccountNumber": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "completedOn": "2019-08-24T14:15:22Z",
- "type": "Issuance",
- "state": "CREATED",
- "bundles": [
- {
- "certificates": "PURO_PR_CORC100+_FI_148003_2024_0052850a-1263-4d3f-af6f-a91288df04e3_1-100",
- "volume": 100,
- "methodologyCode": "C03000000",
- "methodologyName": "Biochar",
- "productionFacilityCode": "OC4C00",
- "vintage": 2022,
- "productionStartDate": "2022-01-01T00:00:00.000Z",
- "productionEndDate": "2022-12-12T00:00:00.000Z",
- "creditType": "CORC100+",
- "issuanceDate": "2019-08-24T14:15:22Z"
}
], - "offtakeAgreementId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "retirementDetails": {
- "usageType": "GENERIC_COMPENSATION",
- "beneficiaryName": "Tech Company Inc.",
- "beneficiaryLocation": "San Francisco",
- "beneficiaryType": "END_CONSUMER",
- "countryOfConsumption": "US",
- "consumptionPeriodStartDate": "2019-08-24",
- "consumptionPeriodEndDate": "2019-08-24",
- "retirementPurpose": "Retired on behalf of X to offset emissions resulting from activities in 2023.",
- "publicStatementUrl": "string"
}
}
List transactions
Authorizations:
query Parameters
limit | integer [ 1 .. 100 ] How many items to return at one time (max 100) |
offset | integer >= 1 How many items to skip |
Responses
Response samples
- 200
- 400
- 401
- 429
- 500
{- "pagination": {
- "total": 1,
- "offset": 0,
- "limit": 100
}, - "data": [
- {
- "transactionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "volume": 100,
- "unitPrice": 279.99,
- "totalPrice": "27999.00",
- "currency": "EUR",
- "sourceAccountNumber": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "destinationAccountNumber": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "completedOn": "2019-08-24T14:15:22Z",
- "type": "Issuance",
- "state": "CREATED",
- "bundles": [
- {
- "certificates": "PURO_PR_CORC100+_FI_148003_2024_0052850a-1263-4d3f-af6f-a91288df04e3_1-100",
- "volume": 100,
- "methodologyCode": "C03000000",
- "methodologyName": "Biochar",
- "productionFacilityCode": "OC4C00",
- "vintage": 2022,
- "productionStartDate": "2022-01-01T00:00:00.000Z",
- "productionEndDate": "2022-12-12T00:00:00.000Z",
- "creditType": "CORC100+",
- "issuanceDate": "2019-08-24T14:15:22Z"
}
], - "offtakeAgreementId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "retirementDetails": {
- "usageType": "GENERIC_COMPENSATION",
- "beneficiaryName": "Tech Company Inc.",
- "beneficiaryLocation": "San Francisco",
- "beneficiaryType": "END_CONSUMER",
- "countryOfConsumption": "US",
- "consumptionPeriodStartDate": "2019-08-24",
- "consumptionPeriodEndDate": "2019-08-24",
- "retirementPurpose": "Retired on behalf of X to offset emissions resulting from activities in 2023.",
- "publicStatementUrl": "string"
}
}
]
}
Create transfer
Authorizations:
header Parameters
Idempotency-Key required | string A client-side provided unique key to allow idempotently calling this API endpoint. The value must match the pattern: |
Request Body schema: application/jsonrequired
transferType required | string Enum: "EXTERNAL" "INTERNAL" Is the transfer INTERNAL between the Account Holder's own accounts, or EXTERNAL transfer to another Account Holder. |
sourceAccountNumber required | string <uuid4> The account sending the CORCs. |
destinationAccountNumber required | string <uuid4> The account receiving the CORCs. |
required | Array of objects (PostCertificateBundle) Certificate bundles and amounts to transfer. |
additionalNotes required | string <= 1000 characters Additional notes about the transaction. |
buyersEmail required | string\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]... This email address will receive a summary of the information you fill in this form. |
offtakeAgreementId | string or null Default: null Enter the reference number for the offtake agreement if one exists and has been reported to Puro.earth. This will help ensure that your transaction is properly tracked and aligned with the agreement details. |
unitPrice required | string <decimal> ^\d+\.\d{1,2}$ Price per unit. |
currency required | string The currency for the transaction. |
Responses
Request samples
- Payload
{- "transferType": "EXTERNAL",
- "sourceAccountNumber": "a14e8d63-9a77-4cf9-8350-bc2fd4b47b7c",
- "destinationAccountNumber": "f94a1207-4a59-4e7d-b795-7698113b126e",
- "bundles": [
- {
- "certificates": "PURO_PR_CORC50+_IN_278476_2024_854bfa6a-c8f3-49f8-af0d-69eabb57574b_20-1799",
- "amount": 50
}
], - "additionalNotes": "Assets issued for the production period of 2022-01-01 till 2022-12-31.",
- "buyersEmail": "john.doe@puro.earth",
- "offtakeAgreementId": "cl16h6x6h0026brxdt3q7870l",
- "unitPrice": "10.12",
- "currency": "EUR"
}
Response samples
- 201
- 400
- 401
- 422
- 429
- 500
{- "id": "cl16h6x6h0026brxdt3q7870l"
}
Create retirement
Authorizations:
header Parameters
Idempotency-Key required | string A client-side provided unique key to allow idempotently calling this API endpoint. The value must match the pattern: |
Request Body schema: application/jsonrequired
sourceAccountNumber required | string <uuid> The account from where the CORCs will be retired. |
offtakeAgreementId | string Enter the reference number for the offtake agreement if one exists and has been reported to Puro.earth. This will help us help ensure that your transaction is properly tracked and aligned with the agreement details. |
required | Array of objects (PostCertificateBundle) Certificate bundles and amounts to retire. |
unitPrice required | string <decimal> ^\d+\.\d{1,2}$ Price per unit. |
currency required | string |
beneficiaryName required | string <= 100 characters The beneficiary entity name. Examples of beneficiaries might include, but are not limited to: companies, public entities, private or public organizations. The name of the beneficiary will be visible in the public Puro Registry. |
beneficiaryLocation required | string <= 100 characters Location where the beneficiary is registered. |
beneficiaryType required | string Enum: "END_CONSUMER" "SUPPLIER" Choose SUPPLIER, if you are a supplier retiring CORCs issued to you on your own behalf. Otherwise, select END_CONSUMER. |
beneficiaryContactPersonEmail required | string <email> \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]... Beneficiary contact person email will receive a summary of the information you have submitted here. |
countryOfConsumption required | string = 2 characters ISO 3166-1 alpha-2 country code. |
usageType required | string Enum: "BUNDLED_WITH_PRODUCT_OR_SERVICE" "DISCLOSURE" "GENERIC_COMPENSATION" "OTHER" "SPECIFIC_ACTIVITY_LIKE_FLIGHTS" "SUPPORT" Usage type refers to the activity the CORCs compensate for. If the list of provided enums doesn't contain usage type relevant to you, choose OTHER. |
consumptionPeriodStartDate required | string <date> Start date of the consumption period. |
consumptionPeriodEndDate required | string <date> End date of the consumption period. |
retirementPurpose required | string <= 1000 characters Enter the retirement purpose e.g. “Retired on behalf of X to offset emissions resulting from activities in 2023”. This information will be visible in our public registry. |
additionalNotes | string or null <= 1000 characters Default: null Additional notes about the transaction. |
Responses
Request samples
- Payload
{- "sourceAccountNumber": "a14e8d63-9a77-4cf9-8350-bc2fd4b47b7c",
- "offtakeAgreementId": "cl16h6x6h0026brxdt3q7870l",
- "bundles": [
- {
- "certificates": "PURO_PR_CORC50+_IN_278476_2024_854bfa6a-c8f3-49f8-af0d-69eabb57574b_20-1799",
- "amount": 50
}
], - "unitPrice": "10.12",
- "currency": "EUR",
- "beneficiaryName": "string",
- "beneficiaryLocation": "string",
- "beneficiaryType": "END_CONSUMER",
- "beneficiaryContactPersonEmail": "john.doe@puro.earth",
- "countryOfConsumption": "FI",
- "usageType": "GENERIC_COMPENSATION",
- "consumptionPeriodStartDate": "2024-01-01",
- "consumptionPeriodEndDate": "2024-01-31",
- "retirementPurpose": "string",
- "additionalNotes": "Assets issued for the production period of 2022-01-01 till 2022-12-31."
}
Response samples
- 201
- 400
- 401
- 422
- 429
- 500
{- "id": "cl16h6x6h0026brxdt3q7870l"
}