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

> ## Agent Instructions
> Every Lath operation is POST https://platform.trylath.com/<operation name with dots replaced by slashes>, with a JSON body and `Authorization: Bearer <key>`. `email.send` is POST /email/send.
> Branch on `error.code`, never on `error.message`. Every refusal also carries `error.fix`, which names the next step.
> Send an `Idempotency-Key` header on any operation that is not retry-safe, so a retry cannot run it twice.
> A `lath_test_` key emails only the account's own members and sends no SMS; a `lath_live_` key reaches real recipients and is billed.
> The OpenAPI document, generated from the same registry as the routes, is at https://platform.trylath.com/openapi.json.

# billing.profile.set

> Sets who this account's invoices are made out to. Send only the fields to change; null or an empty string clears one. The address is replaced as a whole when given. A tax ID is its kind and number together (for example eu_vat and DE123456789), printed on invoices as given — it is not checked with any tax authority. Shown on invoices from Lath; not yet sent to the payment processor.



## OpenAPI

````yaml /api-reference/openapi.json post /billing/profile/set
openapi: 3.1.0
info:
  title: Lath API
  version: 0.1.0
  description: >-
    Every operation is one POST. The same set is reachable over MCP, the SDK and
    the CLI; nothing is dashboard-only.
servers:
  - url: https://platform.trylath.com
    description: This deployment
security: []
paths:
  /billing/profile/set:
    post:
      tags:
        - billing
      summary: billing.profile.set
      description: >-
        Sets who this account's invoices are made out to. Send only the fields
        to change; null or an empty string clears one. The address is replaced
        as a whole when given. A tax ID is its kind and number together (for
        example eu_vat and DE123456789), printed on invoices as given — it is
        not checked with any tax authority. Shown on invoices from Lath; not yet
        sent to the payment processor.
      operationId: billing.profile.set
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
          description: >-
            Replays the stored response for the same key and input; refuses
            different input.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $schema: https://json-schema.org/draft/2020-12/schema
              type: object
              properties:
                email:
                  anyOf:
                    - type:
                        - string
                        - 'null'
                    - type: string
                      const: ''
                legalName:
                  anyOf:
                    - type: string
                      maxLength: 200
                    - type: 'null'
                address:
                  anyOf:
                    - type: object
                      properties:
                        line1:
                          anyOf:
                            - type: string
                              maxLength: 200
                            - type: 'null'
                        line2:
                          anyOf:
                            - type: string
                              maxLength: 200
                            - type: 'null'
                        city:
                          anyOf:
                            - type: string
                              maxLength: 120
                            - type: 'null'
                        region:
                          anyOf:
                            - type: string
                              maxLength: 120
                            - type: 'null'
                        postalCode:
                          anyOf:
                            - type: string
                              maxLength: 32
                            - type: 'null'
                        country:
                          anyOf:
                            - anyOf:
                                - type: string
                                  pattern: ^[A-Za-z]{2}$
                                - type: 'null'
                            - type: string
                              const: ''
                      additionalProperties: false
                    - type: 'null'
                taxId:
                  anyOf:
                    - type: object
                      properties:
                        type:
                          type: string
                          enum:
                            - eu_vat
                            - gb_vat
                            - ch_vat
                            - no_vat
                            - au_abn
                            - ca_bn
                            - ca_gst_hst
                            - in_gst
                            - us_ein
                            - other
                        value:
                          type: string
                          minLength: 2
                          maxLength: 40
                          pattern: ^[A-Za-z0-9 .\-/]+$
                      required:
                        - type
                        - value
                      additionalProperties: false
                    - type: 'null'
              additionalProperties: false
      responses:
        '200':
          description: '{ activityId, result }. activityId is empty for reads.'
          content:
            application/json:
              schema:
                type: object
                properties:
                  activityId:
                    type: string
                    description: The activity this call created, or empty for a read.
                  result:
                    $schema: https://json-schema.org/draft/2020-12/schema
                    type: object
                    properties:
                      accountId:
                        type: string
                        format: uuid
                        pattern: >-
                          ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                      profile:
                        type: object
                        properties:
                          email:
                            type:
                              - string
                              - 'null'
                          legalName:
                            type:
                              - string
                              - 'null'
                          address:
                            type: object
                            properties:
                              line1:
                                type:
                                  - string
                                  - 'null'
                              line2:
                                type:
                                  - string
                                  - 'null'
                              city:
                                type:
                                  - string
                                  - 'null'
                              region:
                                type:
                                  - string
                                  - 'null'
                              postalCode:
                                type:
                                  - string
                                  - 'null'
                              country:
                                type:
                                  - string
                                  - 'null'
                            required:
                              - line1
                              - line2
                              - city
                              - region
                              - postalCode
                              - country
                            additionalProperties: {}
                          taxId:
                            anyOf:
                              - type: object
                                properties:
                                  type:
                                    type: string
                                    enum:
                                      - eu_vat
                                      - gb_vat
                                      - ch_vat
                                      - no_vat
                                      - au_abn
                                      - ca_bn
                                      - ca_gst_hst
                                      - in_gst
                                      - us_ein
                                      - other
                                  value:
                                    type: string
                                required:
                                  - type
                                  - value
                                additionalProperties: {}
                              - type: 'null'
                          updatedAt:
                            anyOf:
                              - type: string
                                format: date-time
                                pattern: >-
                                  ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                              - type: 'null'
                        required:
                          - email
                          - legalName
                          - address
                          - taxId
                          - updatedAt
                        additionalProperties: {}
                    required:
                      - accountId
                      - profile
                    additionalProperties: {}
                required:
                  - activityId
                  - result
        '400':
          description: invalid_input or invalid_json
        '401':
          description: unauthenticated
        '403':
          description: forbidden
        '404':
          description: not_found
        '409':
          description: 'conflict: idempotency_mismatch, email_taken, last_key'
        '413':
          description: body_too_large
        '429':
          description: rate_limited
      security:
        - bearer: []
components:
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: >-
        A Lath API key: lath_live_sk… or lath_test_sk… on a server,
        lath_live_pk… or lath_test_pk… in a browser.

````