API Documentation

Complete guide to integrating carbon offsetting.

Quick start

Get started with the Minpact API in minutes.

Base URL

https://minpact.com/v1

Authentication

Authorization: Bearer {your-api-key}

Endpoints

Interactive API Tester

Test endpoints live with real API calls

Get Current EUA Price

GET /api/v1/pricing
Public endpoint - Get real-time EU Allowance pricing information

Retrieve the current price per ton of CO₂ for EU Allowances (EUAs), including pricing tiers and market information. This endpoint is public and doesn't require authentication.

Parameters

  • kg (optional, number ≥ 0): Amount in kilograms to price. If omitted, defaults to 1,000 kg (1 tonne).

Response

{
    "price_per_ton": 76.64,
    "currency": "EUR",
    "last_updated": "2025-10-01",
    "minimum_purchase": 0.005,
    "requested_kg": 250,
    "price_for_amount": 19.16
}

Response Fields

  • price_per_ton: Current price per ton of CO₂ in EUR
  • currency: Currency code (always "EUR")
  • last_updated: Date of last price update (YYYY-MM-DD format, always first of month)
  • minimum_purchase: Minimum amount in tons (0.005 = 5kg)
  • requested_kg: The amount in kg used to compute the total (defaults to 1000 if not provided)
  • price_for_amount: Total price (EUR) for requested_kg, rounded to 2 decimals

Example Usage

# Price for 1 tonne (default)
curl -X GET 'https://minpact.com/api/v1/pricing' \
    -H 'Accept: application/json'

# Price for a specific amount (e.g. 250 kg)
curl -X GET 'https://minpact.com/api/v1/pricing?kg=250' \
    -H 'Accept: application/json'

💡 Integration Tip

Use this endpoint to display current pricing in your application or to calculate estimated costs before creating offsets. The price is fixed per ton regardless of volume.

Error Responses

400 Bad Request

{
  "success": false,
  "error": "validation_failed",
  "message": "Invalid input data",
  "details": {
    "co2_tons": ["The co2_tons field is required."],
    "name": ["The name field must be at least 3 characters."]
  }
}

401 Unauthorized

{
  "success": false,
  "error": "unauthorized",
  "message": "Invalid or missing API key"
}

429 Too Many Requests

{
  "success": false,
  "error": "rate_limit_exceeded",
  "message": "Rate limit exceeded. Try again in 60 seconds."
}