v3

latestOpenAPI 3.1.02026-07-311,4541,5202.3 MB
multimodal

Text To Speech

Centralized respan_params initialization and backward-compat layer.

This mixin is the SINGLE initialization point for respan_params. It runs _initialize_respan_params() BEFORE super().initial() so that by the time the throttle runs, respan_params is a fully resolved dict. Downstream code (throttle, preprocessing, view handler) only enriches the existing dict — they never need to create it.

Initialization order::

_initialize_respan_params()   ← legacy rename + header parse + metadata
    ↓
super().initial()             ← throttle ENRICHES the existing dict
    ↓
view handler                  ← billing, security strip, etc.

Responsibilities consolidated here (previously scattered across 4 callsites):

  1. Legacy header rename (X-Data-Keywordsai-Params → X-Data-Respan-Params)
  2. Parse X-Data-Respan-Params header (base64 → dict)
  3. Legacy body rename (keywordsai_params → respan_params)
  4. Form data handling (JSON string → dict)
  5. Metadata nesting (passthrough endpoints — Anthropic, Google, etc.)
  6. Merge: {**header_params, **body_params} (body wins on field conflict)
  7. Add request_url_path from request.META['PATH_INFO']
  8. Guarantee request.data[RESPAN_PARAMS_KEY] is always a dict

Safe for protobuf endpoints: body adaptation is skipped when request.data is not a dict; header adaptation always runs.

Usage::

class MyChatView(AdaptRespanParamsMixin, APIView):
    ...
post/api/audio/speech

Query parameters

format'binary' | 'json'

Headers

Authorizationstring required

Use your Respan API key for Respan API authentication. Enter only the Respan API key value; clients send Authorization: Bearer <RESPAN_API_KEY>. For /api/responses, provider credentials such as Perplexity, OpenAI, or Azure OpenAI go in Settings -> Providers or respan_params.credential_override in the request body, not in this authentication field.

Response

No response body

MultimodalTextToSpeechResponse200 required

Empty response body