> ## 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.

# Set client capacity

> Set one client's monthly credit budget or identity slots to an absolute value. The difference moves between the client and the organization's unallocated pool, and is recorded in the capacity history. Credits moved mid-month are delivered or retracted right away. Clients billed through self-serve billing (`billedSelfServe: true`) are refused with `ACCOUNT_BILLED_SELF_SERVE`: their own plan sets their capacity. Lowering a client's cap returns the difference to the pool; it does not lower what the organization pays. 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:** 30 requests per minute



## OpenAPI

````yaml https://openapi.enginy.ai/definitions.json put /v1/organization/clients/{clientId}/capacity
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/clients/{clientId}/capacity:
    put:
      tags:
        - Organization
      summary: Set client capacity
      description: >-
        Set one client's monthly credit budget or identity slots to an absolute
        value. The difference moves between the client and the organization's
        unallocated pool, and is recorded in the capacity history. Credits moved
        mid-month are delivered or retracted right away. Clients billed through
        self-serve billing (`billedSelfServe: true`) are refused with
        `ACCOUNT_BILLED_SELF_SERVE`: their own plan sets their capacity.
        Lowering a client's cap returns the difference to the pool; it does not
        lower what the organization pays. 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:** 30 requests per minute
      parameters:
        - schema:
            type: integer
            exclusiveMinimum: 0
            maximum: 2147483647
            description: >-
              The client (account) ID, as `GET /v1/organization/clients` returns
              it.
          required: true
          description: >-
            The client (account) ID, as `GET /v1/organization/clients` returns
            it.
          name: clientId
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                resource:
                  type: string
                  enum:
                    - CREDITS
                    - IDENTITIES
                  description: >-
                    `CREDITS` (a monthly credit budget) or `IDENTITIES`
                    (identity slots).
                value:
                  type: integer
                  minimum: 0
                  maximum: 1000000000
                  description: 'The client''s new cap: monthly credits, or identity slots.'
                note:
                  type: string
                  maxLength: 500
              required:
                - resource
                - value
              additionalProperties: false
      responses:
        '200':
          description: The new capacity; `data` is `null` when the value did not change
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                      - success
                  message:
                    type: string
                  data:
                    type:
                      - object
                      - 'null'
                    properties:
                      resource:
                        type: string
                        enum:
                          - CREDITS
                          - IDENTITIES
                        description: >-
                          `CREDITS` (a monthly credit budget) or `IDENTITIES`
                          (identity slots).
                      amount:
                        type: number
                      immediateAmount:
                        type: number
                        description: >-
                          Credits delivered or retracted right now (mid-month);
                          0 for identities.
                      from:
                        type:
                          - object
                          - 'null'
                        properties:
                          clientId:
                            type: number
                          newValue:
                            type: number
                        required:
                          - clientId
                          - newValue
                      to:
                        type:
                          - object
                          - 'null'
                        properties:
                          clientId:
                            type: number
                          newValue:
                            type: number
                        required:
                          - clientId
                          - newValue
                    required:
                      - resource
                      - amount
                      - immediateAmount
                      - from
                      - to
                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.