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

# Save billing details (admins)



## OpenAPI

````yaml /openapi/v3.yaml put /api/v2/billing/profile
openapi: 3.1.0
info:
  title: Semicola Exchange platform API
  version: 3.0.0-preview
  description: >-
    Platform endpoints of Semicola: sign-in, signup and OAuth for MCP clients,
    accounts, members and keys, billing, notifications, the Semi assistant (chat
    stream, confirmations, conversations), the MCP App widget host and realtime
    feeds. Typed agent tools live on the MCP server at /mcp/v3.
servers:
  - url: https://api.semicola.com
security:
  - bearerAuth: []
  - sessionCookie: []
tags:
  - name: Auth
  - name: Signup
  - name: OAuth
  - name: Accounts
  - name: Members
  - name: API Keys
  - name: Buyer Agent Principals
  - name: Connected Apps
  - name: Onboarding
  - name: Billing
  - name: AI Usage
  - name: Notifications
  - name: Assistant
  - name: MCP Apps
  - name: Realtime
  - name: Demo
paths:
  /api/v2/billing/profile:
    put:
      tags:
        - Billing
      summary: Save billing details (admins)
      operationId: putBillingProfile
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                contact:
                  type: string
                  minLength: 1
                  maxLength: 200
                emails:
                  minItems: 1
                  maxItems: 20
                  type: array
                  items:
                    type: string
                    format: email
                    pattern: >-
                      ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                address:
                  type: object
                  properties:
                    line1:
                      type: string
                      minLength: 1
                      maxLength: 200
                    line2:
                      type: string
                      maxLength: 200
                    city:
                      type: string
                      minLength: 1
                      maxLength: 100
                    region:
                      type: string
                      maxLength: 100
                    postalCode:
                      type: string
                      minLength: 1
                      maxLength: 20
                    country:
                      type: string
                      pattern: ^[A-Z]{2}$
                  required:
                    - line1
                    - city
                    - postalCode
                    - country
                taxId:
                  anyOf:
                    - type: string
                      maxLength: 50
                    - type: 'null'
              required:
                - contact
                - emails
                - address
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    anyOf:
                      - type: object
                        properties:
                          contact:
                            type: string
                          emails:
                            type: array
                            items:
                              type: string
                          address:
                            anyOf:
                              - type: object
                                properties:
                                  line1:
                                    type: string
                                    minLength: 1
                                    maxLength: 200
                                  line2:
                                    type: string
                                    maxLength: 200
                                  city:
                                    type: string
                                    minLength: 1
                                    maxLength: 100
                                  region:
                                    type: string
                                    maxLength: 100
                                  postalCode:
                                    type: string
                                    minLength: 1
                                    maxLength: 20
                                  country:
                                    type: string
                                    pattern: ^[A-Z]{2}$
                                required:
                                  - line1
                                  - city
                                  - postalCode
                                  - country
                                additionalProperties: false
                              - type: 'null'
                          taxId:
                            type:
                              - string
                              - 'null'
                          posture:
                            type: string
                            enum:
                              - PREPAY
                              - CREDIT
                        required:
                          - contact
                          - emails
                          - address
                          - taxId
                        additionalProperties: false
                      - type: 'null'
                  error:
                    anyOf:
                      - type: object
                        properties:
                          code:
                            type: string
                          message:
                            type: string
                          field:
                            type: string
                          details: {}
                        required:
                          - code
                          - message
                        additionalProperties: false
                      - type: 'null'
                required:
                  - data
                  - error
                additionalProperties: false
        default:
          description: >-
            Error envelope `{data: null, error: {code, message, field?,
            details?}}`.
      deprecated: true
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or OAuth access token.
    sessionCookie:
      type: apiKey
      in: cookie
      name: sc_session

````