> ## Documentation Index
> Fetch the complete documentation index at: https://docs.enginy.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Purchase capacity

> Buy more recurring capacity for the organization: the credit or identity quota grows by `amount` and the price is added to the organization's monthly invoice. Allocate it to clients afterwards with `PUT /v1/organization/clients/{clientId}/capacity`. Only organizations whose `capabilities.purchaseMode` is `self-serve` and that have a billing agreement can buy; credits are bought in batches of 1,000. Upsell and management only: capacity can be bought or requested and redistributed between clients, but the organization's contracted quota is never lowered through the API. Contact Enginy to reduce it. Requires the API key creator (or the connected MCP user) to be an `ORGANIZATION_ADMIN` of the organization the key’s workspace belongs to. For organizations (agencies, resellers, white-label partners, enterprises) and their client workspaces only. The organization role is checked first: a caller without one is refused with 403 (`ORGANIZATION_READ_FORBIDDEN` on reads, `ORGANIZATION_ADMIN_FORBIDDEN` on writes), and a caller with one whose workspace is not in a live organization gets 404 `NOT_IN_ORGANIZATION`.

    > **Required scope:** `WORKSPACE_WRITE`
    >
    > **Rate limit:** 10 requests per minute



## OpenAPI

````yaml https://openapi.enginy.ai/definitions.json post /v1/organization/capacity/purchases
openapi: 3.1.0
info:
  title: Enginy API
  version: 1.0.0
  description: Public API for Enginy platform
servers:
  - url: https://openapi.enginy.ai
    description: Configured server
security: []
tags:
  - name: AI Variables
    description: >-
      Manage AI variables and discover the entity fields you can reference in
      prompts and entity requests.
  - name: Inbox
    description: >-
      Inbox endpoints for listing contact threads, reading thread messages,
      managing tags, and sending manual replies.
  - name: Workspace
    description: >-
      The API key's workspace: its capacity, its organization, where its users
      open the app and where an admin buys more.
  - name: Organization
    description: >-
      For organizations (agencies, resellers, white-label partners, enterprises)
      and their client workspaces only. Create client workspaces, distribute
      credits and identity slots between them, and buy or request more capacity.
      Upsell and management only: no endpoint lowers the contracted quota.
      Clients billed through self-serve billing keep their own plan. Requires an
      organization role.
  - name: Workflows
    description: >-
      Build, validate, publish, run, and inspect advanced (graph) workflows,
      plus the block/condition catalog needed to author a workflow plan.
paths:
  /v1/organization/capacity/purchases:
    post:
      tags:
        - Organization
      summary: Purchase capacity
      description: >-
        Buy more recurring capacity for the organization: the credit or identity
        quota grows by `amount` and the price is added to the organization's
        monthly invoice. Allocate it to clients afterwards with `PUT
        /v1/organization/clients/{clientId}/capacity`. Only organizations whose
        `capabilities.purchaseMode` is `self-serve` and that have a billing
        agreement can buy; credits are bought in batches of 1,000. Upsell and
        management only: capacity can be bought or requested and redistributed
        between clients, but the organization's contracted quota is never
        lowered through the API. Contact Enginy to reduce it. Requires the API
        key creator (or the connected MCP user) to be an `ORGANIZATION_ADMIN` of
        the organization the key’s workspace belongs to. For organizations
        (agencies, resellers, white-label partners, enterprises) and their
        client workspaces only. The organization role is checked first: a caller
        without one is refused with 403 (`ORGANIZATION_READ_FORBIDDEN` on reads,
        `ORGANIZATION_ADMIN_FORBIDDEN` on writes), and a caller with one whose
        workspace is not in a live organization gets 404 `NOT_IN_ORGANIZATION`.

            > **Required scope:** `WORKSPACE_WRITE`
            >
            > **Rate limit:** 10 requests per minute
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                resource:
                  type: string
                  enum:
                    - CREDITS
                    - IDENTITIES
                  description: >-
                    `CREDITS` (a monthly credit budget) or `IDENTITIES`
                    (identity slots).
                amount:
                  type: integer
                  exclusiveMinimum: 0
                  maximum: 1000000000
                  description: >-
                    Monthly credits (in batches of 1,000) or identity slots to
                    add to the organization quota: at most 1,000,000 credits or
                    1,000 identities per purchase.
              required:
                - resource
                - amount
              additionalProperties: false
      responses:
        '201':
          description: The capacity was purchased
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                      - success
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      resource:
                        type: string
                        enum:
                          - CREDITS
                          - IDENTITIES
                        description: >-
                          `CREDITS` (a monthly credit budget) or `IDENTITIES`
                          (identity slots).
                      amount:
                        type: number
                      newQuota:
                        type: number
                      additionalMonthlyCost:
                        type: number
                        description: >-
                          Added to the organization's monthly invoice, in the
                          contract currency.
                    required:
                      - resource
                      - amount
                      - newQuota
                      - additionalMonthlyCost
                required:
                  - status
                  - message
                  - data
        '400':
          description: >-
            Invalid request, or the capacity change is refused (`details.code`:
            `POOL_HEADROOM_EXCEEDED`, `MOVE_EXCEEDS_BUDGET`,
            `MOVE_EXCEEDS_IDENTITY_SLOTS`, `IDENTITY_CAP_BELOW_CONNECTED`,
            `BELOW_ADD_ON_CREDITS`, `ACCOUNT_LIMIT_REACHED`,
            `CREDITS_NOT_IN_INCREMENTS`, `PURCHASE_NEEDS_QUOTA` or
            `CAPACITY_IS_PURCHASED`)
        '401':
          description: Missing or invalid API key, or the workspace is frozen or deleted
        '403':
          description: >-
            The API key lacks the scope (`missingScopes`), its creator lacks the
            organization role (`details.code`: `ORGANIZATION_READ_FORBIDDEN` or
            `ORGANIZATION_ADMIN_FORBIDDEN`), or the operation is not available
            to this organization or client (`ACCOUNT_BILLED_SELF_SERVE`,
            `NO_CONTRACT_VIEW`, `PURCHASES_ARE_REQUESTED`,
            `PURCHASE_NEEDS_BILLING_AGREEMENT`)
        '404':
          description: >-
            The workspace is not in an organization (`details.code`:
            `NOT_IN_ORGANIZATION`, `ORGANIZATION_NOT_FOUND`), or the client is
            not one of its live clients (`ACCOUNT_NOT_FOUND`)
        '412':
          description: >-
            Enginy has not set the organization quota this change allocates from
            yet (`details.code`: `QUOTA_NOT_SET`)
        '429':
          description: Rate limit exceeded; retry after `X-RateLimit-Retry-After-Seconds`
      security:
        - apiKey: []
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.