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

# Update client

> Updates client details or an allowed lifecycle status. This operation cannot grant organization access.



## OpenAPI

````yaml openapi-public-preview.json PATCH /v1/firm/clients/{client_id}
openapi: 3.1.0
info:
  title: Entendre API
  version: 1.0.0
  description: Programmatic access to crypto-native accounting and treasury operations.
servers:
  - url: https://api.entendre.finance
    description: Production API.
security:
  - ApiKey: []
tags:
  - name: Organization
    description: Read your organization profile and find members for agent assignments.
  - name: Transactions
    description: Find transactions, inspect their details and create manual records.
  - name: Sources
    description: >-
      Manage wallets, exchange accounts, bank accounts and other transaction
      sources.
  - name: Assets
    description: Inspect asset acquisitions, remaining quantities and cost basis.
  - name: Journals
    description: >-
      Create and post journal entries, correct eligible entries and sync posted
      journals to a connected general ledger.
  - name: Documents
    description: >-
      Upload documents, check processing status and link supporting evidence to
      transactions.
  - name: Legal Entities
    description: Manage the legal entities used in your accounting records.
  - name: Ledger Accounts
    description: Manage your chart of accounts and find accounts for journal entries.
  - name: Tags
    description: Create and manage tags to classify your records.
  - name: Accruals
    description: >-
      Create and post accruals, inspect their status and reverse eligible
      entries.
  - name: Cash Application
    description: Match deposits to invoices and manage the resulting cash applications.
  - name: Classification
    description: >-
      Classify transactions in a batch, post eligible entries and inspect the
      results.
  - name: Revaluation
    description: Run asset revaluations for an accounting period and check their results.
  - name: Accounting Periods
    description: Check whether a period is ready to close, then close or reopen it.
  - name: Income Statement
    description: View revenue, expenses and net income for a reporting period.
  - name: Balance Sheet
    description: View assets, liabilities and equity as of a reporting date.
  - name: Trial Balance
    description: Review ledger account balances and debit and credit totals.
  - name: Closing Positions
    description: View asset positions at the end of a reporting period.
  - name: Treasury Balances
    description: Review treasury balances by asset and source.
  - name: Realized Gains & Losses
    description: Review realized gains and losses from asset dispositions.
  - name: Asset Tax Lots
    description: Inspect asset tax lots, remaining quantities and cost basis.
  - name: Schedule of Dispositions
    description: >-
      Review asset dispositions and their proceeds, cost basis and gains or
      losses.
  - name: Financial Insights
    description: Review financial insights for your selected reporting context.
  - name: Agents
    description: Create agents, schedule their work and inspect their runs.
  - name: Memory
    description: Read, search and maintain the memory files your agents use.
  - name: Connections
    description: Connect providers, manage authorization and disconnect.
  - name: GL Mapping
    description: >-
      Map ledger accounts and legal entities to your ERP. Import legal entities,
      tags and chart of accounts.
  - name: Request
    description: Request information, documents or connections from a client.
  - name: Client
    description: Manage your firm’s client relationships.
  - name: Team
    description: Invite team members and manage their access to your firm.
  - name: Settings
    description: Read and update your firm settings.
paths:
  /v1/firm/clients/{client_id}:
    patch:
      tags:
        - Client
      summary: Update client
      description: >-
        Update client fields, or change the client status in a separate request.
        Requires a firm-owned API key with write:firms. Organization-owned keys
        cannot call this endpoint. Requires a firm administrator. Firm scope
        comes from the key, not the active client organization.
      operationId: update_client
      parameters:
        - name: client_id
          in: path
          required: true
          description: ID of the client.
          schema:
            type: string
            minLength: 1
          example: fcl_507f1f77bcf86cd799439011
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  description: Draft client name.
                web_address:
                  type: string
                  pattern: ^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$
                  description: Draft client Entendre subdomain slug.
                contact_name:
                  type:
                    - string
                    - 'null'
                  description: Client contact name.
                contact_email:
                  type:
                    - string
                    - 'null'
                  description: Client contact email.
                  format: email
                website:
                  type:
                    - string
                    - 'null'
                  description: Client public website.
                  format: uri
                is_multi_entity:
                  type: boolean
                  description: Whether the client uses multiple legal entities.
                pending_actions:
                  type: array
                  items:
                    type: object
                    properties:
                      legal_entity_id:
                        type:
                          - string
                          - 'null'
                        description: Legal entity for this action.
                      integration_type:
                        type: string
                        enum:
                          - wallet
                          - exchange
                          - bank
                          - quickbooks
                          - xero
                          - netsuite
                          - ramp
                          - stripe-ar
                          - gmail
                        description: Integration for this action.
                      action_type:
                        type: string
                        enum:
                          - request
                          - connect
                        description: Action the client must complete.
                    required:
                      - integration_type
                      - action_type
                    additionalProperties: false
                  description: Client setup actions.
                status:
                  type: string
                  enum:
                    - active
                    - archived
                  description: >-
                    New client state. Send it without other fields. A firm API
                    key can only activate a draft; archive and restore need the
                    dashboard.
              required: []
              additionalProperties: false
            example:
              contact_name: Alex Smith
              contact_email: alex@example.com
      responses:
        '200':
          description: The request succeeded.
          headers:
            X-Request-Id:
              description: Support correlation ID.
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/FirmClient'
                required:
                  - data
                additionalProperties: false
              example:
                data:
                  id: fcl_507f1f77bcf86cd799439011
                  organization_id: 507f1f77bcf86cd799439012
                  name: Acme Finance
                  web_address: acme-finance
                  timezone: America/New_York
                  contact_name: Alex Smith
                  contact_email: alex@example.com
                  website: https://example.com
                  logo_url: null
                  status: draft
                  is_multi_entity: false
                  pending_actions: []
                  legal_entities_count: 1
                  agents_count: 0
                  integrations: []
                  created_at: '2026-08-31T12:00:00Z'
                  updated_at: '2026-08-31T12:00:00Z'
        '400':
          description: >-
            The request is invalid. `error.fields` lists the fields to correct.
            Nothing was changed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: VALIDATION_ERROR
                  message: Invalid path, query or request body.
                  request_id: req_example
        '401':
          description: The API key is missing, invalid or expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: UNAUTHORIZED
                  message: Authentication is required.
                  request_id: req_example
        '403':
          description: >-
            The API key does not have the required scope or is not associated
            with a user, or the action needs a review in the dashboard.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: FORBIDDEN
                  message: Insufficient access to organization
                  request_id: req_example
        '404':
          description: The resource does not exist, or your organization cannot access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: RESOURCE_NOT_FOUND
                  message: Resource not found
                  request_id: req_example
        '409':
          description: >-
            The current state of the resource or an accounting rule prevents
            this operation. Read the resource again before you choose another
            action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: CONFLICT
                  message: The resource state does not allow this operation.
                  request_id: req_example
        '429':
          description: >-
            Too many requests. If the response has a `Retry-After` header, wait
            that many seconds before you retry. Otherwise, read `error.message`.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
                minimum: 1
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: RATE_LIMITED
                  message: Rate limit exceeded. Retry after 30s.
                  request_id: req_example
        '500':
          description: >-
            An unexpected error occurred. A write can still have taken effect;
            check the resource before you retry. Give the `request_id` to
            support.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: INTERNAL_ERROR
                  message: Internal server error
                  request_id: req_example
        '503':
          description: >-
            A service that this operation needs is unavailable. If the response
            has a `Retry-After` header, wait that many seconds. Check for
            earlier accepted work before you send the request again.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
                minimum: 1
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: SERVICE_UNAVAILABLE
                  message: Service unavailable.
                  request_id: req_example
