WellSaid Labs Pronunciation API
Replacement libraries and respelling suggestions for pronunciation control.
Replacement libraries and respelling suggestions for pronunciation control.
openapi: 3.0.3
info:
title: WellSaid Labs Clips Pronunciation API
description: The WellSaid Labs API renders text into studio-quality AI voiceover. It exposes streaming text-to-speech (audio returned as an HTTP stream for low time-to-first-byte playback), word-level timing and subtitle rendering, asynchronous clip creation and combination, a catalog of voice avatars, and pronunciation control via replacement libraries and respelling suggestions. All requests authenticate with an X-Api-Key header. WellSaid does not currently support end-user authentication and recommends making requests from an internal or trusted source. API access is gated behind a trial API key and a business plan. Endpoints, request fields, and response shapes here are modeled from the public documentation at docs.wellsaidlabs.com and are honestly approximated where the reference does not publish a full schema.
version: '1.0'
contact:
name: WellSaid Labs
url: https://wellsaidlabs.com
servers:
- url: https://api.wellsaidlabs.com/v1
description: WellSaid Labs API
security:
- apiKeyAuth: []
tags:
- name: Pronunciation
description: Replacement libraries and respelling suggestions for pronunciation control.
paths:
/replacement-libraries:
get:
operationId: listReplacementLibraries
tags:
- Pronunciation
summary: List replacement libraries
description: Returns the list of available pronunciation replacement libraries.
responses:
'200':
description: A list of replacement libraries.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ReplacementLibrary'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createReplacementLibrary
tags:
- Pronunciation
summary: Create a replacement library
description: Creates a new replacement library for grouping pronunciation replacements.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: A human-readable name for the library.
required:
- name
responses:
'201':
description: The created replacement library.
content:
application/json:
schema:
$ref: '#/components/schemas/ReplacementLibrary'
'401':
$ref: '#/components/responses/Unauthorized'
/replacement-libraries/{library_id}:
get:
operationId: getReplacementLibrary
tags:
- Pronunciation
summary: Get a replacement library
description: Returns information about a single replacement library.
parameters:
- $ref: '#/components/parameters/LibraryId'
responses:
'200':
description: The requested replacement library.
content:
application/json:
schema:
$ref: '#/components/schemas/ReplacementLibrary'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteReplacementLibrary
tags:
- Pronunciation
summary: Delete a replacement library
description: Deletes a replacement library and its replacements.
parameters:
- $ref: '#/components/parameters/LibraryId'
responses:
'204':
description: The replacement library was deleted.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/replacement-libraries/{library_id}/replacements:
get:
operationId: listReplacements
tags:
- Pronunciation
summary: List replacements in a library
description: Returns the list of replacements contained in a replacement library.
parameters:
- $ref: '#/components/parameters/LibraryId'
responses:
'200':
description: A list of replacements.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Replacement'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createReplacement
tags:
- Pronunciation
summary: Create a replacement
description: Creates a new pronunciation replacement in the library.
parameters:
- $ref: '#/components/parameters/LibraryId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ReplacementInput'
responses:
'201':
description: The created replacement.
content:
application/json:
schema:
$ref: '#/components/schemas/Replacement'
'401':
$ref: '#/components/responses/Unauthorized'
/replacement-libraries/{library_id}/replacements/{replacement_id}:
get:
operationId: getReplacement
tags:
- Pronunciation
summary: Get a replacement
description: Returns a single replacement from a library.
parameters:
- $ref: '#/components/parameters/LibraryId'
- $ref: '#/components/parameters/ReplacementId'
responses:
'200':
description: The requested replacement.
content:
application/json:
schema:
$ref: '#/components/schemas/Replacement'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteReplacement
tags:
- Pronunciation
summary: Delete a replacement
description: Removes a replacement from a library.
parameters:
- $ref: '#/components/parameters/LibraryId'
- $ref: '#/components/parameters/ReplacementId'
responses:
'204':
description: The replacement was deleted.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/respelling-suggestions:
get:
operationId: getRespellingSuggestions
tags:
- Pronunciation
summary: Get respelling suggestions
description: Returns respelling suggestions for a word to help coax the correct pronunciation from the voice avatar.
parameters:
- name: word
in: query
required: true
schema:
type: string
description: The word to get respelling suggestions for.
responses:
'200':
description: A list of respelling suggestions.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: string
'401':
$ref: '#/components/responses/Unauthorized'
components:
parameters:
ReplacementId:
name: replacement_id
in: path
required: true
schema:
type: string
description: The id of the replacement.
LibraryId:
name: library_id
in: path
required: true
schema:
type: string
description: The id of the replacement library.
responses:
NotFound:
description: The requested resource was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Missing or invalid X-Api-Key.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Replacement:
type: object
properties:
id:
type: string
original:
type: string
replacement:
type: string
Error:
type: object
properties:
message:
type: string
code:
type: string
ReplacementLibrary:
type: object
properties:
id:
type: string
name:
type: string
created_at:
type: string
format: date-time
ReplacementInput:
type: object
properties:
original:
type: string
description: The original word or phrase to replace.
replacement:
type: string
description: The respelled or substitute pronunciation to speak instead.
required:
- original
- replacement
securitySchemes:
apiKeyAuth:
type: apiKey
in: header
name: X-Api-Key
description: API key issued by WellSaid Labs, passed in the X-Api-Key header. Request a trial key from the console; production use requires a business plan.