Fixie agents API

The agents API from Fixie — 9 operation(s) for agents.

Operations 16

GET /api/agents #
POST /api/agents #
GET /api/agents/{agent_id} #
PATCH /api/agents/{agent_id} #
DELETE /api/agents/{agent_id} #
GET /api/agents/{agent_id}/calls #
POST /api/agents/{agent_id}/calls #
GET /api/agents/{agent_id}/scheduled_batches #
POST /api/agents/{agent_id}/scheduled_batches #
GET /api/agents/{agent_id}/scheduled_batches/{batch_id} #
PATCH /api/agents/{agent_id}/scheduled_batches/{batch_id} #
DELETE /api/agents/{agent_id}/scheduled_batches/{batch_id} #
GET /api/agents/{agent_id}/scheduled_batches/{batch_id}/created_calls #
GET /api/agents/{agent_id}/scheduled_batches/{batch_id}/scheduled_calls #
POST /api/agents/{agent_id}/telephony_xml #
GET /api/agents/usage #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/fixie-agents-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

fixie-agents-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Ultravox accounts Agents API
  version: 0.1.0
  description: API for the Ultravox service.
servers:
- url: https://api.ultravox.ai
tags:
- name: agents
paths:
  /api/agents:
    get:
      operationId: agents_list
      parameters:
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: pageSize
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: search
        schema:
          type: string
          minLength: 1
        description: The search string used to filter results
      - name: sort
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      tags:
      - agents
      security:
      - apiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedAgentList'
          description: ''
    post:
      operationId: agents_create
      tags:
      - agents
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Agent'
      security:
      - apiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
          description: ''
  /api/agents/{agent_id}:
    get:
      operationId: agents_retrieve
      parameters:
      - in: path
        name: agent_id
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - agents
      security:
      - apiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
          description: ''
    patch:
      operationId: agents_partial_update
      parameters:
      - in: path
        name: agent_id
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - agents
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedAgent'
      security:
      - apiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
          description: ''
    delete:
      operationId: agents_destroy
      parameters:
      - in: path
        name: agent_id
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - agents
      security:
      - apiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/agents/{agent_id}/calls:
    get:
      operationId: agents_calls_list
      parameters:
      - in: path
        name: agent_id
        schema:
          type: string
          format: uuid
        required: true
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: pageSize
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - agents
      security:
      - apiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedCallList'
          description: ''
    post:
      operationId: agents_calls_create
      parameters:
      - in: path
        name: agent_id
        schema:
          type: string
          format: uuid
        required: true
      - in: query
        name: throttle
        schema:
          type: string
          minLength: 1
        description: The name or ID of a call throttle to apply to this call. If the throttle's rate limits have been exceeded, the call will be rejected with a 429 status.
      tags:
      - agents
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ultravox.v1.StartAgentCallRequest'
      security:
      - apiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Call'
          description: ''
  /api/agents/{agent_id}/scheduled_batches:
    get:
      operationId: agents_scheduled_batches_list
      parameters:
      - in: path
        name: agent_id
        schema:
          type: string
          format: uuid
        required: true
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: pageSize
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - agents
      security:
      - apiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedScheduledCallBatchList'
          description: ''
    post:
      operationId: agents_scheduled_batches_create
      parameters:
      - in: path
        name: agent_id
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - agents
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScheduledCallBatch'
        required: true
      security:
      - apiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduledCallBatch'
          description: ''
  /api/agents/{agent_id}/scheduled_batches/{batch_id}:
    get:
      operationId: agents_scheduled_batches_retrieve
      parameters:
      - in: path
        name: agent_id
        schema:
          type: string
          format: uuid
        required: true
      - in: path
        name: batch_id
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - agents
      security:
      - apiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduledCallBatch'
          description: ''
    patch:
      operationId: agents_scheduled_batches_partial_update
      parameters:
      - in: path
        name: agent_id
        schema:
          type: string
          format: uuid
        required: true
      - in: path
        name: batch_id
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - agents
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedScheduledCallBatch'
      security:
      - apiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduledCallBatch'
          description: ''
    delete:
      operationId: agents_scheduled_batches_destroy
      parameters:
      - in: path
        name: agent_id
        schema:
          type: string
          format: uuid
        required: true
      - in: path
        name: batch_id
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - agents
      security:
      - apiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/agents/{agent_id}/scheduled_batches/{batch_id}/created_calls:
    get:
      operationId: agents_scheduled_batches_created_calls_list
      parameters:
      - in: path
        name: agent_id
        schema:
          type: string
          format: uuid
        required: true
      - in: path
        name: batch_id
        schema:
          type: string
          format: uuid
        required: true
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: pageSize
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - agents
      security:
      - apiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedCallList'
          description: ''
  /api/agents/{agent_id}/scheduled_batches/{batch_id}/scheduled_calls:
    get:
      operationId: agents_scheduled_batches_scheduled_calls_list
      description: List scheduled calls within a batch.
      parameters:
      - in: path
        name: agent_id
        schema:
          type: string
          format: uuid
        required: true
      - in: path
        name: batch_id
        schema:
          type: string
          format: uuid
        required: true
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: pageSize
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: status
        schema:
          enum:
          - FUTURE
          - PENDING
          - SUCCESS
          - EXPIRED
          - ERROR
          type: string
          minLength: 1
        description: '* `FUTURE` - FUTURE

          * `PENDING` - PENDING

          * `SUCCESS` - SUCCESS

          * `EXPIRED` - EXPIRED

          * `ERROR` - ERROR'
      tags:
      - agents
      security:
      - apiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedScheduledCallList'
          description: ''
  /api/agents/{agent_id}/telephony_xml:
    post:
      operationId: agents_telephony_xml
      description: Allows supported telephony providers to create incoming calls with an agent, returning XML instructions for handling the call.
      parameters:
      - in: path
        name: agent_id
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - agents
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              description: Provider-defined request.
          application/json:
            schema:
              description: Provider-defined request.
      responses:
        '200':
          content:
            text/xml:
              schema:
                description: XML appropriate for the telephony provider.
          description: ''
  /api/agents/usage:
    get:
      operationId: agents_usage_list
      parameters:
      - in: query
        name: agentIds
        schema:
          type: array
          items:
            type: string
            format: uuid
        description: Filter calls by the agent IDs.
      - in: query
        name: durationMax
        schema:
          type: string
        description: Maximum duration of calls
      - in: query
        name: durationMin
        schema:
          type: string
        description: Minimum duration of calls
      - in: query
        name: fromDate
        schema:
          type: string
          format: date-time
        description: Start datetime (inclusive) for filtering calls by creation date. If no time component is present, this defaults to the start of the day (midnight).
      - in: query
        name: metadata
        schema:
          type: object
          additionalProperties:
            type: string
        description: Filter calls by metadata. Use metadata.key=value to filter by specific key-value pairs.
      - in: query
        name: search
        schema:
          type: string
          minLength: 1
        description: The search string used to filter results
      - in: query
        name: timeOfDayEnd
        schema:
          type: string
          format: time
          default: '23:59:59.999999'
        description: 'Filter calls by the time of day of their creation, regardless of date. Format: HH:MM:SS. Defaults to 23:59:59 if not specified.'
      - in: query
        name: timeOfDayStart
        schema:
          type: string
          format: time
          default: 00:00:00
        description: 'Filter calls by the time of day of their creation, regardless of date. Format: HH:MM:SS. Defaults to 00:00:00 if not specified.'
      - in: query
        name: toDate
        schema:
          type: string
          format: date-time
        description: End datetime (inclusive) for filtering calls by creation date. If no time component is present, this defaults to the end of the day (11:59:59.999999 PM).
      - in: query
        name: voiceId
        schema:
          type: string
          format: uuid
        description: Filter calls by the associated voice ID
      tags:
      - agents
      security:
      - apiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AgentUsage'
          description: ''
