MENU navbar-image

Introduction

Welcome to our API documentation!

The Rejoose API’s is organized around REST. A RESTful API should use standardized REST-oriented URLs and responses. Rejoose API’s accepts form-encoded request bodies, returns JSON-encoded responses. It also offers authentication, security tokens, and other standard HTTP verbs. These docs provide example API and code to showcase test data. The API’s and their respective docs can subject to change, we will advise in good time, to make you aware of any changes or additions to the API’s. We try to change as little as possible.

To get you started quickly with our API, we recommend providing a list of your most popular devices or product. This will help us ensure a smooth experience by pre-mapping them for your account.

CSV File Requirements

Your CSV file must include the following headers:

Category Field Details

For the Category column, please include all classification tiers for each product. This means that if your product belongs to a hierarchy—such as a main category, a subcategory, and even further nested subcategories—each tier should be represented. You can separate these tiers with a consistent delimiter (for example, a forward slash / or a pipe |) so that our system can accurately parse and recognize the complete category structure.

Once we have this information, your devices/products will be properly identified and managed within your account, allowing you to take full advantage of the API's features.

The developer who needs to set up the API, will need access to our e/hub where they can generate the relevant API tokens for authentication. Please contact support@rejoose.com for this login. A login for e/hub® (https://e-hub.rejoose.com) requires an agreement with Rejoose.

Please note: You can access more detailed information in the API documentation by expanding objects marked with a small black arrow (⯈), such as ⯈ client or ⯈ devices. Simply click the arrow to reveal additional data fields.

Sandbox mode

When accessing e.hub® (https://e-hub.rejoose.com), you have the option to switch between production and sandbox modes. Sandbox mode allows you to test and explore features without affecting your live data. This mode is ideal for tasks like setting up APIs, testing integrations, and generating reports before going live.

Please note: When in Sandbox mode and if you do not have an active subscription, you will only receive sample data for API testing. So do not conduct data quality testing when testing the API in Sandbox mode

In sandbox mode:

Utilize sandbox mode to ensure your integration is robust and ready for production use.

Rate Limiting

Our API enforces rate limiting to ensure fair usage and prevent abuse. The current rate limit is set to 600 requests/min.

Please note: For Enterprise solutions, we can adjust rate limitation according to SLA. Please contact our support@rejoose.com or your regional manager. The following headers are included in each API response to provide information about your current rate limit status:


Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your API token by logging into Rejoose e/hub® https://e-hub.rejoose.com and visiting your admin dashboard and clicking "Create API Key".

e.voice

e.voice – Carbon data on invoice level

The e.voice API enables the generation of an environmental invoice (e.voice), serving as the carbon counterpart to a financial invoice. It bridges financial transactions with their associated carbon impact, allowing businesses to track and report emissions seamlessly.

When using the e.voice API, you have flexible implementation options:

Upon a successful transaction, the API provides:

Keep in mind that you do not need to save the above data in your ERP system (or similar), as everything is archived for you in the e.hub and for your customers via e.insights.

e.voice API – Options Explained

Quick tips

You can access more detailed information in the API documentation by expanding objects marked with a small black arrow (⯈), such as ⯈ client or ⯈ devices. Simply click the arrow to reveal additional data fields.

Generate e.voice

requires authentication

Example request:
curl --request POST \
    "https://app.rejoose.com/api/v3/evoices/generate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"options\": {
        \"deferred\": true,
        \"include_pdf\": false,
        \"credit_note\": true
    },
    \"external_invoice_id\": \"123456789\",
    \"external_invoice_date\": \"2023-09-25\",
    \"country_code\": \"GB\",
    \"supplier_contact\": \"example@rejoose.com\",
    \"client\": {
        \"name\": \"Eco-Friendly Solutions Ltd\",
        \"vat_number\": \"ECOF1234567\",
        \"organization_id\": \"EcoFriendly-4987\",
        \"address\": \"100 Enviro Way\",
        \"address2\": \"Sustainability Lane 3\",
        \"zip_code\": \"ECO321\",
        \"city\": \"GreenVille\",
        \"country\": \"Denmark\",
        \"country_code\": \"DK\"
    },
    \"devices\": [
        {
            \"external_id\": \"RE8989121\",
            \"original_manufacturer_part_number\": \"62B6ASD3EU\",
            \"quantity\": 10,
            \"category\": \"Notebook\",
            \"brand\": \"Lenovo\",
            \"model_name\": \"ThinkPad T480\",
            \"refurbished\": true,
            \"lifetime_months\": 48
        }
    ]
}"
const url = new URL(
    "https://app.rejoose.com/api/v3/evoices/generate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "options": {
        "deferred": true,
        "include_pdf": false,
        "credit_note": true
    },
    "external_invoice_id": "123456789",
    "external_invoice_date": "2023-09-25",
    "country_code": "GB",
    "supplier_contact": "example@rejoose.com",
    "client": {
        "name": "Eco-Friendly Solutions Ltd",
        "vat_number": "ECOF1234567",
        "organization_id": "EcoFriendly-4987",
        "address": "100 Enviro Way",
        "address2": "Sustainability Lane 3",
        "zip_code": "ECO321",
        "city": "GreenVille",
        "country": "Denmark",
        "country_code": "DK"
    },
    "devices": [
        {
            "external_id": "RE8989121",
            "original_manufacturer_part_number": "62B6ASD3EU",
            "quantity": 10,
            "category": "Notebook",
            "brand": "Lenovo",
            "model_name": "ThinkPad T480",
            "refurbished": true,
            "lifetime_months": 48
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.rejoose.com/api/v3/evoices/generate'
payload = {
    "options": {
        "deferred": true,
        "include_pdf": false,
        "credit_note": true
    },
    "external_invoice_id": "123456789",
    "external_invoice_date": "2023-09-25",
    "country_code": "GB",
    "supplier_contact": "example@rejoose.com",
    "client": {
        "name": "Eco-Friendly Solutions Ltd",
        "vat_number": "ECOF1234567",
        "organization_id": "EcoFriendly-4987",
        "address": "100 Enviro Way",
        "address2": "Sustainability Lane 3",
        "zip_code": "ECO321",
        "city": "GreenVille",
        "country": "Denmark",
        "country_code": "DK"
    },
    "devices": [
        {
            "external_id": "RE8989121",
            "original_manufacturer_part_number": "62B6ASD3EU",
            "quantity": 10,
            "category": "Notebook",
            "brand": "Lenovo",
            "model_name": "ThinkPad T480",
            "refurbished": true,
            "lifetime_months": 48
        }
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200, When using deferred):


{
    "success": true,
    "data": {
        "external_invoice_id": "94825344-eb3a-4b5d-8ac8-6e462f37bba2"
    }
}
 

Example response (201):


{
    "success": true,
    "data": {
        "external_invoice_id": "123456789",
        "external_invoice_date": "2023-09-25",
        "country_code": "DK",
        "supplier_contact": "example@rejoose.com",
        "pdf_base64": "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Ci9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCj4+CmVuZG9iago5IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovTmFtZSAvRjIKL0Jhc2VGb250IC9IZWx2ZXRpY2EtQm9sZAovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKMTAgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9OYW1lIC9GMwovQmFzZUZvbnQgL1RpbWVzLUJvbGQKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKPj4KZW5kb2JqCjExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQSAxMiAwIFIKL0JvcmRlciBbMCAwIDBdCi9IIC9JCi9SZWN0IFsgMTk5LjEzNzggMTguMjE4NSAzOTYuMTQyMiAyNy4wMTg1IF0KPj4KZW5kb2JqCjEyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwczovL3Jlam9vc2UuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIzLzA2L0V2b2ljZV9FeHBsYWluZXIucGRmKQo+PgplbmRvYmoKeHJlZgowIDEzCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDc0IDAwMDAwIG4gCjAwMDAwMDAxMjAgMDAwMDAgbiAKMDAwMDAwMDI5NSAwMDAwMCBuIAowMDAwMDAwMzI0IDAwMDAwIG4gCjAwMDAwMDA0OTcgMDAwMDAgbiAKMDAwMDAwMDYxOSAwMDAwMCBuIAowMDAwMDAzNTI5IDAwMDAwIG4gCjAwMDAwMDM2MzggMDAwMDAgbiAKMDAwMDAwMzc1MCAwMDAwMCBuIAowMDAwMDAzODU5IDAwMDAwIG4gCjAwMDAwMDM5ODUgMDAwMDAgbiAKdHJhaWxlcgo8PAovU2l6ZSAxMwovUm9vdCAxIDAgUgovSW5mbyA1IDAgUgovSURbPGQ0MjEyYTIwY2E1NTc3NTg1NGNiOWUyNmM3NGRiYjdiPjxkNDIxMmEyMGNhNTU3NzU4NTRjYjllMjZjNzRkYmI3Yj5dCj4+CnN0YXJ0eHJlZgo0MTA0CiUlRU9GCg==",
        "carbon_intensity_gram": 123,
        "total_kg_co2_eq": 1301.51,
        "status": "finalized",
        "type": "evoice",
        "created_at": "2024-01-05T13:11:49.000000Z",
        "client": {
            "name": "Eco-Friendly Solutions Ltd",
            "vat_number": "ECOF1234567",
            "organization_id": "EcoFriendly-4987",
            "address": "100 Enviro Way",
            "address2": "Sustainability Lane 3",
            "zip_code": "ECO321",
            "city": "GreenVille",
            "country": "Denmark",
            "country_code": "DK"
        },
        "devices": [
            {
                "external_id": "RE8989121",
                "original_manufacturer_part_number": "62B6MAT3EU",
                "quantity": 10,
                "brand": "Lenovo",
                "model_name": "ThinkPad T480",
                "category": "Notebook",
                "lifetime_months": 72,
                "scope_2_kg_co2_eq": 278.41,
                "scope_3_kg_co2_eq": 249.27,
                "total_kg_co2_eq": 527.68,
                "refurbished": true,
                "avoided_emissions_kg_co2_eq": 256.68
            },
            {
                "external_id": "SM-S918BZKDEEB",
                "original_manufacturer_part_number": null,
                "quantity": 10,
                "brand": "Samsung",
                "model_name": "Galaxy S23 Ultra",
                "category": "Smartphone",
                "lifetime_months": 30,
                "scope_2_kg_co2_eq": 31.18,
                "scope_3_kg_co2_eq": 742.65,
                "total_kg_co2_eq": 773.83,
                "refurbished": false,
                "avoided_emissions_kg_co2_eq": 0
            }
        ],
        "links": {
            "self": "https://app.rejoose.com/api/v3/evoices/123456789"
        }
    }
}
 

Example response (201, When using credit_note):


{
    "success": true,
    "data": {
        "external_invoice_id": "123456789",
        "external_invoice_date": "2023-09-25",
        "country_code": "DK",
        "supplier_contact": "example@rejoose.com",
        "pdf_base64": "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Ci9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCj4+CmVuZG9iago5IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovTmFtZSAvRjIKL0Jhc2VGb250IC9IZWx2ZXRpY2EtQm9sZAovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKMTAgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9OYW1lIC9GMwovQmFzZUZvbnQgL1RpbWVzLUJvbGQKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKPj4KZW5kb2JqCjExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQSAxMiAwIFIKL0JvcmRlciBbMCAwIDBdCi9IIC9JCi9SZWN0IFsgMTk5LjEzNzggMTguMjE4NSAzOTYuMTQyMiAyNy4wMTg1IF0KPj4KZW5kb2JqCjEyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwczovL3Jlam9vc2UuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIzLzA2L0V2b2ljZV9FeHBsYWluZXIucGRmKQo+PgplbmRvYmoKeHJlZgowIDEzCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDc0IDAwMDAwIG4gCjAwMDAwMDAxMjAgMDAwMDAgbiAKMDAwMDAwMDI5NSAwMDAwMCBuIAowMDAwMDAwMzI0IDAwMDAwIG4gCjAwMDAwMDA0OTcgMDAwMDAgbiAKMDAwMDAwMDYxOSAwMDAwMCBuIAowMDAwMDAzNTI5IDAwMDAwIG4gCjAwMDAwMDM2MzggMDAwMDAgbiAKMDAwMDAwMzc1MCAwMDAwMCBuIAowMDAwMDAzODU5IDAwMDAwIG4gCjAwMDAwMDM5ODUgMDAwMDAgbiAKdHJhaWxlcgo8PAovU2l6ZSAxMwovUm9vdCAxIDAgUgovSW5mbyA1IDAgUgovSURbPGQ0MjEyYTIwY2E1NTc3NTg1NGNiOWUyNmM3NGRiYjdiPjxkNDIxMmEyMGNhNTU3NzU4NTRjYjllMjZjNzRkYmI3Yj5dCj4+CnN0YXJ0eHJlZgo0MTA0CiUlRU9GCg==",
        "carbon_intensity_gram": 123,
        "total_kg_co2_eq": -1301.51,
        "status": "finalized",
        "type": "credit_note",
        "created_at": "2024-01-05T13:11:49.000000Z",
        "client": {
            "name": "Eco-Friendly Solutions Ltd",
            "vat_number": "ECOF1234567",
            "organization_id": "EcoFriendly-4987",
            "address": "100 Enviro Way",
            "address2": "Sustainability Lane 3",
            "zip_code": "ECO321",
            "city": "GreenVille",
            "country": "Denmark",
            "country_code": "DK"
        },
        "devices": [
            {
                "external_id": "RE8989121",
                "original_manufacturer_part_number": "62B6MAT3EU",
                "quantity": 10,
                "brand": "Lenovo",
                "model_name": "ThinkPad T480",
                "category": "Notebook",
                "lifetime_months": 72,
                "scope_2_kg_co2_eq": -278.41,
                "scope_3_kg_co2_eq": -249.27,
                "total_kg_co2_eq": -527.68,
                "refurbished": true,
                "avoided_emissions_kg_co2_eq": -256.68
            },
            {
                "external_id": "SM-S918BZKDEEB",
                "original_manufacturer_part_number": null,
                "quantity": 10,
                "brand": "Samsung",
                "model_name": "Galaxy S23 Ultra",
                "category": "Smartphone",
                "lifetime_months": 30,
                "scope_2_kg_co2_eq": -31.18,
                "scope_3_kg_co2_eq": -742.65,
                "total_kg_co2_eq": -773.83,
                "refurbished": false,
                "avoided_emissions_kg_co2_eq": 0
            }
        ],
        "links": {
            "self": "https://app.rejoose.com/api/v3/evoices/123456789"
        }
    }
}
 

Example response (422, Validation Error):


{
    "errors": {
        "external_invoice_id": [
            "The external invoice id field is required."
        ],
        "external_invoice_date": [
            "The external invoice date field is required."
        ],
        "client.name": [
            "The client.name field is required."
        ]
    }
}
 

Example response (429, Too Many Attempts):


{
    "message": "Too Many Attempts."
}
 

Request   

POST api/v3/evoices/generate

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

options   object  optional  

Settings for the request.

deferred   boolean  optional  

Specifies whether the e.voice generation should run as a background job. Defaults to false. Example: true

include_pdf   boolean  optional  

Specifies whether the response should include a base64-encoded PDF file. Defaults to true. Example: false

credit_note   boolean  optional  

Specifies whether the e.voice is a credit note. If set to true, it will mark the e.voice as a credit note, reversing the carbon data. Defaults to false. Example: true

external_invoice_id   string   

A unique identifier that can connect the e.voice with the invoice sent to the customer. It is recommended to use the actual invoice number stated on the customer invoice. Must be between 1 and 255 characters. Example: 123456789

external_invoice_date   string   

The date of the financial transaction. The date should use the invoicing date in ISO 8601 standard (YYYY-MM-DD). Example: 2023-09-25

country_code   string   

Country code for product delivery. This defines the use phase country, so this should represent the country where products are shipped to and used in. Should be ISO 3166-2 or ISO 3166-2:US - alpha-2 code. US states need to have the prefix "US-". This will determine the use country carbon intensity (gram CO2e per kWh) used for the e.voice. Example: GB

supplier_contact   string   

Contact email for a person or mailbox for you as the supplier to the customer. This contact email address will be visible on the e.voice. Must be between 1 and 80 characters. Example: example@rejoose.com

client   object   

Client information object. Within this client information object, are two crucial identifiers that greatly impact reporting. The organization_id, which identifies your customer on a group level, and the vat_number, which defines the company within the organization. We recommend using unique and static values for organization_id as they are utilized by the e.hub and e.insights reporting portals to group and aggregate data.

name   string   

The name of the customer as on the invoice. This line will be shown on the e.voice. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: Eco-Friendly Solutions Ltd

organization_id   string   

An identifier for the client group/organization in your system. This identifier is important as it is used to aggregate reporting functions at group level for the customer with several companies in the group (VAT numbers). Must be between 1 and 240 characters. Example: company-4987

vat_number   string   

This defines the company, and as with organization_id is used for reporting purposes. We recommend this to be the VAT number but could be another unique identifier. Must be between 1 and 80 characters. Example: ECOF1234567

address   string   

The address of the customer as on the invoice. This line will be shown on the e.voice. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: 100 Enviro Way

address2   string  optional  

The second line of the address of the customer as on the invoice. Must be between 1 and 80 characters. Example: Sustainability Lane 3

zip_code   string   

The zip code of the customer as on the invoice. This line will be shown on the e.voice. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: ECO321

city   string   

The city of the customer as on the invoice. This line will be shown on the e.voice. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: GreenVille

country   string   

The country of the customer as on the invoice. This line will be shown on the e.voice. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: Denmark

country_code   string   

The country code of the customer as on the invoice. Should be ISO 3166-2 or ISO 3166-2:US - alpha-2 code. Example: DK

devices   object[]   

This is the list of devices and products from the invoice sent to the customer (Array of device objects).

external_id   string   

Provide the product's manufacturer part number (MPN). If another identifier is used, the original_manufacturer_part_number should be provided. Example: RE8989121

original_manufacturer_part_number   string  optional  

This is the unique manufacturer part number (MPN). The MPN is a special code that uniquely identifies a product from a specific manufacturer. If another identifier is used as external_id, the original manufacturer part number should be provided. Example: 62B6ASD3EU

quantity   integer   

The number of units for the invoiced or credited item. For e.voices, this represents the quantity sold. For credit notes, this represents the quantity being reversed. Can be both a positive or negative integer. Example: 10

category   string   

The category information serves two purposes: together with the external_id and brand, it provides a 100% unique data set for secure product matching. In the absence of LCA data, the system can provide CA data for the brand/category. Must be between 1 and 80 characters. Example: Notebook

brand   string   

The name of the manufacturer of the product. This information, together with the external_id (MPN) and category, provides a unique data set to match carbon data to the specific product. Must be between 1 and 80 characters. Example: Lenovo

model_name   string   

The product model name as on the invoice. This line of text will also be shown on the e.voice to have a 1:1 match with the invoice. Must be between 1 and 240. characters. Example: ThinkPad T480

refurbished   boolean  optional  

Utilize this if you are selling a refurbished product; otherwise, do not add this. Set the parameter as true to define this as a refurbished product and you will receive a data set for this. Example: true

lifetime_months   integer  optional  

Use this if you know the actual lifespan of the product in months. If not used, Rejoose will utilize the standard EU lifespan. Must be at least 1. Example: 48

GET e.voice data

requires authentication

Returns the e.voice data

Example request:
curl --request GET \
    --get "https://app.rejoose.com/api/v3/evoices/123456789" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.rejoose.com/api/v3/evoices/123456789"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.rejoose.com/api/v3/evoices/123456789'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "success": true,
    "data": {
        "external_invoice_id": "123456789",
        "external_invoice_date": "2023-09-25",
        "country_code": "DK",
        "supplier_contact": "example@rejoose.com",
        "pdf_base64": "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Ci9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCj4+CmVuZG9iago5IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovTmFtZSAvRjIKL0Jhc2VGb250IC9IZWx2ZXRpY2EtQm9sZAovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKMTAgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9OYW1lIC9GMwovQmFzZUZvbnQgL1RpbWVzLUJvbGQKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKPj4KZW5kb2JqCjExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQSAxMiAwIFIKL0JvcmRlciBbMCAwIDBdCi9IIC9JCi9SZWN0IFsgMTk5LjEzNzggMTguMjE4NSAzOTYuMTQyMiAyNy4wMTg1IF0KPj4KZW5kb2JqCjEyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwczovL3Jlam9vc2UuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIzLzA2L0V2b2ljZV9FeHBsYWluZXIucGRmKQo+PgplbmRvYmoKeHJlZgowIDEzCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDc0IDAwMDAwIG4gCjAwMDAwMDAxMjAgMDAwMDAgbiAKMDAwMDAwMDI5NSAwMDAwMCBuIAowMDAwMDAwMzI0IDAwMDAwIG4gCjAwMDAwMDA0OTcgMDAwMDAgbiAKMDAwMDAwMDYxOSAwMDAwMCBuIAowMDAwMDAzNTI5IDAwMDAwIG4gCjAwMDAwMDM2MzggMDAwMDAgbiAKMDAwMDAwMzc1MCAwMDAwMCBuIAowMDAwMDAzODU5IDAwMDAwIG4gCjAwMDAwMDM5ODUgMDAwMDAgbiAKdHJhaWxlcgo8PAovU2l6ZSAxMwovUm9vdCAxIDAgUgovSW5mbyA1IDAgUgovSURbPGQ0MjEyYTIwY2E1NTc3NTg1NGNiOWUyNmM3NGRiYjdiPjxkNDIxMmEyMGNhNTU3NzU4NTRjYjllMjZjNzRkYmI3Yj5dCj4+CnN0YXJ0eHJlZgo0MTA0CiUlRU9GCg==",
        "carbon_intensity_gram": 123,
        "total_kg_co2_eq": 1301.51,
        "status": "finalized",
        "type": "evoice",
        "created_at": "2024-01-05T13:11:49.000000Z",
        "client": {
            "name": "Eco-Friendly Solutions Ltd",
            "vat_number": "ECOF1234567",
            "organization_id": "EcoFriendly-4987",
            "address": "100 Enviro Way",
            "address2": "Sustainability Lane 3",
            "zip_code": "ECO321",
            "city": "GreenVille",
            "country": "Denmark",
            "country_code": "DK"
        },
        "devices": [
            {
                "external_id": "RE8989121",
                "original_manufacturer_part_number": "62B6MAT3EU",
                "quantity": 10,
                "brand": "Lenovo",
                "model_name": "ThinkPad T480",
                "category": "Notebook",
                "lifetime_months": 72,
                "scope_2_kg_co2_eq": 278.41,
                "scope_3_kg_co2_eq": 249.27,
                "total_kg_co2_eq": 527.68,
                "refurbished": true,
                "avoided_emissions_kg_co2_eq": 256.68
            },
            {
                "external_id": "SM-S918BZKDEEB",
                "original_manufacturer_part_number": null,
                "quantity": 10,
                "brand": "Samsung",
                "model_name": "Galaxy S23 Ultra",
                "category": "Smartphone",
                "lifetime_months": 30,
                "scope_2_kg_co2_eq": 31.18,
                "scope_3_kg_co2_eq": 742.65,
                "total_kg_co2_eq": 773.83,
                "refurbished": false,
                "avoided_emissions_kg_co2_eq": 0
            }
        ],
        "links": {
            "self": "https://app.rejoose.com/api/v3/evoices/123456789"
        }
    }
}
 

Example response (202, The e.voice is still processing):


{
    "success": true,
    "data": {
        "external_invoice_id": "94825344-eb3a-4b5d-8ac8-6e462f37bba2",
        "status": "pending"
    }
}
 

Example response (404):


{
    "errors": "Evoice with external_invoice_id 3.1415926535 not found"
}
 

Request   

GET api/v3/evoices/{external_invoice_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

external_invoice_id   string   

The external_invoice_id of the e.voice. Example: 123456789

e.voice - circularity

Provides carbon footprint and avoided emissions data for IT products in the ITAD industry. This API is used when receiving used IT products for refurbishment or selling refurbished products for reuse.

The response includes:

Both datasets are used for customer reporting and internal documentation.

POST e.voice circularity

requires authentication

Generates the e.voice circularity

Example request:
curl --request POST \
    "https://app.rejoose.com/api/v3/evoices/circularity/generate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"external_doc_id\": \"123456789.\",
    \"external_doc_date\": \"2023-09-25.\",
    \"e_waste_kg\": 10,
    \"country_code\": \"GB.\",
    \"supplier_contact\": \"example@rejoose.com.\",
    \"client\": {
        \"name\": \"Eco-Friendly Solutions Ltd\",
        \"vat_number\": \"ECOF1234567\",
        \"organization_id\": \"EcoFriendly-4987\",
        \"address\": \"100 Enviro Way\",
        \"address2\": \"Sustainability Lane 3\",
        \"zip_code\": \"ECO321\",
        \"city\": \"GreenVille\",
        \"country\": \"Denmark\",
        \"country_code\": \"DK\"
    },
    \"devices\": [
        {
            \"external_id\": \"RE8989121\",
            \"quantity\": 10,
            \"category\": \"Notebook\",
            \"brand\": \"Lenovo\",
            \"model_name\": \"ThinkPad T480\"
        }
    ]
}"
const url = new URL(
    "https://app.rejoose.com/api/v3/evoices/circularity/generate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "external_doc_id": "123456789.",
    "external_doc_date": "2023-09-25.",
    "e_waste_kg": 10,
    "country_code": "GB.",
    "supplier_contact": "example@rejoose.com.",
    "client": {
        "name": "Eco-Friendly Solutions Ltd",
        "vat_number": "ECOF1234567",
        "organization_id": "EcoFriendly-4987",
        "address": "100 Enviro Way",
        "address2": "Sustainability Lane 3",
        "zip_code": "ECO321",
        "city": "GreenVille",
        "country": "Denmark",
        "country_code": "DK"
    },
    "devices": [
        {
            "external_id": "RE8989121",
            "quantity": 10,
            "category": "Notebook",
            "brand": "Lenovo",
            "model_name": "ThinkPad T480"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.rejoose.com/api/v3/evoices/circularity/generate'
payload = {
    "external_doc_id": "123456789.",
    "external_doc_date": "2023-09-25.",
    "e_waste_kg": 10,
    "country_code": "GB.",
    "supplier_contact": "example@rejoose.com.",
    "client": {
        "name": "Eco-Friendly Solutions Ltd",
        "vat_number": "ECOF1234567",
        "organization_id": "EcoFriendly-4987",
        "address": "100 Enviro Way",
        "address2": "Sustainability Lane 3",
        "zip_code": "ECO321",
        "city": "GreenVille",
        "country": "Denmark",
        "country_code": "DK"
    },
    "devices": [
        {
            "external_id": "RE8989121",
            "quantity": 10,
            "category": "Notebook",
            "brand": "Lenovo",
            "model_name": "ThinkPad T480"
        }
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "data": {
        "id": 31,
        "external_doc_id": "ab57e0f1-2396-430c-ba5a-339d77fda792",
        "external_doc_date": "2024-01-22",
        "country_code": "DK",
        "e_waste_kg_co2_eq": 212.81,
        "refurbishment_impact_kg_co2_eq": 180.42866,
        "refurbishment_offset_kg_co2_eq": 3053.34679,
        "client": {
            "name": "Rejoose ApS",
            "organization_id": "rejoose_aps",
            "vat_number": "39121506",
            "address": "Finsensvej 78",
            "address2": "Finsensvej 78",
            "zip_code": "2000",
            "city": "Frederiksberg",
            "country": "Denmark",
            "country_code": "DK"
        },
        "devices": [
            {
                "external_id": "X220-DEHO",
                "amount": 5,
                "brand": "LENOVO",
                "model_name": "Lenovo X220",
                "category": "Laptop",
                "refurbishment_impact_percentage": 0.0516,
                "refurbishment_impact_kg_co2_eq": 75.08832,
                "refurbishment_offset_kg_co2_eq": 1380.11168
            },
            {
                "external_id": "X3T23AV",
                "amount": 2,
                "brand": "HP",
                "model_name": "HP EliteBook 820 G4",
                "category": "Notebook",
                "refurbishment_impact_percentage": 0.0516,
                "refurbishment_impact_kg_co2_eq": 105.34034,
                "refurbishment_offset_kg_co2_eq": 1673.23511
            }
        ],
        "created_at": "2024-01-24T11:33:10.000000Z",
        "links": {
            "self": "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792",
            "pdf": "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792/pdf",
            "base_64_pdf": "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792/pdf?base64=1"
        }
    },
    "errors": null
}
 

Example response (422, Validation Error):


{
    "data": null,
    "errors": {
        "external_doc_id": [
            "The external doc id field is required."
        ],
        "external_doc_date": [
            "The external doc date field is required."
        ],
        "client.name": [
            "The client.name field is required."
        ]
    }
}
 

Example response (429, Too Many Attempts):


{
    "message": "Too Many Attempts."
}
 

Request   

POST api/v3/evoices/circularity/generate

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

external_doc_id   string   

A unique identifier linking the e.voice circularity to the associated document, such as a purchase order or credit note. This may also refer to any other unique identifier. Must not exceed 255 characters. Example: 123456789.

external_doc_date   string   

The date of the document, such as a purchase order or credit note, following the invoicing date in ISO 8601 format (YYYY-MM-DD). Must be a valid date. Example: 2023-09-25.

e_waste_kg   integer  optional  

Weight of recycled electronics in kilograms, used for calculating the carbon emissions related to e-waste. Must be a minimum of 0. Example: 10

country_code   string   

The country code from which the products are sent, following the ISO 3166-2 or ISO 3166-2 alpha-2 standard. US states must include the 'US-' prefix. Example: GB.

supplier_contact   string   

Supplier contact email address, visible to the customer on the e.voice circularity. This can be a person or a general mailbox. Must be between 1 and 80 characters. Example: example@rejoose.com.

client   object   

Client information object. Within this client information object, are two crucial identifiers that greatly impact reporting. The organization_id, which identifies your customer on a group level, and the vat_number, which defines the company within the organization. We recommend using unique and static values for organization_id as they are utilized by the e.hub and e.insights reporting portals to group and aggregate data.

name   string   

The name of the customer as on the invoice. This line will be shown on the e.voice circularity. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: Eco-Friendly Solutions Ltd

organization_id   string   

An identifier for the client group/organization in your system. This identifier is important as it is used to aggregate reporting functions at group level for the customer with several companies in the group (VAT numbers). Must be between 1 and 240 characters. Example: company-4987

vat_number   string   

This defines the company, and as with organization_id is used for reporting purposes. We recommend this to be the VAT number but could be another unique identifier. Must be between 1 and 80 characters. Example: ECOF1234567

address   string   

The address of the customer as on the invoice. This line will be shown on the e.voice circularity. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: 100 Enviro Way

address2   string  optional  

The second line of the address of the customer as on the invoice. Must be between 1 and 80 characters. Example: Sustainability Lane 3

zip_code   string   

The zip code of the customer as on the invoice. This line will be shown on the e.voice circularity. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: ECO321

city   string   

The city of the customer as on the invoice. This line will be shown on the e.voice circularity. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: GreenVille

country   string   

The country of the customer as on the invoice. This line will be shown on the e.voice circularity. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: Denmark

country_code   string   

The country code of the customer as on the invoice. Should be ISO 3166-2 or ISO 3166-2:US - alpha-2 code. Example: DK

devices   object[]   

Array of devices.

external_id   string   

Provide the product's original manufacturer part number (MPN). Example: RE8989121

quantity   integer   

Number of units. Example: 10

category   string   

The category information serves two purposes: together with the external_id and brand, it provides a 100% unique data set for secure product matching. In the absence of LCA data, the system can provide CA data for the brand/category. Must be between 1 and 80 characters. Example: Notebook

brand   string   

The name of the manufacturer of the product. This information, together with the external_id (MPN) and category, provides a unique data set to match carbon data to the specific product. Must be between 1 and 80 characters. Example: Lenovo

model_name   string   

Product model name. Example: ThinkPad T480

GET e.voices circularity PDF

requires authentication

Returns the e.voice circularity PDF

Example request:
curl --request GET \
    --get "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792/pdf" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/pdf"
const url = new URL(
    "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792/pdf"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/pdf",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792/pdf'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/pdf'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


application/pdf The PDF file
 

Example response (404):


{
    "data": null,
    "errors": {
        "not_found": [
            "Evoice Circularity with external document id 1 not found for your partner"
        ]
    }
}
 

Request   

GET api/v3/evoices/circularity/{external_doc_id}/pdf

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/pdf

URL Parameters

external_doc_id   string   

The external document ID. Example: ab57e0f1-2396-430c-ba5a-339d77fda792

GET e.voice circularity data

requires authentication

Returns the e.voice circularity data

Example request:
curl --request GET \
    --get "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "data": {
        "id": 31,
        "external_doc_id": "ab57e0f1-2396-430c-ba5a-339d77fda792",
        "external_doc_date": "2024-01-22",
        "country_code": "DK",
        "e_waste_kg_co2_eq": 212.81,
        "refurbishment_impact_kg_co2_eq": 180.42866,
        "refurbishment_offset_kg_co2_eq": 3053.34679,
        "client": {
            "name": "Rejoose ApS",
            "organization_id": "rejoose_aps",
            "vat_number": "39121506",
            "address": "Finsensvej 78",
            "address2": "Finsensvej 78",
            "zip_code": "2000",
            "city": "Frederiksberg",
            "country": "Denmark",
            "country_code": "DK"
        },
        "devices": [
            {
                "external_id": "X220-DEHO",
                "amount": 5,
                "brand": "LENOVO",
                "model_name": "Lenovo X220",
                "category": "Laptop",
                "refurbishment_impact_percentage": 0.0516,
                "refurbishment_impact_kg_co2_eq": 75.08832,
                "refurbishment_offset_kg_co2_eq": 1380.11168
            },
            {
                "external_id": "X3T23AV",
                "amount": 2,
                "brand": "HP",
                "model_name": "HP EliteBook 820 G4",
                "category": "Notebook",
                "refurbishment_impact_percentage": 0.0516,
                "refurbishment_impact_kg_co2_eq": 105.34034,
                "refurbishment_offset_kg_co2_eq": 1673.23511
            }
        ],
        "created_at": "2024-01-24T11:33:10.000000Z",
        "links": {
            "self": "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792",
            "pdf": "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792/pdf",
            "base_64_pdf": "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792/pdf?base64=1"
        }
    },
    "errors": null
}
 

Example response (404):


{
    "data": null,
    "errors": {
        "not_found": [
            "Evoice Circularity with external document id 1 not found for your partner"
        ]
    }
}
 

Request   

GET api/v3/evoices/circularity/{external_doc_id}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

external_doc_id   string   

The external document ID. Example: ab57e0f1-2396-430c-ba5a-339d77fda792

e.product

The e.product API provides carbon footprint data for individual products, making it ideal for use in e-commerce, quotations, and other during-sales scenarios where a general carbon assessment is needed. For more detailed, transaction-specific reporting at the customer level, you should be using the e.voice API, which complements e.product by focusing on post-sales impact and needed documentation.

How Product Identification Works

In this solution, one product is defined as a country-specific dataset based on a combination of:

This ensures that the footprint reflects region-specific factors such as electricity mix and product lifecycle variations.

API Response

When querying the e.product endpoint, the API returns the following carbon footprint data:

Please look through the API docs for more details or contact support@rejoose.com for assistance.

GET e.product

requires authentication

The GET endpoint returns the carbon footprint data of a single product.

Example request:
curl --request GET \
    --get "https://app.rejoose.com/api/v3/products?manufacture_part_number=286H8AA&brand=HP+Inc&category=Docking+station&country_code=DK&refurbished=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.rejoose.com/api/v3/products"
);

const params = {
    "manufacture_part_number": "286H8AA",
    "brand": "HP Inc",
    "category": "Docking station",
    "country_code": "DK",
    "refurbished": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.rejoose.com/api/v3/products'
params = {
  'manufacture_part_number': '286H8AA',
  'brand': 'HP Inc',
  'category': 'Docking station',
  'country_code': 'DK',
  'refurbished': '1',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200, NOTE: refurbishment_impact_kg_co2_eq and refurbishment_offset_kg_co2_eq will only be included when product is refurbished):


{
    "data": {
        "manufacture_part_number": "286H8AA",
        "brand": "HP Inc",
        "category": "Docking station",
        "country_code": "DK",
        "refurbished": true,
        "data_match": true,
        "data_method": "CA",
        "total_kg_co2_eq": 33.32004288,
        "carbon_intensity_gram": 123.42,
        "lifetime_month": 48,
        "refurbishment_impact_kg_co2_eq": 3.457734144,
        "refurbishment_offset_kg_co2_eq": 28.03242874
    },
    "errors": null
}
 

Example response (200, NOTE: Requires 'e.product-plus' to retrieve detailed LCA (Life Cycle Assessment) data.):


{
    "data": {
        "manufacture_part_number": "286H8AA",
        "brand": "HP Inc",
        "category": "Docking station",
        "country_code": "DK",
        "refurbished": false,
        "data_match": true,
        "data_method": "CA",
        "total_kg_co2_eq": 40.23551117,
        "manufacturing_kg_co2_eq": 29.86230874,
        "transportation_kg_co2_eq": 5.457734144,
        "use_kg_co2_eq": 3.457734144,
        "end_of_life_kg_co2_eq": 1.457734144,
        "carbon_intensity_gram": 123.42,
        "lifetime_month": 48,
        "refurbishment_impact_kg_co2_eq": null,
        "refurbishment_offset_kg_co2_eq": null
    },
    "errors": null
}
 

Example response (200, NOTE: The carbon data will be null when no product was found):


{
    "data": {
        "manufacture_part_number": "286H8AA",
        "brand": "HP Inc",
        "category": "Docking station",
        "country_code": "DK",
        "refurbished": true,
        "data_match": false,
        "data_method": null,
        "total_kg_co2_eq": null,
        "carbon_intensity_gram": null,
        "lifetime_month": null,
        "refurbishment_impact_kg_co2_eq": null,
        "refurbishment_offset_kg_co2_eq": null
    },
    "errors": null
}
 

Example response (422):


{
    "data": null,
    "errors": {
        "manufacture_part_number": [
            "The manufacture part number field is required."
        ],
        "brand": [
            "The brand field is required."
        ],
        "category": [
            "The category field is required."
        ],
        "refurbished": [
            "The refurbished field must not be greater than 1."
        ]
    }
}
 

Request   

GET api/v3/products

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

manufacture_part_number   string   

The unique manufacturer part number (SKU/MPN) provided by the vendor or distributor, or an internal part number. Example: 286H8AA

brand   string   

The product manufacturer's name. Used together with the MPN and category to ensure a unique data match. Example: HP Inc

category   string   

Used alongside the external ID and brand to ensure accurate product matching. Also enables the system to provide carbon data for the category when specific LCA data is unavailable. Example: Docking station

country_code   string   

The ISO 3166-2 (or ISO 3166-2:US) alpha-2 code representing the country where the product is typically used. Determines the carbon intensity used in calculations. Example: DK

refurbished   integer  optional  

optional Indicates whether the product is refurbished (pre-owned). A value of 1 denotes a refurbished product. Example: 1

POST e.product

requires authentication

e.product – Batch Product-Level Carbon Footprint API

The e.product API allows you to retrieve carbon footprint data for multiple products in a single request, making it efficient for e-commerce, quotations, and bulk assessments. This minimizes processing time and optimizes performance when extracting carbon data at scale.

Batch Processing

You can access more detailed information in the API documentation by expanding objects marked with a small black arrow (⯈), such as ⯈ client or ⯈ devices. Simply click the arrow to reveal additional data fields.

Example request:
curl --request POST \
    "https://app.rejoose.com/api/v3/products" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"products\": [
        {
            \"manufacture_part_number\": \"modi\",
            \"brand\": \"HP Inc\",
            \"category\": \"Docking station\",
            \"country_code\": \"DK\",
            \"refurbished\": true
        }
    ]
}"
const url = new URL(
    "https://app.rejoose.com/api/v3/products"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "products": [
        {
            "manufacture_part_number": "modi",
            "brand": "HP Inc",
            "category": "Docking station",
            "country_code": "DK",
            "refurbished": true
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.rejoose.com/api/v3/products'
payload = {
    "products": [
        {
            "manufacture_part_number": "modi",
            "brand": "HP Inc",
            "category": "Docking station",
            "country_code": "DK",
            "refurbished": true
        }
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200, Note: refurbishment_impact_kg_co2_eq and refurbishment_offset_kg_co2_eq will only be included when product is refurbished):


{
    "data": [
        {
            "manufacture_part_number": "286H8AA",
            "brand": "HP Inc",
            "category": "Docking station",
            "country_code": "DK",
            "refurbished": true,
            "data_match": true,
            "data_method": "CA+",
            "total_kg_co2_eq": 3.7941664000000004,
            "carbon_intensity_gram": 103,
            "lifetime_month": 48,
            "refurbishment_impact_kg_co2_eq": 0.3267312,
            "refurbishment_offset_kg_co2_eq": 6.0052688
        }
    ],
    "errors": null
}
 

Example response (200, NOTE: Requires 'e.product-plus' to retrieve detailed LCA (Life Cycle Assessment) data.):


{
    "data": [
        {
            "manufacture_part_number": "286H8AA",
            "brand": "HP Inc",
            "category": "Docking station",
            "country_code": "DK",
            "refurbished": false,
            "data_match": true,
            "data_method": "CA",
            "total_kg_co2_eq": 40.23551117,
            "manufacturing_kg_co2_eq": 29.86230874,
            "transportation_kg_co2_eq": 5.457734144,
            "use_kg_co2_eq": 3.457734144,
            "end_of_life_kg_co2_eq": 1.457734144,
            "carbon_intensity_gram": 123.42,
            "lifetime_month": 48,
            "refurbishment_impact_kg_co2_eq": null,
            "refurbishment_offset_kg_co2_eq": null
        }
    ],
    "errors": null
}
 

Example response (200, Note: The carbon footprint data will be null when the product was not found.):


{
    "data": [
        {
            "manufacture_part_number": "286H8AA",
            "brand": "HP Inc",
            "category": "Docking station",
            "country_code": "DK",
            "refurbished": true,
            "data_match": false,
            "data_method": null,
            "total_kg_co2_eq": null,
            "carbon_intensity_gram": null,
            "lifetime_month": null,
            "refurbishment_impact_kg_co2_eq": null,
            "refurbishment_offset_kg_co2_eq": null
        }
    ],
    "errors": null
}
 

Example response (422):


{
    "data": null,
    "errors": {
        "products.0.manufacture_part_number": [
            "The products.0.manufacture_part_number field is required."
        ],
        "products.0.brand": [
            "The products.0.brand field is required."
        ],
        "products.0.category": [
            "The products.0.category field is required."
        ],
        "products.0.country_code": [
            "The products.0.country_code field is required."
        ]
    }
}
 

Request   

POST api/v3/products

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

products   object[]   

The array of products. This array must not exceed 100 items.

manufacture_part_number   string   

The unique manufacturer part number (SKU/MPN) provided by the vendor or distributor, or an internal part number. Example: Example: modi

brand   string   

The product manufacturer's name. Used together with the MPN and category to ensure a unique data match. Example: HP Inc

category   string   

Used alongside the external ID and brand to ensure accurate product matching. Also enables the system to provide carbon data for the category when specific LCA data is unavailable. Example: Docking station

country_code   string   

The ISO 3166-2 (or ISO 3166-2:US) alpha-2 code representing the country where the product is typically used. Determines the carbon intensity used in calculations. Example: DK

refurbished   boolean  optional  

optional Indicates whether the product is refurbished (pre-owned). A value of 1 denotes a refurbished product. Example: true

GET changed products

requires authentication

Retrieve changed products as a CSV file. This endpoint provides a CSV file listing the changes for a specified date or week. The file contains columns for manufacturer_part_number, brand, and category. Use this file to check for relevant products and brands, then use the e.product API to obtain detailed information.

Daily File: If a date is specified, a daily changes file for that day is returned, specified date cannot be in the future.

Weekly Summary File: Aggregates product changes from Monday to Sunday for a specified week.

Without a date, a summary file for the specified or most recent week is retrieved. The weekly file aggregates product changes from Monday to Sunday for the specified week.

Weekly File Details:

Weekly File Composition:

The weekly file includes:

Recommendations:

Example request:
curl --request GET \
    --get "https://app.rejoose.com/api/v3/products/changes?date=2024-11-01&week_number=45" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.rejoose.com/api/v3/products/changes"
);

const params = {
    "date": "2024-11-01",
    "week_number": "45",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.rejoose.com/api/v3/products/changes'
params = {
  'date': '2024-11-01',
  'week_number': '45',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (302):


manufacturer_part_number,brand,category
UT04CBE,Lenovo,Notebook
RE242EP,HP,Notebook
PSMA2E-00U01DGC,Toshiba,Notebook
RH324ET#ABY-D30,HP,Notebook
A3HF-5A027P,ASUS,Notebook

 

Example response (404):


{
    "error": "File not found"
}
 

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
 

{
    "message": "The route localhost/api/v3/products/changes could not be found."
}
 

Example response (422):


{
    "error": "Invalid week number. The week number should be no higher than last week"
}
 

Request   

GET api/v3/products/changes

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

date   string  optional  

Optional. The date of the changes (in format YYYY-MM-DD). Example: 2024-11-01

week_number   integer  optional  

Optional. The week number of the changes, between 1 and 52. Example: 45

Groups

Enterprise Grouping in e.hub

The e.hub Enterprise Functionality is an advanced feature exclusively available to Enterprise Subscription customers. It is designed for companies operating with multiple ERP systems that do not share common company or organization identifiers. This is particularly useful for businesses using different ERP systems across regions, such as SAP in the EU and Business Central in the US, where customer naming conventions and identifiers are not aligned.

Seamless Data Consolidation Across Multiple ERP Systems

With this feature, you can link and unify organization data from multiple disconnected ERP systems into a single Group Structure, ensuring a consistent, company-wide carbon reporting framework.

Three-Tiered Reporting Structure

The grouping model enables full organizational alignment across various business units:

Each Group can contain multiple Organizations, and each Organization can include hundreds of subsidiaries, ensuring scalability for even the largest enterprises.

Data Extraction & Integration

A dedicated data extraction endpoint allows you to:

GET group e.voices by slug

requires authentication

Retrieve a paginated list of e.voices for a specific group, filtered by date and pagination options.

Example request:
curl --request GET \
    --get "https://app.rejoose.com/api/v3/group/eco-friendly-company?from=2024-01-01&to=2024-12-31&page=2&per_page=20" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.rejoose.com/api/v3/group/eco-friendly-company"
);

const params = {
    "from": "2024-01-01",
    "to": "2024-12-31",
    "page": "2",
    "per_page": "20",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.rejoose.com/api/v3/group/eco-friendly-company'
params = {
  'from': '2024-01-01',
  'to': '2024-12-31',
  'page': '2',
  'per_page': '20',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "data": {
        "items": [
            {
                "external_invoice_id": "a6e0f0bb-0285-4a2d-b6d8-93c63543d5a9",
                "external_invoice_date": "2024-07-24T07:39:56.000000Z",
                "country_code": "DK",
                "carbon_intensity_gram": 123,
                "total_kg_co2_eq": 1301.51,
                "status": "finalized",
                "created_at": "2024-07-24T07:39:56.000000Z",
                "updated_at": "2024-07-24T07:39:59.000000Z",
                "group": {
                    "name": "Eco Friendly Company",
                    "slug": "eco-friendly-company"
                },
                "client": {
                    "name": "Eco-Friendly Solutions Ltd",
                    "organization_id": "ecofriendly-4987",
                    "address": "100 Enviro Way",
                    "address2": "Sustainability Lane 3",
                    "zip_code": "ECO321",
                    "city": "GreenVille",
                    "country": "Denmark",
                    "vat_number": "ECOF1234567"
                },
                "devices": [
                    {
                        "external_id": "RE8989121",
                        "original_manufacturer_part_number": "62B6MAT3EU",
                        "quantity": 10,
                        "brand": "Lenovo",
                        "model_name": "ThinkPad T480",
                        "category": "Notebook",
                        "lifetime_months": 72,
                        "scope_2_kg_co2_eq": 278.41,
                        "scope_3_kg_co2_eq": 249.27,
                        "total_kg_co2_eq": 527.68,
                        "refurbished": true,
                        "avoided_emissions_kg_co2_eq": 256.68
                    },
                    {
                        "external_id": "SM-S918BZKDEEB",
                        "original_manufacturer_part_number": null,
                        "quantity": 10,
                        "brand": "Samsung",
                        "model_name": "Galaxy S23 Ultra",
                        "category": "Smartphone",
                        "lifetime_months": 30,
                        "scope_2_kg_co2_eq": 31.18,
                        "scope_3_kg_co2_eq": 742.65,
                        "total_kg_co2_eq": 773.83,
                        "refurbished": false,
                        "avoided_emissions_kg_co2_eq": 0
                    }
                ],
                "links": {
                    "self": "https://app.rejoose.com/api/v3/evoices/a6e0f0bb-0285-4a2d-b6d8-93c63543d5a9"
                }
            }
        ],
        "current_page": 2,
        "last_page": 4522,
        "total": 4522,
        "per_page": 1,
        "next_page": "https://app.rejoose.com/api/v3/group/eco-friendly-company?page=3",
        "previous_page": "https://app.rejoose.com/api/v3/group/eco-friendly-company?page=1"
    },
    "errors": null
}
 

Example response (404):


{
    "data": null,
    "errors": {
        "not_found": "Group with slug company-123 not found."
    }
}
 

Request   

GET api/v3/group/{slug}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

slug   string   

The group slug used to filter the e.voices. Example: eco-friendly-company

Query Parameters

from   string  optional  

date The start date for filtering e.voices. Example: 2024-01-01

to   string  optional  

date The end date for filtering e.voices. Default: today. Example: 2024-12-31

page   integer  optional  

The page number for pagination. Default: 1. Example: 2

per_page   integer  optional  

The number of items per page (1-100). Default: 10. Example: 20

GET groups e.voices

requires authentication

Retrieve a paginated list of e.voices for all groups, filtered by date and pagination options.

Example request:
curl --request GET \
    --get "https://app.rejoose.com/api/v3/groups?from=2024-01-01&to=2024-12-31&page=2&per_page=20" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.rejoose.com/api/v3/groups"
);

const params = {
    "from": "2024-01-01",
    "to": "2024-12-31",
    "page": "2",
    "per_page": "20",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.rejoose.com/api/v3/groups'
params = {
  'from': '2024-01-01',
  'to': '2024-12-31',
  'page': '2',
  'per_page': '20',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "data": {
        "items": [
            {
                "external_invoice_id": "a6e0f0bb-0285-4a2d-b6d8-93c63543d5a9",
                "external_invoice_date": "2024-07-24T07:39:56.000000Z",
                "country_code": "DK",
                "carbon_intensity_gram": 123,
                "total_kg_co2_eq": 1301.51,
                "status": "finalized",
                "created_at": "2024-07-24T07:39:56.000000Z",
                "updated_at": "2024-07-24T07:39:59.000000Z",
                "group": {
                    "name": "Eco Friendly Company",
                    "slug": "eco-friendly-company"
                },
                "client": {
                    "name": "Eco-Friendly Solutions Ltd",
                    "organization_id": "ecofriendly-4987",
                    "address": "100 Enviro Way",
                    "address2": "Sustainability Lane 3",
                    "zip_code": "ECO321",
                    "city": "GreenVille",
                    "country": "Denmark",
                    "vat_number": "ECOF1234567"
                },
                "devices": [
                    {
                        "external_id": "RE8989121",
                        "original_manufacturer_part_number": "62B6MAT3EU",
                        "quantity": 10,
                        "brand": "Lenovo",
                        "model_name": "ThinkPad T480",
                        "category": "Notebook",
                        "lifetime_months": 72,
                        "scope_2_kg_co2_eq": 278.41,
                        "scope_3_kg_co2_eq": 249.27,
                        "total_kg_co2_eq": 527.68,
                        "refurbished": true,
                        "avoided_emissions_kg_co2_eq": 256.68
                    },
                    {
                        "external_id": "SM-S918BZKDEEB",
                        "original_manufacturer_part_number": null,
                        "quantity": 10,
                        "brand": "Samsung",
                        "model_name": "Galaxy S23 Ultra",
                        "category": "Smartphone",
                        "lifetime_months": 30,
                        "scope_2_kg_co2_eq": 31.18,
                        "scope_3_kg_co2_eq": 742.65,
                        "total_kg_co2_eq": 773.83,
                        "refurbished": false,
                        "avoided_emissions_kg_co2_eq": 0
                    }
                ],
                "links": {
                    "self": "https://app.rejoose.com/api/v3/evoices/a6e0f0bb-0285-4a2d-b6d8-93c63543d5a9"
                }
            }
        ],
        "current_page": 2,
        "last_page": 4522,
        "total": 4522,
        "per_page": 1,
        "next_page": "https://app.rejoose.com/api/v3/groups?page=3",
        "previous_page": "https://app.rejoose.com/api/v3/groups?page=1"
    },
    "errors": null
}
 

Request   

GET api/v3/groups

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

from   string  optional  

date The start date for filtering e.voices. Example: 2024-01-01

to   string  optional  

date The end date for filtering e.voices. Default: today. Example: 2024-12-31

page   integer  optional  

The page number for pagination. Default: 1. Example: 2

per_page   integer  optional  

The number of items per page (1-100). Default: 10. Example: 20