Lune Bundles API

Get bundles.

Operations 2

GET /bundles List bundles #
GET /bundles/{id} Get a bundle #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/lune:lune-bundles-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API 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 Specification

lune-bundles-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Lune Bundles API
  version: '1.0'
  contact:
    name: Lune Support
    email: support@lune.co
  termsOfService: https://lune.co/terms
  description: 'Operations tagged Bundles across 2 of this provider''s published API definitions: openapi.yml, lune-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.lune.co/v1
  description: Lune's REST API
tags:
- name: Bundles
  description: Get bundles.
  x-lune-component: Bundle
paths:
  /bundles:
    get:
      summary: List bundles
      operationId: listBundles
      security:
      - BearerAuth: []
      tags:
      - Bundles
      parameters:
      - $ref: '#/components/parameters/LimitPagination'
      - $ref: '#/components/parameters/AfterPagination'
      - name: recently_disabled
        in: query
        description: When `recently_disabled` is set to true, the response will also include bundles which have been disabled in the last 30 days.
        schema:
          type: boolean
          default: false
          example: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedBundles'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    servers:
    - url: https://api.lune.co/v1
      description: Lune's REST API
  /bundles/{id}:
    get:
      summary: Get a bundle
      operationId: getBundle
      security:
      - BearerAuth: []
      tags:
      - Bundles
      parameters:
      - name: id
        in: path
        required: true
        description: The bundle's unique identifier
        schema:
          type: string
          example: ljmkOq7vXd239gAE9WALWQ8ZGVD5ExNz
      responses:
        '200':
          description: OK
          x-lune-response-component: Bundle
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Bundle'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    servers:
    - url: https://api.lune.co/v1
      description: Lune's REST API
