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

> Upload an immutable WAV recording for a native call flow using base64 audio and workflow write permission.

# Upload an immutable WAV recording

Requires `workflows:write`, with telephony and Classical IVR enabled. Send the WAV bytes as base64 in `wavBase64` and a recording name in `name`.

Supports mono or stereo, 16-bit PCM, A-law or mu-law WAV files at 8, 16, 24, 32, 44.1 or 48 kHz. The decoded file must be at most 20 MB and five minutes long. Invalid or unsupported audio is rejected.

The response contains the recording ID, name, sample rate, channels, duration in seconds and creation time. Use the ID in a Classical IVR node. Every upload creates a new recording; it does not replace an existing recording, activate a workflow or change number routing. See [WAV recordings](/phone/call-flows#wav-recordings).


## OpenAPI

````yaml post /call-flows/assets
openapi: 3.1.0
info:
  title: OpenCX API
  description: >

    OpenCX is an AI-powered, all-in-one platform for customer support and
    outbound communications.


    Use this API to manage your OpenCX organization's AI agents, actions,
    conversations, contacts, and more.


    To get started, generate a new API key from the dashboard.


    ## Authentication

    All API endpoints require authentication using a Bearer token. You can
    generate an API key from your OpenCX dashboard.


    ## Rate Limiting

    API requests are rate limited to ensure fair usage. The current limits are:

    - 100 requests per minute for standard endpoints

    - 1000 requests per minute for streaming endpoints


    ## Error Handling

    The API uses standard HTTP status codes and returns detailed error messages
    in the response body.
  version: 1.0-beta
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
  - url: http://localhost:8080
    description: Development
  - url: https://api.open.cx
    description: Production
security:
  - bearerAuth: []
paths:
  /call-flows/assets:
    post:
      summary: Upload an immutable WAV recording
      operationId: uploadCallFlowAsset
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 200
                wavBase64:
                  type: string
                  minLength: 1
                  maxLength: 28000000
              required:
                - name
                - wavBase64
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    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)$
                  name:
                    type: string
                  sample_rate:
                    type: number
                  channels:
                    type: number
                  duration_seconds:
                    type: number
                  created_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - name
                  - sample_rate
                  - channels
                  - duration_seconds
                  - created_at
                additionalProperties: false
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDto'
components:
  schemas:
    ErrorDto:
      type: object
      properties:
        statusCode:
          type: integer
        message:
          type: string
        error:
          type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````

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