Wren Project Orders API

Fund a specific project by dollar amount

OpenAPI Specification

wren-project-orders-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Wren Credits Project Orders API
  description: The Wren API is a JSON REST API that lets you offset carbon dioxide through Wren's portfolio of verified carbon sequestration projects. Create offset orders by tonnage, fund specific projects by dollar amount, plant trees, manage a prepaid credit balance, and list portfolios, purchases, and donations. Most endpoints require an API token (team live token, wren_test_ sandbox token, or legacy personal token) via HTTP Basic or Bearer auth.
  version: '2026-07-21'
  contact:
    name: Wren Support
    email: support@wren.co
    url: https://www.wren.co/faq
  termsOfService: https://www.wren.co/terms-of-use
servers:
- url: https://www.wren.co
  description: Production
security:
- basicAuth: []
- bearerAuth: []
tags:
- name: Project Orders
  description: Fund a specific project by dollar amount
paths:
  /api/project-orders:
    post:
      operationId: createProjectOrder
      tags:
      - Project Orders
      summary: Fund a specific project by dollar amount
      description: Funds a specific project directly by projectId without portfolio allocation. Offsettable projects (cost_per_ton) create offset orders and the response includes impact.tons; non-offsettable projects create project donations. Tree-measured projects are not supported (use /api/tree-orders).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectOrderRequest'
            examples:
              basic:
                value:
                  projectId: 18
                  amountInUsdCents: 2500
                  note: Funding this project for Q1 usage
              credits:
                value:
                  projectId: 18
                  amountInUsdCents: 2500
                  paymentMethod: credits
              dryRun:
                value:
                  projectId: 18
                  amountInUsdCents: 2500
                  dryRun: true
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ProjectOrderRequest'
      responses:
        '200':
          description: Project order created (or previewed when dryRun is true)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectOrderResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
components:
  responses:
    Forbidden:
      description: Missing or invalid authentication, or account not eligible for the operation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Invalid payload, missing required fields, or validation failure.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    ProjectOrderResponse:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        amountCharged:
          type: number
        currency:
          type: string
        impact:
          type: object
          properties:
            tons:
              type: number
              description: Included only when the project has cost_per_ton.
        paymentMethod:
          type: string
        creditsRemaining:
          type: integer
        test:
          type: boolean
    Error:
      type: object
      properties:
        message:
          type: string
          description: Human-readable description of the validation or auth failure.
    ProjectOrderRequest:
      type: object
      required:
      - projectId
      - amountInUsdCents
      properties:
        projectId:
          type: integer
          minimum: 1
          description: ID of the project to fund.
        amountInUsdCents:
          type: integer
          minimum: 100
          description: Amount in USD cents. Minimum 100 ($1.00).
        note:
          type: string
        dryRun:
          type: boolean
        sendReceiptEmail:
          type: boolean
        paymentMethod:
          type: string
          enum:
          - stripe
          - credits
        onBehalfOfName:
          type: string
          maxLength: 200
        onBehalfOfEmail:
          type: string
          maxLength: 320
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: 'Recommended for curl: pass the API token as the username with an empty password (-u [api_token]:). Token types: team live token (UUID), team test token (wren_test_ prefix, sandbox), legacy personal token (UUID).'
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Authorization: Bearer [api_token] with the same token types as Basic auth.'
externalDocs:
  description: Wren API Documentation
  url: https://www.wren.co/docs/api
x-provenance:
  generated: '2026-07-21'
  method: derived
  source:
  - https://www.wren.co/docs/api
  - https://www.wren.co/docs/api/wren-api.postman_collection.json
  - https://www.wren.co/docs/api/offset-orders
  - https://www.wren.co/docs/api/project-orders
  - https://www.wren.co/docs/api/tree-orders
  - https://www.wren.co/docs/api/portfolios
  - https://www.wren.co/docs/api/purchases
  - https://www.wren.co/docs/api/project-donations
  - https://www.wren.co/docs/api/credits
  note: Wren publishes complete REST reference documentation and a Postman collection but no OpenAPI document. This spec was derived faithfully from the published docs and collection by the API Evangelist enrichment pipeline; it is not an official Wren artifact.