components:
  schemas:
    Error:
      type: object
      description: Individual error information
      required:
      - error_code
      - message
      properties:
        error_code:
          type: string
          description: Immutable string representing a specific error.
          example: account_suspended
          enum:
          - api_version_invalid
          - account_suspended
          - bundle_selection_ratios_invalid
          - bundle_selection_bundle_invalid
          - order_idempotency_already_exists
          - order_quantity_invalid
          - order_value_invalid
          - bundle_id_invalid
          - id_invalid
          - distance_invalid
          - test_account_name_update_disallowed
          - validation_error
          - bundle_selection_ratios_invalid_format
          - address_not_found
          - port_not_found
          - locode_not_found
          - airport_invalid
          - webhook_limit_reached
          - time_range_invalid
          - exchange_rate_not_found
          - live_account_required
          - unauthorised
          - estimate_not_found
          - estimate_order_already_placed
          - sustainability_page_slug_not_unique
          - sustainability_page_exists
          - pagination_limit_invalid
          - unsupported_image_format
          - source_location_code_invalid
          - destination_location_code_invalid
          - emission_factor_id_invalid
          - emission_factor_unit_mismatch
          - emission_factor_gated
          - account_scope_incorrect
          - service_unavailable
          - handle_not_unique
          - estimate_idempotency_already_exists
          - airport_route_required
          - future_departure_invalid
          - transaction_document_inference_failure
          - transaction_document_creation_failure
          - invalid_selected_account_id
          - account_idempotency_already_exists
          - account_handle_idempotency_key_inconsistency
          - shipment_batch_idempotency_already_exists
          - route_not_found
          - insufficient_credits
          - client_account_mismatch
        message:
          type: string
          description: 'Human readable error message.


            This value can contain some extra information about the error in

            human-readable form. Not suitable for programmatic consumption, the format

            is not guaranteed to be stable.

            '
    PaginatedBundles:
      allOf:
      - $ref: '#/components/schemas/PaginatedBase'
      - type: object
        required:
        - data
        properties:
          data:
            type: array
            description: 'An array of Bundle objects.


              Part of a paginated response.

              '
            items:
              $ref: '#/components/schemas/Bundle'
    ProjectSummary:
      type: object
      required:
      - id
      - name
      - short_name
      - slug
      - description
      - project_type
      - registry_name
      - registry_link
      - latitude
      - longitude
      - country_name
      - country_code
      - region
      - logo
      - primary_image
      - thumbnail_image
      - results
      - un_sdg
      - media
      - disabled
      - crediting_start_date
      - crediting_end_date
      - registration_date
      - protocol
      - methodology
      - durability
      - additional_standards_met
      - verifying_body
      - risk_of_reversal
      - risk_of_predicted_emissions
      - avg_annual_emission_reductions
      properties:
        id:
          type: string
          example: owda1kVEl60jnPykZeADr57Z8OqbKMXx
          description: The projects's unique identifier
        name:
          type: string
          description: The project's name
          example: Alto Mayo
        short_name:
          type: string
          description: The project's short name. May coincide with name.
          example: Alto Mayo
        slug:
          type: string
          description: Project slug
          example: alto-mayo
        description:
          description: Project description
          type: string
        project_type:
          type: string
          description: The project's offset type, eg Forest conservation, Afforestation, Direct Air Capture
          example: Forest conservation
        registry_name:
          $ref: '#/components/schemas/Registry'
        registry_link:
          type:
          - string
          - 'null'
          description: A link to the registry's project details page.
          example: https://registry.verra.org/app/projectDetail/VCS/1566
        latitude:
          type: number
          format: float
          description: Latitude
          example: '-5.87798'
        longitude:
          type: number
          format: float
          description: Logitude
          example: '-77.612352'
        country_name:
          type: string
          description: The project's country
          example: Peru
        country_code:
          type: string
          description: The project's 3 character country code
        region:
          type:
          - string
          - 'null'
          description: The project's region
          example: Huancavelica
        logo:
          type:
          - string
          - 'null'
          description: A project logo image URL
          example: https://assets.lune.co/projects/Alto+Mayo+1+logo.png
        primary_image:
          type:
          - string
          - 'null'
          description: A project image URL
          example: https://assets.lune.co/projects/Alto+Mayo+1.png
        thumbnail_image:
          type:
          - string
          - 'null'
          description: A project thumbnail image URL
          example: https://assets.lune.co/projects/Alto+Mayo+1_thumbnail.png
        results:
          description: Project results
          type:
          - array
          - 'null'
          items:
            type: string
          example:
          - Reduced deforestation of 75% from baseline levels, the first time a project in Peru reaches such high results
          - 'Co-benefits include: poverty reduction across local communities, education around sustainable farming, conservation of biodiversity'
        un_sdg:
          description: 'UN Sustainable Development Goals.


            Each number in the array represent one UN Sustainable Development Goal. See https://sdgs.un.org/goals.

            '
          type:
          - array
          - 'null'
          items:
            type: number
          example:
          - 1
          - 4
          - 8
          - 13
          - 15
        disabled:
          type: boolean
          example: false
          description: 'Disabled projects do not get allocated to orders

            '
        media:
          type: array
          items:
            $ref: '#/components/schemas/Media'
          description: A list of images and videos belonging to the project.
        crediting_start_date:
          type:
          - string
          - 'null'
          format: date
          example: '2024-01-01'
          description: Project’s crediting period start date.
        crediting_end_date:
          type:
          - string
          - 'null'
          format: date
          example: '2024-01-01'
          description: Project’s crediting period end date.
        registration_date:
          type:
          - string
          - 'null'
          format: date
          example: '2024-01-01'
          description: Date the project was registered in the registry.
        protocol:
          type:
          - array
          - 'null'
          items:
            type: string
          example:
          - Verra VCS
          - Verra CCB
          description: The standard followed to assure that a carbon offset project delivers on carbon reduction or removal.
        methodology:
          type:
          - string
          - 'null'
          example: VM0007
          description: Detailed application of the broader principles set out in the protocol.
        durability:
          type:
          - string
          - 'null'
          example: 100+
          description: Expected duration of the carbon storage (carbon removal projects only).
        additional_standards_met:
          type:
          - array
          - 'null'
          items:
            type: string
          example:
          - CCB Third Edition
          description: Any additional standards the project meets.
        verifying_body:
          type:
          - string
          - 'null'
          example: SCS Global Services
          description: Independent entity assessing compliance of carbon projects with protocol and methodology.
        risk_of_reversal:
          type:
          - string
          - 'null'
          example: Use of Verra buffer pool
          description: Mitigation plan for the risk of reversal.
        risk_of_predicted_emissions:
          type:
          - string
          - 'null'
          example: Non-issuance of credits
          description: Mitigation plan for the risk of predicted reductions or removals not occurring.
        avg_annual_emission_reductions:
          type:
          - string
          - 'null'
          example: '333978'
          pattern: ^[0-9]+(\.[0-9]+)?$
          description: Estimated average annual reductions or removals.
    Bundle:
      description: 'Group of projects of similar price and characteristics.


        Orders are placed against bundles.

        '
      allOf:
      - $ref: '#/components/schemas/BundleSummary'
      - type: object
        required:
        - projects
        properties:
          projects:
            type: array
            description: An array of Project objects that belong to the bundle.
            items:
              $ref: '#/components/schemas/ProjectSummary'
    Registry:
      type: string
      description: The project's Verification Standard Entity name or equivalent organization.
      example: Verra
      enum:
      - American Carbon Registry
      - Verra
      - Puro.earth
      - Gold Standard
      - Climate Action Reserve
      - Woodland Carbon Code
      - ACCU
      - Carbon Future
      - Isometric
      - Tuv Nord
      - ''
    CarbonPermanence:
      type: string
      description: The bundle's carbon storage permanence.
      enum:
      - long_term
      - short_term
      - no_storage
      example: long_term
    Media:
      type: object
      required:
      - type
      - url
      - attribution_text
      - attribution_url
      properties:
        type:
          type: string
          enum:
          - image
          - video
          example: image
          description: The type of the media item
        url:
          type: string
          example: https://assets.lune.co/bundles/biochar.png
          description: The URL of the media item
        attribution_text:
          type:
          - string
          - 'null'
          example: instagram.com/conservationorg
          description: A short description of where the image or video was sourced
        attribution_url:
          type:
          - string
          - 'null'
          example: https://conservationorg.com
          description: A URL pointing to where the image or video was sourced
    ErrorResponse:
      x-lune-name: Error response
      description: 'An error response containing the error details.


        The `error` property provides information about the type of error that occurred.

        Use this property for error handling.


        The `errors` array is present for backwards compatibility purposes. It always

        contains a single error element which is the same seen in the `error` property.

        '
      type: object
      required:
      - errors
      - error
      properties:
        errors:
          type: array
          description: An array containing errors
          items:
            $ref: '#/components/schemas/Error'
        error:
          $ref: '#/components/schemas/Error'
    PaginatedBase:
      type: object
      required:
      - has_more
      - next_cursor
      properties:
        has_more:
          type: boolean
          description: 'Whether or not there are more elements available after this set.


            If false, this set comprises the end of the array.


            Part of a paginated response.

            '
        next_cursor:
          description: 'The cursor value to be used as the after parameter for fetching the next page of results.


            `null` if `has_more` is `false`.

            '
          type:
          - string
          - 'null'
    BundleSummary:
      type: object
      required:
      - id
      - name
      - unit_price
      - gross_unit_price
      - currency
      - background_colour
      - primary_image
      - primary_image_hires
      - small_thumbnail
      - description
      - disabled
      - available_quantity
      - offset_type
      - approach
      - carbon_permanence
      properties:
        id:
          type: string
          example: BmWxrvXo29eGqzA1qjANL5PwnkgaO8R3
          description: The bundle's unique identifier
        name:
          type: string
          description: The bundle's name
          example: Latin America Forestry
        unit_price:
          type: string
          description: 'Bundle unit price per tonne CO2

            '
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '6.09'
        gross_unit_price:
          type: string
          description: 'Bundle unit price per tonne CO2 inclusive of fees

            '
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '7.09'
        currency:
          type: string
          example: GBP
          description: Currency code
        background_colour:
          type:
          - string
          - 'null'
          description: A bundle's background colour in hexadecimal format
          example: '#AABBCC'
        primary_image:
          type:
          - string
          - 'null'
          description: A bundle's image URL
          example: https://assets.lune.co/bundles/latin-america-forestry.png
        large_image:
          type:
          - string
          - 'null'
          description: A bundle's larger image URL
          example: https://assets.lune.co/bundles/latin-america-forestry-lg.png
        primary_image_hires:
          type:
          - string
          - 'null'
          description: A bundle's high resolution image URL
          example: https://assets.lune.co/bundles/latin-america-hires.jpg
        small_thumbnail:
          type:
          - string
          - 'null'
          description: A bundle's small thumbnail image URL
          example: https://assets.lune.co/bundles/latin-america-thumbnail.jpg
        description:
          type:
          - string
          - 'null'
          description: The bundle's description
          example: A conglomeration of renewable energy projects around the world
        disabled:
          type: boolean
          example: false
          description: 'Disabled bundles do not accept orders

            '
        available_quantity:
          type:
          - string
          - 'null'
          description: 'Quantity of CO2 offsets available to purchase (in tonnes).


            If available_quantity is null, assume there is an unlimited amount of offsets to purchase.

            '
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '1000.09'
        offset_type:
          type:
          - string
          - 'null'
          description: 'Offset type classification

            '
          enum:
          - emissions_reduction
          - carbon_removal
          - null
          example: emissions_reduction
        approach:
          type:
          - string
          - 'null'
          description: Bundle approach
          enum:
          - traditional
          - innovative
          - null
          example: traditional
        carbon_permanence:
          $ref: '#/components/schemas/CarbonPermanence'
  responses:
    BadRequest:
      description: The request is invalid. Parameters may be missing or are invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    TooManyRequests:
      description: Too many requests have been made in a short period of time
    Unauthorized:
      description: The API Key is missing or is invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: The specified resource was not found
  parameters:
    LimitPagination:
      name: limit
      in: query
      required: false
      description: 'Maximum number of resources to return, between 1 and 100.

        '
      schema:
        type: string
        pattern: ^\d+$
        default: '10'
        example: '50'
    AfterPagination:
      name: after
      in: query
      required: false
      description: 'A cursor for use in pagination.


        The cursor that points to the starting item of the next page of results. If not provided, the first page of results is returned.

        '
      schema:
        type: string
        example: 0vE213P96LbXNap56NAqVoM7knOedQg4
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Authorization Bearer API Key (see <a href="#section/Authentication">Authentication</a>)
    AccessToken:
      type: apiKey
      in: query
      name: access_token
      description: 'An API key used to access a resource that accepts it in the URL.


        Note: Lune API keys are not URL-safe, which means that they can''t be included in URLs directly.

        They need to be percent-encoded using a function like JavaScript''s [`encodeURIComponent()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) or

        Python''s [`urllib.parse.quote()`](https://docs.python.org/3/library/urllib.parse.html#urllib.parse.quote).

        '
x-refined-from:
- openapi.yml
- lune-openapi.yml