components:
  schemas:
    Agent:
      type: object
      properties:
        agentId:
          type: string
          format: uuid
          readOnly: true
        publishedRevisionId:
          type:
          - string
          - 'null'
          format: uuid
          readOnly: true
        name:
          type: string
          maxLength: 64
        created:
          type: string
          format: date-time
          readOnly: true
        callTemplate:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.CallTemplate'
        statistics:
          allOf:
          - $ref: '#/components/schemas/AgentStatistics'
          readOnly: true
      required:
      - agentId
      - created
      - publishedRevisionId
      - statistics
    ultravox.v1.ToolOverrides:
      type: object
      properties:
        remove:
          type: array
          items:
            type: string
          description: "Tools to remove from the set, identified by their unique model-facing name\n (i.e. nameOverride if set, otherwise modelToolName). May not be set\n together with removeAll."
        removeAll:
          type: boolean
          description: "If true, all existing tools are removed. May not be set together with\n remove."
        add:
          type: array
          items:
            $ref: '#/components/schemas/ultravox.v1.SelectedTool'
          description: Tools to add.
      description: "Overrides for a set of selected tools. Items in remove are applied before\n items in add. Use remove + add for replacements."
    ultravox.v1.Callbacks:
      type: object
      properties:
        joined:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.Callback'
          description: Callback invoked when the call is joined.
        ended:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.Callback'
          description: Callback invoked when the call has ended.
        billed:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.Callback'
          description: Callback invoked when the call is billed.
      description: Configuration for call lifecycle callbacks.
    ultravox.v1.SipMedium_SipIncoming:
      type: object
      properties: {}
      description: Details for an incoming SIP call.
    AgentBasic:
      type: object
      properties:
        agentId:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          readOnly: true
      required:
      - agentId
      - name
    google.protobuf.Value:
      description: Represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values.
    ultravox.v1.CallMedium_TelnyxMedium:
      type: object
      properties:
        outgoing:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.TelnyxMedium_OutgoingRequestParams'
          description: "If set, Ultravox will directly create a call with Telnyx. Telnyx must be configured\n for the requesting account."
        dtmfHandling:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.CallMedium_DtmfHandling'
          description: Controls how DTMF digits received during the call are handled.
      description: Details for a Telnyx call.
    PatchedScheduledCallBatch:
      type: object
      properties:
        batchId:
          type: string
          format: uuid
          readOnly: true
        created:
          type: string
          format: date-time
          readOnly: true
        windowStart:
          type:
          - string
          - 'null'
          format: date-time
          description: The start of the time window during which calls can be made.
        windowEnd:
          type:
          - string
          - 'null'
          format: date-time
          description: The end of the time window during which calls can be made.
        throttle:
          type:
          - string
          - 'null'
          description: The name or ID of a call throttle. If specified, calls in this batch will be subject to the rate limits defined by the throttle.
        webhookUrl:
          type:
          - string
          - 'null'
          format: uri
          description: The URL to which a request will be made (synchronously) when a call in the batch is created, excluding those with an outgoing medium. Required if any call has a non-outgoing medium and not allowed otherwise.
          maxLength: 200
        webhookSecret:
          type:
          - string
          - 'null'
          description: The signing secret for requests made to the webhookUrl. This is used to verify that the request came from Ultravox. If unset, an appropriate secret will be chosen for you (but you'll still need to make your endpoint aware of it to verify requests).
          maxLength: 120
        paused:
          type: boolean
        totalCount:
          type: integer
          readOnly: true
          description: The total number of calls in this batch.
        completedCount:
          type: integer
          readOnly: true
          description: The number of calls in this batch that have been completed (created or error).
        endedAt:
          type:
          - string
          - 'null'
          format: date-time
          readOnly: true
        calls:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledCall'
          writeOnly: true
          minItems: 1
    ultravox.v1.EnabledDataMessages:
      type: object
      properties:
        pong:
          type: boolean
          description: 'Responds to a ping message. (Default: enabled)'
        state:
          type: boolean
          description: 'Indicates that the agent state has changed. (Default: enabled)'
        transcript:
          type: boolean
          description: 'Provides transcripts of the user and agent speech. (Default: enabled)'
        clientToolInvocation:
          type: boolean
          description: 'Requests a client-implemented tool invocation. (Default: enabled)'
        dataConnectionToolInvocation:
          type: boolean
          description: 'Requests a data-connection-implemented tool invocation. (Default: enabled for data connections, disabled otherwise)'
        playbackClearBuffer:
          type: boolean
          description: 'Requests the client-side audio buffer to be cleared. (Default: enabled for websocket connections, disabled otherwise)'
        callStarted:
          type: boolean
          description: 'Provides information about the call when it starts. (Default: enabled)'
        debug:
          type: boolean
          description: 'Communicates debug information. (Default: disabled)'
        callEvent:
          type: boolean
          description: 'Indicates that a call event has been recorded. (Default: disabled)'
        toolUsed:
          type: boolean
          description: 'Indicates that a tool was used. (Default: disabled)'
        userStartedSpeaking:
          type: boolean
          description: 'Indicates that the user has started speaking (according to simple VAD). (Default: disabled)'
        userStoppedSpeaking:
          type: boolean
          description: 'Indicates that the user has stopped speaking (according to simple VAD). (Default: disabled)'
        invokingTool:
          type: boolean
          description: 'Indicates that a tool invocation has started. (Default: disabled)'
      description: Whether certain data messages are enabled for a connection.
    ultravox.v1.FirstSpeakerSettings_UserGreeting:
      type: object
      properties:
        fallback:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.FallbackAgentGreeting'
          description: "If set, the agent will start the conversation itself if the user doesn't start\n speaking within the given delay."
      description: Additional properties for when the user speaks first.
    ultravox.v1.HttpAuthRequirement:
      type: object
      properties:
        scheme:
          type: string
          description: The scheme of the HTTP authentication, e.g. "Bearer".
      description: A security requirement that will cause an HTTP authentication header to be added.
    ultravox.v1.Callback:
      type: object
      properties:
        url:
          type: string
          description: The URL to invoke.
        secrets:
          type: array
          items:
            type: string
          description: Secrets to use to signing the callback request.
      description: A lifecycle callback configuration.
    ultravox.v1.CallMedium_DtmfUserTextMessage:
      type: object
      properties:
        text:
          type: string
          description: "Template for the message text. Use {digits} as a placeholder for the\n pressed digits. Defaults to \"{digits}\" if empty."
        urgency:
          enum:
          - URGENCY_UNSPECIFIED
          - URGENCY_IMMEDIATE
          - URGENCY_SOON
          - URGENCY_LATER
          type: string
          description: Urgency of the message. Defaults to URGENCY_IMMEDIATE.
          format: enum
      description: Configures DTMF digits to be sent as a user text message.
    PaginatedAgentList:
      type: object
      required:
      - results
      properties:
        next:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?cursor=cD00ODY%3D"
        previous:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?cursor=cj0xJnA9NDg3
        results:
          type: array
          items:
            $ref: '#/components/schemas/Agent'
        total:
          type: integer
          example: 123
    ScheduledCallStatusEnum:
      enum:
      - FUTURE
      - PENDING
      - SUCCESS
      - EXPIRED
      - ERROR
      type: string
    ultravox.v1.CallMedium_TwilioMedium:
      type: object
      properties:
        outgoing:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.TwilioMedium_OutgoingRequestParams'
          description: "If set, Ultravox will directly create a call with Twilio. Twilio must be configured\n for the requesting account."
        dtmfHandling:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.CallMedium_DtmfHandling'
          description: Controls how DTMF digits received during the call are handled.
      description: Details for a Twilio call.
    ultravox.v1.CallMedium_ExotelMedium:
      type: object
      properties:
        dtmfHandling:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.CallMedium_DtmfHandling'
          description: Controls how DTMF digits received during the call are handled.
      description: Details for a Exotel call.
    ultravox.v1.TelnyxMedium_OutgoingRequestParams:
      type: object
      properties:
        to:
          type: string
          description: The phone number to call in E.164 format (e.g. +14155552671).
        from:
          type: string
          description: The phone number initiating the call.
        additionalParams:
          type: object
          description: "Additional parameters to include in the Telnyx call creation request.\n See https://developers.telnyx.com/api/call-scripting/initiate-texml-call"
      description: Parameters for a Telnyx call creation request.
    AgentStatistics:
      type: object
      properties:
        calls:
          type: integer
          readOnly: true
          default: 0
      required:
      - calls
    ultravox.v1.SecurityOptions:
      type: object
      properties:
        options:
          type: array
          items:
            $ref: '#/components/schemas/ultravox.v1.SecurityRequirements'
          description: "The options for security. Only one must be met. The first one that can be\n satisfied will be used in general. The single exception to this rule is\n that we always prefer a non-empty set of requirements over an empty set\n unless no non-empty set can be satisfied."
      description: The different options for satisfying a tool's security requirements.
    ultravox.v1.HeaderApiKeyRequirement:
      type: object
      properties:
        name:
          type: string
          description: The name of the header.
      description: A security requirement that will cause an API key to be added to the header.
    ultravox.v1.FirstSpeakerSettings_AgentGreeting:
      type: object
      properties:
        uninterruptible:
          type: boolean
          description: "Whether the user should be prevented from interrupting the agent's first message.\n Defaults to false (meaning the agent is interruptible as usual)."
        text:
          type: string
          description: A specific greeting the agent should say.
        prompt:
          type: string
          description: A prompt for the agent to generate a greeting.
        delay:
          pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
          type: string
          description: "If set, the agent will wait this long before starting its greeting. This may be useful\n for ensuring the user is ready."
      description: Additional properties for when the agent speaks first.
    ultravox.v1.DataConnectionAudioConfig:
      type: object
      properties:
        sampleRate:
          type: integer
          description: The sample rate of the audio stream. If not set, will default to 16000.
          format: int32
        channelMode:
          enum:
          - CHANNEL_MODE_UNSPECIFIED
          - CHANNEL_MODE_MIXED
          - CHANNEL_MODE_SEPARATED
          type: string
          description: "The audio channel mode to use. CHANNEL_MODE_MIXED will combine user and agent audio\n into a single mono output while CHANNEL_MODE_SEPARATED will result in stereo audio\n where user and agent are separated. The latter is the default."
          format: enum
      description: Configuration for audio in data connections
    ultravox.v1.QueryApiKeyRequirement:
      type: object
      properties:
        name:
          type: string
          description: The name of the query parameter.
      description: A security requirement that will cause an API key to be added to the query string.
    ultravox.v1.ElevenLabsVoice_PronunciationDictionaryReference:
      type: object
      properties:
        dictionaryId:
          type: string
          description: The dictionary's ID.
        versionId:
          type: string
          description: The dictionary's version.
      description: A reference to a pronunciation dictionary within ElevenLabs.
    ultravox.v1.BaseHttpToolDetails:
      type: object
      properties:
        baseUrlPattern:
          type: string
          description: The base URL pattern for the tool, possibly with placeholders for path parameters.
        httpMethod:
          type: string
          description: The HTTP method for the tool.
      description: Details for invoking a tool via HTTP.
    ultravox.v1.GenericVoice:
      type: object
      properties:
        url:
          type: string
          description: The endpoint to which requests are sent.
        headers:
          type: object
          additionalProperties:
            type: string
          description: Headers to include in the request.
        body:
          type: object
          description: "The request body to send. Some field should include a placeholder for text\n represented as {text}. The placeholder will be replaced with the text to synthesize."
        responseSampleRate:
          type: integer
          description: The sample rate of the audio returned by the API.
          format: int32
        responseWordsPerMinute:
          type: integer
          description: "An estimate of the speaking rate of the returned audio in words per minute. This is\n used for transcript timing while audio is streamed in the response. (Once the response\n is complete, Ultravox Realtime uses the real audio duration to adjust the timing.)\n Defaults to 150 and is unused for non-streaming responses."
          format: int32
        responseMimeType:
          type: string
          description: "The real mime type of the content returned by the API. If unset, the Content-Type response header\n will be used. This is useful for APIs whose response bodies don't strictly adhere to what the\n API claims via header. For example, if your API claims to return audio/wav but omits the WAV\n header (thus really returning raw PCM), set this to audio/l16. Similarly, if your API claims to\n return JSON but actually streams JSON Lines, set this to application/jsonl."
        jsonAudioFieldPath:
          type: string
          description: "For JSON responses, the path to the field containing base64-encoded audio data. The data must\n be PCM audio, optionally with a WAV header."
        jsonByteEncoding:
          enum:
          - JSON_BYTE_ENCODING_UNSPECIFIED
          - JSON_BYTE_ENCODING_BASE64
          - JSON_BYTE_ENCODING_HEX
          type: string
          description: "For JSON responses, how audio bytes are encoded into the json_audio_field_path string.\n Defaults to base64. Also supports hex."
          format: enum
      description: "Specification for a voice served by some generic REST-based TTS API. The API must\n accept an application/json POST request (as defined below) and return either WAV\n audio, raw PCM audio, or application/json with a base64 encoded audio data field\n that itself corresponds to WAV or raw PCM audio.\n Note that this simple API implies a lack of either input streaming or audio timing\n information, so more specific voice types are preferable when available."
    ultravox.v1.CallMedium_WebRtcMedium:
      type: object
      properties:
        dataMessages:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.EnabledDataMessages'
          description: Controls which data messages are enabled for the call.
      description: Details for a WebRTC call.
    ultravox.v1.CallMedium:
      type: object
      properties:
        webRtc:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.CallMedium_WebRtcMedium'
          description: "The call will use WebRTC with the Ultravox client SDK.\n This is the default."
        twilio:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.CallMedium_TwilioMedium'
          description: "The call will use Twilio's \"Media Streams\" protocol.\n Once you have a join URL from starting a call, include it in your\n TwiML like so:\n <Connect><Stream url=${your-join-url} /></Connect>\n This works for both inbound and outbound calls."
        serverWebSocket:
          allOf:
          - $ref: '#/components/schemas/ultravox.v1.CallMedium_WebSocketMedium'
          description: "The call will use a plain websocket connection. This option p

# --- truncated at 32 KB (98 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fixie/refs/heads/main/openapi/fixie-agents-api-openapi.yml