components:
  schemas:
    FirmClient:
      type: object
      properties:
        id:
          type: string
          description: Firm client ID.
          pattern: ^(?:fcl_)?[a-fA-F0-9]{24}$
          example: fcl_507f1f77bcf86cd799439011
        organization_id:
          type: string
          description: Organization created for this client.
        name:
          type: string
          description: Client organization name.
        web_address:
          type: string
          description: Client Entendre subdomain slug.
        timezone:
          type: string
          description: Client timezone.
        contact_name:
          type: string
          description: Client contact name.
        contact_email:
          type: string
          description: Client contact email.
        website:
          type:
            - string
            - 'null'
          description: Client public website.
          format: uri
        logo_url:
          type:
            - string
            - 'null'
          description: Client logo URL.
          format: uri
        status:
          type: string
          enum:
            - draft
            - active
            - archived
          description: Client relationship state.
        is_multi_entity:
          type: boolean
          description: Whether the client uses multiple legal entities.
        pending_actions:
          type: array
          description: Setup actions that remain for the client.
          items:
            type: object
            properties:
              legal_entity_id:
                type:
                  - string
                  - 'null'
                description: Legal entity for this action.
              integration_type:
                type: string
                enum:
                  - wallet
                  - exchange
                  - bank
                  - quickbooks
                  - xero
                  - netsuite
                  - ramp
                  - stripe-ar
                  - gmail
                description: Integration for this action.
              action_type:
                type: string
                enum:
                  - request
                  - connect
                description: Action the client must complete.
            required:
              - legal_entity_id
              - integration_type
              - action_type
            additionalProperties: false
        legal_entities_count:
          type: integer
          minimum: 0
          description: Client legal entity count.
        agents_count:
          type: integer
          minimum: 0
          description: Client agent count.
        integrations:
          type: array
          description: Available client integrations.
          items:
            type: object
            properties:
              type:
                type: string
                description: Integration type.
              connected:
                type: boolean
                description: Whether the integration is connected.
              legal_entity_id:
                type:
                  - string
                  - 'null'
                description: Connected legal entity.
            required:
              - type
              - connected
              - legal_entity_id
            additionalProperties: false
        default_legal_entity_id:
          type: string
          description: Default legal entity created with a new client.
          readOnly: true
        created_at:
          type:
            - string
            - 'null'
          description: Time the client was created.
          format: date-time
        updated_at:
          type:
            - string
            - 'null'
          description: Time the client was last updated.
          format: date-time
      required:
        - id
        - organization_id
        - name
        - web_address
        - timezone
        - contact_name
        - contact_email
        - website
        - logo_url
        - status
        - is_multi_entity
        - pending_actions
        - legal_entities_count
        - agents_count
        - integrations
        - created_at
        - updated_at
      additionalProperties: false
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - request_id
          properties:
            code:
              type: string
              description: Machine-readable error code.
            message:
              type: string
              description: Technical description for developers.
            fields:
              type: object
              additionalProperties:
                type: string
              description: >-
                Present only on VALIDATION_ERROR. Maps failing field paths to
                reason strings.
            details:
              type: object
              additionalProperties: true
              description: >-
                Optional redacted diagnostic details. Request validation uses
                fields or field_errors.
            suggested_action:
              type: string
              description: A suggested next step.
            documentation_url:
              type: string
              format: uri
              description: Link to documentation about this error.
            request_id:
              type: string
              description: Unique request ID for support escalation.
          description: Error details.
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        Your organization API key. Some operations also need a key that is
        associated with a user; their pages say so.

````